Compare commits

...

25 Commits

Author SHA1 Message Date
val
aaa59a7718 chore: publish 6.6.3+v1.124.0 release
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-06-12 22:28:18 +02:00
val
e072cf0766 Merge pull request 'old-signing-key - anyone an idea how to escape so it's only one env var?' (#50) from old-signing-key into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #50
Reviewed-by: 3wordchant <3wordchant@noreply.git.coopcloud.tech>
2025-06-12 20:23:56 +00:00
val
22cc356a56 Merge branch 'main' into old-signing-key 2025-06-12 20:23:13 +00:00
160b0eb2cf
fix: remove full env name "ADMIN_INTERFACE_ENABLED" from comment to
All checks were successful
continuous-integration/drone/push Build is passing
allow autouncomment
2025-06-11 14:48:43 +02:00
val
af7f7eca2f
typos 2025-06-10 18:47:38 +02:00
val
5808fef48d
add env 2025-06-08 12:20:46 +02:00
vdietrich
a8483dccf9 chore: publish 6.6.2+v1.124.0 release
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-06-05 11:04:16 +02:00
8e82c16e3d Merge pull request 'added-env-vars' (#49) from added-env-vars into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #49
2025-06-05 08:58:39 +00:00
vdietrich
dafb17aace added some privacy related optional env-vars 2025-06-04 18:12:01 +02:00
vdietrich
237e2c832b user directory env vars 2025-06-04 16:59:58 +02:00
bf4de0df97
Set healthcheck interval higher for slow systems
All checks were successful
continuous-integration/drone/push Build is passing
2025-05-15 11:06:21 +02:00
vdietrich
61222baaa0 chore: publish 6.6.1+v1.124.0 release
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-05-14 17:01:58 +02:00
32721ace23 Merge pull request 'Add REGISTRATION_REQUIRES_TOKEN to matrix config' (#46) from FunPecan/matrix-synapse:add-registration-token into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #46
Reviewed-by: decentral1se <decentral1se@noreply.git.coopcloud.tech>
2025-04-15 21:47:06 +00:00
Jeremy Blanchard
5a7b7f04ed Bump homeserver version 2025-04-15 08:45:05 -07:00
Jeremy Blanchard
8809f25ab1 Add regsitration token 2025-04-14 16:49:58 -07:00
0645a9f487
chore: publish 6.6.0+v1.124.0 release
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-02-11 19:02:04 +01:00
a1d7fdad2d
bump python version in shared_secret_authenticator module 2025-02-11 19:01:59 +01:00
a90ccaa65b add synapse-admin
All checks were successful
continuous-integration/drone/push Build is passing
2025-01-28 17:42:07 +01:00
7c0e822940 fix bridge token extraction
All checks were successful
continuous-integration/drone/push Build is passing
2025-01-17 20:13:09 +01:00
d6178fd380 improve set_bridge_tokens
All checks were successful
continuous-integration/drone/push Build is passing
2025-01-17 17:45:18 +01:00
2a18291f48 add script to setup bridge tokens
All checks were successful
continuous-integration/drone/push Build is passing
2025-01-17 15:43:47 +01:00
vdietrich
943ed58db4 new version of signal bridge conf
All checks were successful
continuous-integration/drone/push Build is passing
2025-01-16 15:53:46 +01:00
09b60947ee Merge pull request 'updated signal bridge to 0.7.5 and added env var for default encry bridge2server' (#44) from addtional-env-vars into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #44
Reviewed-by: decentral1se <decentral1se@noreply.git.coopcloud.tech>
2025-01-16 14:00:16 +00:00
vdietrich
bff6fe9b09 updated signal bridge to 0.7.5 and added env var for default encry bridge2server 2025-01-16 14:15:04 +01:00
6f4efd64e8 Update .drone.yml
All checks were successful
continuous-integration/drone/push Build is passing
2025-01-08 10:09:13 -08:00
15 changed files with 237 additions and 42 deletions

View File

@ -21,13 +21,13 @@ steps:
ENTRYPOINT_CONF_VERSION: v3 ENTRYPOINT_CONF_VERSION: v3
HOMESERVER_YAML_VERSION: v29 HOMESERVER_YAML_VERSION: v29
LOG_CONFIG_VERSION: v2 LOG_CONFIG_VERSION: v2
SHARED_SECRET_AUTH_VERSION: v1 SHARED_SECRET_AUTH_VERSION: v2
SIGNAL_BRIDGE_YAML_VERSION: v5 SIGNAL_BRIDGE_YAML_VERSION: v5
TELEGRAM_BRIDGE_YAML_VERSION: v6 TELEGRAM_BRIDGE_YAML_VERSION: v6
PG_BACKUP_VERSION: v1 PG_BACKUP_VERSION: v1
WK_CLIENT_VERSION: v1 WK_CLIENT_VERSION: v1
WK_SERVER_VERSION: v1 WK_SERVER_VERSION: v1
NGINX_CONFIG_VERSION: v7 NGINX_CONFIG_VERSION: v8
SECRET_DB_PASSWORD_VERSION: v1 SECRET_DB_PASSWORD_VERSION: v1
SECRET_FORM_SECRET_VERSION: v1 SECRET_FORM_SECRET_VERSION: v1
SECRET_MACAROON_VERSION: v1 SECRET_MACAROON_VERSION: v1
@ -47,7 +47,7 @@ steps:
from_secret: drone_abra-bot_token from_secret: drone_abra-bot_token
fork: true fork: true
repositories: repositories:
- coop-cloud/auto-recipes-catalogue-json - toolshed/auto-recipes-catalogue-json
trigger: trigger:
event: tag event: tag

View File

@ -33,6 +33,9 @@ ALLOW_PUBLIC_ROOMS_FEDERATION=false
ENABLE_REGISTRATION=false ENABLE_REGISTRATION=false
PASSWORD_LOGIN_ENABLED=true PASSWORD_LOGIN_ENABLED=true
# Token based registration. Enable ADMIN_INTERFACE (below) to use the admin interface to generate tokens.
#REGISTRATION_REQUIRES_TOKEN=true
## Room auto-join ## Room auto-join
#AUTO_JOIN_ROOM_ENABLED=1 #AUTO_JOIN_ROOM_ENABLED=1
@ -65,6 +68,14 @@ ENCRYPTED_BY_DEFAULT=all
# Set these to keyservers you trust - usually the same as your 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'" #TRUSTED_KEYSERVERS="trusted_key_servers:\n - server_name: 'example.com'\n - server_name: 'example2.com'"
# some optional configs to increase privacy and security
#REQUIRE_AUTH_FOR_PROFILE_REQUESTS=true
#LIMIT_PROFILE_REQUESTS_TO_USERS_WHO_SHARE_ROOMS=true
#DELETE_STALE_DEVICES_AFTER=1y
#SESSION_LIFETIME=60d
#TRACK_PUPPETED_USER_IPS=true
## Retention ## Retention
ALLOWED_LIFETIME_MAX=4w ALLOWED_LIFETIME_MAX=4w
@ -75,6 +86,11 @@ RETENTION_MAX_LIFETIME=4w
#MEDIA_RETENTION_LOCAL_LIFETIME=30d #MEDIA_RETENTION_LOCAL_LIFETIME=30d
#MEDIA_RETENTION_REMOTE_LIFETIME=14d #MEDIA_RETENTION_REMOTE_LIFETIME=14d
## Old Signing Key
#OLD_SIGNING_KEY_ID=a_OLDKEYID
#OLD_SIGNING_KEY=base64string
#OLD_SIGNING_KEY_EXPIRES=123456789123
## Ratelimit ## Ratelimit
#LOGIN_LIMIT_IP_PER_SECOND=5 #LOGIN_LIMIT_IP_PER_SECOND=5
@ -123,6 +139,13 @@ RETENTION_MAX_LIFETIME=4w
#SMTP_USER= #SMTP_USER=
#SECRET_SMTP_PASSWORD_VERSION=v1 #SECRET_SMTP_PASSWORD_VERSION=v1
## USER-DIRECTORY
#USER_DIRECTORY_ENABLED=true
#USER_DIRECTORY_SEARCH_ALL_USERS=true
#USER_DIRECTORY_PREFER_LOCAL_USERS=true
#USER_DIRECTORY_SHOW_LOCKED_USERS=false
## App services ## App services
#APP_SERVICES_ENABLED=1 #APP_SERVICES_ENABLED=1
@ -159,6 +182,7 @@ RETENTION_MAX_LIFETIME=4w
#COMPOSE_FILE="$COMPOSE_FILE:compose.signal.yml" #COMPOSE_FILE="$COMPOSE_FILE:compose.signal.yml"
#SIGNAL_ENABLE_ENCRYPTION=true #SIGNAL_ENABLE_ENCRYPTION=true
#SIGNAL_DEFAULT_ENCRYPTION=true
#SIGNAL_BRIDGE_PERMISSIONS="{ \"*\": \"relay\" }" #SIGNAL_BRIDGE_PERMISSIONS="{ \"*\": \"relay\" }"
#SECRET_SIGNAL_AS_TOKEN_VERSION=v1 #SECRET_SIGNAL_AS_TOKEN_VERSION=v1
#SECRET_SIGNAL_DB_PASSWORD_VERSION=v1 #SECRET_SIGNAL_DB_PASSWORD_VERSION=v1
@ -173,3 +197,8 @@ RETENTION_MAX_LIFETIME=4w
## Web Client (Redirect) ## Web Client (Redirect)
#WEB_CLIENT_LOCATION=https://element-web.example.com #WEB_CLIENT_LOCATION=https://element-web.example.com
## Admin interface at /admin
#COMPOSE_FILE="$COMPOSE_FILE:compose.admin.yml"
#ADMIN_INTERFACE_ENABLED=1

View File

@ -54,8 +54,6 @@ For all Bridges:
### Telegram bridging ### Telegram bridging
> WIP docs
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: 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:
``` ```
@ -63,25 +61,36 @@ api_id: ...
api_hash: ... api_hash: ...
telegram_bot_token: ... telegram_bot_token: ...
``` ```
Experimental script for a automated token replacement:
```
DOMAIN=<domain>
abra app secret insert $DOMAIN telegram_api_hash v1 <secret>
abra app secret insert $DOMAIN telegram_bot_token v1 <secret>
abra app secret generate -a $DOMAIN
A rough guide for the following steps: abra app deploy $DOMAIN
abra app cmd -l $DOMAIN set_bridge_tokens telegram
```
Alternatively a manual guide for the necessary steps:
``` ```
abra app secret insert <domain> telegram_api_hash v1 <secret> DOMAIN=<domain>
abra app secret insert <domain> telegram_bot_token v1 <secret> abra app secret insert $DOMAIN telegram_api_hash v1 <secret>
abra app secret generate -a <domain> abra app secret insert $DOMAIN telegram_bot_token v1 <secret>
abra app secret generate -a $DOMAIN
abra app deploy <domain> abra app deploy $DOMAIN
abra app run matrix.fva.wtf telegram_bridge cat /data/registration.yaml abra app run $DOMAIN telegrambridge cat /data/registration.yaml
abra app undeploy <domain> abra app undeploy $DOMAIN
abra app secret rm <domain> telegram_as_token abra app secret rm $DOMAIN telegram_as_token
abra app secret insert <domain> telegram_as_token v1 <secret> abra app secret insert $DOMAIN telegram_as_token v1 <secret>
abra app secret rm <domain> telegram_as_token abra app secret rm $DOMAIN telegram_hs_token
abra app secret insert <domain> telegram_hs_token v1 <secret> abra app secret insert $DOMAIN telegram_hs_token v1 <secret>
abra app deploy <domain> abra app deploy $DOMAIN
``` ```
Some helpful documentation: Some helpful documentation:
@ -110,16 +119,29 @@ Some helpful documentation:
### Signal bridging ### Signal bridging
> WIP docs Experimental script for a more automated token replacement:
```
DOMAIN=<domain>
abra app secret generate -a $DOMAIN
abra app deploy $DOMAIN
abra app cmd -l $DOMAIN set_bridge_tokens signal
```
Alternatively a manual guide for the necessary steps:
```
DOMAIN=<domain>
abra app secret insert $DOMAIN signal_hs_token v1 foo
abra app secret insert $DOMAIN signal_as_token v1 foo
abra app secret generate $DOMAIN -a
abra app deploy $DOMAIN
abra app run $DOMAIN signalbridge cat /data/registration.yaml
OK, it's also awful to set this up. Do you see a pattern emerging :) abra app secret rm $DOMAIN signal_as_token
abra app secret insert $DOMAIN signal_as_token v1 <secret>
abra app secret rm $DOMAIN signal_hs_token
abra app secret insert $DOMAIN signal_hs_token v1 <secret>
- fake that you have the required tokens: abra app deploy $DOMAIN
- `abra app secret insert example.com signal_hs_token v1 foo` ```
- `abra app secret insert example.com signal_as_token v1 foo`
- generate the database password: - message `@signalbot:example.com` to test
- `abra app secret generate example.com -a`
- deploy the thing and then check the `/data/registration.yaml`
- rm the fake `signal_hs/as_token` values and re-insert the new ones from `registration.yaml`
- re-deploy the whole thing and then it should come up, message `@signalbot:example.com` to test
- See the [docs](https://docs.mau.fi/bridges/go/signal/authentication.html) for authentication - See the [docs](https://docs.mau.fi/bridges/go/signal/authentication.html) for authentication

42
abra.sh
View File

@ -1,14 +1,15 @@
export DISCORD_BRIDGE_YAML_VERSION=v2 export DISCORD_BRIDGE_YAML_VERSION=v2
export ENTRYPOINT_CONF_VERSION=v3 export ENTRYPOINT_CONF_VERSION=v3
export HOMESERVER_YAML_VERSION=v29 export HOMESERVER_YAML_VERSION=v32
export LOG_CONFIG_VERSION=v2 export LOG_CONFIG_VERSION=v2
export SHARED_SECRET_AUTH_VERSION=v1 export SHARED_SECRET_AUTH_VERSION=v2
export SIGNAL_BRIDGE_YAML_VERSION=v5 export SIGNAL_BRIDGE_YAML_VERSION=v6
export TELEGRAM_BRIDGE_YAML_VERSION=v6 export TELEGRAM_BRIDGE_YAML_VERSION=v6
export NGINX_CONFIG_VERSION=v7 export NGINX_CONFIG_VERSION=v8
export WK_SERVER_VERSION=v1 export WK_SERVER_VERSION=v1
export WK_CLIENT_VERSION=v1 export WK_CLIENT_VERSION=v1
export PG_BACKUP_VERSION=v1 export PG_BACKUP_VERSION=v1
export ADMIN_CONFIG_VERSION=v1
set_admin () { set_admin () {
admin=akadmin admin=akadmin
@ -18,3 +19,36 @@ set_admin () {
fi fi
psql -U synapse -c "UPDATE users SET admin = 1 WHERE name = '@$admin:$DOMAIN'"; psql -U synapse -c "UPDATE users SET admin = 1 WHERE name = '@$admin:$DOMAIN'";
} }
set_bridge_tokens() {
if [ -z "$1" ]; then
echo "Error: Missing parameter. Usage: set_bridge_tokens <BRIDGETYPE>"
return 1
fi
BRIDGETYPE=$1
echo "retrieve tokens from registration.yaml..."
output=$(abra app run $DOMAIN app cat /${BRIDGETYPE}-data/registration.yaml)
if [ $? -ne 0 ]; then
echo "Error: Failed to retrieve registration.yaml for ${BRIDGETYPE} bridge:"
echo "$output"
return 1
fi
hs_token=$(echo "$output" | sed -n 's/^hs_token:[[:space:]]*\(.*\)$/\1/p')
as_token=$(echo "$output" | sed -n 's/^as_token:[[:space:]]*\(.*\)$/\1/p')
echo "HS Token: $hs_token"
echo "AS Token: $as_token"
echo "UNDEPLOY $DOMAIN?"
abra app undeploy $DOMAIN
echo "Replacing tokens:"
abra app secret rm $DOMAIN ${BRIDGETYPE}_as_token
abra app secret insert $DOMAIN ${BRIDGETYPE}_as_token v1 $as_token
abra app secret rm $DOMAIN ${BRIDGETYPE}_hs_token
abra app secret insert $DOMAIN ${BRIDGETYPE}_hs_token v1 $hs_token
echo "Redeploying $DOMAIN..."
abra app deploy -n $DOMAIN
}

3
admin.conf.tmpl Normal file
View File

@ -0,0 +1,3 @@
{
"restrictBaseUrl": "https://{{ env "DOMAIN" }}"
}

46
compose.admin.yml Normal file
View File

@ -0,0 +1,46 @@
---
version: "3.8"
services:
admin:
image: awesometechnologies/synapse-admin:0.10.3
networks:
- proxy
deploy:
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.services.${STACK_NAME}_admin.loadbalancer.server.port=80"
- "traefik.http.routers.${STACK_NAME}_admin.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})&&PathPrefix(`/admin`)"
- "traefik.http.routers.${STACK_NAME}_admin.entrypoints=web-secure"
- "traefik.http.routers.${STACK_NAME}_admin.tls.certresolver=${LETS_ENCRYPT_ENV}"
- "traefik.http.routers.${STACK_NAME}_admin.middlewares=admin,admin_path"
- "traefik.http.middlewares.admin.redirectregex.regex=^(.*)/admin/?"
- "traefik.http.middlewares.admin.redirectregex.replacement=$${1}/admin/"
- "traefik.http.middlewares.admin_path.stripprefix.prefixes=/admin"
environment:
- DOMAIN
configs:
- source: admin_config
target: /app/config.json
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 10
start_period: 1m
web:
environment:
- ADMIN_INTERFACE_ENABLED
networks:
proxy:
external: true
configs:
admin_config:
name: ${STACK_NAME}_admin_config_${ADMIN_CONFIG_VERSION}
file: admin.conf.tmpl
template_driver: golang

View File

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

View File

@ -10,7 +10,7 @@ services:
- signal-data:/signal-data - signal-data:/signal-data
signalbridge: signalbridge:
image: dock.mau.dev/mautrix/signal:v0.7.2 image: dock.mau.dev/mautrix/signal:v0.7.5
depends_on: depends_on:
- signaldb - signaldb
configs: configs:
@ -21,6 +21,7 @@ services:
- HOMESERVER_URL - HOMESERVER_URL
- SIGNAL_BRIDGE_PERMISSIONS - SIGNAL_BRIDGE_PERMISSIONS
- SIGNAL_ENABLE_ENCRYPTION - SIGNAL_ENABLE_ENCRYPTION
- SIGNAL_DEFAULT_ENCRYPTION=${SIGNAL_DEFAULT_ENCRYPTION:-false}
- VERIFY_SSL - VERIFY_SSL
secrets: secrets:
- signal_as_token - signal_as_token

View File

@ -3,7 +3,7 @@ version: "3.8"
services: services:
web: web:
image: nginx:1.27.2 image: nginx:1.27.4
networks: networks:
- proxy - proxy
- internal - internal
@ -30,12 +30,12 @@ services:
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
healthcheck: healthcheck:
test: curl -f http://${STACK_NAME}_app:8008/health || exit 1 test: curl -f http://${STACK_NAME}_app:8008/health || exit 1
interval: 5s interval: 20s
timeout: 3s timeout: 15s
retries: 20 retries: 20
app: app:
image: "matrixdotorg/synapse:v1.117.0" image: "matrixdotorg/synapse:v1.124.0"
volumes: volumes:
- "data:/data" - "data:/data"
secrets: secrets:
@ -53,8 +53,21 @@ services:
- ENABLE_3PID_LOOKUP - ENABLE_3PID_LOOKUP
- ENABLE_ALLOWLIST - ENABLE_ALLOWLIST
- ENABLE_REGISTRATION - ENABLE_REGISTRATION
- REGISTRATION_REQUIRES_TOKEN
- ENCRYPTED_BY_DEFAULT - ENCRYPTED_BY_DEFAULT
- OLD_SIGNING_KEY
- OLD_SIGNING_KEY_ID
- OLD_SIGNING_KEY_EXPIRES
- USER_DIRECTORY_ENABLED=${USER_DIRECTORY_ENABLED:-true}
- USER_DIRECTORY_SEARCH_ALL_USERS=${USER_DIRECTORY_SEARCH_ALL_USERS:-true}
- USER_DIRECTORY_PREFER_LOCAL_USERS=${USER_DIRECTORY_PREFER_LOCAL_USERS:-true}
- USER_DIRECTORY_SHOW_LOCKED_USERS=${USER_DIRECTORY_SHOW_LOCKED_USERS:-false}
- FEDERATION_ALLOWLIST - FEDERATION_ALLOWLIST
- REQUIRE_AUTH_FOR_PROFILE_REQUESTS=${REQUIRE_AUTH_FOR_PROFILE_REQUESTS:-false}
- LIMIT_PROFILE_REQUESTS_TO_USERS_WHO_SHARE_ROOMS=${LIMIT_PROFILE_REQUESTS_TO_USERS_WHO_SHARE_ROOMS:-false}
- DELETE_STALE_DEVICES_AFTER
- SESSION_LIFETIME
- TRACK_PUPPETED_USER_IPS=${TRACK_PUPPETED_USER_IPS:-false}
- LETSENCRYPT_HOST=${DOMAIN} - LETSENCRYPT_HOST=${DOMAIN}
- MEDIA_RETENTION_LOCAL_LIFETIME - MEDIA_RETENTION_LOCAL_LIFETIME
- MEDIA_RETENTION_REMOTE_LIFETIME - MEDIA_RETENTION_REMOTE_LIFETIME
@ -91,7 +104,7 @@ services:
restart_policy: restart_policy:
condition: on-failure condition: on-failure
labels: labels:
- "coop-cloud.${STACK_NAME}.version=6.5.0+v1.117.0" - "coop-cloud.${STACK_NAME}.version=6.6.3+v1.124.0"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}" - "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
healthcheck: healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8008/health"] test: ["CMD", "curl", "-f", "http://localhost:8008/health"]

View File

@ -16,6 +16,12 @@ server_name: {{ or (env "SERVER_NAME") (env "DOMAIN") }}
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#public_baseurl # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#public_baseurl
public_baseurl: https://{{ env "DOMAIN" }}/ public_baseurl: https://{{ env "DOMAIN" }}/
# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#require_auth_for_profile_requests
require_auth_for_profile_requests: {{ env "REQUIRE_AUTH_FOR_PROFILE_REQUESTS" }}
# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#limit_profile_requests_to_users_who_share_rooms
limit_profile_requests_to_users_who_share_rooms: {{ env "LIMIT_PROFILE_REQUESTS_TO_USERS_WHO_SHARE_ROOMS" }}
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#serve_server_wellknown # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#serve_server_wellknown
serve_server_wellknown: {{ env "SERVE_SERVER_WELLKNOWN" }} serve_server_wellknown: {{ env "SERVE_SERVER_WELLKNOWN" }}
@ -52,6 +58,11 @@ listeners:
{{ end }} {{ end }}
{{ end }} {{ end }}
# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#delete_stale_devices_after
{{ if (env "DELETE_STALE_DEVICES_AFTER") }}
delete_stale_devices_after: {{ env "DELETE_STALE_DEVICES_AFTER" }}
{{ end }}
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#admin_contact # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#admin_contact
admin_contact: 'mailto:{{ env "ADMIN_EMAIL" }}' admin_contact: 'mailto:{{ env "ADMIN_EMAIL" }}'
@ -132,6 +143,9 @@ turn_allow_guests: {{ env "TURN_ALLOW_GUESTS" }}
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#enable_registration # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#enable_registration
enable_registration: {{ env "ENABLE_REGISTRATION" }} enable_registration: {{ env "ENABLE_REGISTRATION" }}
# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#registration_requires_token
registration_requires_token: {{ env "REGISTRATION_REQUIRES_TOKEN" }}
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#enable_3pid_lookup # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#enable_3pid_lookup
enable_3pid_lookup: {{ env "ENABLE_3PID_LOOKUP" }} enable_3pid_lookup: {{ env "ENABLE_3PID_LOOKUP" }}
@ -147,9 +161,17 @@ auto_join_rooms:
- "{{ env "AUTO_JOIN_ROOM" }}" - "{{ env "AUTO_JOIN_ROOM" }}"
{{ end }} {{ end }}
# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#session_lifetime
{{ if (env "SESSION_LIFETIME") }}
session_lifetime: {{ env "SESSION_LIFETIME" }}
{{ end }}
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#report_stats # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#report_stats
report_stats: false report_stats: false
# https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#track_puppeted_user_ips
track_puppeted_user_ips: {{ env "TRACK_PUPPETED_USER_IPS" }}
{{ if eq (env "APP_SERVICES_ENABLED") "1" }} {{ if eq (env "APP_SERVICES_ENABLED") "1" }}
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#app_service_config_files # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#app_service_config_files
app_service_config_files: {{ env "APP_SERVICE_CONFIGS" }} app_service_config_files: {{ env "APP_SERVICE_CONFIGS" }}
@ -164,6 +186,12 @@ form_secret: "{{ secret "form_secret" }}"
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#signing_key_path # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#signing_key_path
signing_key_path: "/data/{{ env "DOMAIN" }}.signing.key" signing_key_path: "/data/{{ env "DOMAIN" }}.signing.key"
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#old_signing_keys
{{ if (and (env "OLD_SIGNING_KEY_ID") (env "OLD_SIGNING_KEY") (env "OLD_SIGNING_KEY_EXPIRES")) }}
old_signing_keys:
"ed25519:{{ env "OLD_SIGNING_KEY_ID" }}": { key: "{{ env "OLD_SIGNING_KEY" }}", expired_ts: {{ env "OLD_SIGNING_KEY_EXPIRES" }} }
{{ end }}
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#trusted_key_servers # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#trusted_key_servers
{{ if eq (env "ENABLE_ALLOWLIST") "1" }} {{ if eq (env "ENABLE_ALLOWLIST") "1" }}
trusted_key_servers: [] # NOTE(d1): defaults to requesting server directly, which matches FEDERATION_ALLOWLIST trusted_key_servers: [] # NOTE(d1): defaults to requesting server directly, which matches FEDERATION_ALLOWLIST
@ -246,9 +274,10 @@ encryption_enabled_by_default_for_room_type: {{ env "ENCRYPTED_BY_DEFAULT" }}
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#user_directory # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#user_directory
user_directory: user_directory:
enabled: true enabled: {{ env "USER_DIRECTORY_ENABLED" }}
search_all_users: true search_all_users: {{ env "USER_DIRECTORY_SEARCH_ALL_USERS" }}
prefer_local_users: true prefer_local_users: {{ env "USER_DIRECTORY_PREFER_LOCAL_USERS" }}
show_locked_users: {{ env "USER_DIRECTORY_SHOW_LOCKED_USERS" }}
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#media_retention # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#media_retention
media_retention: media_retention:

View File

@ -36,5 +36,20 @@ http {
default_type application/json; default_type application/json;
add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Origin *;
} }
{{ if eq (env "ADMIN_INTERFACE_ENABLED") "1" }}
location ^~ /_synapse/admin {
if ($http_referer !~ "^https://{{ env "DOMAIN" }}/admin/") {
return 403;
}
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;
}
{{ end }}
} }
} }

1
release/6.6.1+v1.124.0 Normal file
View File

@ -0,0 +1 @@
added env REGISTRATION_REQUIRES_TOKEN

1
release/6.6.2+v1.124.0 Normal file
View File

@ -0,0 +1 @@
new optional env vars for user_directory and privacy options

1
release/6.6.3+v1.124.0 Normal file
View File

@ -0,0 +1 @@
added env for old-signing-keys

View File

@ -329,7 +329,7 @@ encryption:
# Whether to enable encryption at all. If false, the bridge will not function in encrypted rooms. # Whether to enable encryption at all. If false, the bridge will not function in encrypted rooms.
allow: {{ env "SIGNAL_ENABLE_ENCRYPTION" }} allow: {{ env "SIGNAL_ENABLE_ENCRYPTION" }}
# Whether to force-enable encryption in all bridged rooms. # Whether to force-enable encryption in all bridged rooms.
default: false default: {{ env "SIGNAL_DEFAULT_ENCRYPTION" }}
# Whether to require all messages to be encrypted and drop any unencrypted messages. # Whether to require all messages to be encrypted and drop any unencrypted messages.
require: false require: false
# Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data.