summary refs log tree commit diff
path: root/contrib/docker
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/docker')
-rw-r--r--contrib/docker/README.md7
-rw-r--r--contrib/docker/conf/homeserver.yaml9
-rwxr-xr-xcontrib/docker/start.py4
3 files changed, 18 insertions, 2 deletions
diff --git a/contrib/docker/README.md b/contrib/docker/README.md
index 87354b9bc3..c1724fe269 100644
--- a/contrib/docker/README.md
+++ b/contrib/docker/README.md
@@ -59,7 +59,12 @@ The image expects a single volume, located at ``/data``, that will hold:
 
 * temporary files during uploads;
 * uploaded media and thumbnails;
-* the SQLite database if you do not configure postgres.
+* the SQLite database if you do not configure postgres;
+* the appservices configuration.
+
+In order to setup an application service, simply create an ``appservices``
+directory in the data volume and write the application service Yaml
+configuration file there. Multiple application services are supported.
 
 ## Environment
 
diff --git a/contrib/docker/conf/homeserver.yaml b/contrib/docker/conf/homeserver.yaml
index 6f8fb24e5f..e5d3f965e4 100644
--- a/contrib/docker/conf/homeserver.yaml
+++ b/contrib/docker/conf/homeserver.yaml
@@ -128,7 +128,7 @@ recaptcha_siteverify_api: "https://www.google.com/recaptcha/api/siteverify"
 
 {% if SYNAPSE_TURN_URIS %}
 turn_uris:
-{% for uri in SYNAPSE_TURN_URIS.split(',') %}  - {{ uri }}
+{% for uri in SYNAPSE_TURN_URIS.split(',') %}    - "{{ uri }}"
 {% endfor %}
 turn_shared_secret: "{{ SYNAPSE_TURN_SECRET }}"
 turn_user_lifetime: "1h"
@@ -167,7 +167,14 @@ room_invite_state_types:
     - "m.room.avatar"
     - "m.room.name"
 
+{% if SYNAPSE_APPSERVICES %}
+app_service_config_files:
+{% for appservice in SYNAPSE_APPSERVICES %}    - "{{ appservice }}"
+{% endfor %}
+{% else %}
 app_service_config_files: []
+{% endif %}
+
 macaroon_secret_key: "{{ SYNAPSE_MACAROON_SECRET_KEY }}"
 expire_access_token: False
 
diff --git a/contrib/docker/start.py b/contrib/docker/start.py
index d3364e4226..8ade0f227d 100755
--- a/contrib/docker/start.py
+++ b/contrib/docker/start.py
@@ -4,6 +4,7 @@ import jinja2
 import os
 import sys
 import subprocess
+import glob
 
 convert = lambda src, dst, environ: open(dst, "w").write(jinja2.Template(open(src).read()).render(**environ))
 mode = sys.argv[1] if len(sys.argv) > 1 else None
@@ -26,6 +27,9 @@ for secret in ("SYNAPSE_REGISTRATION_SHARED_SECRET", "SYNAPSE_MACAROON_SECRET_KE
         print("Generating a random secret for {}".format(secret))
         environ[secret] = os.urandom(32).encode("hex")
 
+# Load appservices configurations
+environ["SYNAPSE_APPSERVICES"] = glob.glob("/data/appservices/*.yaml")
+
 # In generate mode, generate a configuration, missing keys, then exit
 if mode == "generate":
     os.execv("/usr/local/bin/python", args + ["--generate-config"])