Files
librodrome/docker/docker-compose.umami.yml
T
Yvv 8408fd6466
ci/woodpecker/push/woodpecker Pipeline was successful
feat: SEO complet + analytics Umami + og:image § logo
SEO :
- composable useSeoPage() : og:*, Twitter Cards, canonical sur toutes les pages (15 pages)
- app.vue : JSON-LD Organization + Book, og:image global og-default.png
- og-default.png 1200×630 : logo § calligraphique + texte (Pillow)
- nuxt.config.ts : @nuxtjs/sitemap avec 26 URLs statiques

Analytics Umami :
- useTracking() : helpers typés audio/pdf/player/scroll/cta
- useScrollTracking() : scroll depth 25/50/75/100% + liens externes auto
- useAudioPlayer : trackAudioPlay/Progress/Complete
- BookPdfReader : trackPdfOpen/Close avec durée
- BookPlayer : trackPlayerOpen/Chapter/Mode
- docker-compose : variables NUXT_PUBLIC_UMAMI_* passées au container

Images :
- Couv-Economie-du-don.jpg ajoutée dans public/images/
- bookplayer.config.yml + home.yml : références mises à jour

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 00:25:28 +02:00

57 lines
1.8 KiB
YAML

## Umami analytics — déployer avec le compose principal
## Usage : docker compose -f docker-compose.yml -f docker-compose.umami.yml up -d
##
## Variables à définir dans .env :
## UMAMI_DB_PASSWORD — mot de passe PostgreSQL Umami (générer avec openssl rand -hex 32)
## UMAMI_APP_SECRET — secret applicatif (générer avec openssl rand -hex 32)
## UMAMI_DOMAIN — ex: stats.librodrome.org
## NUXT_PUBLIC_UMAMI_URL — ex: https://stats.librodrome.org
## NUXT_PUBLIC_UMAMI_WEBSITE_ID — ID du site dans Umami (Settings → Websites)
## NUXT_UMAMI_API_KEY — clé API Umami (Settings → API Keys)
name: librodrome
services:
umami:
image: ghcr.io/umami-software/umami:postgresql-latest
environment:
DATABASE_URL: postgresql://umami:${UMAMI_DB_PASSWORD}@umami-db:5432/umami
DATABASE_TYPE: postgresql
APP_SECRET: ${UMAMI_APP_SECRET}
depends_on:
umami-db:
condition: service_healthy
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.routers.umami.rule=Host(`${UMAMI_DOMAIN:-stats.librodrome.org}`)"
- "traefik.http.routers.umami.entrypoints=websecure"
- "traefik.http.routers.umami.tls.certresolver=letsencrypt"
- "traefik.http.services.umami.loadbalancer.server.port=3000"
networks:
- default
- traefik
umami-db:
image: postgres:15-alpine
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: ${UMAMI_DB_PASSWORD}
volumes:
- umami-db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U umami"]
interval: 5s
timeout: 5s
retries: 10
restart: always
volumes:
umami-db-data:
networks:
default:
traefik:
external: true