Remove Caddy from the Synapse workers image used in Complement. (#12818)
This commit is contained in:
parent
fbf904bd54
commit
4fef76ca34
|
@ -0,0 +1 @@
|
||||||
|
Remove Caddy from the Synapse workers image used in Complement.
|
|
@ -6,12 +6,6 @@
|
||||||
# https://github.com/matrix-org/synapse/blob/develop/docker/README-testing.md#testing-with-postgresql-and-single-or-multi-process-synapse
|
# https://github.com/matrix-org/synapse/blob/develop/docker/README-testing.md#testing-with-postgresql-and-single-or-multi-process-synapse
|
||||||
FROM matrixdotorg/synapse-workers
|
FROM matrixdotorg/synapse-workers
|
||||||
|
|
||||||
# Download a caddy server to stand in front of nginx and terminate TLS using Complement's
|
|
||||||
# custom CA.
|
|
||||||
# We include this near the top of the file in order to cache the result.
|
|
||||||
RUN curl -OL "https://github.com/caddyserver/caddy/releases/download/v2.3.0/caddy_2.3.0_linux_amd64.tar.gz" && \
|
|
||||||
tar xzf caddy_2.3.0_linux_amd64.tar.gz && rm caddy_2.3.0_linux_amd64.tar.gz && mv caddy /root
|
|
||||||
|
|
||||||
# Install postgresql
|
# Install postgresql
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y postgresql-13
|
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y postgresql-13
|
||||||
|
@ -31,16 +25,12 @@ COPY conf-workers/workers-shared.yaml /conf/workers/shared.yaml
|
||||||
|
|
||||||
WORKDIR /data
|
WORKDIR /data
|
||||||
|
|
||||||
# Copy the caddy config
|
|
||||||
COPY conf-workers/caddy.complement.json /root/caddy.json
|
|
||||||
|
|
||||||
COPY conf-workers/postgres.supervisord.conf /etc/supervisor/conf.d/postgres.conf
|
COPY conf-workers/postgres.supervisord.conf /etc/supervisor/conf.d/postgres.conf
|
||||||
COPY conf-workers/caddy.supervisord.conf /etc/supervisor/conf.d/caddy.conf
|
|
||||||
|
|
||||||
# Copy the entrypoint
|
# Copy the entrypoint
|
||||||
COPY conf-workers/start-complement-synapse-workers.sh /
|
COPY conf-workers/start-complement-synapse-workers.sh /
|
||||||
|
|
||||||
# Expose caddy's listener ports
|
# Expose nginx's listener ports
|
||||||
EXPOSE 8008 8448
|
EXPOSE 8008 8448
|
||||||
|
|
||||||
ENTRYPOINT ["/start-complement-synapse-workers.sh"]
|
ENTRYPOINT ["/start-complement-synapse-workers.sh"]
|
||||||
|
|
|
@ -1,72 +0,0 @@
|
||||||
{
|
|
||||||
"apps": {
|
|
||||||
"http": {
|
|
||||||
"servers": {
|
|
||||||
"srv0": {
|
|
||||||
"listen": [
|
|
||||||
":8448"
|
|
||||||
],
|
|
||||||
"routes": [
|
|
||||||
{
|
|
||||||
"match": [
|
|
||||||
{
|
|
||||||
"host": [
|
|
||||||
"{{ server_name }}"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"handle": [
|
|
||||||
{
|
|
||||||
"handler": "subroute",
|
|
||||||
"routes": [
|
|
||||||
{
|
|
||||||
"handle": [
|
|
||||||
{
|
|
||||||
"handler": "reverse_proxy",
|
|
||||||
"upstreams": [
|
|
||||||
{
|
|
||||||
"dial": "localhost:8008"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"terminal": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tls": {
|
|
||||||
"automation": {
|
|
||||||
"policies": [
|
|
||||||
{
|
|
||||||
"subjects": [
|
|
||||||
"{{ server_name }}"
|
|
||||||
],
|
|
||||||
"issuers": [
|
|
||||||
{
|
|
||||||
"module": "internal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"on_demand": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pki": {
|
|
||||||
"certificate_authorities": {
|
|
||||||
"local": {
|
|
||||||
"name": "Complement CA",
|
|
||||||
"root": {
|
|
||||||
"certificate": "/complement/ca/ca.crt",
|
|
||||||
"private_key": "/complement/ca/ca.key"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
[program:caddy]
|
|
||||||
command=/usr/local/bin/prefix-log /root/caddy run --config /root/caddy.json
|
|
||||||
autorestart=unexpected
|
|
||||||
stdout_logfile=/dev/stdout
|
|
||||||
stdout_logfile_maxbytes=0
|
|
||||||
stderr_logfile=/dev/stderr
|
|
||||||
stderr_logfile_maxbytes=0
|
|
|
@ -9,9 +9,6 @@ function log {
|
||||||
echo "$d $@"
|
echo "$d $@"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Replace the server name in the caddy config
|
|
||||||
sed -i "s/{{ server_name }}/${SERVER_NAME}/g" /root/caddy.json
|
|
||||||
|
|
||||||
# Set the server name of the homeserver
|
# Set the server name of the homeserver
|
||||||
export SYNAPSE_SERVER_NAME=${SERVER_NAME}
|
export SYNAPSE_SERVER_NAME=${SERVER_NAME}
|
||||||
|
|
||||||
|
@ -39,6 +36,21 @@ export SYNAPSE_WORKER_TYPES="\
|
||||||
appservice, \
|
appservice, \
|
||||||
pusher"
|
pusher"
|
||||||
|
|
||||||
|
|
||||||
|
# Generate a TLS key, then generate a certificate by having Complement's CA sign it
|
||||||
|
# Note that both the key and certificate are in PEM format (not DER).
|
||||||
|
openssl genrsa -out /conf/server.tls.key 2048
|
||||||
|
|
||||||
|
openssl req -new -key /conf/server.tls.key -out /conf/server.tls.csr \
|
||||||
|
-subj "/CN=${SERVER_NAME}"
|
||||||
|
|
||||||
|
openssl x509 -req -in /conf/server.tls.csr \
|
||||||
|
-CA /complement/ca/ca.crt -CAkey /complement/ca/ca.key -set_serial 1 \
|
||||||
|
-out /conf/server.tls.crt
|
||||||
|
|
||||||
|
export SYNAPSE_TLS_CERT=/conf/server.tls.crt
|
||||||
|
export SYNAPSE_TLS_KEY=/conf/server.tls.key
|
||||||
|
|
||||||
# Run the script that writes the necessary config files and starts supervisord, which in turn
|
# Run the script that writes the necessary config files and starts supervisord, which in turn
|
||||||
# starts everything else
|
# starts everything else
|
||||||
exec /configure_workers_and_start.py
|
exec /configure_workers_and_start.py
|
||||||
|
|
|
@ -9,6 +9,22 @@ server {
|
||||||
listen 8008;
|
listen 8008;
|
||||||
listen [::]:8008;
|
listen [::]:8008;
|
||||||
|
|
||||||
|
{% if tls_cert_path is not none and tls_key_path is not none %}
|
||||||
|
listen 8448 ssl;
|
||||||
|
listen [::]:8448 ssl;
|
||||||
|
|
||||||
|
ssl_certificate {{ tls_cert_path }};
|
||||||
|
ssl_certificate_key {{ tls_key_path }};
|
||||||
|
|
||||||
|
# Some directives from cipherlist.eu (fka cipherli.st):
|
||||||
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
|
||||||
|
ssl_prefer_server_ciphers on;
|
||||||
|
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
|
||||||
|
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
|
||||||
|
ssl_session_cache shared:SSL:10m;
|
||||||
|
ssl_session_tickets off; # Requires nginx >= 1.5.9
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
server_name localhost;
|
server_name localhost;
|
||||||
|
|
||||||
# Nginx by default only allows file uploads up to 1M in size
|
# Nginx by default only allows file uploads up to 1M in size
|
||||||
|
|
|
@ -21,6 +21,9 @@
|
||||||
# * SYNAPSE_REPORT_STATS: Whether to report stats.
|
# * SYNAPSE_REPORT_STATS: Whether to report stats.
|
||||||
# * SYNAPSE_WORKER_TYPES: A comma separated list of worker names as specified in WORKER_CONFIG
|
# * SYNAPSE_WORKER_TYPES: A comma separated list of worker names as specified in WORKER_CONFIG
|
||||||
# below. Leave empty for no workers, or set to '*' for all possible workers.
|
# below. Leave empty for no workers, or set to '*' for all possible workers.
|
||||||
|
# * SYNAPSE_TLS_CERT: Path to a TLS certificate in PEM format.
|
||||||
|
# * SYNAPSE_TLS_KEY: Path to a TLS key. If this and SYNAPSE_TLS_CERT are specified,
|
||||||
|
# Nginx will be configured to serve TLS on port 8448.
|
||||||
#
|
#
|
||||||
# NOTE: According to Complement's ENTRYPOINT expectations for a homeserver image (as defined
|
# NOTE: According to Complement's ENTRYPOINT expectations for a homeserver image (as defined
|
||||||
# in the project's README), this script may be run multiple times, and functionality should
|
# in the project's README), this script may be run multiple times, and functionality should
|
||||||
|
@ -501,6 +504,8 @@ def generate_worker_files(
|
||||||
"/etc/nginx/conf.d/matrix-synapse.conf",
|
"/etc/nginx/conf.d/matrix-synapse.conf",
|
||||||
worker_locations=nginx_location_config,
|
worker_locations=nginx_location_config,
|
||||||
upstream_directives=nginx_upstream_config,
|
upstream_directives=nginx_upstream_config,
|
||||||
|
tls_cert_path=os.environ.get("SYNAPSE_TLS_CERT"),
|
||||||
|
tls_key_path=os.environ.get("SYNAPSE_TLS_KEY"),
|
||||||
)
|
)
|
||||||
|
|
||||||
# Supervisord config
|
# Supervisord config
|
||||||
|
|
Loading…
Reference in New Issue