diff --git a/deploy/maintenance-server.mjs b/deploy/maintenance-server.mjs
index 298ab3e..ab52fa2 100644
--- a/deploy/maintenance-server.mjs
+++ b/deploy/maintenance-server.mjs
@@ -7,8 +7,10 @@ const host = process.env.MAINTENANCE_HOST || '127.0.0.1';
const port = Number.parseInt(process.env.PORT || '43821', 10);
const dataDir = process.env.MAINTENANCE_DATA_DIR
|| dirname(process.env.DATABASE_PATH || '/var/lib/synapsis/synapsis.db');
+const appDir = process.env.MAINTENANCE_APP_DIR || process.cwd();
const brandingPath = join(dataDir, 'maintenance-branding.json');
const logoPath = join(dataDir, 'maintenance-logo');
+const defaultLogoPath = join(appDir, 'public', 'logotext.svg');
function validAccent(value) {
return typeof value === 'string' && /^#[0-9a-f]{3}([0-9a-f]{3})?$/i.test(value)
@@ -69,7 +71,8 @@ const externalLogoUrl = typeof branding.externalLogoUrl === 'string' && /^https?
? branding.externalLogoUrl
: null;
const hasStoredLogo = existsSync(logoPath);
-const logoMarkup = hasStoredLogo || externalLogoUrl
+const hasDefaultLogo = existsSync(defaultLogoPath);
+const logoMarkup = hasStoredLogo || externalLogoUrl || hasDefaultLogo
? '
'
: '
Synapsis
';
@@ -131,6 +134,16 @@ const server = http.createServer((request, response) => {
response.end();
return;
}
+ if (hasDefaultLogo) {
+ const logo = readFileSync(defaultLogoPath);
+ response.writeHead(200, {
+ 'Content-Type': 'image/svg+xml',
+ 'Content-Length': logo.byteLength,
+ 'Cache-Control': 'no-store, max-age=0',
+ });
+ response.end(logo);
+ return;
+ }
}
response.writeHead(503, {
diff --git a/deploy/synapsis-maintenance.service b/deploy/synapsis-maintenance.service
index e05c92a..340a896 100644
--- a/deploy/synapsis-maintenance.service
+++ b/deploy/synapsis-maintenance.service
@@ -10,6 +10,7 @@ User=synapsis
Group=synapsis
WorkingDirectory=/opt/synapsis
EnvironmentFile=/etc/synapsis.env
+Environment=MAINTENANCE_APP_DIR=/opt/synapsis
ExecStart=/usr/bin/env node /opt/synapsis/deploy/maintenance-server.mjs
Restart=on-failure
RestartSec=1
@@ -17,4 +18,3 @@ NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
-
diff --git a/deploy/update.sh b/deploy/update.sh
index 2b0a269..0a90bf4 100755
--- a/deploy/update.sh
+++ b/deploy/update.sh
@@ -69,6 +69,7 @@ fi
install_update_units
if ! runuser -u synapsis -- env \
PORT="${PORT:-43821}" \
+ MAINTENANCE_APP_DIR="$APP_DIR" \
MAINTENANCE_DATA_DIR="$DATA_DIR" \
node "$APP_DIR/deploy/maintenance-server.mjs" --capture-branding; then
echo "Warning: could not refresh maintenance-page branding; using the last captured branding." >&2