[Unit]
Description=SGame admin server (江湖录后台：玩家反馈 + 埋点 + 看板)
Documentation=https://git.xindiegaming.top/bia/sgame-admin-server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=sgame
Group=sgame
WorkingDirectory=/opt/sgame-admin
ExecStart=/opt/sgame-admin/server -config /opt/sgame-admin/config.yaml
# 密钥(JWT_SECRET / INIT_ADMIN_PASSWORD / INGEST_APP_KEY)走这个文件，
# 权限 600、属主 sgame，不进任何仓库。
EnvironmentFile=/opt/sgame-admin/env

Restart=always
RestartSec=5s

# —— 资源闸 ——
# VPS 总共 459MB，还跑着 Caddy / frps / v2ray / vaultwarden。
# 实测常驻 ~30MB，150M 留了 5 倍余量：真涨到这个数说明有泄漏，
# 宁可让它被 OOM kill 然后自动重启，也不能把整机拖进 swap 抖动。
#
# 目标机是 CentOS 7 = systemd 219 + cgroup v1，只认 MemoryLimit；
# 新版的 MemoryMax 在这里会被静默忽略，内存闸等于没写。
MemoryLimit=150M
# 单核机器，限制 CPU 配额避免某次重聚合把 Caddy 饿死
CPUQuota=80%
TasksMax=256

# —— 加固 ——
# 同样受 systemd 219 限制：ProtectSystem=strict、ReadWritePaths、
# ProtectKernelTunables、RestrictSUIDSGID 都是 232+ 才有的，写了只会被忽略
# 并刷 warning。full 已经把 /usr /boot /etc 挂成只读，而本服务只写
# /opt/sgame-admin/data，够用。
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true

StandardOutput=journal
StandardError=journal
SyslogIdentifier=sgame-admin

[Install]
WantedBy=multi-user.target
