version: '3'

services:

    # Matrix Homeserver
    synapse-db:
        image: postgres:16
        restart: unless-stopped
        hostname: synapse-db
        environment: # These will be used in homeserver.yaml later on
          - POSTGRES_DB=${SYNAPSE_DB_NAME:-synapse}
          - POSTGRES_USER=${SYNAPSE_DB_USER:-synapse}
          - POSTGRES_PASSWORD=${SYNAPSE_DB_PASSWORD:-change_me}
          - POSTGRES_INITDB_ARGS=${SYNAPSE_DB_INITDB_ARGS:---encoding='utf8' --lc-collate='C' --lc-ctype='C'
        volumes:
          - ./synapse_db:/var/lib/postgresql/data

    synapse:
        image: matrixdotorg/synapse:latest
        restart: unless-stopped
        hostname: synapse
        ports:
          - 8008:8008
          - 9009:9009
        links:
          - synapse-db
        depends_on:
          - synapse-db
        volumes:
          - ./synapse:/data
          - ./briges:/briges

    # Clients
    element:
        image: vectorim/element-web:latest
        restart: unless-stopped
        hostname: element
        ports:
          - 8010:80
        depends_on:
          - synapse
        volumes:
          - ./clients/config/element/element-config.json:/app/config.json

    # Admin
    synapse-admin:
        image: ghcr.io/etkecc/synapse-admin:latest
        restart: unless-stopped
        hostname: synapse-admin
        ports:
          - 8011:8011
        depends_on:
          - synapse