2026/5/14
Debian 本地服务、Docker 与 Nginx 部署记录
记录本地 Debian 服务器上的 Docker、n8n、MyBlog、小程序服务、本地 Nginx 聚合入口和 sing-box 代理配置。
本文目录
这篇只记录本地 Debian 服务器。云端 FRP/Nginx 入口、RustDesk、ntfy 日报和 MyBlog 写作流程分别放在对应文章里。
服务器角色
本地 Debian 负责运行实际应用:
Debian
-> Docker Compose
-> n8n + PostgreSQL + Redis + Worker
-> MyBlog 静态站点
-> 小程序服务
-> 本地 Nginx 聚合入口
-> sing-box 代理
公网请求由云服务器转入,本地服务尽量只监听 127.0.0.1。
Docker 权限
如果普通用户执行 Docker 报权限问题:
sudo usermod -aG docker <user>
newgrp docker
确认:
docker --version
docker compose version
docker compose ps
n8n 队列模式
n8n 采用四组件结构:
n8n-main
n8n-worker-1
n8n-postgres
n8n-redis
职责:
n8n-main:Web UI、Webhook、工作流编排。PostgreSQL:保存工作流、凭据和执行数据。Redis:队列。Worker:执行任务。
本地监听:
127.0.0.1:5678
正式域名 HTTPS 前可以临时关闭 secure cookie:
N8N_SECURE_COOKIE=false
正式环境应改为:
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.example.com/
N8N_SECURE_COOKIE=true
N8N_PROXY_HOPS=2
n8n 代理
n8n 需要访问 GitHub、YouTube、arXiv、AI API 等外网服务。宿主机 sing-box 监听代理端口,容器通过 Docker 网关访问。
查网关:
docker network inspect n8n_n8n_net | grep -A 8 Gateway
示例:
Gateway: 172.18.0.1
n8n 环境变量:
HTTP_PROXY=http://172.18.0.1:7897
HTTPS_PROXY=http://172.18.0.1:7897
NO_PROXY=localhost,127.0.0.1,postgres,redis,n8n,n8n-worker,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,*.local
UFW:
sudo ufw allow from 172.16.0.0/12 to any port 7897 proto tcp
sudo ufw reload
测试:
docker exec -it n8n-main sh
wget -S -O- --timeout=20 https://www.youtube.com
MyBlog 本地服务
MyBlog 在 Debian 上作为静态站点运行:
127.0.0.1:18080
更新:
cd /opt/apps/myblog
git pull
docker compose up -d --build
curl -I http://127.0.0.1:18080
它不直接暴露公网,由云服务器 FRP/Nginx 转发。
小程序服务
小程序后端或 FastAPI 服务建议监听:
127.0.0.1:8000
本地测试:
curl -I http://127.0.0.1:8000/
云端通过 FRP 访问,本地无需在 UFW 中向公网开放 8000。
本地 Nginx 聚合入口
当本地服务数量变多,可以加本地 Nginx:
Debian Nginx :80
-> 127.0.0.1:18080 MyBlog
-> 127.0.0.1:5678 n8n
-> 127.0.0.1:8000 小程序服务
云服务器仍保留第一层 Nginx,负责 HTTPS、备案 fallback 和公网安全边界。本地 Nginx 只做内部服务分发。
本地防火墙
基础规则可以很少:
22/tcp
7897/tcp from Docker 网段
如果所有服务都监听 127.0.0.1,不需要开放 n8n、MyBlog、小程序端口。
常用维护命令
n8n:
cd /opt/n8n
docker compose ps
docker compose logs --tail 80 n8n
docker compose logs --tail 80 n8n-worker
MyBlog:
cd /opt/apps/myblog
docker compose ps
curl -I http://127.0.0.1:18080
sing-box:
sudo systemctl status sing-box --no-pager
sudo sing-box check -C /etc/sing-box
ss -lntp | grep 7897
端口:
ss -lntup
评论
Giscus 评论尚未配置。填写 GitHub Discussions 的仓库和分类 ID 后,这里会显示评论区。