Files
2026-03-23 14:29:32 -03:00

70 lines
2.1 KiB
Django/Jinja

services:
matrix-db:
image: postgres:16-alpine
container_name: matrix-db
restart: unless-stopped
environment:
POSTGRES_USER: synapse
POSTGRES_PASSWORD: "{{ matrix_db_password }}"
POSTGRES_DB: synapse
POSTGRES_INITDB_ARGS: "--encoding='UTF8' --lc-collate='C' --lc-ctype='C'"
volumes:
- {{ matrix_data_dir }}/db:/var/lib/postgresql/data
networks:
- internal
logging:
driver: gelf
options:
gelf-address: "udp://{{ graylog_host }}:{{ graylog_gelf_port }}"
tag: "matrix-db"
synapse:
image: ghcr.io/element-hq/synapse:{{ matrix_version }}
container_name: synapse
restart: unless-stopped
depends_on:
- matrix-db
environment:
SYNAPSE_CONFIG_PATH: /data/homeserver.yaml
volumes:
- {{ matrix_data_dir }}/synapse:/data
labels:
- "traefik.enable=true"
- "traefik.http.routers.matrix.rule=Host(`{{ matrix_domain }}`)"
- "traefik.http.routers.matrix.tls=true"
- "traefik.http.routers.matrix.tls.certresolver=letsencrypt"
- "traefik.http.services.matrix.loadbalancer.server.port=8008"
networks:
- internal
- {{ sovereign_network_name }}
logging:
driver: gelf
options:
gelf-address: "udp://{{ graylog_host }}:{{ graylog_gelf_port }}"
tag: "synapse"
element:
image: vectorim/element-web:latest
container_name: element
restart: unless-stopped
volumes:
- {{ matrix_data_dir }}/element/config.json:/app/config.json:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.element.rule=Host(`{{ element_domain }}`)"
- "traefik.http.routers.element.tls=true"
- "traefik.http.routers.element.tls.certresolver=letsencrypt"
- "traefik.http.services.element.loadbalancer.server.port=80"
networks:
- {{ sovereign_network_name }}
logging:
driver: gelf
options:
gelf-address: "udp://{{ graylog_host }}:{{ graylog_gelf_port }}"
tag: "element"
networks:
internal:
{{ sovereign_network_name }}:
external: true