Files
usernode/deploy/usernode.service
T

58 lines
2.3 KiB
Desktop File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ws_usernode systemd 服务单元(生产部署)
#
# 安装:
# 1. 构建单二进制:make build-embed(含前端产物)
# 2. 安装二进制与配置:
# sudo install -o usernode -g usernode -m 0755 bin/usernode /usr/local/bin/usernode
# sudo install -o root -g root -m 0644 config.example.toml /etc/usernode/config.toml
# (按需编辑 /etc/usernode/config.toml:监听地址、数据库、SMTP、system.sudo=true
# 3. 创建运行用户与数据目录:
# sudo useradd -r -s /usr/sbin/nologin -d /var/lib/usernode usernode
# sudo mkdir -p /var/lib/usernode && sudo chown usernode:usernode /var/lib/usernode
# 4. 安装 sudoers 白名单(节点以专有用户经 sudo -n 执行系统账号命令,见 sudoers.example):
# sudo cp deploy/sudoers.example /etc/sudoers.d/usernode && sudo visudo -c
# 5. 安装本单元并启动:
# sudo install -o root -g root -m 0644 deploy/usernode.service /etc/systemd/system/usernode.service
# sudo systemctl daemon-reload
# sudo systemctl enable --now usernode
# 6. 初始化:migrate + 创建初始管理员
# sudo -u usernode usernode migrate --config /etc/usernode/config.toml
# sudo -u usernode usernode admin create --config /etc/usernode/config.toml \
# --username root --password 'xxx' --email admin@example.com
#
# 说明:
# - 以 usernode 专有用户运行;数据(SQLite / 审计归档)在 /var/lib/usernode。
# - 生产必须配置 [system] sudo=true dry_run=false,配合 /etc/sudoers.d/usernode 白名单。
# - 建议前置 nginx/caddy 反向代理启用 TLS[server] listen 保持 127.0.0.1。
[Unit]
Description=ws_usernode server user management node
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=usernode
Group=usernode
WorkingDirectory=/var/lib/usernode
ExecStart=/usr/local/bin/usernode serve --config /etc/usernode/config.toml
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=3
# 安全加固
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/usernode /var/log/usernode /etc/usernode
PrivateTmp=true
PrivateDevices=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
# 日志走 journald
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target