my-homelab-configs/infra/matrix-server/docker-compose.yml

49 lines
1.4 KiB
YAML

services:
synapse:
image: matrixdotorg/synapse:latest
container_name: ${MATRIX_SYNAPSE_CONTAINER_NAME:-matrix-synapse}
restart: unless-stopped
depends_on:
- postgres
environment:
SYNAPSE_SERVER_NAME: ${MATRIX_SERVER_NAME:-matrix.lab2025.duckdns.org}
SYNAPSE_REPORT_STATS: "no"
# federation disabled (user choice): client-only listener on 8008
ports:
- "${MATRIX_SYNAPSE_PORT:-8008}:8008"
volumes:
- ./synapse-data:/data
networks:
- matrix
postgres:
image: postgres:16-alpine
container_name: ${MATRIX_POSTGRES_CONTAINER_NAME:-matrix-postgres}
restart: unless-stopped
environment:
POSTGRES_DB: ${MATRIX_POSTGRES_DB:-synapse}
POSTGRES_USER: ${MATRIX_POSTGRES_USER:-synapse}
POSTGRES_PASSWORD: ${MATRIX_POSTGRES_PASSWORD}
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --locale=C"
volumes:
- ./postgres-data:/var/lib/postgresql/data
networks:
- matrix
element:
image: vectorim/element-web:latest
container_name: ${MATRIX_ELEMENT_CONTAINER_NAME:-matrix-element}
restart: unless-stopped
depends_on:
- synapse
ports:
- "${MATRIX_ELEMENT_PORT:-8081}:80"
volumes:
# Must mount the FILE, not a directory (element-web reads /app/config.json)
- ./element-config/config.json:/app/config.json
networks:
- matrix
networks:
matrix:
driver: bridge