From 71bce0931e5058a68e3f9838e196f6f38dc6bbca Mon Sep 17 00:00:00 2001 From: tobbbs <1+tobbbs@noreply.localhost> Date: Tue, 21 Jul 2026 13:33:09 +0200 Subject: [PATCH] Add compose.yaml --- compose.yaml | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 compose.yaml diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..d707114 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,92 @@ +version: '3' + +services: + traefik: + image: "traefik:${TRAEFIK_VERSION}" + restart: "always" + command: + - "--api=true" + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entrypoints.web.address=:80" + - "--entrypoints.websecure.address=:443" + - "--entrypoints.web.http.redirections.entrypoint.to=websecure" + - "--entrypoints.web.http.redirections.entrypoint.scheme=https" + - "--certificatesresolvers.letls.acme.email=admin@${DOMAIN}" + - "--certificatesresolvers.letls.acme.storage=/certs/acme.json" + - "--certificatesresolvers.letls.acme.httpchallenge=true" + - "--certificatesresolvers.letls.acme.httpchallenge.entrypoint=web" + ports: + - "443:443" + - "80:80" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" + - traefik_certs:/certs + + nginx: + image: "nginx:${NGINX_VERSION}" + restart: "always" + volumes: + - nginx_conf:/etc/nginx/conf.d + labels: + - traefik.enable=true + - traefik.http.routers.nginx.entrypoints=websecure + - traefik.http.routers.nginx.rule=Host(`${DOMAIN}`) + - traefik.http.routers.nginx.tls=true + - traefik.http.routers.nginx.tls.certresolver=letls + + synapse: + image: "docker.io/matrixdotorg/synapse:${SYNAPSE_VERSION}" + restart: unless-stopped + environment: + - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml + volumes: + - synapse_data:/data + depends_on: + - synapse_db + labels: + - traefik.enable=true + - traefik.http.routers.synapse.entrypoints=websecure + - traefik.http.routers.synapse.rule=Host(`matrix.${DOMAIN}`) + - traefik.http.routers.synapse.tls=true + - traefik.http.routers.synapse.tls.certresolver=letls + + synapse_db: + image: "docker.io/postgres:${POSTGRES_VERSION}" + restart: unless-stopped + environment: + - POSTGRES_USER=synapse + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C + volumes: + - synapse_db_data:/var/lib/postgresql/data + + coturn: + image: "instrumentisto/coturn:${COTURN_VERSION}" + restart: "unless-stopped" + volumes: + - coturn:/etc/coturn + ports: + - "49160-49200:49160-49200/udp" + - "3478:3478" + - "5349:5349" + + element: + image: "vectorim/element-web:${ELEMENT_VERSION}" + restart: unless-stopped + volumes: + - element:/app + labels: + - traefik.enable=true + - traefik.http.routers.element.entrypoints=websecure + - traefik.http.routers.element.rule=Host(`web.${DOMAIN}`) + - traefik.http.routers.element.tls=true + - traefik.http.routers.element.tls.certresolver=letls + - traefik.http.services.element.loadbalancer.server.port=80 +volumes: + traefik_certs: + nginx_conf: + synapse_data: + synapse_db_data: + coturn: + element: \ No newline at end of file