# Synapse + PostgreSQL на одном хосте (DigitalOcean и т.п.).
# Перед первым запуском: см. MATRIX_SYNAPSE_DO.md — generate и homeserver.yaml.
#
# Использование на сервере:
#   export MATRIX_DOMAIN=matrix.example.com   # хост, где слушает Synapse за прокси
#   export SYNAPSE_SERVER_NAME=example.com     # публичное имя сервера (часто apex)
#   docker compose up -d
#
# Порты 8008/8448 не публикуем наружу, если перед Synapse стоит Caddy/Nginx на 443.

services:
  db:
    image: docker.io/postgres:15-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in .env}
      POSTGRES_DB: synapse
      POSTGRES_INITDB_ARGS: --encoding=UTF-8 --lc-collate=C --lc-ctype=C
    volumes:
      - synapse-db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U synapse"]
      interval: 10s
      timeout: 5s
      retries: 5

  synapse:
    image: docker.io/matrixdotorg/synapse:latest
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    volumes:
      - synapse-data:/data
    environment:
      SYNAPSE_NO_TLS: "1"
    ports:
      - "127.0.0.1:8008:8008"
      - "127.0.0.1:8448:8448"
    command: run

volumes:
  synapse-data:
  synapse-db:
