Πώς Εγκατέστησα το n8n σε ένα Ubuntu VPS: Ένας Πλήρης Οδηγός για την Αυτοφιλοξενία της Πλατφόρμας Αυτοματοποίησής σας
- #n8n
- #Ubuntu
- #DigitalOcean
- #server-management
Ως προγραμματιστής που πάντα αναζητά τρόπους για να απλοποιήσει τις ροές εργασίας και να αυτοματοποιήσει επαναλαμβανόμενες εργασίες, πρόσφατα αποφάσισα να φιλοξενήσω το n8n στον δικό μου VPS. Το n8n είναι ένα απίστευτο εργαλείο αυτοματισμού ροών εργασίας ανοιχτού κώδικα που ανταγωνίζεται υπηρεσίες όπως το Zapier και το Make, αλλά με το τεράστιο πλεονέκτημα του πλήρους ελέγχου των δεδομένων και χωρίς συνδρομές. Σε αυτόν τον ολοκληρωμένο οδηγό, θα σας καθοδηγήσω ακριβώς πώς ρύθμισα το n8n σε ένα υποτομέα της ιστοσελίδας πορτφόλιο μου, vks.gr, χρησιμοποιώντας έναν Ubuntu VPS από την DigitalOcean. Στο τέλος αυτού του σεμιναρίου, θα έχετε τη δική σας εγκατάσταση n8n να λειτουργεί με ασφάλεια με HTTPS, έτοιμη να αυτοματοποιήσει οτιδήποτε μπορείτε να φανταστείτε.
Γιατί Επέλεξα να Αυτο-φιλοξενώ το n8n
Πριν βουτήξω στη τεχνική ρύθμιση, ας μοιραστώ γιατί η αυτο-φιλοξενία του n8n ήταν μια καθοριστική αλλαγή για μένα:
- Πλήρης Ιδιωτικότητα Δεδομένων: Όλες οι ροές εργασίας και τα δεδομένα παραμένουν στον διακομιστή μου
- Χωρίς Μηνιαία Τέλη: Εφάπαξ κόστος VPS αντί για επαναλαμβανόμενες συνδρομές SaaS
- Απεριόριστες Ροές Εργασίας: Χωρίς περιορισμούς στην πολυπλοκότητα της αυτοματοποίησης ή στη συχνότητα εκτέλεσης
- Προσαρμοσμένες Ενοποιήσεις: Ελευθερία να προσθέσω οποιουσδήποτε προσαρμοσμένους κόμβους ή να τροποποιήσω τον πηγαίο κώδικα
Επέλεξα συγκεκριμένα το DigitalOcean για το VPS μου γιατί προσφέρουν αξιόπιστη απόδοση, εργαλεία φιλικά προς τους προγραμματιστές και διαφανείς τιμές. Οι σταγόνες τους (VPS instances) είναι εύκολες στην ρύθμιση, κλιμακώνονται χωρίς κόπο και έρχονται με έναν καθαρό, διαισθητικό πίνακα ελέγχου—τέλειος για να τρέχω το n8n και άλλες αυτο-φιλοξενούμενες εφαρμογές.
💡 Θέλεις να δοκιμάσεις το DigitalOcean μόνος σου; Χρησιμοποίησε τον παραπομπή μου για να ξεκινήσεις! Θα λάβεις **25, θα κερδίσω και εγώ $25—χωρίς επιπλέον κόστος για σένα. Δεν υπάρχει όριο στο πόση πίστωση μπορείς να δώσεις ή να κερδίσεις μέσω παραπομπών, οπότε μη διστάσεις να μοιραστείς την αγάπη!
Προαπαιτούμενα
Πριν ξεκινήσουμε, θα χρειαστείτε:
- Ένα VPS που τρέχει Ubuntu 22.04 ή νεότερη έκδοση (συνιστώ τουλάχιστον 2GB RAM)
- Ένα όνομα τομέα με πρόσβαση διαχείρισης DNS
- Βασική εξοικείωση με τη γραμμή εντολών του Linux
- Πρόσβαση SSH στον διακομιστή σας
- Περίπου 30 λεπτά από τον χρόνο σας
Βήμα 1: Αρχική Ρύθμιση Διακομιστή και Ασφάλεια
Αρχικά, ας ασφαλίσουμε το νέο μας VPS. Ξεκίνησα συνδεόμενος στον διακομιστή Ubuntu και δημιουργώντας έναν νέο χρήστη αντί να χρησιμοποιώ τον root:
ssh root@YOUR_SERVER_IP
adduser yourusername
usermod -aG sudo yourusername
Ρύθμιση Αυθεντικοποίησης με Κλειδί SSH
Η ασφάλεια είναι πρωταρχικής σημασίας, οπότε αμέσως ρύθμισα την αυθεντικοποίηση με κλειδί SSH. Στη τοπική σας μηχανή, δημιουργήστε ένα κλειδί SSH αν δεν έχετε ήδη:
ssh-keygen -t rsa -b 4096
cat ~/.ssh/id_rsa.pub
Αντιγράψτε το δημόσιο κλειδί και προσθέστε το στον διακομιστή σας:
mkdir ~/.ssh
nano ~/.ssh/authorized_keys
Επικολλήστε το δημόσιο κλειδί σας εδώ
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
### Ρύθμιση του UFW Firewall
Το Uncomplicated Firewall (UFW) του Ubuntu παρέχει βασική προστασία:
```bash
sudo apt update
sudo apt install ufw
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
Εγκατάσταση του Fail2ban για Προστασία από Brute Force
Αυτό το κρίσιμο εργαλείο ασφαλείας αποτρέπει αυτοματοποιημένες επιθέσεις:
sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Βήμα 2: Εγκατάσταση του Docker και του Docker Compose
Το n8n λειτουργεί άψογα στο Docker, παρέχοντας απομόνωση και εύκολη διαχείριση. Ορίστε πώς εγκατέστησα το Docker στο Ubuntu:
# Ενημέρωση ευρετηρίου πακέτων
sudo apt-get update
# Εγκαταστήστε τις προϋποθέσεις
sudo apt-get install ca-certificates curl
# Προσθέστε το επίσημο GPG κλειδί του Docker
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Προσθήκη αποθετηρίου Docker
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Εγκατάσταση του Docker Engine και του Docker Compose
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Προσθέστε τον χρήστη σας στην ομάδα docker (επιτρέπει την εκτέλεση του Docker χωρίς sudo)
sudo usermod -aG docker ${USER}
su - ${USER}
Επαληθεύστε την εγκατάσταση:
docker --version
docker compose version
Βήμα 3: Ρύθμιση του n8n με Docker Compose
Τώρα για το συναρπαστικό μέρος—την ανάπτυξη του n8n! Δημιούργησα έναν ειδικό φάκελο για τη ρύθμιση του n8n:
mkdir ~/n8n
cd ~/n8n
nano docker-compose.yml
Αυτή είναι η έτοιμη για παραγωγή ρύθμιση Docker Compose που χρησιμοποιώ:
services:
postgres:
image: postgres:16
restart: always
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: your_secure_db_password_here
POSTGRES_DB: n8n
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 10s
timeout: 5s
retries: 5
n8n:
image: n8nio/n8n:latest
restart: always
environment:
# Ρύθμιση Βάσης Δεδομένων
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: your_secure_db_password_here
# Βασική Αυθεντικοποίηση (αρχική ρύθμιση)
N8N_BASIC_AUTH_ACTIVE: true
N8N_BASIC_AUTH_USER: admin
N8N_BASIC_AUTH_PASSWORD: your_secure_admin_password
# Ρύθμιση n8n
N8N_HOST: localhost
N8N_PORT: 5678
N8N_PROTOCOL: http
WEBHOOK_URL: http://localhost:5678/
# Ρύθμιση Εκτέλεσης
EXECUTIONS_PROCESS: main
N8N_METRICS: true
volumes:
- n8n_data:/home/node/.n8n
ports:
- "5678:5678"
depends_on:
postgres:
condition: service_healthy
volumes:
db_data:
n8n_data:
Σημαντικές Σημειώσεις Ασφαλείας:
- Αντικαταστήστε το
your_secure_db_password_hereμε έναν ισχυρό κωδικό- Αντικαταστήστε το
your_secure_admin_passwordμε έναν άλλο ισχυρό κωδικό- Σκεφτείτε να χρησιμοποιήσετε μεταβλητές περιβάλλοντος ή μυστικά Docker για παραγωγή
Ξεκινήστε το n8n με:
docker compose up -d
Μπορείτε τώρα να αποκτήσετε πρόσβαση στο n8n στο http://YOUR_SERVER_IP:5678!
Βήμα 4: Ρύθμιση του Nginx ως Αντίστροφη Πύλη
Για να εξυπηρετήσω το n8n σε σωστό τομέα με HTTPS, ρύθμισα το Nginx ως αντίστροφη πύλη:
sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
Δημιουργήστε τη διαμόρφωση του ιστότοπου n8n:
sudo nano /etc/nginx/sites-available/n8n
Προσθέστε αυτή τη διαμόρφωση (αντικαταστήστε το n8n.yourdomain.com με το υποτομέα σας):
server {
listen 80;
server_name n8n.yourdomain.com www.n8n.yourdomain.com;
# Ασφαλιστικές κεφαλίδες
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
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;
# Υποστήριξη WebSocket (απαιτείται για το n8n)
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Ρυθμίσεις χρονικών ορίων για μακροχρόνιες ροές εργασίας
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
}
Ενεργοποιήστε τον ιστότοπο:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Βήμα 5: Ρύθμιση DNS
Για τη ρύθμισή μου στο n8n.vks.gr, πρόσθεσα αυτές τις εγγραφές DNS μέσω του καταχωρητή τομέα μου:
-
Εγγραφή A για το υποτομέα n8n: Όνομα:
n8nΤύπος:AΤιμή:YOUR_SERVER_IPTTL:60 -
Εγγραφή A για το υποτομέα www.n8n: Όνομα:
www.n8nΤύπος:AΤιμή:YOUR_SERVER_IPTTL:60
Η προπαγάνδα DNS συνήθως διαρκεί 5–30 λεπτά.
Βήμα 6: Ενεργοποίηση HTTPS με Let's Encrypt
Η ασφάλεια είναι μη διαπραγματεύσιμη για οποιαδήποτε διαδικτυακή εφαρμογή. Χρησιμοποίησα το Certbot για να αποκτήσω δωρεάν SSL πιστοποιητικά:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d n8n.yourdomain.com -d www.n8n.yourdomain.com
Ακολουθήστε τις οδηγίες για να:
- Εισάγετε τη διεύθυνση email σας
- Συμφωνήσετε με τους όρους υπηρεσίας
- Επιλέξετε αν θα ανακατευθύνετε το HTTP στο HTTPS (συνιστάται: ναι)
Μετά από αυτό, ενημερώστε την конфигурация Nginx για βέλτιστη απόδοση HTTPS:
sudo nano /etc/nginx/sites-available/n8n
Ακολουθεί η βελτιωμένη конфигурация HTTPS:
# Ανακατεύθυνση non-www σε www (HTTPS)
server {
listen 443 ssl http2;
server_name n8n.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/n8n.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
return 301 https://www.n8n.yourdomain.com$request_uri;
}
# Ανακατεύθυνση HTTP σε HTTPS
server {
listen 80;
server_name n8n.yourdomain.com www.n8n.yourdomain.com;
return 301 https://www.n8n.yourdomain.com$request_uri;
}
# Κύριο μπλοκ διακομιστή (μόνο www HTTPS)
server {
listen 443 ssl http2;
server_name www.n8n.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/n8n.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# Επικεφαλίδες ασφαλείας
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
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;
# Υποστήριξη WebSocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Επεκτεταμένα χρονικά όρια για μεγάλες ροές εργασίας
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
# Ρυθμίσεις buffer
proxy_buffering off;
proxy_request_buffering off;
}
}
Επαναφορτώστε το Nginx:
sudo nginx -t
sudo systemctl reload nginx
Βήμα 7: Ενημέρωση του Περιβάλλοντος n8n για Παραγωγή
Τώρα που έχει ρυθμιστεί το HTTPS, ενημερώστε το αρχείο Docker Compose του n8n για να αντικατοπτρίζει τη σωστή διεύθυνση URL του webhook:
cd ~/n8n
nano docker-compose.yml
Ενημερώστε αυτές τις μεταβλητές περιβάλλοντος στην υπηρεσία n8n:
N8N_PROTOCOL: https
WEBHOOK_URL: https://www.n8n.yourdomain.com/
N8N_HOST: www.n8n.yourdomain.com
Επανεκκινήστε το n8n:
docker compose down
docker compose up -d
Βήμα 8: Πρώτη Σύνδεση και Ρύθμιση
Πλοηγηθείτε στο https://www.n8n.yourdomain.com και θα δείτε την οθόνη σύνδεσης του n8n. Χρησιμοποιήστε τα διαπιστευτήρια που ορίσατε στο αρχείο Docker Compose.
Κατά την πρώτη σύνδεση, το n8n θα σας καθοδηγήσει μέσω:
- Δημιουργίας του λογαριασμού σας
- Ρύθμισης του χώρου εργασίας σας
- Σύνδεσης με εξωτερικές υπηρεσίες
Συμβουλές Βελτιστοποίησης Απόδοσης
Μετά από αρκετούς μήνες λειτουργίας του n8n, εδώ είναι οι συστάσεις μου για βελτιστοποίηση:
1. Συντήρηση Βάσης Δεδομένων
Δημιουργήστε ένα σενάριο συντήρησης για το PostgreSQL:
nano ~/n8n/db-maintenance.sh
Προσθέστε τα εξής:
#!/bin/bash
docker exec n8n-postgres-1 psql -U n8n -d n8n -c "VACUUM ANALYZE;"
docker exec n8n-postgres-1 psql -U n8n -d n8n -c "REINDEX DATABASE n8n;"
Κάντε το εκτελέσιμο και προσθέστε το στο crontab:
chmod +x ~/n8n/db-maintenance.sh
crontab -e
Προσθήκη: 0 3 * * 0 /home/yourusername/n8n/db-maintenance.sh
### 2. Περιστροφή Καταγραφών
Ρυθμίστε την περιστροφή καταγραφών του Docker στο `/etc/docker/daemon.json`:
```json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
3. Παρακολούθηση
Ρυθμίστε βασική παρακολούθηση με το Docker stats:
docker stats --no-stream
Σκεφτείτε να υλοποιήσετε το Prometheus + Grafana για προηγμένη παρακολούθηση.
Αντιμετώπιση Συνηθισμένων Προβλημάτων
Αποτυχία Σύνδεσης WebSocket
Αν δείτε σφάλματα WebSocket, βεβαιωθείτε ότι η ρύθμιση Nginx περιλαμβάνει:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
Ροές Εργασίας που Δεν Εκτελούνται
Ελέγξτε τα logs του Docker:
docker compose logs -f n8n
Συχνές λύσεις:
- Αυξήστε τα όρια μνήμης αν χρειάζεται
- Επαληθεύστε ότι το URL του webhook είναι σωστά ρυθμισμένο
- Ελέγξτε τους κανόνες του τείχους προστασίας
Ανανέωση Πιστοποιητικού SSL
Το Certbot θα πρέπει να ανανεώνεται αυτόματα, αλλά μπορείτε να δοκιμάσετε την ανανέωση με:
sudo certbot renew --dry-run
Καλύτερες Πρακτικές Ασφαλείας
- Τακτικές Ενημερώσεις: Διατηρήστε το n8n και όλες τις εξαρτήσεις ενημερωμένες
docker compose pull docker compose up -d - Στρατηγική Αντίγραφων Ασφαλείας: Εφαρμόστε τακτικά αντίγραφα ασφαλείας
docker compose down tar -czf n8n-backup-$(date +%Y%m%d).tar.gz ~/n8n docker compose up -d - Διαχείριση Κλειδιών API: Χρησιμοποιήστε τη διαχείριση διαπιστευτηρίων του n8n για τα κλειδιά API
- Απομόνωση Δικτύου: Σκεφτείτε να χρησιμοποιήσετε δίκτυα Docker για την απομόνωση υπηρεσιών
- Καταγραφές Ελέγχου: Ενεργοποιήστε τις καταγραφές ελέγχου του n8n για συμμόρφωση
Συμπέρασμα
Η εγκατάσταση του n8n στον δικό μου VPS ήταν μία από τις καλύτερες αποφάσεις υποδομής που έχω πάρει. Όχι μόνο έχω πλήρη έλεγχο πάνω στις αυτοματοποιημένες ροές εργασίας μου, αλλά εξοικονομώ επίσης σημαντικά σε σύγκριση με τις εναλλακτικές SaaS. Η διαδικασία εγκατάστασης, αν και λεπτομερής, είναι αρκετά απλή για οποιονδήποτε προγραμματιστή που είναι άνετος με τη βασική διαχείριση Linux.
Η ομορφιά της αυτοφιλοξενίας είναι ότι μπορώ να δημιουργήσω απεριόριστες ροές εργασίας χωρίς να ανησυχώ για όρια εκτέλεσης ή μηνιαία τέλη. Αν σκέφτεστε την αυτοματοποίηση ροών εργασίας για τα έργα σας, σας προτείνω ανεπιφύλακτα να δοκιμάσετε το αυτοφιλοξενούμενο n8n.
🚀 Έτοιμοι να ξεκινήσετε τη δική σας instance n8n; Ξεκινήστε στο DigitalOcean χρησιμοποιώντας τον σύνδεσμο παραπομπής! Θα λάβετε **25 μόλις ξοδέψετε $25—βοηθώντας με να κρατήσω αυτόν τον οδηγό δωρεάν και ενημερωμένο. Win-win!
Επόμενα Βήματα
Τώρα που έχετε το n8n σε λειτουργία, εξερευνήστε:
- Σύνδεση των αγαπημένων σας εφαρμογών και υπηρεσιών
- Δημιουργία του πρώτου σας αυτοματοποιημένου ρολού εργασίας
- Ρύθμιση προσαρμοσμένων κόμβων για συγκεκριμένες ανάγκες
- Υλοποίηση προηγμένων χαρακτηριστικών όπως ροές εργασίας σφαλμάτων
- Εξερεύνηση της κοινότητας n8n για έμπνευση ροών εργασίας
Έχετε ερωτήσεις ή χρειάζεστε βοήθεια με τη ρύθμιση του n8n σας; Μη διστάσετε να επικοινωνήσετε μέσω του πορτοφολιού μου στο vks.gr. Καλή αυτοματοποίηση!
Αυτός ο οδηγός βασίζεται στην προσωπική μου εμπειρία στη ρύθμιση του n8n για παραγωγική χρήση. Οι συγκεκριμένες απαιτήσεις σας μπορεί να διαφέρουν, οπότε πάντα να λαμβάνετε υπόψη τις ανάγκες σας σε ασφάλεια και απόδοση κατά την ανάπτυξη οποιασδήποτε αυτοφιλοξενούμενης λύσης.