version: '3' services: #autoheal: # restart: always # image: willfarrell/autoheal # environment: # - AUTOHEAL_CONTAINER_LABEL=synapse-autoheal # volumes: # - /var/run/docker.sock:/var/run/docker.sock postgres: image: postgres:latest environment: - POSTGRES_USER=synapse - POSTGRES_PASSWORD - POSTGRES_DB=synapsedb - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C volumes: - ./data/postgres:/var/lib/postgresql/data/ - ./progs:/progs restart: always healthcheck: test: pg_isready -U synapse -d synapsedb interval: 10s timeout: 5s retries: 5 redis: image: redis:latest restart: always healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 3 synapse: image: matrixdotorg/synapse:$SYNAPSE_TAG restart: always environment: - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml volumes: - ./data/synapse:/data depends_on: postgres: condition: service_healthy redis: condition: service_healthy ports: - 127.0.0.1:8008:8008/tcp labels: synapse-autoheal: "true" mem_limit: 2G sender1: image: matrixdotorg/synapse:$SYNAPSE_TAG restart: always command: ["run", "--config-path=/data/homeserver.yaml", "--config-path=/workers/replication.yaml", "--config-path=/workers/sender1.yaml"] environment: - SYNAPSE_WORKER=synapse.app.federation_sender volumes: - ./data/synapse:/data - ./workers:/workers depends_on: synapse: condition: service_healthy healthcheck: disable: true mem_limit: 2G sender2: image: matrixdotorg/synapse:$SYNAPSE_TAG restart: always command: ["run", "--config-path=/data/homeserver.yaml", "--config-path=/workers/replication.yaml", "--config-path=/workers/sender2.yaml"] environment: - SYNAPSE_WORKER=synapse.app.federation_sender volumes: - ./data/synapse:/data - ./workers:/workers depends_on: synapse: condition: service_healthy healthcheck: disable: true mem_limit: 2G sender3: image: matrixdotorg/synapse:$SYNAPSE_TAG restart: always command: ["run", "--config-path=/data/homeserver.yaml", "--config-path=/workers/replication.yaml", "--config-path=/workers/sender3.yaml"] environment: - SYNAPSE_WORKER=synapse.app.federation_sender volumes: - ./data/synapse:/data - ./workers:/workers depends_on: synapse: condition: service_healthy healthcheck: disable: true mem_limit: 2G sender4: image: matrixdotorg/synapse:$SYNAPSE_TAG restart: always command: ["run", "--config-path=/data/homeserver.yaml", "--config-path=/workers/replication.yaml", "--config-path=/workers/sender4.yaml"] environment: - SYNAPSE_WORKER=synapse.app.federation_sender volumes: - ./data/synapse:/data - ./workers:/workers depends_on: synapse: condition: service_healthy healthcheck: disable: true mem_limit: 2G media: image: matrixdotorg/synapse:$SYNAPSE_TAG restart: always command: ["run", "--config-path=/data/homeserver.yaml", "--config-path=/workers/replication.yaml", "--config-path=/workers/media.yaml"] environment: - SYNAPSE_WORKER=synapse.app.media_repository volumes: - ./data/synapse:/data - ./workers:/workers depends_on: synapse: condition: service_healthy ports: - 127.0.0.1:8009:8008 labels: synapse-autoheal: "true" mem_limit: 2G generic1: image: matrixdotorg/synapse:$SYNAPSE_TAG restart: always command: ["run", "--config-path=/data/homeserver.yaml", "--config-path=/workers/replication.yaml", "--config-path=/workers/generic.yaml"] environment: - SYNAPSE_WORKER=synapse.app.generic_worker volumes: - ./data/synapse:/data - ./workers:/workers depends_on: synapse: condition: service_healthy ports: - 127.0.0.1:8010:8008/tcp labels: synapse-autoheal: "true" mem_limit: 2G generic2: image: matrixdotorg/synapse:$SYNAPSE_TAG restart: always command: ["run", "--config-path=/data/homeserver.yaml", "--config-path=/workers/replication.yaml", "--config-path=/workers/generic.yaml"] environment: - SYNAPSE_WORKER=synapse.app.generic_worker volumes: - ./data/synapse:/data - ./workers:/workers depends_on: synapse: condition: service_healthy ports: - 127.0.0.1:8011:8008/tcp labels: synapse-autoheal: "true" mem_limit: 2G generic3: image: matrixdotorg/synapse:$SYNAPSE_TAG restart: always command: ["run", "--config-path=/data/homeserver.yaml", "--config-path=/workers/replication.yaml", "--config-path=/workers/generic.yaml"] environment: - SYNAPSE_WORKER=synapse.app.generic_worker volumes: - ./data/synapse:/data - ./workers:/workers depends_on: synapse: condition: service_healthy ports: - 127.0.0.1:8012:8008/tcp labels: synapse-autoheal: "true" mem_limit: 2G generic4: image: matrixdotorg/synapse:$SYNAPSE_TAG restart: always command: ["run", "--config-path=/data/homeserver.yaml", "--config-path=/workers/replication.yaml", "--config-path=/workers/generic.yaml"] environment: - SYNAPSE_WORKER=synapse.app.generic_worker volumes: - ./data/synapse:/data - ./workers:/workers depends_on: synapse: condition: service_healthy ports: - 127.0.0.1:8013:8008/tcp labels: synapse-autoheal: "true" mem_limit: 2G coturn: image: coturn/coturn:latest restart: always network_mode: "host" command: - "-n" - "--use-auth-secret" - "--static-auth-secret=$COTURN_AUTH_SECRET" - "--realm=turn.boba.best" - "--no-tcp-relay" - "-q=16" #- "--relay-ip=$$(detect-external-ip --ipv4)" #- "--relay-ip=$$(detect-external-ip --ipv6)" - "--cert=/certs/turn.boba.best.crt" - "--pkey=/certs/turn.boba.best.key" volumes: - ./data/coturn/certs:/certs:ro tmpfs: - /var/lib/coturn #ports: # - 3478:3478 # - 5349:5349 # - 49152-65535:49152-65535/udp prometheus: image: prom/prometheus:latest restart: always command: - --config.file=/etc/prometheus/prometheus.yml volumes: - ./conf/prometheus.yml:/etc/prometheus/prometheus.yml - ./data/prometheus:/prometheus networks: default: grafana: aliases: - synapse_prometheus networks: grafana: external: true name: grafana_default