内容导航

2026/5/14

Debian 本地服务、Docker 与 Nginx 部署记录

记录本地 Debian 服务器上的 Docker、n8n、MyBlog、小程序服务、本地 Nginx 聚合入口和 sing-box 代理配置。

服务器与部署 DebianDockerNginxn8nsing-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 后,这里会显示评论区。