Matrix - A full matrix stack
Docker compose
rodBackup:conduit:
image: agreiner/rod:v4matrixconduit/matrix-conduit:latest
ports:restart: - 8080:8080
- 4848:4848unless-stopped
networks:
- webv2traefik
rod:- image:matrix_default
agreiner/rod:v7volumes:
- /path/to/db:/var/lib/matrix-conduit/
environment:
- CONDUIT_SERVER_NAME=matrix-domaint.com
- CONDUIT_DATABASE_PATH=/var/lib/matrix-conduit/
- CONDUIT_DATABASE_BACKEND=rocksdb
- CONDUIT_PORT=6167
- CONDUIT_MAX_REQUEST_SIZE=10000000 # in bytes, ~10 MB
- CONDUIT_ALLOW_REGISTRATION=false
- CONDUIT_ALLOW_FEDERATION=true
- CONDUIT_MAX_CONCURRENT_REQUESTS=5
- CONDUIT_ALLOW_CHECK_FOR_UPDATES=true
- CONDUIT_TRUSTED_SERVERS=["matrix.org"]
- CONDUIT_ADDRESS=0.0.0.0
- CONDUIT_CONFIG='' # Ignore this
labels:
- "traefik.enable=true"
- "traefik.http.routers.rod.matrix.rule=Host(`rod.matrix-domain.com`)"
- "traefik.http.routers.rod.matrix.entrypoints=web-insecure"websecure"
- "traefik.http.routers.rod.middlewares=redirect@file"
- "traefik.http.routers.rod-secured.rule=Host(`rod.domain.com`)"
- "traefik.http.routers.rod-secured.matrix.tls=true"
- "traefik.http.routers.rod-secured.tls.certResolver=main"matrix.middlewares=cors-headers-matrix@docker"
- "traefik.http.routers.rod-secured.entrypoints=web-secure"services.matrix.loadBalancer.server.port=6167"
- "traefik.docker.network=webv2"traefik"
- "traefik.http.services.rod.loadBalancer.server.port=8080"middlewares.cors-headers-matrix.headers.accessControlAllowOriginList=*"
- "traefik.http.middlewares.cors-headers-matrix.headers.accessControlAllowHeaders=Origin, X-Requested-With, Content-Type, Accept, Authorization"
- "traefik.http.middlewares.cors-headers-matrix.headers.accessControlAllowMethods=GET, POST, PUT, DELETE, OPTIONS"
conduit-well-known:
image: nginx:latest
restart: unless-stopped
networks:
- webv2traefik
rof:volumes:
image:- agreiner/rof:latest/path/to/matrix.conf:/etc/nginx/conf.d/matrix.conf # the config to serve the .well-known/matrix files
- /path/to/www:/var/www/ # location of the client and server .well-known-files
labels:
- "traefik.enable=true"
- "traefik.http.routers.rof.matrix-wellknown.rule=Host(`rof.matrix-domain.com`) && PathPrefix(`/.well-known/matrix`)"
- "traefik.http.routers.matrix-wellknown.entrypoints=websecure"
- "traefik.http.routers.matrix-wellknown.tls=true"
- "traefik.http.routers.matrix-wellknown.middlewares=cors-headers-matrix@docker"
- "traefik.http.services.matrix-wellknown.loadBalancer.server.port=80"
- "traefik.docker.network=traefik"
- "traefik.http.middlewares.cors-headers-matrix.headers.accessControlAllowOriginList=*"
- "traefik.http.middlewares.cors-headers-matrix.headers.accessControlAllowHeaders=Origin, X-Requested-With, Content-Type, Accept, Authorization"
- "traefik.http.middlewares.cors-headers-matrix.headers.accessControlAllowMethods=GET, POST, PUT, DELETE, OPTIONS"
element-web:
image: vectorim/element-web:latest
restart: unless-stopped
volumes:
- /path/to/config.json:/app/config.json
networks:
- traefik
depends_on:
- conduit
labels:
- "traefik.enable=true"
- "traefik.http.routers.element.rule=Host(`element.domain.com`)"
- "traefik.http.routers.rof.element.entrypoints=web-insecure"websecure"
- "traefik.http.routers.rof.middlewares=redirect@file"
- "traefik.http.routers.rof-secured.rule=Host(`rof.domain.com`)"
- "traefik.http.routers.rof-secured.element.tls=true"
- "traefik.http.routers.rof-secured.tls.certResolver=main"
- "traefik.http.routers.rof-secured.entrypoints=web-secure"services.element.loadBalancer.server.port=80"
- "traefik.docker.network=webv2"
- "traefik.http.services.rof.loadBalancer.server.port=8080"
networks:
- webv2traefik"