summaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorJonathan de Jong <jonathan@automatia.nl>2022-02-19 17:06:06 +0100
committerJonathan de Jong <jonathan@automatia.nl>2022-02-19 17:06:06 +0100
commit94573a3a610556bf3871689fb0fd749521071580 (patch)
tree3cdc293e60005679f4282935ebd2b1598bac2eae /docker
parent0ba0fa5f6cd9e989578783b16cbaf9af33fe6629 (diff)
downloadconduit-94573a3a610556bf3871689fb0fd749521071580.zip
improve docker documentation some
Diffstat (limited to 'docker')
-rw-r--r--docker/README.md37
-rw-r--r--docker/docker-compose.for-traefik.yml (renamed from docker/docker-compose.traefik.yml)0
-rw-r--r--docker/docker-compose.override.yml (renamed from docker/docker-compose.override.traefik.yml)0
-rw-r--r--docker/docker-compose.with-traefik.yml97
4 files changed, 124 insertions, 10 deletions
diff --git a/docker/README.md b/docker/README.md
index d886738..0a5981d 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -38,16 +38,28 @@ or you can skip the build step and pull the image from one of the following regi
[gl]: https://gitlab.com/famedly/conduit/container_registry/2497937
[shield]: https://img.shields.io/docker/image-size/matrixconduit/matrix-conduit/latest
-The `-d` flag lets the container run in detached mode. You now need to supply a `conduit.toml` config file, an example can be found [here](../conduit-example.toml).
-You can pass in different env vars to change config values on the fly. You can even configure Conduit completely by using env vars, but for that you need
-to pass `-e CONDUIT_CONFIG=""` into your container. For an overview of possible values, please take a look at the `docker-compose.yml` file.
+The `-d` flag lets the container run in detached mode. You now need to supply a `conduit.toml`
+config file, an example can be found [here](../conduit-example.toml). You can pass in different env
+vars to change config values on the fly. You can even configure Conduit completely by using env
+vars, but for that you need to pass `-e CONDUIT_CONFIG=""` into your container. For an overview of
+possible values, please take a look at the `docker-compose.yml` file.
If you just want to test Conduit for a short time, you can use the `--rm` flag, which will clean up everything related to your container after you stop it.
## Docker-compose
-If the docker command is not for you or your setup, you can also use one of the provided `docker-compose` files. Depending on your proxy setup, use the [`docker-compose.traefik.yml`](docker-compose.traefik.yml) and [`docker-compose.override.traefik.yml`](docker-compose.override.traefik.yml) for Traefik (don't forget to remove `.traefik` from the filenames) or the normal [`docker-compose.yml`](../docker-compose.yml) for every other reverse proxy. Additional info about deploying
-Conduit can be found [here](../DEPLOY.md).
+If the `docker run` command is not for you or your setup, you can also use one of the provided `docker-compose` files.
+
+Depending on your proxy setup, you can use one of the following files;
+- If you already have a `traefik` instance set up, use [`docker-compose.for-traefik.yml`](docker-compose.for-traefik.yml)
+- If you don't have a `traefik` instance set up (or any other reverse proxy), use [`docker-compose.with-traefik.yml`](docker-compose.with-traefik.yml)
+- For any other reverse proxy, use [`docker-compose.yml`](docker-compose.yml)
+
+When picking the traefik-related compose file, rename it so it matches `docker-compose.yml`, and
+rename the override file to `docker-compose.override.yml`. Edit the latter with the values you want
+for your server.
+
+Additional info about deploying Conduit can be found [here](../DEPLOY.md).
### Build
@@ -71,11 +83,16 @@ docker-compose up -d
### Use Traefik as Proxy
-As a container user, you probably know about Traefik. It is a easy to use reverse proxy for making containerized app and services available through the web. With the
-two provided files, [`docker-compose.traefik.yml`](docker-compose.traefik.yml) and [`docker-compose.override.traefik.yml`](docker-compose.override.traefik.yml), it is
-equally easy to deploy and use Conduit, with a little caveat. If you already took a look at the files, then you should have seen the `well-known` service, and that is
-the little caveat. Traefik is simply a proxy and loadbalancer and is not able to serve any kind of content, but for Conduit to federate, we need to either expose ports
-`443` and `8448` or serve two endpoints `.well-known/matrix/client` and `.well-known/matrix/server`.
+As a container user, you probably know about Traefik. It is a easy to use reverse proxy for making
+containerized app and services available through the web. With the two provided files,
+[`docker-compose.for-traefik.yml`](docker-compose.for-traefik.yml) (or
+[`docker-compose.with-traefik.yml`](docker-compose.with-traefik.yml)) and
+[`docker-compose.override.yml`](docker-compose.override.traefik.yml), it is equally easy to deploy
+and use Conduit, with a little caveat. If you already took a look at the files, then you should have
+seen the `well-known` service, and that is the little caveat. Traefik is simply a proxy and
+loadbalancer and is not able to serve any kind of content, but for Conduit to federate, we need to
+either expose ports `443` and `8448` or serve two endpoints `.well-known/matrix/client` and
+`.well-known/matrix/server`.
With the service `well-known` we use a single `nginx` container that will serve those two files.
diff --git a/docker/docker-compose.traefik.yml b/docker/docker-compose.for-traefik.yml
index f625080..f625080 100644
--- a/docker/docker-compose.traefik.yml
+++ b/docker/docker-compose.for-traefik.yml
diff --git a/docker/docker-compose.override.traefik.yml b/docker/docker-compose.override.yml
index 9525078..9525078 100644
--- a/docker/docker-compose.override.traefik.yml
+++ b/docker/docker-compose.override.yml
diff --git a/docker/docker-compose.with-traefik.yml b/docker/docker-compose.with-traefik.yml
new file mode 100644
index 0000000..6d46827
--- /dev/null
+++ b/docker/docker-compose.with-traefik.yml
@@ -0,0 +1,97 @@
+# Conduit - Behind Traefik Reverse Proxy
+version: '3'
+
+services:
+ homeserver:
+ ### If you already built the Conduit image with 'docker build' or want to use the Docker Hub image,
+ ### then you are ready to go.
+ image: matrixconduit/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:
+ - db:/srv/conduit/.local/share/conduit
+ ### Uncomment if you want to use conduit.toml to configure Conduit
+ ### Note: Set env vars will override conduit.toml values
+ # - ./conduit.toml:/srv/conduit/conduit.toml
+ networks:
+ - proxy
+ environment:
+ CONDUIT_SERVER_NAME: localhost:6167 # replace with your own name
+ CONDUIT_TRUSTED_SERVERS: '["matrix.org"]'
+ CONDUIT_ALLOW_REGISTRATION : 'true'
+ ### Uncomment and change values as desired
+ # CONDUIT_ADDRESS: 0.0.0.0
+ # CONDUIT_PORT: 6167
+ # CONDUIT_CONFIG: '/srv/conduit/conduit.toml' # if you want to configure purely by env vars, set this to an empty string ''
+ # Available levels are: error, warn, info, debug, trace - more info at: https://docs.rs/env_logger/*/env_logger/#enabling-logging
+ # CONDUIT_LOG: info # default is: "info,_=off,sled=off"
+ # CONDUIT_ALLOW_JAEGER: 'false'
+ # CONDUIT_ALLOW_ENCRYPTION: 'false'
+ # CONDUIT_ALLOW_FEDERATION: 'false'
+ # CONDUIT_DATABASE_PATH: /srv/conduit/.local/share/conduit
+ # CONDUIT_WORKERS: 10
+ # CONDUIT_MAX_REQUEST_SIZE: 20_000_000 # in bytes, ~20 MB
+
+ # 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 # the config to serve the .well-known/matrix files
+ - ./nginx/www:/var/www/ # location of the client and server .well-known-files
+
+ ### 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
+
+ traefik:
+ image: "traefik:latest"
+ container_name: "traefik"
+ restart: "unless-stopped"
+ ports:
+ - "80:80"
+ - "443:443"
+ volumes:
+ - "/var/run/docker.sock:/var/run/docker.sock"
+ # - "./traefik_config:/etc/traefik"
+ - "acme:/etc/traefik/acme"
+ labels:
+ - "traefik.enable=true"
+
+ # middleware redirect
+ - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
+ # global redirect to https
+ - "traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)"
+ - "traefik.http.routers.redirs.entrypoints=http"
+ - "traefik.http.routers.redirs.middlewares=redirect-to-https"
+
+ networks:
+ - proxy
+
+volumes:
+ db:
+ acme:
+
+networks:
+ proxy: \ No newline at end of file