mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2024-11-10 20:57:41 +01:00
40 lines
1.4 KiB
Django/Jinja
40 lines
1.4 KiB
Django/Jinja
#jinja2: lstrip_blocks: "True"
|
||
# Instantiable worker service, running inside the synapse container
|
||
# alongside the homeserver main process.
|
||
# c.f. https://github.com/matrix-org/synapse/pull/4662
|
||
[Unit]
|
||
Description=Matrix worker synapse.app.%i
|
||
AssertPathExists={{ matrix_synapse_config_dir_path }}/worker.%i.yaml
|
||
After=matrix-synapse.service
|
||
BindsTo=matrix-synapse.service
|
||
|
||
[Service]
|
||
Type=simple
|
||
|
||
# Intentional delay, so that the homeserver can manage to start.
|
||
ExecStartPre={{ matrix_host_command_sleep }} 5
|
||
|
||
# no sane way of instancing more than one variable (systemd "cant-fix" 🤦)
|
||
# c.f. https://github.com/systemd/systemd/issues/14895#issuecomment-594123923
|
||
# So use good ol' shell parameter expansion to get the worker type..
|
||
ExecStart=/bin/sh -c "WORKER=%i; WORKER=$${WORKER%%:*}; \
|
||
exec {{ matrix_host_command_docker }} exec \
|
||
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
|
||
matrix-synapse \
|
||
python -m synapse.app.$${WORKER} -c /data/homeserver.yaml -c /data/worker.%i.yaml"
|
||
|
||
# wait for worker startup & write out PID of actual worker process so systemd can handle it
|
||
ExecStartPost={{ matrix_host_command_sleep }} 5
|
||
ExecStartPost={{ matrix_local_bin_path }}/matrix-synapse-worker-write-pid %i /run/matrix-synapse-worker.%i.pid
|
||
|
||
ExecReload=/bin/kill -HUP $MAINPID
|
||
ExecStop=/bin/kill $MAINPID
|
||
PIDFile=/run/matrix-synapse-worker.%i.pid
|
||
KillMode=process
|
||
Restart=always
|
||
RestartSec=10
|
||
SyslogIdentifier=matrix-synapse-%i
|
||
|
||
[Install]
|
||
WantedBy=matrix-synapse.service
|