version: "2.3"

services:

  synapse:
    image: matrixdotorg/synapse:v1.97.0
    restart: unless-stopped
    environment:
      - SYNAPSE_CONFIG_PATH=/etc/homeserver.yaml
      - SYNAPSE_REPORT_STATS=yes
      - UID={{ docker_user.id }}
      - GID={{ docker_user.id }}
      - HTTP_PROXY={{ pve_hosts.qbittorrent.ip }}:3128
      - HTTPS_PROXY={{ pve_hosts.qbittorrent.ip }}:3128
    volumes:
      - "{{ app_data_dir }}/synapse/homeserver.yaml:/etc/homeserver.yaml"
      - "{{ app_data_dir }}/synapse:/data"
    depends_on:
      - db
    labels:
      - traefik.enable=true
      - traefik.http.routers.synapse.rule=Host(`matrix.jakehoward.tech`)
    networks:
      - default
      - traefik

  db:
    image: postgres:14-alpine
    restart: unless-stopped
    environment:
      - POSTGRES_USER=synapse
      - POSTGRES_PASSWORD=synapse
      - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
    volumes:
      - /mnt/speed/dbs/postgres/synapse:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    restart: unless-stopped
    volumes:
      - /mnt/speed/dbs/redis/synapse:/data

  admin:
    image: awesometechnologies/synapse-admin:latest
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.http.routers.synapse-admin.rule=Host(`synapse-admin.jakehoward.tech`)
    networks:
      - default
      - traefik

networks:
  traefik:
    external: true