infrastructure/ansible/roles/mastodon/files/docker-compose.yml

62 lines
1.8 KiB
YAML

version: "2.3"
services:
mastodon:
image: lscr.io/linuxserver/mastodon:4.1.0
environment:
- TZ={{ timezone }}
- PUID={{ docker_user.id }}
- PGID={{ docker_user.id }}
- DOCKER_MODS=theorangeone/lsio-mod-more-processes:latest
- LOCAL_DOMAIN=theorangeone.net
- WEB_DOMAIN=mastodon.theorangeone.net
- DATABASE_URL=postgresql://mastodon:mastodon@db/mastodon
- REDIS_URL=redis://redis
- SECRET_KEY_BASE={{ secret_key_base }}
- OTP_SECRET={{ otp_secret }}
- VAPID_PRIVATE_KEY={{ vapid_private_key }}
- VAPID_PUBLIC_KEY={{ vapid_public_key }}
- TRUSTED_PROXY_IP=172.20.0.1
- SINGLE_USER_MODE=true
- DEFAULT_LOCALE=en
- STREAMING_CLUSTER_NUM=1
- WEB_CONCURRENCY=2
- MAX_THREADS={{ ansible_processor_nproc }}
- HTTP_PROXY={{ pve_hosts.qbittorrent.ip }}:3128
- HTTPS_PROXY={{ pve_hosts.qbittorrent.ip }}:3128
restart: unless-stopped
volumes:
- "{{ app_data_dir }}/mastodon:/config/mastodon"
depends_on:
- db
- redis
networks:
- default
- traefik
tmpfs:
- /var/cache
- /config/log
labels:
- traefik.enable=true
- traefik.http.routers.mastodon.rule=Host(`mastodon.theorangeone.net`)
- traefik.http.services.mastodon-mastodon.loadbalancer.server.port=443
- traefik.http.services.mastodon-mastodon.loadbalancer.server.scheme=https
db:
image: postgres:14-alpine
restart: unless-stopped
volumes:
- /mnt/tank/dbs/postgres/mastodon/:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=mastodon
- POSTGRES_USER=mastodon
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
- /mnt/tank/dbs/redis/mastodon/:/data
networks:
traefik:
external: true