Skip to content
GitHub

n8n ကို VPS တွင် Self-host လုပ်ခြင်း

ဘာကြောင့် Self-Host လုပ်သင့်သလဲ?

Section titled “ဘာကြောင့် Self-Host လုပ်သင့်သလဲ?”
n8n CloudSelf-Hosted
Cost$20+/monthVPS: ~$5-10/month
Workflow LimitPlan ပေါ်မူတည်ပြီးUnlimited
Data PrivacyCloud တွင်ကိုယ်ပိုင် Server
CustomizationLimitedFull Control
MaintenanceNone (Managed)ကိုယ်တိုင် Update
Minimum Specs:
CPU: 1 vCPU
RAM: 1 GB (2 GB recommended)
Disk: 20 GB SSD
OS: Ubuntu 22.04 LTS
Recommended Providers:
DigitalOcean, Vultr, Linode, Hetzner, AWS EC2

Docker Compose ဖြင့် Deploy လုပ်နည်း

Section titled “Docker Compose ဖြင့် Deploy လုပ်နည်း”
Terminal window
# Ubuntu 22.04 တွင် Docker Install
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
# Docker Compose Install
sudo apt install docker-compose-plugin -y

Step 2: n8n Directory ဖန်တီးပါ

Section titled “Step 2: n8n Directory ဖန်တီးပါ”
Terminal window
mkdir ~/n8n && cd ~/n8n
mkdir -p data postgres-data

Step 3: docker-compose.yml ဖန်တီးပါ

Section titled “Step 3: docker-compose.yml ဖန်တီးပါ”
docker-compose.yml
version: '3.8'
services:
postgres:
image: postgres:15-alpine
restart: always
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: n8n
volumes:
- postgres-data:/var/lib/postgresql/data
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=${DOMAIN}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://${DOMAIN}/
- N8N_ENCRYPTION_KEY=${ENCRYPTION_KEY}
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=336 # 14 days
volumes:
- ./data:/home/node/.n8n
depends_on:
- postgres
volumes:
postgres-data:

Step 4: Environment Variables ဖန်တီးပါ

Section titled “Step 4: Environment Variables ဖန်တီးပါ”
Terminal window
# .env file
DOMAIN=n8n.yourdomain.com
POSTGRES_PASSWORD=super_secure_password_here
ENCRYPTION_KEY=random_32_character_string_here
# Generate Encryption Key:
openssl rand -hex 32
Terminal window
docker compose up -d
# Log ကြည့်ပါ
docker compose logs -f n8n

Nginx Reverse Proxy + SSL ချိတ်ဆက်ပါ

Section titled “Nginx Reverse Proxy + SSL ချိတ်ဆက်ပါ”

Production မှာ n8n ကို HTTPS ဖြင့် Access လုပ်ဖို့ Nginx နဲ့ Let’s Encrypt ကိုသုံးသည်:

Internet HTTPS :443
Nginx SSL Termination
n8n localhost:5678

Nginx ကို Reverse Proxy ဖြင့် HTTPS ချိတ်ဆက်ပြီး n8n ကို ပြောင်းပေးသည်

Terminal window
# Nginx Install
sudo apt install nginx certbot python3-certbot-nginx -y
# Nginx Config ဖန်တီးပါ
sudo nano /etc/nginx/sites-available/n8n
/etc/nginx/sites-available/n8n
server {
server_name n8n.yourdomain.com;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
# WebSocket support (n8n needs it)
proxy_read_timeout 86400;
}
}
Terminal window
# Enable Config
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t # Test config
sudo systemctl reload nginx
# SSL Certificate ရယူပါ (Free)
sudo certbot --nginx -d n8n.yourdomain.com

n8n Update ပြုလုပ်နည်း

Section titled “n8n Update ပြုလုပ်နည်း”
Terminal window
# Latest Version ဆွဲပါ
docker compose pull n8n
# Restart (Downtime < 30 seconds)
docker compose up -d n8n
# Version စစ်ကြည့်ပါ
docker compose exec n8n n8n --version
n8n Workflow Export JSON files
PostgreSQL Dump pg_dump
Upload to S3 / GDrive Off-site backup

Daily Backup — Workflows + Database ကို Off-site သိမ်းဆည်းသည်

# Automated Backup Script (Daily Cron on VPS)
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/root/backups"
mkdir -p $BACKUP_DIR
# 1. Workflow JSON Backup
docker compose exec n8n n8n export:workflow \
--all \
--output=$BACKUP_DIR/workflows_$DATE.json
# 2. Database Backup
docker compose exec postgres pg_dump \
-U n8n n8n > $BACKUP_DIR/db_$DATE.sql
# 3. Compress
tar -czf $BACKUP_DIR/n8n_backup_$DATE.tar.gz \
$BACKUP_DIR/workflows_$DATE.json \
$BACKUP_DIR/db_$DATE.sql
# 4. Cleanup old backups (>30 days)
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
echo "Backup complete: n8n_backup_$DATE.tar.gz"
Terminal window
# VPS တွင် Daily 2am Cron ထည့်ပါ
crontab -e
0 2 * * * /root/backup-n8n.sh >> /var/log/n8n-backup.log 2>&1

နောက်သင်ခန်းစာမှာ Capstone Project — ဒီ Course တွင် လေ့လာခဲ့သမျှကို ပေါင်းစပ်ပြီး Real E-commerce Automation System တည်ဆောက်မည်!