# Conduit # Based on https://gitlab.com/famedly/conduit/-/blob/next/docker/docker-compose.for-traefik.yml version: '3.5' services: homeserver: image: registry.gitlab.com/famedly/conduit/matrix-conduit:latest ### If you want to build a fresh image from the sources, then comment the image line and uncomment the ### build lines. If you want meaningful labels in your built Conduit image, you should run docker-compose like this: ### CREATED=$(date -u +'%Y-%m-%dT%H:%M:%SZ') VERSION=$(grep -m1 -o '[0-9].[0-9].[0-9]' Cargo.toml) docker-compose up -d # build: # context: . # args: # CREATED: '2021-03-16T08:18:27Z' # VERSION: '0.1.0' # LOCAL: 'false' # GIT_REF: origin/master restart: unless-stopped volumes: - /srv/data/conduit/database:/var/lib/matrix-conduit/ networks: - public environment: CONDUIT_SERVER_NAME: ${DOMAIN} CONDUIT_DATABASE_PATH: /var/lib/matrix-conduit/ CONDUIT_DATABASE_BACKEND: rocksdb CONDUIT_PORT: 6167 CONDUIT_MAX_REQUEST_SIZE: 20_000_000 # in bytes, ~20 MB CONDUIT_ALLOW_REGISTRATION: 'true' CONDUIT_ALLOW_FEDERATION: 'true' CONDUIT_ALLOW_CHECK_FOR_UPDATES: 'true' CONDUIT_TRUSTED_SERVERS: '["matrix.org"]' #CONDUIT_MAX_CONCURRENT_REQUESTS: 100 #CONDUIT_LOG: warn,rocket=off,_=off,sled=off CONDUIT_ADDRESS: 0.0.0.0 CONDUIT_CONFIG: '' # Ignore this labels: traefik.enable: true traefik.docker.network: public traefik.http.routers.to-conduit.rule: Host(`${DOMAIN}`) traefik.http.routers.to-conduit.tls: true traefik.http.routers.to-conduit.tls.certresolver: letsencrypt traefik.http.routers.to-conduit.middlewares: cors-headers@docker traefik.http.middlewares.cors-headers.headers.accessControlAllowOriginList: '*' traefik.http.middlewares.cors-headers.headers.accessControlAllowHeaders: Origin, X-Requested-With, Content-Type, Accept, Authorization traefik.http.middlewares.cors-headers.headers.accessControlAllowMethods: GET, POST, PUT, DELETE, OPTIONS # We need some way to server the client and server .well-known json. The simplest way is to use a nginx container # to serve those two as static files. If you want to use a different way, delete or comment the below service, here # and in the docker-compose override file. well-known: image: nginx:latest restart: unless-stopped volumes: - ./nginx/matrix.conf:/etc/nginx/conf.d/matrix.conf:ro # the config to serve the .well-known/matrix files - /srv/data/conduit/nginx-www:/var/www/ # location of the client and server .well-known-files labels: traefik.enable: true traefik.domain: ${TRAEFIK_DOMAIN:-techwork.zone} traefik.docker.network: proxy traefik.http.routers.to-matrix-wellknown.rule: Host(`${DOMAIN}`) && PathPrefix(`/.well-known/matrix`) traefik.http.routers.to-matrix-wellknown.tls: true traefik.http.routers.to-matrix-wellknown.tls.certresolver: letsencrypt traefik.http.routers.to-matrix-wellknown.middlewares: cors-headers@docker traefik.http.middlewares.cors-headers.headers.accessControlAllowOriginList: '*' traefik.http.middlewares.cors-headers.headers.accessControlAllowHeaders: Origin, X-Requested-With, Content-Type, Accept, Authorization traefik.http.middlewares.cors-headers.headers.accessControlAllowMethods: GET, POST, PUT, DELETE, OPTIONS ### Uncomment if you want to use your own Element-Web App. ### Note: You need to provide a config.json for Element and you also need a second ### Domain or Subdomain for the communication between Element and Conduit ### Config-Docs: https://github.com/vector-im/element-web/blob/develop/docs/config.md # element-web: # image: vectorim/element-web:latest # restart: unless-stopped # volumes: # - ./element_config.json:/app/config.json # networks: # - proxy # depends_on: # - homeserver networks: public: external: true