mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-04 13:48:57 +00:00
feat(relay): receive support reports on the project stand (#43)
User-Visible: no Issue: #43
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
# Фрагмент для /etc/caddy/Caddyfile. Требует A-записей support и
|
||||
# support-staging на адрес стенда — иначе Caddy не получит сертификат.
|
||||
#
|
||||
# Access-лог намеренно не настраивается: он пишет remote_ip, а сырой адрес
|
||||
# источника не должен оседать на диске (§9.2 ТЗ 043).
|
||||
|
||||
support.houseplan.tech {
|
||||
request_body {
|
||||
max_size 8.7MB
|
||||
}
|
||||
reverse_proxy 127.0.0.1:8130
|
||||
}
|
||||
|
||||
support-staging.houseplan.tech {
|
||||
request_body {
|
||||
max_size 8.7MB
|
||||
}
|
||||
reverse_proxy 127.0.0.1:8131
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
# /etc/hp-support-relay/prod.env — права 0640, владелец root:hprelay.
|
||||
HP_RELAY_PORT=8130
|
||||
HP_RELAY_SPOOL=/var/lib/hp-support-relay/prod
|
||||
# deliver — отправлять мейнтейнеру; discard — принимать и складывать молча.
|
||||
HP_RELAY_MODE=deliver
|
||||
# Рубильник: 0 переводит эндпоинт в единообразный 503, ничего не принимая.
|
||||
HP_RELAY_ENABLED=1
|
||||
HP_RELAY_RETENTION_DAYS=30
|
||||
# Секрет НЕ хранится в этом файле: только путь к файлу с токеном (права 0400,
|
||||
# владелец hprelay). Так он не попадает ни в `systemctl show`, ни в `ps`.
|
||||
HP_RELAY_TELEGRAM_TOKEN_FILE=/etc/hp-support-relay/telegram.token
|
||||
HP_RELAY_TELEGRAM_CHAT_ID=
|
||||
# Источник берётся из X-Forwarded-For, потому что перед сервисом стоит Caddy.
|
||||
HP_RELAY_TRUSTED_PROXY=1
|
||||
@@ -0,0 +1,14 @@
|
||||
# Ретеншн: удаляет отчёты старше HP_RELAY_RETENTION_DAYS и метаданные старше суток.
|
||||
[Unit]
|
||||
Description=House Plan support relay retention (%i)
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
User=hprelay
|
||||
Group=hprelay
|
||||
EnvironmentFile=/etc/hp-support-relay/%i.env
|
||||
ExecStart=/usr/bin/python3 /opt/hp-support-relay/relay.py purge
|
||||
NoNewPrivileges=yes
|
||||
ProtectSystem=strict
|
||||
ProtectHome=yes
|
||||
ReadWritePaths=/var/lib/hp-support-relay/%i
|
||||
@@ -0,0 +1,10 @@
|
||||
[Unit]
|
||||
Description=Daily retention for House Plan support relay (%i)
|
||||
|
||||
[Timer]
|
||||
OnCalendar=daily
|
||||
RandomizedDelaySec=30m
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
@@ -0,0 +1,35 @@
|
||||
# Инстанс приёмщика: %i — имя окружения (prod | staging).
|
||||
# Конфиг: /etc/hp-support-relay/%i.env, спул: /var/lib/hp-support-relay/%i
|
||||
[Unit]
|
||||
Description=House Plan support relay (%i)
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=hprelay
|
||||
Group=hprelay
|
||||
EnvironmentFile=/etc/hp-support-relay/%i.env
|
||||
ExecStart=/usr/bin/python3 /opt/hp-support-relay/relay.py
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
# Сервис слушает только петлю, наружу ходит лишь к API доставки.
|
||||
NoNewPrivileges=yes
|
||||
PrivateTmp=yes
|
||||
PrivateDevices=yes
|
||||
ProtectSystem=strict
|
||||
ProtectHome=yes
|
||||
ProtectKernelTunables=yes
|
||||
ProtectKernelModules=yes
|
||||
ProtectControlGroups=yes
|
||||
RestrictAddressFamilies=AF_INET AF_INET6
|
||||
RestrictNamespaces=yes
|
||||
RestrictSUIDSGID=yes
|
||||
LockPersonality=yes
|
||||
MemoryMax=256M
|
||||
TasksMax=64
|
||||
ReadWritePaths=/var/lib/hp-support-relay/%i
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user