plausible-hosting/swarm/plausible.yml

162 lines
3.8 KiB
YAML

version: "3.3"
services:
mail:
image: bytemark/smtp
networks:
- plausible_network
deploy:
mode: replicated
replicas: 1
plausible_db:
image: postgres:12
networks:
plausible_network:
aliases:
- postgres.plausible.local
volumes:
- db-data:/data/postgres
environment:
- POSTGRES_PASSWORD=<postgres-password>
- PGDATA=/data/postgres/pgdata
- POSTGRES_USER=plausible
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.labels.hetzner_location == nbg1
resources:
limits:
cpus: "1.00"
memory: 2048M
reservations:
cpus: "0.25"
memory: 512M
plausible_events_db:
image: clickhouse/clickhouse-server:22.5.3.21
networks:
- plausible_network
configs:
- source: clickhouse_config_xml
target: /etc/clickhouse-server/config.d/logging.xml
uid: "1000"
gid: "1000"
mode: 0444
- source: clickhouse_user_config_xml
target: /etc/clickhouse-server/users.d/logging.xml
uid: "1000"
gid: "1000"
mode: 0444
volumes:
- event-data:/var/lib/clickhouse
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.labels.hetzner_location == nbg1
resources:
limits:
cpus: "1.00"
memory: 2048M
reservations:
cpus: "0.25"
memory: 512M
plausible_init:
image: plausible/analytics:v1.4.4
command: sh -c "source /var/run/secrets/plausible_env && sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh db init-admin"
secrets:
- source: plausible_env
target: plausible_env
uid: '1000'
gid: '1000'
mode: 0400
networks:
- plausible_network
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: "none"
resources:
limits:
cpus: "0.5"
memory: 512M
plausible:
image: plausible/analytics:v1.4.4
command: sh -c "source /var/run/secrets/plausible_env && exec /entrypoint.sh run"
secrets:
- source: plausible_env
target: plausible_env
uid: '1000'
gid: '1000'
mode: 0400
networks:
- plausible_network
- traefik-public
deploy:
mode: replicated
replicas: 1
resources:
limits:
cpus: "1.00"
memory: 2048M
reservations:
cpus: "0.25"
memory: 512M
placement:
constraints:
- node.labels.hetzner_location == nbg1
labels:
- "traefik.docker.network=traefik-public"
- "traefik.enable=true"
- "traefik.http.routers.plausible-frontend.rule=Host(`<base-domain>`)"
- "traefik.http.routers.plausible-frontend.entrypoints=http"
- "traefik.http.services.plausible-frontend.loadbalancer.server.port=8000"
- "traefik.http.routers.plausible-frontend.service=plausible-frontend"
- "traefik.constraint-label=traefik-public"
secrets:
plausible_env:
file: ./secrets/plausible_analytics/plausible-conf.env
configs:
clickhouse_config_xml:
file: ./configs/clickhouse/clickhouse-config.xml
clickhouse_user_config_xml:
file: ./configs/clickhouse/clickhouse-user-config.xml
networks:
plausible_network:
driver: overlay
attachable: true
driver_opts:
encrypted: ""
traefik-public:
external: true
volumes:
db-data:
driver: hetzner-volume
driver_opts:
size: '20'
fstype: ext4
event-data:
driver: hetzner-volume
driver_opts:
size: '20'
fstype: ext4
geoip:
driver: hetzner-volume
driver_opts:
size: '20'
fstype: ext4