27 lines
1.1 KiB
Bash
Executable File
27 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
stage="$(cd "$(dirname "$0")" && pwd)"
|
|
test ! -e /mnt/data/qsafe/qa/vault.sqlite3 || { echo 'QA vault already exists'; exit 1; }
|
|
install -d -o qsafe -g qsafe -m 700 /mnt/data/qsafe/qa
|
|
install -o root -g qsafe -m 640 "$stage/qa-token.sha256" /etc/qsafe/qa-token.sha256
|
|
systemd-run --unit=qsafe-qa --property=User=qsafe --property=Group=qsafe --property=UMask=0077 \
|
|
/usr/bin/python3 /opt/qsafe/server.py --port 18793 --data /mnt/data/qsafe/qa --token-hash-file /etc/qsafe/qa-token.sha256
|
|
python3 - <<'PY'
|
|
from pathlib import Path
|
|
p = Path('/etc/caddy/sites/qsafe-lan.caddy')
|
|
t = p.read_text()
|
|
if '# BEGIN QSafe QA' in t:
|
|
raise SystemExit('QA route already present')
|
|
needle = ' handle_path /qsafe/* {\n'
|
|
block = '''\t# BEGIN QSafe QA
|
|
\thandle_path /qsafe-qa/* {
|
|
\t\treverse_proxy 127.0.0.1:18793
|
|
\t}
|
|
\t# END QSafe QA
|
|
'''
|
|
assert t.count(needle) == 1, 'LAN-only QSafe site must be installed first'
|
|
p.write_text(t.replace(needle, block + needle, 1))
|
|
PY
|
|
caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile >/dev/null
|
|
systemctl reload caddy
|