docs(docker): Rewrite Docker DNS workaround with custom resolv.conf

Instead of /etc/resolv.conf on host. This works around the
systemd-resolved footgunning issue and provide an inline way to
configure resolvers, separate from that of the host system.
This commit is contained in:
stratself
2026-04-13 17:34:36 +00:00
committed by Ellis Git
parent 8dfdd1f662
commit dccf1b97c8
6 changed files with 78 additions and 31 deletions
+18 -12
View File
@@ -112,19 +112,25 @@ See the [reference configuration](../reference/config) page for all config optio
These examples include reverse proxy configurations for Matrix federation, which will route your Matrix domain (and optionally .well-known paths) to Continuwuity. These examples include reverse proxy configurations for Matrix federation, which will route your Matrix domain (and optionally .well-known paths) to Continuwuity.
:::note DNS Performance :::note Docker DNS Performance
Docker's default DNS resolver can cause performance issues with Matrix Docker's default DNS resolver are known to cause issues for Matrix federation, such as very slow federation or DNS timeout. As a workaround, we will mount a custom `/etc/resolv.conf` config file into the Continuwuity service, in order to bypass Docker and use a more performant resolver.
federation. If you experience slow federation or DNS timeouts, you may need to
use your host's DNS resolver instead. Add this volume mount to the
`continuwuity` service:
```yaml ```yaml title='docker-compose.yml'
volumes: services:
- /etc/resolv.conf:/etc/resolv.conf:ro homeserver:
# ...
configs:
- source: continuwuity-resolv.conf
target: /etc/resolv.conf
configs:
continuwuity-resolv.conf:
content: |
nameserver 1.0.0.1
nameserver 1.1.1.1
``` ```
See [Troubleshooting - DNS Issues](../troubleshooting.mdx#potential-dns-issues-when-using-docker) See [**Troubleshooting - DNS Issues**](../troubleshooting.mdx#potential-dns-issues-when-using-docker) for more details and alternative solutions.
for more details and alternative solutions.
::: :::
#### Caddy (using Caddyfile) #### Caddy (using Caddyfile)
@@ -197,9 +203,9 @@ You will then need to point your reverse proxy towards Continuwuity at `127.0.0.
### Starting Your Server ### Starting Your Server
1. Choose your compose file and rename it to `docker-compose.yml` 1. Choose your compose file from the above, and rename it to `docker-compose.yml`. Edit values as you see fit.
2. If using the override file, rename it to `docker-compose.override.yml` and 2. If using the override file, rename it to `docker-compose.override.yml` and
edit your values edit your values.
3. Start the server: 3. Start the server:
```bash ```bash
@@ -39,6 +39,9 @@ services:
nofile: nofile:
soft: 1048567 soft: 1048567
hard: 1048567 hard: 1048567
configs: # using custom resolver instead of Docker's
- source: continuwuity-resolv.conf
target: /etc/resolv.conf
volumes: volumes:
db: db:
@@ -48,3 +51,9 @@ networks:
# name, don't forget to change it here and in the docker-compose.override.yml # name, don't forget to change it here and in the docker-compose.override.yml
proxy: proxy:
external: true external: true
configs:
continuwuity-resolv.conf:
content: |
nameserver 1.0.0.1
nameserver 1.1.1.1
@@ -24,7 +24,6 @@ services:
command: /sbin/conduwuit command: /sbin/conduwuit
volumes: volumes:
- db:/var/lib/continuwuity - db:/var/lib/continuwuity
- /etc/resolv.conf:/etc/resolv.conf:ro # Use the host's DNS resolver rather than Docker's.
#- ./continuwuity.toml:/etc/continuwuity.toml #- ./continuwuity.toml:/etc/continuwuity.toml
environment: environment:
CONTINUWUITY_SERVER_NAME: example.com # EDIT THIS CONTINUWUITY_SERVER_NAME: example.com # EDIT THIS
@@ -41,9 +40,18 @@ services:
labels: labels:
caddy: matrix.example.com caddy: matrix.example.com
caddy.reverse_proxy: "{{upstreams 8008}}" caddy.reverse_proxy: "{{upstreams 8008}}"
configs: # using custom resolver instead of Docker's
- source: continuwuity-resolv.conf
target: /etc/resolv.conf
volumes: volumes:
db: db:
networks: networks:
caddy: caddy:
configs:
continuwuity-resolv.conf:
content: |
nameserver 1.0.0.1
nameserver 1.1.1.1
@@ -1,16 +1,3 @@
networks:
caddy:
volumes:
db:
configs:
dynamic.yml:
content: |
https://example.com, https://example.com:8448 {
reverse_proxy http://homeserver:8008
}
services: services:
caddy: caddy:
image: docker.io/caddy:latest image: docker.io/caddy:latest
@@ -33,7 +20,6 @@ services:
command: /sbin/conduwuit command: /sbin/conduwuit
volumes: volumes:
- db:/var/lib/continuwuity - db:/var/lib/continuwuity
- /etc/resolv.conf:/etc/resolv.conf:ro # Use the host's DNS resolver rather than Docker's.
#- ./continuwuity.toml:/etc/continuwuity.toml #- ./continuwuity.toml:/etc/continuwuity.toml
environment: environment:
CONTINUWUITY_SERVER_NAME: example.com CONTINUWUITY_SERVER_NAME: example.com
@@ -42,4 +28,25 @@ services:
CONTINUWUITY_PORT: 8008 CONTINUWUITY_PORT: 8008
#CONTINUWUITY_CONFIG: '/etc/continuwuity.toml' # Uncomment if you mapped config toml above #CONTINUWUITY_CONFIG: '/etc/continuwuity.toml' # Uncomment if you mapped config toml above
networks: networks:
- caddy - caddy
configs: # using custom resolvers instead of Docker's
- source: continuwuity-resolv.conf
target: /etc/resolv.conf
networks:
caddy:
volumes:
db:
configs:
dynamic.yml:
content: |
https://example.com, https://example.com:8448 {
reverse_proxy http://homeserver:8008
}
continuwuity-resolv.conf:
content: |
nameserver 1.0.0.1
nameserver 1.1.1.1
@@ -7,7 +7,6 @@ services:
command: /sbin/conduwuit command: /sbin/conduwuit
volumes: volumes:
- db:/var/lib/continuwuity - db:/var/lib/continuwuity
- /etc/resolv.conf:/etc/resolv.conf:ro # Use the host's DNS resolver rather than Docker's.
#- ./continuwuity.toml:/etc/continuwuity.toml #- ./continuwuity.toml:/etc/continuwuity.toml
networks: networks:
- proxy - proxy
@@ -37,6 +36,9 @@ services:
nofile: nofile:
soft: 1048567 soft: 1048567
hard: 1048567 hard: 1048567
configs: # using custom resolver instead of Docker's
- source: continuwuity-resolv.conf
target: /etc/resolv.conf
traefik: traefik:
image: "traefik:latest" image: "traefik:latest"
@@ -48,7 +50,6 @@ services:
volumes: volumes:
- "/var/run/docker.sock:/var/run/docker.sock:z" - "/var/run/docker.sock:/var/run/docker.sock:z"
- "acme:/etc/traefik/acme" - "acme:/etc/traefik/acme"
#- "./traefik_config:/etc/traefik:z"
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
@@ -90,3 +91,9 @@ volumes:
networks: networks:
proxy: proxy:
configs:
continuwuity-resolv.conf:
content: |
nameserver 1.0.0.1
nameserver 1.1.1.1
+10
View File
@@ -16,6 +16,16 @@ services:
CONTINUWUITY_ADDRESS: 0.0.0.0 CONTINUWUITY_ADDRESS: 0.0.0.0
CONTINUWUITY_PORT: 8008 CONTINUWUITY_PORT: 8008
#CONTINUWUITY_CONFIG: '/etc/continuwuity.toml' # Uncomment if you mapped config toml above #CONTINUWUITY_CONFIG: '/etc/continuwuity.toml' # Uncomment if you mapped config toml above
configs: # using custom resolver instead of Docker's
- source: continuwuity-resolv.conf
target: /etc/resolv.conf
volumes: volumes:
db: db:
configs:
continuwuity-resolv.conf:
content: |
nameserver 1.0.0.1
nameserver 1.1.1.1