# 24/7 Linux Server 长期稳定运行配置

## 目标机器
- 老旧笔记本，i5-6200U / 3.4GB RAM / NVMe SSD
- 无头运行，跑 Docker + n8n + Hermes Gateway + 其他服务

## 快速检查清单

```bash
# 1. 运行时长
uptime

# 2. 内存状态（available < 1GB 说明偏紧）
free -h

# 3. 磁盘剩余空间（建议 > 20%）
df -h /

# 4. Swap 使用率（长期 > 60% 说明内存不足）
swapon --show

# 5. 磁盘 SMART 健康（NVMe 也支持）
sudo nvme smart-log /dev/nvme0n1
# 或 smartctl（需安装）：sudo apt install smartmontools

# 6. 温度监控
sudo journalctl -b | grep -iE "thermal|critical" | tail -5

# 7. 查看睡眠/休眠是否启用
systemctl status sleep.target
cat /sys/power/mem_sleep

# 8. Docker 磁盘占用
docker system df
```

## 1. 禁用睡眠/休眠（最关键）

服务器不需要 S3 休眠。盖盖子或空闲超时应保持运行：

```bash
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
```

验证：`systemctl status sleep.target` 应显示 `masked`。

**为什么重要：** 笔记本盖盖子默认触发 S3 睡眠，n8n/Docker/Gateway 全部中断。

## 2. 降低 swappiness（减少卡顿）

```bash
# 查看当前值
cat /proc/sys/vm/swappiness

# 临时改（推荐内存紧张的机器设 10）
sudo sysctl vm.swappiness=10

# 永久保存
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
```

## 3. 电源模式设为 Performance

```bash
# 查看当前
powerprofilesctl list

# 设为 Performance（24/7 服务器不需要节能）
sudo powerprofilesctl set performance
```

## 4. 防火墙：开放局域网访问

UFW 默认 deny incoming，容器端口（如 n8n 5678）从局域网无法访问。

```bash
# 查看 UFW 状态
sudo ufw status verbose

# 开放局域网段访问某个端口
sudo ufw allow from 192.168.1.0/24 to any port 5678 proto tcp

# 查看已开放的规则
sudo ufw status | grep 5678
```

**注意：** Docker 的 `EXPOSE` 指令只是文档，实际由宿主机的 iptables/UFW 控制。UFW 必须显式 allow。

## 5. 清理磁盘（避免 90%+ 满导致 IO 阻塞）

```bash
# Docker 清理
docker system df
docker system prune -a   # 删除所有未使用的镜像/容器/网络（谨慎）

# 日志大小
journalctl --disk-usage
sudo journalctl --vacuum-time=7d   # 只保留 7 天内日志

# 大目录
sudo du -sh /var/log/* 2>/dev/null | sort -rh | head -10
```

## 6. 开启 / 检查 logrotate

```bash
systemctl status logrotate
# 基本默认配置已够用，检查 /etc/logrotate.conf 和 /etc/logrotate.d/
```

## 7. Docker 资源限制（可选，防止单一容器占满资源）

如果跑多个容器，限制内存和 CPU：

```bash
docker run -d --name n8n \
  --memory="500m" \
  --cpus="1.0" \
  -p 5678:5678 \
  -v n8n-data:/home/node/.n8n \
  n8nio/n8n
```

已有容器改不了，只能重建。

## 8. 监控建议

```bash
# 安装 btop 实时看资源
sudo apt install btop

# cron 定期报告磁盘/内存
# 0 */6 * * * df -h / | tail -1 >> ~/disk-usage.log
```

## 9. 这台机器的已知问题

- 内存只有 3.4GB，跑 n8n x2 + Docker + Gateway 略紧张，考虑只保留一个 n8n 实例
- 磁盘 88% 已满，清理后可降至 70%，更安全
- 跑了两个 n8n 容器（5678/5679），确认是否都需要

## 10. 断电保护（可选）

如果经常断电，考虑：
- UPS（不现实给笔记本）
- `tlp` 配置 `START_CHARGE_THRESH_BAT0=0`（充满电后停止充电，保护电池）
- `noatime` 挂载选项减少 SSD 写入（编辑 `/etc/fstab`）
