initial commit
This commit is contained in:
commit
e42a8b560f
91
docker-compose.yml
Normal file
91
docker-compose.yml
Normal file
|
@ -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
|
19
nginx/matrix.conf
Normal file
19
nginx/matrix.conf
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue