xiaowei-system/skills/devops/hermes-debug/references/systemd-services.md

3.4 KiB
Executable File
Raw Blame History

Systemd User Service 参考

已注册的 systemd user services

Service 路径 端口 自启
new-api ~/.config/systemd/user/new-api.service 3000
matrix-synapse ~/.config/systemd/user/matrix-synapse.service 8008
opencode-web ~/.config/systemd/user/opencode-web.service 4096
openclaw-gateway ~/.config/systemd/user/openclaw-gateway.service 18789
tailscale ~/.config/systemd/user/tailscale.service -

通用管理命令

# 启用 + 启动
systemctl --user daemon-reload
systemctl --user enable <service>
systemctl --user start <service>

# 状态检查
systemctl --user status <service>

# 重启
systemctl --user restart <service>

# 进程挂了自动恢复
systemctl --user reset-failed <service>  # 先清失败状态再 start

matrix-synapse.service模板

[Unit]
Description=Matrix Synapse Homeserver
After=network.target

[Service]
Type=simple
WorkingDirectory=/home/muc
ExecStart=/home/muc/matrix-venv/bin/python -m synapse.app.homeserver --config-path /home/muc/matrix-config/homeserver.yaml
Restart=always
RestartSec=5
Environment="PYTHONPATH=/home/muc/matrix-venv/lib/python3.13/site-packages"

[Install]
WantedBy=default.target

安装方式matrix-synapse pip 被 PEP 668 阻塞时):

uv venv /home/muc/matrix-venv
uv pip install matrix-synapse --python /home/muc/matrix-venv

opencode-web.service模板

[Unit]
Description=OpenCode Web UI
After=network.target

[Service]
ExecStart=/home/muc/.local/bin/opencode web --port 4096 --hostname 127.0.0.1
Restart=always
RestartSec=5
Environment=HOME=/home/muc
Environment=QWEN_API_KEY=sk-0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
Environment=PATH=/home/muc/.local/bin:/home/muc/.local/node-v22.19.0-linux-x64/bin:/usr/local/bin:/usr/bin:/bin
WorkingDirectory=/home/muc

[Install]
WantedBy=default.target

tailscale.service模板

[Unit]
Description=Tailscale
After=network.target

[Service]
ExecStart=/home/muc/.local/bin/tailscaled --tun=userspace-networking --state=/home/muc/.local/state/tailscaled/state
Restart=always
RestartSec=5

[Install]
WantedBy=default.target

关键:先确保 socket 目录存在:

sudo mkdir -p /var/run/tailscale
sudo chown $USER /var/run/tailscale

Tailscale socket 路径问题(重要 gotcha

症状tailscale status 报错 "Failed to connect to local Tailscale daemon"但 ps aux | grep tailscaled 显示进程在跑

原因tailscaled 默认 socket 路径是 /var/run/tailscale/tailscaled.sock,但 daemon 启动时指定了不同路径(如 /tmp/tailscaled.sock

诊断

ls -la /var/run/tailscale/         # socket 目录
ls -la /tmp/tailscaled.sock        # 实际 socket
ps aux | grep tailscaled | grep socket  # daemon 的 --socket 参数

修复kill 旧 daemon → 确保 /var/run/tailscale/ 存在且属主正确 → 重启 service

新增 service 时的标准流程

  1. 写 service 文件到 ~/.config/systemd/user/<name>.service
  2. systemctl --user daemon-reload
  3. systemctl --user enable <name>
  4. systemctl --user start <name>
  5. systemctl --user status <name> 确认 active

注意:进程 crash 后 systemd 会在短时间内阻止重启,需要 systemctl --user reset-failed <name> 清除阻止状态。