78 lines
2.4 KiB
YAML
78 lines
2.4 KiB
YAML
services:
|
|
synapse-db:
|
|
image: postgres:16-alpine
|
|
container_name: synapse-db
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: synapse_user
|
|
POSTGRES_PASSWORD: ${SYNAPSE_DB_PASSWORD}
|
|
POSTGRES_DB: synapse-db
|
|
POSTGRES_INITDB_ARGS: "--locale=C --encoding=UTF8"
|
|
volumes:
|
|
- ./postgres_data:/var/lib/postgresql/data
|
|
networks:
|
|
- matrix-net
|
|
|
|
synapse:
|
|
image: matrixdotorg/synapse:latest
|
|
container_name: matrix-synapse
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- synapse-db
|
|
volumes:
|
|
- ./synapse_data:/data
|
|
- ./data:/raw-data
|
|
environment:
|
|
- SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
|
|
# Expose internally or to a reverse proxy.
|
|
# If using Traefik, omit ports and use labels instead.
|
|
labels:
|
|
- "traefik.enable=true"
|
|
|
|
- "traefik.http.routers.matrix.entrypoints=websecure"
|
|
- "traefik.http.routers.matrix.rule=Host(`matrix.riverrooks.dev`)"
|
|
|
|
- "traefik.http.routers.matrix.service=matrix-service"
|
|
- "traefik.http.services.matrix-service.loadbalancer.server.port=8008"
|
|
|
|
- "traefik.http.routers.matrix.tls=true"
|
|
- "traefik.http.routers.matrix.tls.certresolver=basic"
|
|
|
|
networks:
|
|
- matrix-net
|
|
- traefik
|
|
matrix-delegation:
|
|
image: nginx:alpine
|
|
container_name: matrix-delegation
|
|
restart: unless-stopped
|
|
# 1. Using "|" keeps literal newlines so the script executes perfectly
|
|
command: >
|
|
/bin/sh -c "mkdir -p /usr/share/nginx/html/.well-known/matrix && echo '{\"m.server\": \"matrix.riverrooks.dev:443\"}' > /usr/share/nginx/html/.well-known/matrix/server && nginx -g 'daemon off;'"
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.matrix-delegation.rule=Host(`riverrooks.dev`) && PathPrefix(`/.well-known/matrix/server`)"
|
|
- "traefik.http.routers.matrix-delegation.entrypoints=websecure"
|
|
- "traefik.http.routers.matrix-delegation.tls.certresolver=desecresolver"
|
|
# 2. Added the traefik network so Traefik can actually reach this container
|
|
networks:
|
|
- matrix-net
|
|
- traefik
|
|
mautrix-gmessages:
|
|
image: dock.mau.fi/mautrix/gmessages:latest
|
|
container_name: mautrix-gmessages
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./data:/data
|
|
networks:
|
|
- matrix-net
|
|
depends_on:
|
|
- synapse-db
|
|
- synapse
|
|
|
|
|
|
networks:
|
|
matrix-net:
|
|
driver: bridge
|
|
traefik:
|
|
external: true
|