commit e42a8b560f96fcb8d877ba8560a6e5f37201b757 Author: D. Scott Boggs Date: Thu Dec 21 11:15:54 2023 -0500 initial commit diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..1efd1f2 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,91 @@ +# 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: chat.techwork.zone + 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(`chat.techwork.zone`) + 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.docker.network: proxy + traefik.http.routers.to-matrix-wellknown.rule: Host(`chat.techwork.zone`) && 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 + +volumes: + db: + +networks: + public: + external: true diff --git a/nginx/matrix.conf b/nginx/matrix.conf new file mode 100644 index 0000000..9c1bfa3 --- /dev/null +++ b/nginx/matrix.conf @@ -0,0 +1,19 @@ +server { + server_name chat.techwork.zone; + listen 80 default_server; + + location /.well-known/matrix/server { + return 200 '{"m.server": "chat.techwork.zone:443"}'; + types { } default_type "application/json; charset=utf-8"; + } + + location /.well-known/matrix/client { + return 200 '{"m.homeserver": {"base_url": "https://chat.techwork.zone"}}'; + types { } default_type "application/json; charset=utf-8"; + add_header "Access-Control-Allow-Origin" *; + } + + location / { + return 404; + } +}