Compare commits

...

85 Commits

Author SHA1 Message Date
Moritz c36c147dff add alakazam integration file alaconnect.yml
continuous-integration/drone/push Build is failing Details
2024-05-13 17:37:27 +02:00
Moritz 8a37984e15 chore: publish 6.0.2+v1.100.0 release
continuous-integration/drone/push Build is failing Details
continuous-integration/drone/tag Build is passing Details
2024-04-17 16:40:04 +02:00
Moritz 63a1abb2c0 fix backup label 2024-04-17 16:37:26 +02:00
3wc 86106b6b6f chore: publish 6.0.1+v1.100.0 release
continuous-integration/drone/push Build is failing Details
continuous-integration/drone/tag Build is passing Details
2024-04-13 11:05:40 -03:00
3wc 8250916051 Update release notes
[ci skip]
2024-04-13 11:05:21 -03:00
3wc e007bda255 chore: publish 6.0.0+v1.100.0 release
continuous-integration/drone/tag Build is passing Details
continuous-integration/drone/push Build is failing Details
2024-04-12 12:31:50 -03:00
3wc 951fc56434 app → web, synapse → app
Fixes #42
2024-04-12 12:30:05 -03:00
Moritz 6fe14edef7 chore: publish 5.0.5+v1.100.0 release
continuous-integration/drone/push Build is failing Details
continuous-integration/drone/tag Build is passing Details
2024-04-09 10:10:07 +02:00
Moritz a0a9c2b863 Revert "chore: publish 5.0.5+1.25.3 release"
This reverts commit bdf8e11dc5.
2024-04-09 10:08:22 +02:00
3wc bdf8e11dc5 chore: publish 5.0.5+1.25.3 release
continuous-integration/drone/push Build is failing Details
2024-03-27 00:45:39 -03:00
3wc 2658fed366 Fix permissions on generated files
continuous-integration/drone/push Build is failing Details
2024-03-27 00:38:39 -03:00
Simon 72b59ce4ad chore: publish 5.0.4+v1.100.0 release
continuous-integration/drone/push Build is failing Details
2024-03-13 14:18:51 +01:00
Moritz dfed1e54da chore: publish 5.0.4+v1.100.0 release
continuous-integration/drone/push Build is failing Details
2024-02-19 13:55:03 +01:00
3wc d4ccb3588b chore: publish 5.0.3+v1.100.0 release
continuous-integration/drone/push Build is failing Details
2024-02-08 14:59:48 -03:00
3wc 11f70b7878 chore: publish 5.1.0+1.25.3 release
continuous-integration/drone/push Build is failing Details
2024-02-08 14:47:50 -03:00
Moritz fd601c23f3 chore: publish 5.0.2+v1.93.0 release
continuous-integration/drone/push Build encountered an error Details
2023-11-09 13:01:48 +01:00
knoflook b9097c1f94 fix: don't break when logging in with keycloak
continuous-integration/drone/push Build is failing Details
2023-10-23 20:19:17 +02:00
Moritz 75d1303118 set timeout and autoupdates
continuous-integration/drone/push Build is failing Details
2023-10-19 18:15:10 +02:00
Moritz 90c8d0dbba fix secrets
continuous-integration/drone/push Build is failing Details
2023-10-19 15:33:29 +02:00
decentral1se a85310346b
fix: drop config if not using
continuous-integration/drone/push Build is failing Details
2023-10-11 13:23:54 +02:00
decentral1se 116840623b Merge pull request 'Homeserver config updates' (#40) from homeserver-config-updates into main
continuous-integration/drone/push Build is failing Details
Reviewed-on: #40
2023-10-11 11:02:24 +00:00
decentral1se 919aaf0116
feat: new config options with defaults 2023-10-11 13:01:16 +02:00
decentral1se 43a3502fad
refactor: point to config manual 2023-10-11 12:45:06 +02:00
decentral1se 08b49c14d9
feat: use nginx proxy, config for public rooms (fedi)
continuous-integration/drone/push Build is failing Details
See #38.
2023-10-08 01:41:29 +02:00
decentral1se 7683ebd189
fix: match env var to config
continuous-integration/drone/push Build is failing Details
continuous-integration/drone Build is failing Details
2023-10-06 20:36:55 +02:00
decentral1se a3c9dfd65b
feat: make v4 release & add notes
continuous-integration/drone/push Build is failing Details
2023-10-06 19:16:06 +02:00
decentral1se 6dacecbfac
fix: make TIMEOUT / ENABLE_AUTO_UPDATE optional 2023-10-06 19:15:44 +02:00
decentral1se 4770a03cb7
chore: minor (synapse: v1.93.0, telegram:v0.14.2)
continuous-integration/drone/push Build is failing Details
2023-10-06 19:10:04 +02:00
decentral1se 7ead29b750
chore: publish 3.13.0+v1.92.2 release
continuous-integration/drone/push Build is failing Details
2023-09-15 15:50:35 +02:00
decentral1se 3c772cc1e5
chore: publish 3.12.0+v1.90.0 release
continuous-integration/drone/push Build is failing Details
2023-08-27 19:34:10 +02:00
decentral1se e146435394
chore: publish 3.11.0+v1.89.0 release
continuous-integration/drone/push Build is failing Details
2023-08-01 21:08:27 +02:00
decentral1se 795c2eb685 chore: publish 3.10.0+v1.88.0 release
continuous-integration/drone/push Build is failing Details
2023-07-20 17:06:08 +02:00
Moritz 7b1b5c37ed fix secrets
continuous-integration/drone/push Build is failing Details
2023-07-19 22:53:35 +02:00
Philipp Rothmann 84204b03a7 chore: publish 3.9.1+v1.87.0 release
continuous-integration/drone/push Build is passing Details
2023-07-18 21:47:15 +02:00
Philipp Rothmann b57b73d5d6 fix: bump homeserver config version 2023-07-18 21:46:54 +02:00
Philipp Rothmann 66bd6be8fc chore: publish 3.9.0+v1.87.0 release
continuous-integration/drone/push Build is passing Details
2023-07-18 21:34:53 +02:00
Moritz dda7f2a369 fix domain env
continuous-integration/drone/push Build is passing Details
2023-07-09 23:38:22 +02:00
Moritz d22a8257fb command for adding admin user
continuous-integration/drone/push Build is passing Details
2023-07-06 17:02:49 +02:00
Philipp Rothmann 2445d9f33a fix: healthchecks
continuous-integration/drone/push Build is passing Details
2023-06-12 14:14:43 +02:00
Moritz 2a45273541 fix second oidc configuration
continuous-integration/drone/push Build is passing Details
2023-05-31 15:50:55 +02:00
decentral1se 48efb7de51 chore: publish 3.8.0+v1.84.1 release
continuous-integration/drone/push Build is passing Details
2023-05-30 20:00:17 +02:00
decentral1se b2e8bf9c8b
chore: bump telegram config
continuous-integration/drone/push Build is passing Details
2023-05-10 18:03:46 +02:00
decentral1se d02981a2bf
feat: sync_channel_members configurable for telegram bridge
continuous-integration/drone/push Build is passing Details
2023-05-10 17:57:54 +02:00
decentral1se c6f9b117e2 chore: publish 3.7.0+v1.82.0 release
continuous-integration/drone/push Build is passing Details
2023-05-08 00:53:44 +02:00
3wc ade6147f35 chore: publish 3.6.0+v1.81.0 release
continuous-integration/drone/push Build is passing Details
2023-04-23 15:36:37 -04:00
3wc 50e0aa06cc Support separate DOMAIN vs SERVER_NAME
continuous-integration/drone/push Build is passing Details
2023-04-23 15:34:58 -04:00
3wc f3732c8392 Goodbye, foo.yaml!
continuous-integration/drone/push Build is passing Details
2023-04-13 12:14:35 -04:00
decentral1se e171ce052e
chore: publish 3.5.0+v1.81.0 release
continuous-integration/drone/push Build is passing Details
2023-04-11 16:29:41 +02:00
knoflook 5d5bd70818 Merge branch 'main' of https://git.coopcloud.tech/coop-cloud/matrix-synapse
continuous-integration/drone/push Build is passing Details
2023-04-08 23:09:33 +02:00
knoflook fd1a6c7a4a fix keyserver problems when federating 2023-04-08 23:09:16 +02:00
decentral1se 39a47a2515
chore: publish 3.4.0+v1.80.0 release
continuous-integration/drone/push Build is passing Details
2023-04-02 14:25:02 +02:00
knoflook 6e556c8b2d fix: put smtp password in quotes
continuous-integration/drone/push Build is passing Details
2023-03-05 12:05:26 +01:00
decentral1se 74fb8014fa chore: publish 3.3.0+v1.78.0 release
continuous-integration/drone/push Build is passing Details
2023-03-04 14:12:33 +01:00
decentral1se 787e0fb3a9
chore: publish 3.2.0+v1.77.0 release
continuous-integration/drone/push Build is passing Details
2023-02-27 19:33:34 +01:00
knoflook ead52c1acd Merge branch 'main' of https://git.coopcloud.tech/coop-cloud/matrix-synapse
continuous-integration/drone/push Build is failing Details
2023-02-21 13:56:06 +01:00
knoflook fca551b735 add keycloak 2 and 3 2023-02-21 13:56:01 +01:00
decentral1se f43a47d4c8
fix: use new mount for shared secret auth
continuous-integration/drone/push Build is passing Details
See b3dfa11097
2023-02-14 10:00:28 +01:00
decentral1se beeb1e47b1 chore: publish 3.1.0+v1.76.0 release
continuous-integration/drone/push Build is failing Details
2023-02-13 09:26:27 +01:00
decentral1se 931e89f5f5 Merge pull request 'homserver -> homeserver' (#34) from speling into main
continuous-integration/drone/push Build encountered an error Details
Reviewed-on: #34
2023-02-02 19:09:48 +00:00
josef 5a72540db2 homserver -> homeserver 2023-02-02 18:12:12 +00:00
3wc 703b8d91d2 Switch to self-hosted stack-ssh-deploy image [mass update]
continuous-integration/drone/push Build is passing Details
2023-01-21 11:49:56 -08:00
3wc 05e9ee0732 Add drone configs / secrets [mass update]
continuous-integration/drone/push Build is passing Details
2023-01-20 21:32:06 -08:00
3wc ec22040bd3 Add CI and catalogue generation [mass update]
continuous-integration/drone/push Build is failing Details
2023-01-20 10:45:03 -08:00
3wc d5c70f5567 Update abra syntax in examples (finally) [mass update] 2023-01-19 16:02:28 -08:00
decentral1se 4445e0249f
docs: README pass 2023-01-08 02:09:55 +01:00
decentral1se 89f5069aa2
chore: new v3 recipe release 2023-01-08 02:05:27 +01:00
decentral1se 77b3dbdaa9
fix: use correct user, role does exist 2023-01-08 01:59:46 +01:00
decentral1se 1a0211b743
fix: quote YAML inline dicts correctly 2023-01-08 01:56:30 +01:00
decentral1se eb541c41ee
fix: consistent compression config 2023-01-08 01:56:13 +01:00
decentral1se 008ec1126b
docs: comments in env sample (getting large!) 2023-01-08 01:28:15 +01:00
decentral1se 0c26ea22f9
docs: write release notes 2023-01-08 01:22:30 +01:00
decentral1se e3bf165da0
refactor!: remove KEYCLOAK2* env vars
The experiment is over.
2023-01-08 01:15:36 +01:00
decentral1se 245e81e4bb
fix: make bridge logging ERROR only
Decryption happens on the bridges (between systems) so in order to stop
plaintext logging of chat messages, we default to ERROR. If people need
more, they can submit changes for customisation.
2023-01-08 01:11:58 +01:00
decentral1se 9b12e4a0eb
refactor!: unlimited permissions bridge config 2023-01-08 01:04:52 +01:00
decentral1se e7f81cb9ea
fix: support openid + federation
Closes #30
2023-01-08 00:46:05 +01:00
decentral1se 88bcc2186b
chore: bump homeserver config version 2023-01-08 00:12:03 +01:00
decentral1se 9b3e1793e0
fix: reduce config to match upstream
Closes #33
2023-01-08 00:10:28 +01:00
decentral1se ee6d1e92f4
fix: media retention is configurable
Closes #32
2023-01-08 00:10:03 +01:00
decentral1se 3e3c239c88
fix: drop missing role 2023-01-07 23:49:36 +01:00
decentral1se e905c24eb2
style: sort config env vars 2023-01-07 23:44:56 +01:00
decentral1se 91d29cfe92 chore: publish 2.6.0+v1.74.0 release 2022-12-20 20:49:03 +01:00
decentral1se 9eb0856888 chore: publish 2.5.0+v1.73.0 release 2022-12-12 17:29:50 +01:00
decentral1se 2cc70498f6
feat: patch bump signal/telegram bridges 2022-12-06 02:40:40 +01:00
decentral1se 92a9ea2f22 chore: publish 2.4.0+v1.72.0 release 2022-11-23 15:46:59 +01:00
decentral1se ca2e0d7dc0
chore: new signal/telegram minor/patch versions 2022-11-18 09:48:56 +01:00
27 changed files with 493 additions and 2628 deletions

49
.drone.yml Normal file
View File

@ -0,0 +1,49 @@
---
kind: pipeline
name: deploy to swarm-test.autonomic.zone
steps:
- name: deployment
image: git.coopcloud.tech/coop-cloud/stack-ssh-deploy:latest
settings:
host: swarm-test.autonomic.zone
stack: matrix-synapse
generate_secrets: true
purge: true
deploy_key:
from_secret: drone_ssh_swarm_test
networks:
- proxy
environment:
DOMAIN: matrix-synapse.swarm-test.autonomic.zone
STACK_NAME: matrix-synapse
LETS_ENCRYPT_ENV: production
DISCORD_BRIDGE_YAML_VERSION: v1
ENTRYPOINT_CONF_VERSION: v1
HOMESERVER_YAML_VERSION: v17
LOG_CONFIG_VERSION: v1
SHARED_SECRET_AUTH_VERSION: v1
SIGNAL_BRIDGE_YAML_VERSION: v1
TELEGRAM_BRIDGE_YAML_VERSION: v1
SECRET_DB_PASSWORD_VERSION: v1
SECRET_FORM_SECRET_VERSION: v1
SECRET_MACAROON_SECRET_KEY_VERSION: v1
SECRET_REGISTRATION_SHARED_SECRET_VERSION: v1
trigger:
branch:
- main
---
kind: pipeline
name: generate recipe catalogue
steps:
- name: release a new version
image: plugins/downstream
settings:
server: https://build.coopcloud.tech
token:
from_secret: drone_abra-bot_token
fork: true
repositories:
- coop-cloud/auto-recipes-catalogue-json
trigger:
event: tag

View File

@ -1,35 +1,55 @@
TYPE=matrix-synapse
DOMAIN=matrix.example.com
DOMAIN=matrix-synapse.example.com
TIMEOUT=300
ENABLE_AUTO_UPDATE=true
LETS_ENCRYPT_ENV=production
COMPOSE_FILE="compose.yml"
# POST_DEPLOY_CMDS="db set_admin"
## Admin details
ADMIN_EMAIL=admin@example.com
## Secrets
SECRET_DB_PASSWORD_VERSION=v1
SYNAPSE_ADMIN_EMAIL=admin@example.com
SECRET_REGISTRATION_SHARED_SECRET_VERSION=v1
SECRET_MACAROON_SECRET_KEY_VERSION=v1
SECRET_FORM_SECRET_VERSION=v1
SECRET_MACAROON_VERSION=v1
SECRET_REGISTRATION_VERSION=v1
COMPOSE_FILE="compose.yml"
## Federation
#DISABLE_FEDERATION=1
# Set "true" to enable federation endpoint on $DOMAIN/.well-known/matrix/server
SERVE_SERVER_WELLKNOWN=false
ALLOW_PUBLIC_ROOMS_FEDERATION=false
## Registration
ENABLE_REGISTRATION=false
PASSWORD_LOGIN_ENABLED=true
## Room auto-join
#AUTO_JOIN_ROOM_ENABLED=1
#AUTO_JOIN_ROOM="#example:example.com"
## Logging
# for the homserver
SQL_LOG_LEVEL=WARN
ROOT_LOG_LEVEL=WARN
REDACTION_RETENTION_PERIOD=7d
# for nginx
NGINX_ACCESS_LOG_LOCATION="/dev/null"
NGINX_ERROR_LOG_LOCATION="/dev/null"
# Comment the previous two lines and uncomment these to enable logging
#NGINX_ACCESS_LOG_LOCATION="/dev/stdout"
#NGINX_ERROR_LOG_LOCATION="/dev/stderr"
RETENTION_MAX_LIFETIME=4w
## Privacy
ENABLE_3PID_LOOKUP=true
@ -37,11 +57,31 @@ USER_IPS_MAX_AGE=1d
ENCRYPTED_BY_DEFAULT=all
ALLOWED_LIFETIME_MAX=4w
#ENABLE_ALLOWLIST=1
#FEDERATION_ALLOWLIST="[]"
# Set these to keyservers you trust - usually the same as your federation allowlist
#TRUSTED_KEYSERVERS="trusted_key_servers:\n - server_name: 'example.com'\n - server_name: 'example2.com'"
## Retention
ALLOWED_LIFETIME_MAX=4w
REDACTION_RETENTION_PERIOD=7d
RETENTION_MAX_LIFETIME=4w
#MEDIA_RETENTION_LOCAL_LIFETIME=30d
#MEDIA_RETENTION_REMOTE_LIFETIME=14d
## Ratelimit
#LOGIN_LIMIT_IP_PER_SECOND=5
#LOGIN_LIMIT_IP_BURST=15
#LOGIN_LIMIT_ACCOUNT_PER_SECOND=1
#LOGIN_LIMIT_ACCOUNT_BURST=10
## Keycloak SSO
#COMPOSE_FILE="$COMPOSE_FILE:compose.keycloak.yml"
#KEYCLOAK_ENABLED=1
#KEYCLOAK_ID=keycloak
@ -52,23 +92,26 @@ ALLOWED_LIFETIME_MAX=4w
#KEYCLOAK_ALLOW_EXISTING_USERS=false
#SECRET_KEYCLOAK_CLIENT_SECRET_VERSION=v1
#COMPOSE_FILE="$COMPOSE_FILE:compose.keycloak2.yml"
#KEYCLOAK2_ENABLED=1
#KEYCLOAK2_ID=keycloak2
#KEYCLOAK2_NAME=
#KEYCLOAK2_URL=
#KEYCLOAK2_CLIENT_ID=
#KEYCLOAK2_CLIENT_DOMAIN=
#KEYCLOAK2_ALLOW_EXISTING_USERS=false
#SECRET_KEYCLOAK2_CLIENT_SECRET_VERSION=v1
## TURN
#COMPOSE_FILE="$COMPOSE_FILE:compose.keycloak3.yml"
#KEYCLOAK3_ENABLED=1
#KEYCLOAK3_ID=keycloak3
#KEYCLOAK3_NAME=
#KEYCLOAK3_URL=
#KEYCLOAK3_CLIENT_ID=
#KEYCLOAK3_CLIENT_DOMAIN=
#KEYCLOAK3_ALLOW_EXISTING_USERS=false
#SECRET_KEYCLOAK3_CLIENT_SECRET_VERSION=v1
#COMPOSE_FILE="$COMPOSE_FILE:compose.turn.yml"
#TURN_ENABLED=1
#TURN_URIS="[\"turns:coturn.foo.zone?transport=udp\", \"turns:coturn.foo.zone?transport=tcp\"]"
#TURN_ALLOW_GUESTS=true
#KEYCLOAK2_ALLOW_EXISTING_USERS=false
#SECRET_TURN_SHARED_SECRET_VERSION=v1
## SMTP
#COMPOSE_FILE="$COMPOSE_FILE:compose.smtp.yml"
#SMTP_ENABLED=1
#SMTP_APP_NAME=
@ -78,40 +121,49 @@ ALLOWED_LIFETIME_MAX=4w
#SMTP_USER=
#SECRET_SMTP_PASSWORD_VERSION=v1
## App services
#APP_SERVICES_ENABLED=1
#APP_SERVICE_CONFIGS="[\"...\"]"
## Telegram bridge
#COMPOSE_FILE="$COMPOSE_FILE:compose.telegram.yml"
#APP_SERVICE_BOT_USERNAME=telegrambot
#APP_SERVICE_DISPLAY_NAME="Telegram bridge bot"
#APP_SERVICE_ID=
#HOMESERVER_DOMAIN=
#HOMESERVER_URL=
#HOMESERVER_DOMAIN=$DOMAIN
#HOMESERVER_URL=https://$DOMAIN
#VERIFY_SSL=false
#ENABLE_ENCRYPTION=true
#TELEGRAM_APP_ID=
#TELEGRAM_BRIDGE_ADMIN_1=
#TELEGRAM_BRIDGE_ADMIN_2=
#TELEGRAM_BRIDGE_PERMISSIONS="{ \"*\": \"relaybot\", \"@foo:matrix.example.com\": \"admin\" }"
#TELEGRAM_SYNC_CHANNEL_MEMBERS=true
#SECRET_TELEGRAM_DB_PASSWORD_VERSION=v1
#SECRET_TELEGRAM_API_HASH_VERSION=v1
#SECRET_TELEGRAM_BOT_TOKEN_VERSION=v1
#SECRET_TELEGRAM_AS_TOKEN_VERSION=v1
#SECRET_TELEGRAM_HS_TOKEN_VERSION=v1
## Discord bridge
#COMPOSE_FILE="$COMPOSE_FILE:compose.discord.yml"
#DISCORD_CLIENT_ID=
#DISCORD_BRIDGE_ADMIN=
#SECRET_DISCORD_BOT_TOKEN_VERSION=v1
#SECRET_DISCORD_DB_PASSWORD_VERSION=v1
## Signal bridge
#COMPOSE_FILE="$COMPOSE_FILE:compose.signal.yml"
#SIGNAL_ENABLE_ENCRYPTION=true
#SIGNAL_BRIDGE_ADMIN_1="@foo:example.com"
#SIGNAL_BRIDGE_ADMIN_2="@bar:example.com"
#SIGNAL_BRIDGE_PERMISSIONS="{ \"*\": \"relay\" }"
#SECRET_SIGNAL_AS_TOKEN_VERSION=v1
#SECRET_SIGNAL_DB_PASSWORD_VERSION=v1
#SECRET_SIGNAL_HS_TOKEN_VERSION=v1
## Shared auth
#COMPOSE_FILE="$COMPOSE_FILE:compose.shared_secret_auth.yml"
#SHARED_SECRET_AUTH_ENABLED=1
#SECRET_SHARED_SECRET_AUTH_VERSION=v1 # length=128

View File

@ -18,77 +18,36 @@
1. Set up Docker Swarm and [`abra`](https://docs.coopcloud.tech/abra/)
2. Deploy [`coop-cloud/traefik`](https://git.coopcloud.tech/coop-cloud/traefik)
3. `abra app new matrix-synapse --secrets` (optionally with `--pass` if you'd like to save secrets in `pass`)
4. `abra app YOURAPPDOMAIN config` - be sure to change `$DOMAIN` to something that resolves to your Docker swarm box
5. `abra app YOURAPPDOMAIN deploy`
6. Create an initial user: `abra app YOURAPPDOMAIN run app register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008`
4. `abra app config YOURAPPDOMAIN` - be sure to change `$DOMAIN` to something that resolves to your Docker swarm box
5. `abra app deploy YOURAPPDOMAIN`
6. Create an initial user: `abra app run YOURAPPDOMAIN app register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008`
## Tips & Tricks
### Set Admin User
`abra app cmd YOURAPPDOMAIN db set_admin <adminuser>`
### Disabling federation
> We're not sure this does it exactly and there is still a discussion running
> upstream about whether this is the right way to do it & whether it could be
> more convenient. We welcome issues / change sets to close up more federation
> functionality.
- use `DISABLE_FEDERATION=1` to turn off federation listeners
- don't use [`compose.matrix.yml`](https://git.coopcloud.tech/coop-cloud/traefik/src/branch/master/compose.matrix.yml) in your traefik config to keep the federation ports closed
- Use `DISABLE_FEDERATION=1` to turn off federation listeners
- Don't use [`compose.matrix.yml`](https://git.coopcloud.tech/coop-cloud/traefik/src/branch/master/compose.matrix.yml) in your traefik config to keep the federation ports closed
### Enabling federation
See [`#27`](https://git.coopcloud.tech/coop-cloud/matrix-synapse/pulls/27) for more.
Depending on your setup, using `SERVE_SERVER_WELLKNOWN=true` might work to start federating.
Make sure you don't leave `DISABLE_FEDERATION=1` set!
### Seeing what changed in `homeserver.yaml` between versions
Change the version range to suit your needs.
```
git clone https://github.com/matrix-org/synapse
cd synapse/docs
git log --follow -p v1.48.0..v1.51.0 sample_config.yaml
```
### Generating a new `homeserver.yaml`
The default is also available to see [here](https://matrix-org.github.io/synapse/latest/usage/configuration/homeserver_sample_config.html).
```
docker run -it \
--entrypoint="" \
-e SYNAPSE_SERVER_NAME=foo.com \
-e SYNAPSE_REPORT_STATS=no \
matrixdotorg/synapse:v1.48.0 \
sh -c '/start.py generate; cat /data/homeserver.yaml' > homeserver.yaml.tmpl`
```
### Generating a new `<server>.log.config`
```
docker run -it \
--entrypoint="" \
-e SYNAPSE_SERVER_NAME=foo.com \
-e SYNAPSE_REPORT_STATS=no \
matrixdotorg/synapse:v1.48.0 \
sh -c '/start.py generate; cat /data/foo.com.log.config' > log.config
```
See [`#27`](https://git.coopcloud.tech/coop-cloud/matrix-synapse/pulls/27) for more. Depending on your setup, using `SERVE_SERVER_WELLKNOWN=true` might work to start federating. Make sure you don't leave `DISABLE_FEDERATION=1` set!
### Getting client discovery on a custom domain
You'll need to deploy something like [this](https://git.autonomic.zone/ruangrupa/well-known-uris).
This could be implemented in this recipe but we haven't merged it in yet. Change sets are welcome.
You'll need to deploy something like [this](https://git.autonomic.zone/ruangrupa/well-known-uris). This could be implemented in this recipe but we haven't merged it in yet. Change sets are welcome.
### Telegram bridging
> WIP
> WIP docs
Setting it up is a bit of a chicken/egg & chasing cats moment.
You need to get your bot setup on the telegram side first and have these values:
You need to get your bot setup on the telegram side first by creating a [telegram app](https://my.telegram.org/apps) and a [telegram bot](https://docs.mau.fi/bridges/python/telegram/relay-bot.html#setup) and have these values:
```
api_id: ...
@ -96,7 +55,12 @@ api_hash: ...
telegram_bot_token: ...
```
Here is a rough guide:
Also:
- Make sure to uncomment `APP_SERVICES_ENABLED`
- include the registration in synapse: `APP_SERVICE_CONFIGS="[\"/telegram-data/registration.yaml\"]"`
- and set yourself as admin under `TELEGRAM_BRIDGE_PERMISSIONS`
A rough guide for the following steps:
```
abra app secret insert <domain> telegram_api_hash v1 <secret>
@ -123,7 +87,7 @@ Some helpful documentation:
### Discord bridging
> WIP
> WIP docs
Just as messy as the Telegram bridging above! Rough guide:
@ -142,9 +106,9 @@ Some helpful documentation:
### Signal bridging
> WIP
> WIP docs
OK, it's also awful to set this up. Do you see a pattern emerging? :)
OK, it's also awful to set this up. Do you see a pattern emerging :)
- fake that you have the required tokens:
- `abra app secret insert example.com signal_hs_token v1 foo`

22
abra.sh
View File

@ -1,7 +1,19 @@
export ENTRYPOINT_CONF_VERSION=v1
export HOMESERVER_YAML_VERSION=v13
export DISCORD_BRIDGE_YAML_VERSION=v2
export ENTRYPOINT_CONF_VERSION=v2
export HOMESERVER_YAML_VERSION=v28
export LOG_CONFIG_VERSION=v2
export TELEGRAM_BRIDGE_YAML_VERSION=v3
export DISCORD_BRIDGE_YAML_VERSION=v1
export SIGNAL_BRIDGE_YAML_VERSION=v2
export SHARED_SECRET_AUTH_VERSION=v1
export SIGNAL_BRIDGE_YAML_VERSION=v4
export TELEGRAM_BRIDGE_YAML_VERSION=v6
export NGINX_CONFIG_VERSION=v6
export WK_SERVER_VERSION=v1
export WK_CLIENT_VERSION=v1
set_admin () {
admin=akadmin
if [ -n "$1" ]
then
admin=$1
fi
psql -U synapse -c "UPDATE users SET admin = 1 WHERE name = '@$admin:$DOMAIN'";
}

15
alaconnect.yml Normal file
View File

@ -0,0 +1,15 @@
authentik:
env:
KEYCLOAK_ID: authentik
KEYCLOAK_NAME: sso
KEYCLOAK_URL: https://authentik.example.com/application/o/matrix/
KEYCLOAK_CLIENT_DOMAIN: https://element-web.example.com
KEYCLOAK_ALLOW_EXISTING_USERS: "true"
KEYCLOAK_CLIENT_ID: matrix
uncomment:
- compose.keycloak.yml
- KEYCLOAK_ENABLED
- KEYCLOAK_CLIENT_ID
- SECRET_KEYCLOAK_CLIENT_SECRET_VERSION
shared_secrets:
matrix_secret: keycloak_client_secret

View File

@ -43,7 +43,7 @@ services:
networks:
- internal
healthcheck:
test: ["CMD", "pg_isready", "-U", "synapse"]
test: ["CMD", "pg_isready", "-U", "$POSTGRES_USER" ]
volumes:
- discord-postgres:/var/lib/postgresql/data

View File

@ -7,8 +7,8 @@ services:
- db_password
- form_secret
- keycloak_client_secret
- macaroon_secret_key
- registration_shared_secret
- macaroon
- registration
environment:
- KEYCLOAK_CLIENT_DOMAIN
- KEYCLOAK_CLIENT_ID

19
compose.keycloak3.yml Normal file
View File

@ -0,0 +1,19 @@
---
version: "3.8"
services:
app:
secrets:
- keycloak3_client_secret
environment:
- KEYCLOAK3_ALLOW_EXISTING_USERS
- KEYCLOAK3_CLIENT_ID
- KEYCLOAK3_ENABLED
- KEYCLOAK3_ID
- KEYCLOAK3_NAME
- KEYCLOAK3_URL
secrets:
keycloak3_client_secret:
external: true
name: ${STACK_NAME}_keycloak3_client_secret_${SECRET_KEYCLOAK3_CLIENT_SECRET_VERSION}

View File

@ -9,7 +9,7 @@ services:
- shared_secret_auth
configs:
- source: shared_secret_auth
target: /usr/local/lib/python3.9/site-packages/shared_secret_authenticator.py
target: /usr/local/lib/python3.11/site-packages/shared_secret_authenticator.py
configs:
shared_secret_auth:

View File

@ -10,14 +10,14 @@ services:
- signal-data:/signal-data
signald:
image: docker.io/signald/signald:0.22.1-non-root
image: docker.io/signald/signald:0.23.2-non-root
networks:
- internal
volumes:
volumes:
- signald-data:/signald
signalbridge:
image: dock.mau.dev/mautrix/signal:v0.4.0
image: dock.mau.dev/mautrix/signal:v0.4.3
depends_on:
- signaldb
configs:
@ -26,8 +26,7 @@ services:
environment:
- HOMESERVER_DOMAIN
- HOMESERVER_URL
- SIGNAL_BRIDGE_ADMIN_1
- SIGNAL_BRIDGE_ADMIN_2
- SIGNAL_BRIDGE_PERMISSIONS
- SIGNAL_ENABLE_ENCRYPTION
- VERIFY_SSL
secrets:
@ -55,7 +54,7 @@ services:
networks:
- internal
healthcheck:
test: ["CMD", "pg_isready", "-U", "synapse"]
test: ["CMD", "pg_isready", "-U", "$POSTGRES_USER" ]
volumes:
- signal-postgres:/var/lib/postgresql/data

View File

@ -6,8 +6,8 @@ services:
secrets:
- db_password
- form_secret
- macaroon_secret_key
- registration_shared_secret
- macaroon
- registration
- smtp_password
environment:
- SMTP_APP_NAME

View File

@ -10,7 +10,7 @@ services:
- telegram-data:/telegram-data
telegrambridge:
image: dock.mau.dev/mautrix/telegram:v0.12.0
image: dock.mau.dev/mautrix/telegram:v0.15.1
depends_on:
- telegramdb
configs:
@ -24,8 +24,8 @@ services:
- HOMESERVER_DOMAIN
- HOMESERVER_URL
- TELEGRAM_APP_ID
- TELEGRAM_BRIDGE_ADMIN_1
- TELEGRAM_BRIDGE_ADMIN_2
- TELEGRAM_BRIDGE_PERMISSIONS
- TELEGRAM_SYNC_CHANNEL_MEMBERS
- VERIFY_SSL
secrets:
- telegram_api_hash
@ -53,7 +53,7 @@ services:
networks:
- internal
healthcheck:
test: ["CMD", "pg_isready", "-U", "synapse"]
test: ["CMD", "pg_isready", "-U", "$POSTGRES_USER" ]
volumes:
- telegram-postgres:/var/lib/postgresql/data

View File

@ -6,8 +6,8 @@ services:
secrets:
- db_password
- form_secret
- macaroon_secret_key
- registration_shared_secret
- macaroon
- registration
- turn_shared_secret
environment:
- TURN_ALLOW_GUESTS

View File

@ -2,19 +2,50 @@
version: "3.8"
services:
web:
image: nginx:1.25.3
networks:
- proxy
- internal
environment:
- DOMAIN
- STACK_NAME
- NGINX_ACCESS_LOG_LOCATION
- NGINX_ERROR_LOG_LOCATION
configs:
- source: nginx_config
target: /etc/nginx/nginx.conf
- source: wk_server
target: /var/www/.well-known/matrix/server
- source: wk_client
target: /var/www/.well-known/matrix/client
deploy:
restart_policy:
condition: on-failure
labels:
- "traefik.enable=true"
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=80"
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
healthcheck:
test: curl -f http://${STACK_NAME}_app:8008/health || exit 1
interval: 5s
timeout: 3s
retries: 20
app:
image: "matrixdotorg/synapse:v1.71.0"
image: "matrixdotorg/synapse:v1.100.0"
volumes:
- "data:/data"
depends_on:
- db
secrets:
- db_password
- registration_shared_secret
- macaroon_secret_key
- registration
- macaroon
- form_secret
environment:
- ALLOWED_LIFETIME_MAX
- ALLOW_PUBLIC_ROOMS_FEDERATION
- AUTO_JOIN_ROOM
- AUTO_JOIN_ROOM_ENABLED
- DISABLE_FEDERATION
@ -25,6 +56,8 @@ services:
- ENCRYPTED_BY_DEFAULT
- FEDERATION_ALLOWLIST
- LETSENCRYPT_HOST=${DOMAIN}
- MEDIA_RETENTION_LOCAL_LIFETIME
- MEDIA_RETENTION_REMOTE_LIFETIME
- PASSWORD_LOGIN_ENABLED
- REDACTION_RETENTION_PERIOD
- RETENTION_MAX_LIFETIME
@ -38,8 +71,11 @@ services:
- USER_IPS_MAX_AGE
- VIRTUAL_HOST=${DOMAIN}
- VIRTUAL_PORT=8008
- LOGIN_LIMIT_IP_PER_SECOND=${LOGIN_LIMIT_IP_PER_SECOND:-0.003}
- LOGIN_LIMIT_IP_BURST=${LOGIN_LIMIT_IP_BURST:-5}
- LOGIN_LIMIT_ACCOUNT_PER_SECOND=${LOGIN_LIMIT_ACCOUNT_PER_SECOND:-0.003}
- LOGIN_LIMIT_ACCOUNT_BURST=${LOGIN_LIMIT_ACCOUNT_BURST:-5}
networks:
- proxy
- internal
entrypoint: /docker-entrypoint.sh
configs:
@ -54,12 +90,14 @@ services:
restart_policy:
condition: on-failure
labels:
- "traefik.enable=true"
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=8008"
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
- "coop-cloud.${STACK_NAME}.version=2.3.0+v1.71.0"
- "coop-cloud.${STACK_NAME}.version=6.0.2+v1.100.0"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8008/health"]
interval: 30s
timeout: 10s
retries: 10
start_period: 1m
db:
image: postgres:13-alpine
@ -72,18 +110,23 @@ services:
- POSTGRES_INITDB_ARGS="-E \"UTF8\""
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
- POSTGRES_USER=synapse
- DOMAIN
networks:
- internal
healthcheck:
test: ["CMD", "pg_isready", "-U", "synapse"]
interval: 30s
timeout: 10s
retries: 10
start_period: 1m
volumes:
- postgres:/var/lib/postgresql/data
deploy:
labels:
backupbot.backup: "true"
backupbot.backup.pre-hook: "mkdir -p /tmp/backup/ && PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /tmp/backup/backup.sql"
backupbot.backup.post-hook: "rm -rf /tmp/backup"
backupbot.backup.path: "/tmp/backup/"
backupbot.backup.pre-hook: "PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /var/lib/postgresql/data/backup.sql"
backupbot.backup.post-hook: "rm -r /var/lib/postgresql/data/backup.sql"
backupbot.backup.path: "/var/lib/postgresql/data"
volumes:
data:
@ -100,24 +143,36 @@ configs:
file: entrypoint.sh.tmpl
template_driver: golang
homeserver_yaml:
name: ${STACK_NAME}_homserver_yaml_${HOMESERVER_YAML_VERSION}
name: ${STACK_NAME}_homeserver_yaml_${HOMESERVER_YAML_VERSION}
file: homeserver.yaml.tmpl
template_driver: golang
log_config:
name: ${STACK_NAME}_log_config_${LOG_CONFIG_VERSION}
file: log.config.tmpl
template_driver: golang
nginx_config:
name: ${STACK_NAME}_nginx_config_${NGINX_CONFIG_VERSION}
file: nginx.conf.tmpl
template_driver: golang
wk_server:
name: ${STACK_NAME}_wk_server_${WK_SERVER_VERSION}
file: well_known_server.conf.tmpl
template_driver: golang
wk_client:
name: ${STACK_NAME}_wk_client_${WK_CLIENT_VERSION}
file: well_known_client.conf.tmpl
template_driver: golang
secrets:
db_password:
external: true
name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION}
registration_shared_secret:
registration:
external: true
name: ${STACK_NAME}_db_password_${SECRET_REGISTRATION_SHARED_SECRET_VERSION}
macaroon_secret_key:
name: ${STACK_NAME}_registration_${SECRET_REGISTRATION_VERSION}
macaroon:
external: true
name: ${STACK_NAME}_db_password_${SECRET_MACAROON_SECRET_KEY_VERSION}
name: ${STACK_NAME}_macaroon_${SECRET_MACAROON_VERSION}
form_secret:
external: true
name: ${STACK_NAME}_db_password_${SECRET_FORM_SECRET_VERSION}
name: ${STACK_NAME}_form_secret_${SECRET_FORM_SECRET_VERSION}

View File

@ -50,7 +50,7 @@ auth:
logging:
# What level should the logger output to the console at.
console: "warn" #silly, verbose, info, http, warn, error, silent
console: "error" #silly, verbose, info, http, warn, error, silent
lineDateFormat: "MMM-D HH:mm:ss.SSS" # This is in moment.js format
files:
- file: "debug.log"

View File

@ -6,6 +6,7 @@ chown 991:991 /data
if [[ ! -f /data/{{ env "DOMAIN" }}.signing.key ]]; then
/start.py generate
chown -R 991:991 /data/*.config /data/*.key
fi
/start.py

File diff suppressed because it is too large Load Diff

31
nginx.conf.tmpl Normal file
View File

@ -0,0 +1,31 @@
user www-data;
events {
worker_connections 768;
}
http {
server {
listen 80;
access_log {{ or (env "NGINX_ACCESS_LOG_LOCATION") "/dev/null" }};
error_log {{ or (env "NGINX_ERROR_LOG_LOCATION") "/dev/null" }};
server_name {{ env "DOMAIN" }};
location ~* ^(\/_matrix|\/_synapse\/client) {
proxy_pass http://{{ env "STACK_NAME"}}_app:8008;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
client_max_body_size 50M;
proxy_http_version 1.1;
}
location /.well-known/matrix/ {
root /var/www/;
default_type application/json;
add_header Access-Control-Allow-Origin *;
}
}
}

17
release/3.0.0+v1.74.0 Normal file
View File

@ -0,0 +1,17 @@
WARNING: There are a lot of config breaking changes in this one, watch out!
* KEYCLOAK2* env vars have gone away, they were experimental.
* TELEGRAM_BRIDGE_ADMIN* is replaced by TELEGRAM_BRIDGE_PERMISSIONS.
* SIGNAL_BRIDGE_ADMIN* is replaced by SIGNAL_BRIDGE_PERMISSIONS.
* The homeserver config has been trimmed, see coop-cloud/matrix-synapse#33 for more.
* Bridge logging is only ERROR level now to minimise leaking plaintext.
* It is possible to use SSO & federation env vars in combination now.
* Media retention is now configurable with #MEDIA_RETENTION_* env vars.
@decentral1se

10
release/4.0.0+v1.93.0 Normal file
View File

@ -0,0 +1,10 @@
We had to rename some secrets: https://git.coopcloud.tech/coop-cloud/matrix-synapse/issues/35
Copy the secrets:
* `registration_shared_secret` to `registration`
* `macaroon_secret_key` to `macaroon`
The easiest way to do this is to run `abra app run <matrix.example.com> app bash` BEFORE this upgrade, then `cat /run/secrets/registration_shared_secret`. If you haven't saved the secrets yet, and would like to, please Ctrl+C out of this upgrade and do that first.
Regeneration of these secrets should also work.

1
release/5.0.0+v1.93.0 Normal file
View File

@ -0,0 +1 @@
It's recommended not to upgrade / downgrade directly to this version (or other 5.y.z versions), because of service renaming which was reverted in 6.0.0+v1.100.0.

6
release/5.0.1+v1.93.0 Normal file
View File

@ -0,0 +1,6 @@
Logging is now disabled by default. If you want to reënable it, set these options:
```
NGINX_ACCESS_LOG_LOCATION="/dev/stdout"
NGINX_ERROR_LOG_LOCATION="/dev/stderr"
```

1
release/6.0.0+v1.100.0 Normal file
View File

@ -0,0 +1 @@
If you are upgrading from verison 5.y.z of this recipe, you will need to `undeploy` then `deploy`, because of a service rename which was reverted.

View File

@ -267,10 +267,8 @@ bridge:
# * - All Matrix users
# domain - All users on that homeserver
# mxid - Specific user
permissions:
"*": "relay"
"{{ env "SIGNAL_BRIDGE_ADMIN_1" }}": "admin"
"{{ env "SIGNAL_BRIDGE_ADMIN_2" }}": "admin"
permissions: {{ env "SIGNAL_BRIDGE_PERMISSIONS" }}
relay:
# Whether relay mode should be allowed. If allowed, `!signal set-relay` can be used to turn any
# authenticated user into a relaybot for that chat.
@ -318,9 +316,9 @@ logging:
formatter: colored
loggers:
mau:
level: DEBUG
level: ERROR
aiohttp:
level: INFO
level: ERROR
root:
level: DEBUG
level: ERROR
handlers: [console]

View File

@ -151,7 +151,7 @@ bridge:
# Whether or not to sync the member list in channels.
# If no channel admins have logged into the bridge, the bridge won't be able to sync the member
# list regardless of this setting.
sync_channel_members: true
sync_channel_members: {{ env "TELEGRAM_SYNC_CHANNEL_MEMBERS" }}
# Whether or not to skip deleted members when syncing members.
skip_deleted_members: true
# Whether or not to automatically synchronize contacts and chats of Matrix users logged into
@ -412,10 +412,7 @@ bridge:
# * - All Matrix users
# domain - All users on that homeserver
# mxid - Specific user
permissions:
"*": "relaybot"
"{{ env "TELEGRAM_BRIDGE_ADMIN_1" }}": "admin"
"{{ env "TELEGRAM_BRIDGE_ADMIN_2" }}": "admin"
permissions: {{ env "TELEGRAM_BRIDGE_PERMISSIONS" }}
# Options related to the message relay Telegram bot.
relaybot:
@ -537,11 +534,11 @@ logging:
formatter: colored
loggers:
mau:
level: DEBUG
level: ERROR
telethon:
level: INFO
level: ERROR
aiohttp:
level: INFO
level: ERROR
root:
level: DEBUG
level: ERROR
handlers: [file, console]

View File

@ -0,0 +1,5 @@
{
"m.homeserver": {
"base_url": "https://{{ env "DOMAIN" }}"
}
}

View File

@ -0,0 +1,3 @@
{
"m.server": "{{ env "DOMAIN" }}:443"
}