version: "3.9" # based on an example found here: https://jonnev.se/matrix-homeserver-with-docker/ services: nginx: image: nginx:1.15-alpine restart: unless-stopped volumes: - ./data/nginx:/etc/nginx/conf.d - ./data/certbot/conf:/etc/letsencrypt - ./data/www:/etc/www:ro ports: - "80:80" - "443:443" command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'" # the certbot container won't start unless asked (like if we're renewing a cert) certbot: image: certbot/certbot restart: unless-stopped volumes: - ./data/certbot/conf:/etc/letsencrypt - ./data/certbot/www:/var/www/certbot profiles: - cert_renew # don't start this container unless explicitly asked postgres: image: arm32v7/postgres:12.5 # postgres:12.5 on x86_64 user: 1000:1000 restart: unless-stopped networks: - synapse volumes: - ./data/postgres:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=some password - POSTGRES_USER=synapse - POSTGRES_INITDB_ARGS=--locale C --encoding UTF8 synapse: image: matrixdotorg/synapse:v1.26.0 # later tags are recommended for x86_64 restart: unless-stopped depends_on: - postgres networks: - default - synapse volumes: - ./data/synapse:/data environment: - UID=1000 - GID=1000 maubot: image: kylrth/maubot:latest # dock.mau.dev/maubot/maubot:latest on x86_64 restart: unless-stopped depends_on: - synapse volumes: - ./data/maubot:/data:z environment: - UID=1000 - GID=1000 registration: image: kylrth/matrix-registration # zeratax/matrix-registration:v0.9.1 on x86_64 restart: unless-stopped depends_on: - synapse volumes: - ./data/registration:/data user: 1000:1000 command: serve networks: synapse: