• Τεχνολογία

Πώς να φιλοξενήσετε μόνοι σας το n8n σε ένα VPS με Linux (βήμα προς βήμα)

  • Felix Rose-Collins
  • ••
  • 15 min read

Εισαγωγή

Το n8n είναι ένα από τα πιο ισχυρά εργαλεία αυτοματοποίησης ροών εργασίας με ανοιχτό κώδικα που διατίθενται σήμερα. Σε αντίθεση με εναλλακτικές λύσεις SaaS όπως το Zapier ή το Make, το n8n σας παρέχει πλήρη έλεγχο των δεδομένων και των αυτοματισμών σας — αλλά μόνο όταν το φιλοξενείτε εσείς οι ίδιοι. Ένα VPS Linux αποτελεί το ιδανικό περιβάλλον για αυτό: πάντα σε λειτουργία, οικονομικό και υπό τον πλήρη έλεγχό σας.

Αυτός ο οδηγός σας καθοδηγεί σε όλη τη διαδικασία εγκατάστασης μιας έτοιμης για παραγωγή, αυτο-φιλοξενούμενης παρουσίας του n8n σε ένα VPS Linux. Θα ξεκινήσετε από έναν κενό διακομιστή και θα καταλήξετε σε μια πλήρως ασφαλή, με δυνατότητα SSL, εγκατάσταση του n8n με Docker, Nginx, PostgreSQL, αυτοματοποιημένα αντίγραφα ασφαλείας και μια ενισχυμένη διαμόρφωση ασφαλείας.

Βασικά σημεία

  • Το n8n σε VPS σας προσφέρει απεριόριστες ροές εργασίας, χωρίς όρια χρήσης και πλήρη κυριότητα των δεδομένων
  • Το Docker είναι η συνιστώμενη μέθοδος εγκατάστασης για ευκολότερες ενημερώσεις και απομόνωση
  • Το PostgreSQL είναι η συνιστώμενη βάση δεδομένων για φόρτο εργασίας παραγωγής (όχι το SQLite)
  • Απαιτείται ένας αντίστροφος διακομιστής μεσολάβησης (Nginx) με πιστοποιητικό SSL Let’s Encrypt για χρήση σε περιβάλλον παραγωγής
  • Το VPS σας θα πρέπει να διαθέτει τουλάχιστον 1 vCPU και 2 GB RAM για μια ομαλή εμπειρία χρήσης του n8n με το PostgreSQL
  • Τα τακτικά αυτοματοποιημένα αντίγραφα ασφαλείας προστατεύουν τα δεδομένα των ροών εργασίας και τα διαπιστευτήριά σας

Τι είναι το n8n;

Το n8n (προφέρεται «n-eight-n») είναι μια πλατφόρμα αυτοματοποίησης ροών εργασίας με ανοιχτό κώδικα, η οποία σας επιτρέπει να συνδέετε εφαρμογές, API και υπηρεσίες χρησιμοποιώντας έναν οπτικό επεξεργαστή βασισμένο σε κόμβους. Υποστηρίζει πάνω από 400 ενσωματώσεις από την αρχή και σας επιτρέπει να εκτελείτε προσαρμοσμένο κώδικα JavaScript ή Python μέσα στις ροές εργασίας.

Η βασική διαφορά μεταξύ του n8n και των ανταγωνιστών του συνοψίζεται σε τρία στοιχεία: ιδιοκτησία, κόστος και ευελιξία.

**Ιδιοκτησία: **Όταν φιλοξενείτε το n8n στον δικό σας διακομιστή, τα δεδομένα ροών εργασίας, τα διαπιστευτήριά σας και τα αρχεία καταγραφής εκτέλεσης δεν εγκαταλείπουν ποτέ τον διακομιστή σας. Για ομάδες που χειρίζονται ευαίσθητα δεδομένα πελατών, οικονομικά αρχεία ή ιδιόκτητη επιχειρηματική λογική, αυτό έχει τεράστια σημασία. Οι πλατφόρμες cloud αποθηκεύουν τη λογική αυτοματοποίησής σας στην υποδομή τους, υπό την επιφύλαξη των πολιτικών διατήρησης δεδομένων και του επιπέδου ασφάλειάς τους.

**Κόστος: **Το πακέτο cloud του n8n χρεώνει ανά εκτέλεση ροής εργασίας, κάτι που αυξάνει γρήγορα το κόστος σε περιπτώσεις αυτοματισμών μεγάλου όγκου. Μια μεσαίου μεγέθους ομάδα που εκτελεί χιλιάδες εκτελέσεις την ημέρα μπορεί να ξοδέψει εκατοντάδες δολάρια κάθε μήνα. Στο δικό σας VPS, αφού πληρώσετε για τον διακομιστή, οι εκτελέσεις είναι απεριόριστες χωρίς επιπλέον κόστος.

**Ευελιξία: **Το αυτο-φιλοξενούμενο n8n σας επιτρέπει να εγκαταστήσετε κόμβους της κοινότητας, να εκτελέσετε αυθαίρετο κώδικα μέσα στις ροές εργασίας, να συνδεθείτε με εσωτερικές υπηρεσίες που δεν είναι προσβάσιμες από το δημόσιο διαδίκτυο και να διαμορφώσετε κάθε πτυχή της ανάπτυξης σύμφωνα με τις προτιμήσεις σας. Τα πακέτα cloud περιορίζουν πολλές από αυτές τις δυνατότητες.

Προαπαιτούμενα

Πριν ξεκινήσετε, βεβαιωθείτε ότι διαθέτετε:

  • Ένα VPS Linux που εκτελεί Ubuntu 22.04 ή 24.04 (συνιστάται). Βεβαιωθείτε ότι ο πάροχός σας προσφέρει Ubuntu στο πακέτο που επιλέγετε, καθώς ορισμένα πακέτα εισόδου προσφέρουν μόνο άλλες διανομές
  • Ένας χρήστης χωρίς δικαιώματα root με δικαιώματα sudo
  • Ένα όνομα τομέα που να παραπέμπει στη διεύθυνση IP του VPS σας (π.χ., n8n.yourdomain.com)
  • Πρόσβαση SSH στον διακομιστή σας
  • Βασική εξοικείωση με τη γραμμή εντολών του Linux

Επιλογή του σωστού VPS

Ο διακομιστής που θα επιλέξετε έχει άμεση επίδραση στην απόδοση του n8n. Χρειάζεστε τουλάχιστον 1 vCPU, 2 GB RAM και 20 GB αποθηκευτικό χώρο SSD. Η επιπλέον μνήμη RAM σε σύγκριση με μια ελάχιστη εγκατάσταση βασισμένη στο SQLite είναι απαραίτητη, επειδή το PostgreSQL, το Nginx και το n8n εκτελούνται ταυτόχρονα.

Γνωρίστε το Ranktracker

Η All-in-One πλατφόρμα για αποτελεσματικό SEO

Πίσω από κάθε επιτυχημένη επιχείρηση βρίσκεται μια ισχυρή εκστρατεία SEO. Αλλά με αμέτρητα εργαλεία και τεχνικές βελτιστοποίησης εκεί έξω για να διαλέξετε, μπορεί να είναι δύσκολο να ξέρετε από πού να ξεκινήσετε. Λοιπόν, μη φοβάστε άλλο, γιατί έχω ακριβώς αυτό που θα σας βοηθήσει. Παρουσιάζοντας την πλατφόρμα Ranktracker all-in-one για αποτελεσματικό SEO

Έχουμε επιτέλους ανοίξει την εγγραφή στο Ranktracker εντελώς δωρεάν!

Δημιουργήστε έναν δωρεάν λογαριασμό

Ή Συνδεθείτε χρησιμοποιώντας τα διαπιστευτήριά σας

Για ομάδες με πολλούς χρήστες, πολύπλοκες ροές εργασίας πολλών βημάτων ή υψηλή απόδοση webhook, αναβαθμίστε σε 2 vCPU και 4 GB RAM. Ο αποθηκευτικός χώρος πρέπει να είναι τουλάχιστον 40 GB αν σκοπεύετε να διατηρείτε μακρά αρχεία καταγραφής εκτέλεσης.

Η PetroSky προσφέρει πακέτα VPS με NVMe στο Παρίσι και το Μόντρεαλ, με το n8n να διατίθεται ως εφαρμογή με ένα κλικ κατά την ολοκλήρωση της παραγγελίας: ένα σενάριο εγκατάστασης ανοιχτού κώδικα αναπτύσσει το n8n με το Docker Compose και ρυθμίζει αυτόματα το HTTPS μέσω των Caddy και Let’s Encrypt. Ο παρών οδηγός καλύπτει τη χειροκίνητη διαδικασία, η οποία λειτουργεί με οποιονδήποτε πάροχο.

Κατά την επιλογή ενός παρόχου VPS, λάβετε επίσης υπόψη τη γεωγραφική τοποθεσία. Φιλοξενήστε την παρουσία σας στο n8n στην περιοχή που βρίσκεται πλησιέστερα στις υπηρεσίες με τις οποίες θα συνδέεται πιο συχνά — αυτό μειώνει την καθυστέρηση του API κατά την εκτέλεση των ροών εργασίας σας.

Βήμα 1: Ενημερώστε τον διακομιστή σας

Συνδεθείτε μέσω SSH στο VPS σας και εκτελέστε μια πλήρη ενημέρωση του συστήματος πριν εγκαταστήσετε οτιδήποτε:

    sudo apt update && sudo apt upgrade -y

Αυτό διασφαλίζει ότι διαθέτετε τις πιο πρόσφατες ενημερώσεις ασφαλείας και ότι όλες οι βιβλιοθήκες του συστήματος είναι ενημερωμένες πριν προσθέσετε το Docker και άλλο λογισμικό.

Επανεκκινήστε τον υπολογιστή σας εάν εφαρμόστηκε ενημέρωση του πυρήνα:

    sudo reboot

Αφού συνδεθείτε ξανά μέσω SSH, δημιουργήστε έναν αποκλειστικό χρήστη συστήματος για την εκτέλεση του n8n. Η εκτέλεση υπηρεσιών ως root αποτελεί κίνδυνο για την ασφάλεια:

    sudo adduser n8nuser
    sudo usermod -aG sudo n8nuser
    su - n8nuser

Βήμα 2: Εγκατάσταση του Docker και του Docker Compose

Η επίσημη συνιστώμενη μέθοδος εγκατάστασης του n8n είναι το Docker. Το Docker απομονώνει το n8n και τις εξαρτήσεις του από το υπόλοιπο σύστημά σας, καθιστώντας τις ενημερώσεις και τις επαναφορές απλές.

Εγκαταστήστε το Docker χρησιμοποιώντας το επίσημο σενάριο ευκολίας:

    curl -fsSL https://get.docker.com | sudo sh

Η τεκμηρίωση του Docker επισημαίνει ότι το σενάριο ευκολίας δεν συνιστάται για περιβάλλοντα παραγωγής, επειδή εγκαθιστά την πιο πρόσφατη έκδοση χωρίς να σας επιτρέπει να επιλέξετε μια συγκεκριμένη έκδοση. Αν θέλετε να καθορίσετε συγκεκριμένες εκδόσεις του Docker, χρησιμοποιήστε αντ' αυτού τη μέθοδο του αποθετηρίου apt από τον οδηγό εγκατάστασης του Docker για Ubuntu (docs.docker.com/engine/install/ubuntu/).

Προσθέστε τον χρήστη σας στην ομάδα Docker, ώστε να μπορείτε να εκτελείτε εντολές του Docker χωρίς το sudo:

    sudo usermod -aG docker $USER
    newgrp docker

Επαληθεύστε ότι το Docker λειτουργεί σωστά:

    docker --version
    docker compose version

Και οι δύο εντολές θα πρέπει να επιστρέψουν τις συμβολοσειρές έκδοσης χωρίς σφάλματα. Εάν το Docker Compose δεν εντοπιστεί, εγκαταστήστε το χειροκίνητα:

    sudo apt install docker-compose-plugin -y

Βήμα 3: Ρύθμιση του PostgreSQL για παραγωγή

Από προεπιλογή, το n8n χρησιμοποιεί το SQLite ως βάση δεδομένων. Το SQLite είναι κατάλληλο για προσωπική χρήση και ελαφριές ροές εργασίας, αλλά δεν χειρίζεται καλά τις ταυτόχρονες εγγραφές, κάτι που εκδηλώνεται με επιβραδύνσεις και σφάλματα του τύπου «η βάση δεδομένων είναι κλειδωμένη» όταν εκτελούνται πολλές ροές εργασίας ταυτόχρονα. Για μια ανάπτυξη σε περιβάλλον παραγωγής, το PostgreSQL είναι η σωστή επιλογή.

Γνωρίστε το Ranktracker

Η All-in-One πλατφόρμα για αποτελεσματικό SEO

Πίσω από κάθε επιτυχημένη επιχείρηση βρίσκεται μια ισχυρή εκστρατεία SEO. Αλλά με αμέτρητα εργαλεία και τεχνικές βελτιστοποίησης εκεί έξω για να διαλέξετε, μπορεί να είναι δύσκολο να ξέρετε από πού να ξεκινήσετε. Λοιπόν, μη φοβάστε άλλο, γιατί έχω ακριβώς αυτό που θα σας βοηθήσει. Παρουσιάζοντας την πλατφόρμα Ranktracker all-in-one για αποτελεσματικό SEO

Έχουμε επιτέλους ανοίξει την εγγραφή στο Ranktracker εντελώς δωρεάν!

Δημιουργήστε έναν δωρεάν λογαριασμό

Ή Συνδεθείτε χρησιμοποιώντας τα διαπιστευτήριά σας

Εκτελέστε το PostgreSQL μέσα στο Docker παράλληλα με το n8n:

    mkdir ~/n8n && cd ~/n8n

Δημιουργήστε ένα αρχείο περιβάλλοντος για να αποθηκεύσετε τα μυστικά σας με ασφάλεια. Μην κωδικοποιείτε ποτέ κωδικούς πρόσβασης στο αρχείο compose:

    nano ~/n8n/.env

Προσθέστε τα ακόλουθα, αντικαθιστώντας τις τιμές-placeholder με ισχυρούς και μοναδικούς κωδικούς πρόσβασης:

    POSTGRES_USER=n8n
    POSTGRES_PASSWORD=ο_ισχυρός_κωδικός_πρόσβασής_σας_στη_βάση_δεδομένων_εδώ
    POSTGRES_DB=n8n
    N8N_ENCRYPTION_KEY=η_τυχαία_συμβολοσειρά_32_χαρακτήρων_σας_εδώ

Δημιουργήστε ένα ασφαλές κλειδί κρυπτογράφησης με την εντολή:

    openssl rand -hex 16

Χρησιμοποιήστε το αποτέλεσμα ως το N8N_ENCRYPTION_KEY σας. Αυτό το κλειδί κρυπτογραφεί τα διαπιστευτήρια που είναι αποθηκευμένα στο n8n — αν το χάσετε, όλα τα αποθηκευμένα διαπιστευτήρια θα καταστούν ανεπανόρθωτα.

Βήμα 4: Δημιουργήστε το αρχείο Docker Compose του n8n

Δημιουργήστε το αρχείο docker-compose.yml στον κατάλογο n8n:

    nano ~/n8n/docker-compose.yml

Επικολλήστε την ακόλουθη διαμόρφωση:


services:
  postgres:
    image: postgres:16-alpine
    restart: always
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 10


  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - N8N_HOST=n8n.yourdomain.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.yourdomain.com/
      - GENERIC_TIMEZONE=Europe/London
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - EXECUTIONS_MODE=regular
      - N8N_LOG_LEVEL=info
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy


volumes:
  postgres_data:
  n8n_data:

Σημειώσεις διαμόρφωσης:

  • Η δέσμευση της θύρας 127.0.0.1:5678:5678 διασφαλίζει ότι το n8n είναι προσβάσιμο μόνο τοπικά. Το Nginx θα διαχειρίζεται όλη την εξωτερική κίνηση — μην εκθέτετε ποτέ τη θύρα 5678 απευθείας στο διαδίκτυο.
  • Η χρήση του `depends_on` με την συνθήκη `service_healthy` διασφαλίζει ότι το n8n θα περιμένει μέχρι το PostgreSQL να είναι πλήρως έτοιμο πριν ξεκινήσει. Χωρίς αυτό, το n8n θα αποτύχει κατά την πρώτη εκκίνηση αν η βάση δεδομένων δεν δέχεται ακόμη συνδέσεις.
  • Η ρύθμιση `N8N_LOG_LEVEL=info` σας παρέχει χρήσιμα αρχεία καταγραφής λειτουργίας χωρίς να κατακλύζει τον χώρο αποθήκευσης του δίσκου, όπως θα συνέβαινε με τη ρύθμιση `debug`.

Βήμα 5: Εγκατάσταση και διαμόρφωση του Nginx

Το Nginx θα λειτουργήσει ως αντίστροφος διακομιστής μεσολάβησης (reverse proxy), προωθώντας την κίνηση HTTPS από τη θύρα 443 στο κοντέινερ n8n στη θύρα 5678. Διαχειρίζεται επίσης τον τερματισμό SSL, πράγμα που σημαίνει ότι το ίδιο το n8n δεν χρειάζεται να διαχειρίζεται πιστοποιητικά.

    sudo apt install nginx -y

Αφαιρέστε τον προεπιλεγμένο ιστότοπο και δημιουργήστε ένα νέο μπλοκ διακομιστή για το n8n:

    sudo rm /etc/nginx/sites-enabled/default
    sudo nano /etc/nginx/sites-available/n8n

Επικολλήστε το ακόλουθο:

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
server {
    listen 80;
    server_name n8n.yourdomain.com;


    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $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;
        chunked_transfer_encoding on;
        proxy_buffering off;
        proxy_cache off;
        proxy_read_timeout 90s;
        client_max_body_size 50m;
    }
}

Το μπλοκ map στην κορυφή χειρίζεται σωστά τις κεφαλίδες αναβάθμισης WebSocket. Το n8n χρησιμοποιεί WebSockets για ενημερώσεις σε πραγματικό χρόνο στον επεξεργαστή, οπότε αυτή η ρύθμιση είναι σημαντική — χωρίς αυτήν, ο οπτικός επεξεργαστής δεν θα λειτουργεί σωστά.

Η οδηγία client_max_body_size 50m επιτρέπει στις ροές εργασίας να λαμβάνουν μεγάλα payloads webhook. Το προεπιλεγμένο όριο του Nginx είναι 1 MB, το οποίο είναι πολύ μικρό για ροές εργασίας που επεξεργάζονται μεταφορτώσεις αρχείων ή μεγάλες απαντήσεις JSON.

Ενεργοποιήστε τη ρύθμιση και δοκιμάστε την:

    sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx

Βήμα 6: Έκδοση πιστοποιητικού SSL με το Let’s Encrypt

Εγκαταστήστε το Certbot και το πρόσθετο Nginx:

    sudo apt install certbot python3-certbot-nginx -y

Ζητήστε ένα πιστοποιητικό για τον τομέα σας:

    sudo certbot --nginx -d n8n.yourdomain.com

Ακολουθήστε τις οδηγίες. Όταν σας ζητηθεί αν θέλετε να ανακατευθύνετε την κίνηση HTTP σε HTTPS, επιλέξτε Ναι (επιλογή 2). Το Certbot θα ενημερώσει αυτόματα τη διαμόρφωση του Nginx σας για να χειριστεί αυτήν την ανακατεύθυνση και θα εγκαταστήσει την πλήρη αλυσίδα πιστοποιητικών.

Βεβαιωθείτε ότι η αυτόματη ανανέωση έχει ρυθμιστεί σωστά:

    sudo certbot renew --dry-run

Το Certbot εγκαθιστά ένα χρονόμετρο systemd που ανανεώνει αυτόματα τα πιστοποιητικά κάθε 12 ώρες. Τα πιστοποιητικά ανανεώνονται όταν απομένουν λιγότερο από 30 ημέρες μέχρι τη λήξη τους. Δεν θα χρειαστεί ποτέ να τα ανανεώσετε χειροκίνητα.

Βήμα 7: Εκκίνηση του n8n

Επιστρέψτε στον κατάλογο του n8n και ξεκινήστε όλες τις υπηρεσίες:

    cd ~/n8n
    docker compose up -d

Το Docker θα κατεβάσει τις εικόνες του PostgreSQL και του n8n, θα δημιουργήσει τους τόμους, θα ξεκινήσει πρώτα το PostgreSQL, θα περιμένει να ολοκληρωθεί ο έλεγχος καλής λειτουργίας και, στη συνέχεια, θα ξεκινήσει το n8n. Αυτή η διαδικασία διαρκεί 1–3 λεπτά κατά την πρώτη εκτέλεση.

Ελέγξτε ότι και τα δύο κοντέινερ εκτελούνται:

    docker compose ps

Θα πρέπει να δείτε τόσο το postgres όσο και το n8n να εμφανίζονται με κατάσταση Up. Εάν το n8n εμφανίζει την κατάσταση Restarting, ελέγξτε τα αρχεία καταγραφής:

    docker compose logs n8n --tail=50

Μόλις και τα δύο containers λειτουργούν κανονικά, ανοίξτε τον browser σας και μεταβείτε στη διεύθυνση https://n8n.yourdomain.com. Θα σας ζητηθεί να δημιουργήσετε έναν λογαριασμό ιδιοκτήτη με μια διεύθυνση email και έναν κωδικό πρόσβασης. Αυτός ο λογαριασμός έχει πλήρη δικαιώματα διαχειριστή στην παρουσία σας στο n8n.

Βήμα 8: Ρυθμίστε το n8n ώστε να ξεκινά κατά την εκκίνηση

Η οδηγία restart: always στο αρχείο docker-compose.yml εξασφαλίζει ότι όλα τα containers θα επανεκκινούν αυτόματα σε περίπτωση σφάλματος ή επανεκκίνησης του διακομιστή.

Επαληθεύστε το επανεκκινώντας τον διακομιστή σας:

    sudo reboot

Αφού συνδεθείτε ξανά μέσω SSH, ελέγξτε ότι το n8n επανεκκινήθηκε αυτόματα:

    docker compose -f ~/n8n/docker-compose.yml ps

Και τα δύο containers θα πρέπει να εμφανίζονται ως ενεργά χωρίς καμία χειροκίνητη παρέμβαση.

Βήμα 9: Ρύθμιση αυτόματων αντιγράφων ασφαλείας

Τα δεδομένα του n8n — ροές εργασίας, διαπιστευτήρια και ιστορικό εκτέλεσης — βρίσκονται σε δύο θέσεις: στη βάση δεδομένων PostgreSQL και στον τόμο Docker n8n_data (ο οποίος αποθηκεύει κλειδιά κρυπτογράφησης και ορισμένες ρυθμίσεις). Δημιουργήστε τακτικά αντίγραφα ασφαλείας και για τα δύο.

Δημιουργήστε ένα σενάριο δημιουργίας αντιγράφων ασφαλείας:

    nano ~/n8n/backup.sh

Επικολλήστε το ακόλουθο:

    #!/bin/bash
    BACKUP_DIR="/home/n8nuser/backups"
    DATE=$(date +%Y-%m-%d_%H-%M)
    LOG_FILE="$BACKUP_DIR/backup.log"
# Βεβαιωθείτε ότι ο κατάλογος αντιγράφων ασφαλείας υπάρχει πριν από οτιδήποτε άλλο
mkdir -p "$BACKUP_DIR"


# Δημιουργία αντιγράφου ασφαλείας της βάσης δεδομένων PostgreSQL
DUMP_FILE="$BACKUP_DIR/n8n_db_$DATE.sql"
docker compose -f /home/n8nuser/n8n/docker-compose.yml exec -T postgres \
  pg_dump -U n8n n8n > "$DUMP_FILE"


# Επαλήθευση ότι η δημιουργία αντιγράφου ασφαλείας ολοκληρώθηκε με επιτυχία και ότι το αρχείο δεν είναι κενό
if [ $? -ne 0 ] || [ ! -s "$DUMP_FILE" ]; then
    echo "ΣΦΑΛΜΑ: Η δημιουργία αντιγράφου ασφαλείας της βάσης δεδομένων απέτυχε στις $DATE" >> "$LOG_FILE"
    rm -f "$DUMP_FILE"
    exit 1
fi


# Δημιουργία αντιγράφου ασφαλείας του κλειδιού κρυπτογράφησης και των μεταβλητών περιβάλλοντος
cp /home/n8nuser/n8n/.env "$BACKUP_DIR/n8n_env_$DATE.bak"
# Δημιουργία αντιγράφου ασφαλείας του τόμου n8n_data (διαμόρφωση της παρουσίας και εγκατεστημένοι κόμβοι της κοινότητας)
docker run --rm -v n8n_n8n_data:/data -v "$BACKUP_DIR":/backup alpine \
  tar czf /backup/n8n_data_$DATE.tar.gz -C /data .


# Συμπίεση της αντιγραφής της βάσης δεδομένων
gzip "$DUMP_FILE"


# Διατήρηση μόνο των αντιγράφων ασφαλείας των τελευταίων 7 ημερών
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +7 -delete
find "$BACKUP_DIR" -name "*.bak" -mtime +7 -delete
find "$BACKUP_DIR" -name "n8n_data_*.tar.gz" -mtime +7 -delete


echo "Η δημιουργία αντιγράφου ασφαλείας ολοκληρώθηκε: n8n_db_$DATE.sql.gz" >> "$LOG_FILE"

Το όνομα του τόμου n8n_n8n_data προέρχεται από το Docker Compose, το οποίο προσθέτει ως πρόθεμα στο όνομα του τόμου το όνομα του φακέλου του έργου (n8n). Επαληθεύστε το δικό σας με την εντολή docker volume ls.

Κάντε το σενάριο εκτελέσιμο και προγραμματίστε το με το cron:

    chmod +x ~/n8n/backup.sh
    crontab -e

Προσθέστε αυτή τη γραμμή για να εκτελείται η δημιουργία αντιγράφου ασφαλείας κάθε μέρα στις 2 π.μ.:

    0 2 * * * /home/n8nuser/n8n/backup.sh >> /home/n8nuser/backups/backup.log 2>&1

Για εφεδρεία εκτός του χώρου εργασίας, εξετάστε το ενδεχόμενο να συγχρονίσετε τον κατάλογο αντιγράφων ασφαλείας σας με έναν πάροχο αποθήκευσης αντικειμένων συμβατό με S3 χρησιμοποιώντας το rclone ή το aws s3 sync.

Βήμα 10: Ενεργοποίηση βασικών μέτρων ενίσχυσης της ασφάλειας

Ρύθμιση τείχους προστασίας

Εγκαταστήστε το UFW και επιτρέψτε μόνο τις θύρες που χρειάζεται ο διακομιστής σας:

    sudo ufw allow OpenSSH
    sudo ufw allow 'Nginx Full'
    sudo ufw enable

Επαληθεύστε ότι οι κανόνες είναι ενεργοί:

    sudo ufw status verbose

Θα πρέπει να δείτε ότι οι θύρες 22 (SSH), 80 (HTTP) και 443 (HTTPS) είναι επιτρεπόμενες. Μια προειδοποίηση: το Docker δημιουργεί τους δικούς του κανόνες τείχους προστασίας και παρακάμπτει το UFW για τις δημοσιευμένες θύρες των κοντέινερ. Η θύρα 5678 παραμένει ιδιωτική επειδή το αρχείο compose τη συνδέει με τη διεύθυνση 127.0.0.1, όχι λόγω του UFW, οπότε μην αλλάξετε ποτέ αυτή τη σύνδεση σε 0.0.0.0.

Απενεργοποιήστε την πιστοποίηση με κωδικό πρόσβασης για το SSH

Εάν χρησιμοποιείτε κλειδιά SSH (όπως θα έπρεπε), απενεργοποιήστε εντελώς τη σύνδεση SSH με κωδικό πρόσβασης. Πρώτα, βεβαιωθείτε ότι ο λογαριασμός n8nuser μπορεί να συνδεθεί με το κλειδί σας. Από τον τοπικό σας υπολογιστή, εκτελέστε:

    ssh-copy-id n8nuser@your_server_ip

Στη συνέχεια, επεξεργαστείτε τη διαμόρφωση του διακομιστή SSH:

    sudo nano /etc/ssh/sshd_config

Ορίστε τις ακόλουθες τιμές:

    PasswordAuthentication no
    PermitRootLogin no
    sudo systemctl restart ssh

Σε πολλές εικόνες cloud του Ubuntu, ένα αρχείο στο /etc/ssh/sshd_config.d/ (συχνά το 50-cloud-init.conf) ορίζει το PasswordAuthentication yes, και αυτό υπερισχύει επειδή το sshd χρησιμοποιεί την πρώτη τιμή που διαβάζει. Ελέγξτε τη ρύθμιση που ισχύει πραγματικά:

    sudo sshd -T | grep -i passwordauthentication

Θα πρέπει να εμφανιστεί το «passwordauthentication no». Εάν δεν εμφανιστεί, αλλάξτε την τιμή στο αρχείο παράκαμψης και επανεκκινήστε ξανά το SSH.

Μην κλείσετε την τρέχουσα συνεδρία SSH μέχρι να βεβαιωθείτε ότι η σύνδεση με κλειδί λειτουργεί σε ένα νέο παράθυρο τερματικού.

Περιορισμός ρυθμού στη σελίδα σύνδεσης του n8n

Προσθέστε περιορισμό ρυθμού για να επιβραδύνετε τις επιθέσεις brute-force κατά του τερματικού σημείου σύνδεσης του n8n.

Γνωρίστε το Ranktracker

Η All-in-One πλατφόρμα για αποτελεσματικό SEO

Πίσω από κάθε επιτυχημένη επιχείρηση βρίσκεται μια ισχυρή εκστρατεία SEO. Αλλά με αμέτρητα εργαλεία και τεχνικές βελτιστοποίησης εκεί έξω για να διαλέξετε, μπορεί να είναι δύσκολο να ξέρετε από πού να ξεκινήσετε. Λοιπόν, μη φοβάστε άλλο, γιατί έχω ακριβώς αυτό που θα σας βοηθήσει. Παρουσιάζοντας την πλατφόρμα Ranktracker all-in-one για αποτελεσματικό SEO

Έχουμε επιτέλους ανοίξει την εγγραφή στο Ranktracker εντελώς δωρεάν!

Δημιουργήστε έναν δωρεάν λογαριασμό

Ή Συνδεθείτε χρησιμοποιώντας τα διαπιστευτήριά σας

**Σημαντικό: **Η οδηγία limit_req_zone πρέπει να βρίσκεται μέσα στο μπλοκ http {} στην κύρια διαμόρφωση του Nginx — όχι μέσα στο μπλοκ server. Ανοίξτε την κύρια διαμόρφωση:

    sudo nano /etc/nginx/nginx.conf

Προσθέστε αυτή τη γραμμή μέσα στον υπάρχοντα μπλοκ http {}:

    http {
        ...
        limit_req_zone $binary_remote_addr zone=n8n_login:10m rate=5r/m;
        ...
    }

Στη συνέχεια, στο αρχείο ρυθμίσεων του ιστότοπού σας n8n (/etc/nginx/sites-available/n8n), προσθέστε αυτό το μπλοκ location μέσα στο μπλοκ server που ακούει στη θύρα 443 (το δημιούργησε το Certbot στο Βήμα 6), δίπλα στην υπάρχουσα τοποθεσία /. Το Nginx δεν μεταφέρει τις κεφαλίδες proxy από την τοποθεσία /, οπότε επαναλαμβάνονται εδώ:

    location /rest/login {
        limit_req zone=n8n_login burst=5 nodelay;
        proxy_pass http://127.0.0.1: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;
    }

Επανεκκινήστε το Nginx για να εφαρμοστούν οι αλλαγές:

    sudo nginx -t && sudo systemctl reload nginx

Αυτό περιορίζει κάθε διεύθυνση IP σε περίπου 5 προσπάθειες σύνδεσης ανά λεπτό, με ένα μικρό περιθώριο για στιγμιαίες αυξήσεις.

Διατηρήστε το n8n και το PostgreSQL ενημερωμένα

Κάντε pull και επανεκκίνηση με τις πιο πρόσφατες εικόνες τακτικά:

    cd ~/n8n
    docker compose pull
    docker compose up -d

Το Docker θα κατεβάσει τις πιο πρόσφατες εικόνες n8nio/n8n και postgres και θα επανεκκινήσει μόνο τα κοντέινερ για τα οποία υπάρχει διαθέσιμη νεότερη έκδοση.

Για περιβάλλον παραγωγής, εξετάστε το ενδεχόμενο να «καρφώσετε» την εικόνα n8n σε μια συγκεκριμένη ετικέτα έκδοσης (docker.n8n.io/n8nio/n8n:<version>, που λαμβάνεται από τις σημειώσεις έκδοσης του n8n) και να πραγματοποιείτε αναβαθμίσεις με προσοχή, έτσι ώστε μια συνήθης λήψη να μην προχωρά ποτέ σε μια κύρια έκδοση πριν διαβάσετε το αρχείο αλλαγών.

Αντιμετώπιση κοινών προβλημάτων

Το κοντέινερ n8n συνεχίζει να επανεκκινείται

Ελέγξτε τα αρχεία καταγραφής του κοντέινερ αμέσως μετά την έναρξη του βρόχου επανεκκίνησης:

    docker compose logs n8n --tail=100

Συχνές αιτίες:

  • Αποτυχία σύνδεσης με τη βάση δεδομένων: Βεβαιωθείτε ότι το PostgreSQL λειτουργεί κανονικά χρησιμοποιώντας την εντολή `docker compose ps`. Ελέγξτε ότι η μεταβλητή `POSTGRES_PASSWORD` στο αρχείο `.env` σας ταιριάζει με τον κωδικό πρόσβασης που χρησιμοποιήθηκε κατά την αρχική ρύθμιση της βάσης δεδομένων.
  • Λείπει ή έχει αλλάξει το κλειδί κρυπτογράφησης: Εάν η μεταβλητή N8N_ENCRYPTION_KEY δεν έχει οριστεί ή έχει αλλάξει μετά την πρώτη εκτέλεση, το n8n δεν μπορεί να αποκρυπτογραφήσει τα αποθηκευμένα διαπιστευτήρια και θα διακοπεί η λειτουργία του.
  • Ανεπαρκής μνήμη RAM: Το PostgreSQL και το n8n μαζί μπορούν να χρησιμοποιήσουν 1–1,5 GB μνήμης RAM. Ελέγξτε τη διαθέσιμη μνήμη με την εντολή `free -h`.

Τα webhooks δεν λειτουργούν

Τα webhooks απαιτούν το n8n να είναι προσβάσιμο από το διαδίκτυο στον τομέα σας. Επαληθεύστε:

  1. Η εγγραφή A του DNS του domain σας παραπέμπει στην IP του VPS σας: dig n8n.yourdomain.com
  2. Το Nginx εκτελείται: sudo systemctl status nginx
  3. Η θύρα 443 είναι ανοιχτή: sudo ufw status
  4. Η μεταβλητή περιβάλλοντος WEBHOOK_URL ταιριάζει ακριβώς με τον δημόσιο τομέα σας, συμπεριλαμβανομένης της τελικής κάθετου

Ο επεξεργαστής του n8n δεν φορτώνεται σωστά

Εάν ο οπτικός επεξεργαστής φορτώνεται αλλά εμφανίζει κενό καμβά ροής εργασίας ή οι ενημερώσεις σε πραγματικό χρόνο σταματούν να λειτουργούν, η σύνδεση WebSocket αποτυγχάνει. Ελέγξτε ότι το μπλοκ $http_upgrade υπάρχει στη διαμόρφωση του Nginx και ότι χρησιμοποιείτε τη μεταβλητή $connection_upgrade — και όχι τη συμβολοσειρά «upgrade» — στη γραμμή proxy_set_header Connection.

Σφάλματα πιστοποιητικού SSL

Εάν το Certbot αποτύχει με σφάλμα επικύρωσης τομέα, ελέγξτε ότι η θύρα 80 είναι προσβάσιμη από το διαδίκτυο:

    curl -I http://n8n.yourdomain.com

Εάν η αίτηση λήξει λόγω χρονικού ορίου, το τείχος προστασίας του παρόχου VPS σας ενδέχεται να αποκλείει τη θύρα 80. Ελέγξτε τους κανόνες του τείχους προστασίας της κονσόλας cloud, εκτός από το UFW.

Συμπέρασμα

Η αυτο-φιλοξενία του n8n σε ένα VPS Linux σας παρέχει μια πλατφόρμα αυτοματοποίησης ροών εργασίας έτοιμη για παραγωγή, χωρίς όρια εκτέλεσης, με πλήρη προστασία των δεδομένων και την ευελιξία να εκτελείτε οποιαδήποτε ενσωμάτωση χρειάζεστε. Η εγκατάσταση που περιγράφεται σε αυτόν τον οδηγό — Docker, PostgreSQL, αντίστροφος διακομιστής μεσολάβησης Nginx, SSL Let’s Encrypt, αυτοματοποιημένα αντίγραφα ασφαλείας και ενίσχυση της ασφάλειας — είναι η ίδια στοίβα που χρησιμοποιείται σε περιβάλλοντα παραγωγής και σας παρέχει μια σταθερή, ασφαλή βάση πάνω στην οποία μπορείτε να χτίσετε.

Σε αντίθεση με μια ελάχιστη εγκατάσταση μέσω της εντολής `docker run`, αυτή η ρύθμιση έχει σχεδιαστεί για να αντέχει στις επανεκκινήσεις του διακομιστή, να διαχειρίζεται ταυτόχρονες εκτελέσεις ροών εργασίας και να ανακάμπτει ομαλά από σφάλματα. Τα διαπιστευτήριά σας είναι κρυπτογραφημένα, τα δεδομένα σας αντιγράφονται καθημερινά και το σημείο πρόσβασης σύνδεσής σας υπόκειται σε περιορισμό ρυθμού για την αποτροπή επιθέσεων brute force.

Μόλις η εφαρμογή σας τεθεί σε λειτουργία, εξερευνήστε τους ενσωματωμένους κόμβους του n8n για βάσεις δεδομένων, API, webhooks και ενσωματώσεις τεχνητής νοημοσύνης, ώστε να ξεκινήσετε αμέσως την αυτοματοποίηση των ροών εργασίας σας. Το αυτο-φιλοξενούμενο φόρουμ της κοινότητας στο community.n8n.io αποτελεί επίσης μια εξαιρετική πηγή για ιδέες ροών εργασίας, αντιμετώπιση προβλημάτων κόμβων και συμβουλές ανάπτυξης.

Felix Rose-Collins

Felix Rose-Collins

Ranktracker's CEO/CMO & Co-founder

Felix Rose-Collins is the Co-founder and CEO/CMO of Ranktracker. With over 15 years of SEO experience, he has single-handedly scaled the Ranktracker site to over 500,000 monthly visits, with 390,000 of these stemming from organic searches each month.

Ξεκινήστε να χρησιμοποιείτε το Ranktracker... Δωρεάν!

Μάθετε τι εμποδίζει την κατάταξη του ιστότοπού σας.

Δημιουργήστε έναν δωρεάν λογαριασμό

Ή Συνδεθείτε χρησιμοποιώντας τα διαπιστευτήριά σας

Different views of Ranktracker app