上一天的「VM / Bare-Metal 安裝」跟大家分享如何在自己的機器或 VM 上部署。今天就把最常見、最實用的排查與強化整理成一篇排查的清單吧!系統以 Ubuntu/Debian 為例,不使用 Docker。
今天會分享(再次感謝強者我朋友):
n8n-doctor.sh
sudo systemctl status n8n --no-pager -l
journalctl -u n8n -n 80 --no-pager
ss -lntp | grep 5678 || sudo lsof -i :5678
curl -I http://127.0.0.1:5678
看見 HTTP/1.1 200
或 302
通常代表後端活著。
sudo ufw status
sudo ufw allow 5678/tcp
Environment=N8N_HOST=your.domain.com
Environment=N8N_PORT=5678
Environment=N8N_PROTOCOL=https
# 若走子路徑(例:/n8n)
Environment=N8N_PATH=/n8n
Environment=WEBHOOK_URL=https://your.domain.com/n8n/
套用:sudo systemctl daemon-reload && sudo systemctl restart n8n
sudo -u postgres createuser -P n8n
sudo -u postgres createdb -O n8n n8n
psql "postgresql://n8n:<密碼>@127.0.0.1:5432/n8n" -c 'select now();'
systemd(或 .env)對應:
Environment=DB_TYPE=postgresdb
Environment=DB_POSTGRESDB_HOST=127.0.0.1
Environment=DB_POSTGRESDB_DATABASE=n8n
Environment=DB_POSTGRESDB_USER=n8n
Environment=DB_POSTGRESDB_PASSWORD=<密碼>
Environment=NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/company-root.pem
放入 PEM 後:
sudo update-ca-certificates
sudo systemctl restart n8n
Environment=EXECUTIONS_MODE=queue
Environment=QUEUE_BULL_REDIS_HOST=127.0.0.1
Environment=QUEUE_BULL_REDIS_PORT=6379
# 有密碼/TLS再加:
# Environment=QUEUE_BULL_REDIS_PASSWORD=******
# Environment=QUEUE_BULL_REDIS_TLS=true
Webhook 多半是 外部 URL 不一致:請務必正確設定 WEBHOOK_URL
(含協定、網域、子路徑)。
openssl rand -base64 32
放入:
Environment=N8N_ENCRYPTION_KEY=<上面那串>
sudo useradd -r -s /usr/sbin/nologin -m -d /var/lib/n8n n8n || true
sudo mkdir -p /var/log/n8n /etc/n8n
sudo chown -R n8n:n8n /var/lib/n8n /var/log/n8n
/etc/n8n/.env
(集中管理環境)sudo tee /etc/n8n/.env >/dev/null <<'EOF'
N8N_ENCRYPTION_KEY=請換成你自己的超長金鑰
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=127.0.0.1
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=n8npass
# 可選:之後要開 Queue 再解註
# EXECUTIONS_MODE=queue
# QUEUE_BULL_REDIS_HOST=127.0.0.1
# QUEUE_BULL_REDIS_PORT=6379
# WEBHOOK_URL=https://your.domain.com/
# N8N_HOST=your.domain.com
# N8N_PROTOCOL=https
EOF
sudo chmod 640 /etc/n8n/.env
sudo chown n8n:root /etc/n8n/.env
/etc/systemd/system/n8n.service ExecStart
路徑以 which n8n
為準(常見:/usr/bin/n8n
)[Unit]
Description=n8n Automation
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=n8n
Group=n8n
EnvironmentFile=-/etc/n8n/.env
WorkingDirectory=/var/lib/n8n
ExecStart=/usr/bin/n8n
Restart=always
RestartSec=5
# 基本安全強化
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/n8n /var/log/n8n /etc/n8n
[Install]
WantedBy=multi-user.target
啟用:
sudo systemctl daemon-reload
sudo systemctl enable --now n8n
sudo apt install -y nginx certbot python3-certbot-nginx
/etc/nginx/sites-available/n8n:
server {
listen 80;
server_name your.domain.com;
location / {
proxy_pass http://127.0.0.1:5678/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
啟用 + 憑證:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/n8n
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d your.domain.com
若是走 sun path /n8n,請同步在環境變數設定 N8N_PATH=/n8n
與 WEBHOOK_URL=https://your.domain.com/n8n/
(結尾要有斜線)。
n8n-doctor.sh
)#!/usr/bin/env bash
set -euo pipefail
echo "== Service ==" && systemctl is-active n8n && systemctl is-enabled n8n
echo "== Port 5678 ==" && (ss -lntp | grep 5678 || echo "not listening")
echo "== Curl local ==" && (curl -sS -I http://127.0.0.1:5678 | head -n1 || true)
echo "== Logs (tail) ==" && journalctl -u n8n -n 60 --no-pager
echo "== Env check ==" && (grep -E 'N8N_ENCRYPTION_KEY|DB_TYPE|WEBHOOK_URL|N8N_HOST|N8N_PROTOCOL|EXECUTIONS_MODE' /etc/n8n/.env || true)
使用:
chmod +x n8n-doctor.sh
./n8n-doctor.sh
# 安裝並啟動 Redis
sudo apt install -y redis
sudo systemctl enable --now redis-server
redis-cli PING # 應回 PONG
# 在 /etc/n8n/.env 加入以下設定
EXECUTIONS_MODE=queue
QUEUE_BULL_REDIS_HOST=127.0.0.1
QUEUE_BULL_REDIS_PORT=6379
# 套用
sudo systemctl restart n8n
# 驗證(看到 bull:* 代表 n8n 的 queue 成功套用)
redis-cli --scan --pattern 'bull:*' | head