Compare commits

...

40 Commits

Author SHA1 Message Date
a3c9dfd65b feat: make v4 release & add notes
Some checks failed
continuous-integration/drone/push Build is failing
2023-10-06 19:16:06 +02:00
6dacecbfac fix: make TIMEOUT / ENABLE_AUTO_UPDATE optional 2023-10-06 19:15:44 +02:00
4770a03cb7 chore: minor (synapse: v1.93.0, telegram:v0.14.2)
Some checks failed
continuous-integration/drone/push Build is failing
2023-10-06 19:10:04 +02:00
7ead29b750 chore: publish 3.13.0+v1.92.2 release
Some checks failed
continuous-integration/drone/push Build is failing
2023-09-15 15:50:35 +02:00
3c772cc1e5 chore: publish 3.12.0+v1.90.0 release
Some checks failed
continuous-integration/drone/push Build is failing
2023-08-27 19:34:10 +02:00
e146435394 chore: publish 3.11.0+v1.89.0 release
Some checks failed
continuous-integration/drone/push Build is failing
2023-08-01 21:08:27 +02:00
795c2eb685 chore: publish 3.10.0+v1.88.0 release
Some checks failed
continuous-integration/drone/push Build is failing
2023-07-20 17:06:08 +02:00
7b1b5c37ed fix secrets
Some checks failed
continuous-integration/drone/push Build is failing
2023-07-19 22:53:35 +02:00
84204b03a7 chore: publish 3.9.1+v1.87.0 release
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 21:47:15 +02:00
b57b73d5d6 fix: bump homeserver config version 2023-07-18 21:46:54 +02:00
66bd6be8fc chore: publish 3.9.0+v1.87.0 release
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 21:34:53 +02:00
dda7f2a369 fix domain env
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-09 23:38:22 +02:00
d22a8257fb command for adding admin user
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-06 17:02:49 +02:00
2445d9f33a fix: healthchecks
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-12 14:14:43 +02:00
2a45273541 fix second oidc configuration
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-31 15:50:55 +02:00
48efb7de51 chore: publish 3.8.0+v1.84.1 release
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-30 20:00:17 +02:00
b2e8bf9c8b chore: bump telegram config
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-10 18:03:46 +02:00
d02981a2bf feat: sync_channel_members configurable for telegram bridge
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-10 17:57:54 +02:00
c6f9b117e2 chore: publish 3.7.0+v1.82.0 release
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-08 00:53:44 +02:00
3wc
ade6147f35 chore: publish 3.6.0+v1.81.0 release
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-23 15:36:37 -04:00
3wc
50e0aa06cc Support separate DOMAIN vs SERVER_NAME
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-23 15:34:58 -04:00
3wc
f3732c8392 Goodbye, foo.yaml!
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-13 12:14:35 -04:00
e171ce052e chore: publish 3.5.0+v1.81.0 release
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-11 16:29:41 +02:00
5d5bd70818 Merge branch 'main' of https://git.coopcloud.tech/coop-cloud/matrix-synapse
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-08 23:09:33 +02:00
fd1a6c7a4a fix keyserver problems when federating 2023-04-08 23:09:16 +02:00
39a47a2515 chore: publish 3.4.0+v1.80.0 release
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-02 14:25:02 +02:00
6e556c8b2d fix: put smtp password in quotes
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-05 12:05:26 +01:00
74fb8014fa chore: publish 3.3.0+v1.78.0 release
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-04 14:12:33 +01:00
787e0fb3a9 chore: publish 3.2.0+v1.77.0 release
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-27 19:33:34 +01:00
ead52c1acd Merge branch 'main' of https://git.coopcloud.tech/coop-cloud/matrix-synapse
Some checks failed
continuous-integration/drone/push Build is failing
2023-02-21 13:56:06 +01:00
fca551b735 add keycloak 2 and 3 2023-02-21 13:56:01 +01:00
f43a47d4c8 fix: use new mount for shared secret auth
All checks were successful
continuous-integration/drone/push Build is passing
See b3dfa11097
2023-02-14 10:00:28 +01:00
beeb1e47b1 chore: publish 3.1.0+v1.76.0 release
Some checks failed
continuous-integration/drone/push Build is failing
2023-02-13 09:26:27 +01:00
931e89f5f5 Merge pull request 'homserver -> homeserver' (#34) from speling into main
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Reviewed-on: #34
2023-02-02 19:09:48 +00:00
5a72540db2 homserver -> homeserver 2023-02-02 18:12:12 +00:00
3wc
703b8d91d2 Switch to self-hosted stack-ssh-deploy image [mass update]
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-21 11:49:56 -08:00
3wc
05e9ee0732 Add drone configs / secrets [mass update]
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-20 21:32:06 -08:00
3wc
ec22040bd3 Add CI and catalogue generation [mass update]
Some checks failed
continuous-integration/drone/push Build is failing
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
4445e0249f docs: README pass 2023-01-08 02:09:55 +01:00
13 changed files with 200 additions and 75 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,7 +1,10 @@
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
@ -11,8 +14,8 @@ SYNAPSE_ADMIN_EMAIL=admin@example.com
SECRET_DB_PASSWORD_VERSION=v1
SECRET_FORM_SECRET_VERSION=v1
SECRET_MACAROON_SECRET_KEY_VERSION=v1
SECRET_REGISTRATION_SHARED_SECRET_VERSION=v1
SECRET_MACAROON_VERSION=v1
SECRET_REGISTRATION_VERSION=v1
## Federation
@ -48,6 +51,9 @@ ENCRYPTED_BY_DEFAULT=all
#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
@ -72,6 +78,16 @@ RETENTION_MAX_LIFETIME=4w
## 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\"]"
@ -106,6 +122,7 @@ RETENTION_MAX_LIFETIME=4w
#ENABLE_ENCRYPTION=true
#TELEGRAM_APP_ID=
#TELEGRAM_BRIDGE_PERMISSIONS="{ \"*\": \"relaybot\" }"
#TELEGRAM_SYNC_CHANNEL_MEMBERS=true
#SECRET_TELEGRAM_DB_PASSWORD_VERSION=v1
#SECRET_TELEGRAM_API_HASH_VERSION=v1
#SECRET_TELEGRAM_BOT_TOKEN_VERSION=v1

View File

@ -18,73 +18,32 @@
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.
@ -123,7 +82,7 @@ Some helpful documentation:
### Discord bridging
> WIP
> WIP docs
Just as messy as the Telegram bridging above! Rough guide:
@ -142,9 +101,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`

13
abra.sh
View File

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

19
compose.keycloak2.yml Normal file
View File

@ -0,0 +1,19 @@
---
version: "3.8"
services:
app:
secrets:
- keycloak2_client_secret
environment:
- KEYCLOAK2_ALLOW_EXISTING_USERS
- KEYCLOAK2_CLIENT_ID
- KEYCLOAK2_ENABLED
- KEYCLOAK2_ID
- KEYCLOAK2_NAME
- KEYCLOAK2_URL
secrets:
keycloak2_client_secret:
external: true
name: ${STACK_NAME}_keycloak2_client_secret_${SECRET_KEYCLOAK2_CLIENT_SECRET_VERSION}

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.23.0-non-root
image: docker.io/signald/signald:0.23.2-non-root
networks:
- internal
volumes:
- signald-data:/signald
signalbridge:
image: dock.mau.dev/mautrix/signal:v0.4.2
image: dock.mau.dev/mautrix/signal:v0.4.3
depends_on:
- signaldb
configs:

View File

@ -10,7 +10,7 @@ services:
- telegram-data:/telegram-data
telegrambridge:
image: dock.mau.dev/mautrix/telegram:v0.12.2
image: dock.mau.dev/mautrix/telegram:v0.14.2
depends_on:
- telegramdb
configs:
@ -25,6 +25,7 @@ services:
- HOMESERVER_URL
- TELEGRAM_APP_ID
- TELEGRAM_BRIDGE_PERMISSIONS
- TELEGRAM_SYNC_CHANNEL_MEMBERS
- VERIFY_SSL
secrets:
- telegram_api_hash

View File

@ -3,7 +3,7 @@ version: "3.8"
services:
app:
image: "matrixdotorg/synapse:v1.74.0"
image: "matrixdotorg/synapse:v1.93.0"
volumes:
- "data:/data"
depends_on:
@ -61,7 +61,14 @@ services:
- "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=3.0.0+v1.74.0"
- "coop-cloud.${STACK_NAME}.version=4.0.0+v1.93.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
@ -74,10 +81,15 @@ 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", "$POSTGRES_USER" ]
test: ["CMD", "pg_isready", "-U", "synapse"]
interval: 30s
timeout: 10s
retries: 10
start_period: 1m
volumes:
- postgres:/var/lib/postgresql/data
deploy:
@ -102,7 +114,7 @@ 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:
@ -116,10 +128,10 @@ secrets:
name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION}
registration_shared_secret:
external: true
name: ${STACK_NAME}_db_password_${SECRET_REGISTRATION_SHARED_SECRET_VERSION}
name: ${STACK_NAME}_registration_${SECRET_REGISTRATION_VERSION}
macaroon_secret_key:
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

@ -38,7 +38,7 @@ modules:
# lowercase and may contain an explicit port.
# Examples: matrix.org, localhost:8080
#
server_name: {{ env "DOMAIN" }}
server_name: {{ or (env "SERVER_NAME") (env "DOMAIN") }}
# The public-facing base URL that clients use to access this Homeserver (not
# including _matrix/...). This is the same URL a user might enter into the
@ -427,8 +427,12 @@ signing_key_path: "/data/{{ env "DOMAIN" }}.signing.key"
# "ed25519:auto": "abcdefghijklmnopqrstuvwxyzabcdefghijklmopqr"
# - server_name: "my_other_trusted_server.example.com"
#
{{ if eq (env "ENABLE_ALLOWLIST") "1" }}
{{ env "TRUSTED_KEYSERVERS" }}
{{ else }}
trusted_key_servers:
- server_name: "matrix.org"
{{ end }}
## Single sign-on integration ##
@ -604,6 +608,34 @@ oidc_providers:
display_name_template: "{{ "{{ user.name }}" }}"
{{ end }}
{{ if eq (env "KEYCLOAK2_ENABLED") "1" }}
- idp_id: {{ env "KEYCLOAK2_ID" }}
idp_name: {{ env "KEYCLOAK2_NAME" }}
issuer: "{{ env "KEYCLOAK2_URL" }}"
client_id: "{{ env "KEYCLOAK2_CLIENT_ID" }}"
client_secret: "{{ secret "keycloak2_client_secret" }}"
scopes: ["openid", "profile"]
allow_existing_users: {{ env "KEYCLOAK2_ALLOW_EXISTING_USERS" }}
user_mapping_provider:
config:
localpart_template: "{{ "{{ user.preferred_username }}" }}"
display_name_template: "{{ "{{ user.name }}" }}"
{{ end }}
{{ if eq (env "KEYCLOAK3_ENABLED") "1" }}
- idp_id: {{ env "KEYCLOAK3_ID" }}
idp_name: {{ env "KEYCLOAK3_NAME" }}
issuer: "{{ env "KEYCLOAK3_URL" }}"
client_id: "{{ env "KEYCLOAK3_CLIENT_ID" }}"
client_secret: "{{ secret "keycloak3_client_secret" }}"
scopes: ["openid", "profile"]
allow_existing_users: {{ env "KEYCLOAK3_ALLOW_EXISTING_USERS" }}
user_mapping_provider:
config:
localpart_template: "{{ "{{ user.preferred_username }}" }}"
display_name_template: "{{ "{{ user.name }}" }}"
{{ end }}
# Additional settings to use with single-sign on systems such as OpenID Connect,
# SAML2 and CAS.
#
@ -659,7 +691,7 @@ email:
# authentication is attempted.
#
smtp_user: {{ env "SMTP_USER" }}
smtp_pass: {{ secret "smtp_password" }}
smtp_pass: "{{ secret "smtp_password" }}"
# Uncomment the following to require TLS transport security for SMTP.
# By default, Synapse will connect over plain text, and will then switch to

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

@ -0,0 +1,8 @@
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`
Regeneration of these secrets should also work.

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