version: "3.4" services: postgres: image: postgres:13-alpine networks: - dbnet volumes: - db-data:/var/lib/postgresql/13/ ports: - "5432:5432" environment: - POSTGRES_PASSWORD_FILE=/run/secrets/pg_pass_secret - POSTGRES_USER_FILE=/run/secrets/pg_user_secret - POSTGRES_INITDB_ARGS_FILE=/run/secrets/pg_initdb_args_secret - POSTGRES_DB_FILE=/run/secrets/pg_db_secret secrets: - pg_pass_secret - pg_user_secret - pg_initdb_args_secret - pg_db_secret synapse: image: synapse build: context: ./synapse/ networks: - matrixnet - certnet - dbnet volumes: - synapse-data:/data/ # - cert-data:/etc/letsencrypt/live/ # - ./synapse/homeserver.yaml:/data/homeserver.yaml # - ./synapse/terminaldweller.com.signing.key:/data/terminaldweller.com.signing.key # - ./synapse/terminaldweller.com.log.config:/data/terminaldweller.com.log.config # entrypoint: ["tail", "-f", "/dev/null"] # command: ["generate"] depends_on: - postgres - haproxy ports: - "8008:8008" # - "8484:8484/tcp" # - "443:443" environment: - SYNAPSE_SERVER_NAME=terminaldweller.com - SYNAPSE_REPORT_STATS=yes - SYNAPSE_DATA_DIR=/data/ - SYNAPSE_CONFIG_DIR=/data/ - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml # - TZ=Tehran/Asia healthcheck: test: ["CMD", "curl", "-fSs", "http://localhost:8008/health"] interval: 1m timeout: 10s retries: 3 haproxy: image: haproxy:lts-alpine ports: - "80:80" - "443:443" - "9999:9999" - "8448:8448/tcp" networks: - matrixnet - turnnet - certnet volumes: - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro # - cert-data:/usr/local/etc/haproxy/certificates:ro # - cert-data:/etc/certificates:ro - certificates:/etc/certificates depends_on: - certbot # restart: on-failure certbot: image: certbot build: context: ./certbot ports: - "9080:80" - "9443:443" networks: - certnet volumes: # - cert-data:/etc/certificates - certificates:/etc/certificates - certbot-data:/etc/letsencrypt entrypoint: "/bin/sh -c 'trap exit TERM; while :; do . /etc/scripts/renew-certificates.sh ; sleep 12h & wait $${!}; done;'" restart: always command: ["certonly"] # coturn: # image: coturn/coturn:latest # networks: # - turnnet # volumes: # - ./coturn/turnserver.conf:/etc/turnserver.conf:ro # ports: # - "3478:3478" # - "5349:5349" # depends_on: # - synapse networks: matrixnet: certnet: dbnet: turnnet: volumes: db-data: synapse-data: cert-data: certificates: certbot-data: secrets: pg_pass_secret: file: ./postgres/pg_pass_secret pg_user_secret: file: ./postgres/pg_user_secret pg_initdb_args_secret: file: ./postgres/pg_initdb_args_secret pg_db_secret: file: ./postgres/pg_db_secret