From 64e2b26ed55fd6ee1c1ffc62a37cb09e452fe7ec Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Tue, 14 Feb 2023 09:49:22 +0200 Subject: [PATCH] Fix Hydrogen failing to start We were mounting our own configuration to `/usr/share/nginx/html/config.json`, which is a symlink to `/tmp/config.json`. So we effectively mount our file to `/tmp/config.json`. When starting: - if Hydrogen sees a `CONFIG_OVERRIDE` environment variable, it will try to save it into our read-only config file and fail. - if Hydrogen doesn't see a `CONFIG_OVERRIDE` environment variable (the path we go through, because we don't pass such a variable), it will try to copy its bundled configuration (`/config.json.bundled`) to `/tmp/config.json`. Because our configuration is mounted as read-only, it will fail. In both cases, it will fail with: > cp: can't create '/tmp/config.json': File exists Source: https://github.com/vector-im/hydrogen-web/blob/3720de36bbee8609ca7cf625e7b72dc44609e393/docker/dynamic-config.sh We work around this by mounting our configuration on top of the bundled one (`/config.json.bundled`). We then let Hydrogen's startup script copy it to `/tmp/config.json` (a tmpfs we've mounted into the container) and use it from there. --- .../templates/systemd/matrix-client-hydrogen.service.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/custom/matrix-client-hydrogen/templates/systemd/matrix-client-hydrogen.service.j2 b/roles/custom/matrix-client-hydrogen/templates/systemd/matrix-client-hydrogen.service.j2 index d8a3fb98..e09978ea 100644 --- a/roles/custom/matrix-client-hydrogen/templates/systemd/matrix-client-hydrogen.service.j2 +++ b/roles/custom/matrix-client-hydrogen/templates/systemd/matrix-client-hydrogen.service.j2 @@ -24,7 +24,7 @@ ExecStart={{ devture_systemd_docker_base_host_command_docker }} run --rm --name {% endif %} --tmpfs=/tmp:rw,noexec,nosuid,size=10m \ --mount type=bind,src={{ matrix_client_hydrogen_data_path }}/nginx.conf,dst=/etc/nginx/nginx.conf,ro \ - --mount type=bind,src={{ matrix_client_hydrogen_data_path }}/config.json,dst=/usr/share/nginx/html/config.json,ro \ + --mount type=bind,src={{ matrix_client_hydrogen_data_path }}/config.json,dst=/config.json.bundled,ro \ {% for arg in matrix_client_hydrogen_container_extra_arguments %} {{ arg }} \ {% endfor %}