Πώς Εγκατέστησα το n8n σε ένα Ubuntu VPS: Ένας Πλήρης Οδηγός για την Αυτοφιλοξενία της Πλατφόρμας Αυτοματοποίησής σας

Προγραμματισμός30 Σεπτεμβρίου 2025
  • #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 μόνος σου; Χρησιμοποίησε τον παραπομπή μου για να ξεκινήσεις! Θα λάβεις **200σεδωρεαˊνπιˊστωσηγια60ημεˊρες,καιμοˊλιςξοδεˊψεις200 σε δωρεάν πίστωση για 60 ημέρες**, και μόλις ξοδέψεις 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_IP TTL: 60

  • Εγγραφή A για το υποτομέα www.n8n: Όνομα: www.n8n Τύπος: A Τιμή: YOUR_SERVER_IP TTL: 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 χρησιμοποιώντας τον σύνδεσμο παραπομπής! Θα λάβετε **200σεδωρεαˊνπιˊστωση,καιθακερδιˊσω200 σε δωρεάν πίστωση**, και θα κερδίσω 25 μόλις ξοδέψετε $25—βοηθώντας με να κρατήσω αυτόν τον οδηγό δωρεάν και ενημερωμένο. Win-win!

Επόμενα Βήματα

Τώρα που έχετε το n8n σε λειτουργία, εξερευνήστε:

  • Σύνδεση των αγαπημένων σας εφαρμογών και υπηρεσιών
  • Δημιουργία του πρώτου σας αυτοματοποιημένου ρολού εργασίας
  • Ρύθμιση προσαρμοσμένων κόμβων για συγκεκριμένες ανάγκες
  • Υλοποίηση προηγμένων χαρακτηριστικών όπως ροές εργασίας σφαλμάτων
  • Εξερεύνηση της κοινότητας n8n για έμπνευση ροών εργασίας

Έχετε ερωτήσεις ή χρειάζεστε βοήθεια με τη ρύθμιση του n8n σας; Μη διστάσετε να επικοινωνήσετε μέσω του πορτοφολιού μου στο vks.gr. Καλή αυτοματοποίηση!

Αυτός ο οδηγός βασίζεται στην προσωπική μου εμπειρία στη ρύθμιση του n8n για παραγωγική χρήση. Οι συγκεκριμένες απαιτήσεις σας μπορεί να διαφέρουν, οπότε πάντα να λαμβάνετε υπόψη τις ανάγκες σας σε ασφάλεια και απόδοση κατά την ανάπτυξη οποιασδήποτε αυτοφιλοξενούμενης λύσης.

Do you like what you see?

It's crafted with Next.js, TailwindCSS, Framer Motion, and a mix of dangerous magic and chemical reactions.

Download