Įvadas
„n8n“ yra vienas iš galingiausių šiuo metu rinkoje esančių atviro kodo darbo eigos automatizavimo įrankių. Skirtingai nuo tokių SaaS alternatyvų kaip „Zapier“ ar „Make“, „n8n“ suteikia jums visišką kontrolę над savo duomenimis ir automatizavimais — tačiau tik tuo atveju, jei jį talpinate patys. „Linux“ VPS yra ideali aplinka šiam tikslui: visada veikianti, prieinama ir visiškai jūsų kontroliuojama.
Šiame vadove aprašomas visas procesas, kaip Linux VPS serveryje sukonfigūruoti gamybai parengtą, savarankiškai talpinamą „n8n“ instanciją. Pradėsite nuo tuščio serverio ir galiausiai turėsite visiškai saugų, SSL palaikantį „n8n“ diegimą su „Docker“, „Nginx“, „PostgreSQL“, automatinėmis atsarginėmis kopijomis ir sustiprinta saugumo konfigūracija.
Svarbiausi dalykai
- „n8n“ VPS aplinkoje suteikia neribotą darbo srautų skaičių, be naudojimo apribojimų ir visišką duomenų nuosavybę
- „Docker“ yra rekomenduojamas diegimo būdas, leidžiantis lengviau atnaujinti ir izoliuoti sistemą
- „PostgreSQL“ yra rekomenduojama duomenų bazė gamybiniams darbo krūviams (ne „SQLite“)
- Gamybiniam naudojimui reikalingas atvirkštinis proxy (Nginx) su „Let’s Encrypt“ SSL
- Kad „n8n“ su „PostgreSQL“ veiktų sklandžiai, jūsų VPS turėtų turėti bent 1 vCPU ir 2 GB RAM
- Reguliarios automatinės atsarginės kopijos apsaugo jūsų darbo eigos duomenis ir prisijungimo duomenis
Kas yra „n8n“?
„n8n“ (tariama „n-aštuoni-n“) yra atviro kodo darbo eigos automatizavimo platforma, leidžianti jungti programas, API ir paslaugas naudojant vizualų, mazgais pagrįstą redaktorių. Ji iš karto palaiko daugiau nei 400 integracijų ir leidžia darbo eigose vykdyti pasirinktinį „JavaScript“ arba „Python“ kodą.
Pagrindinis „n8n“ ir jos konkurentų skirtumas susideda iš trijų dalykų: nuosavybės, kainos ir lankstumo.
**Nuosavybė: **Kai „n8n“ talpinate savo serveryje, jūsų darbo eigos duomenys, prisijungimo duomenys ir vykdymo žurnalai niekada nepalieka jūsų serverio. Komandoms, tvarkyančioms konfidencialius klientų duomenis, finansinius įrašus ar nuosavybės teise saugomą verslo logiką, tai yra nepaprastai svarbu. Debesų platformos saugo jūsų automatizavimo logiką savo infrastruktūroje, taikydamos savo duomenų saugojimo politiką ir saugumo reikalavimus.
**Kaina: **„n8n“ debesų planas apmokestinamas už kiekvieną darbo eigos vykdymą, o tai greitai susidaro didelė suma, kai automatizuojama didelė apimtis. Vidutinio dydžio komanda, per dieną vykdanti tūkstančius operacijų, per mėnesį gali išleisti šimtus dolerių. Savo VPS serveryje, sumokėjus už serverį, operacijų skaičius neribojamas be jokių papildomų išlaidų.
**Lankstumas: **Savarankiškai talpinamas „n8n“ leidžia įdiegti bendruomenės mazgus, vykdyti bet kokį kodą darbo srautų viduje, prisijungti prie vidinių paslaugų, neprieinamų iš viešojo interneto, ir pagal savo pageidavimus konfigūruoti kiekvieną diegimo aspektą. Debesų planai riboja daugelį šių galimybių.
Būtinos sąlygos
Prieš pradėdami, įsitikinkite, kad turite:
- „Linux“ VPS, kuriame veikia „Ubuntu 22.04“ arba „24.04“ (rekomenduojama). Patikrinkite, ar jūsų paslaugų teikėjas siūlo „Ubuntu“ pasirinktame plano dydyje, nes kai kurie pradinio lygio planai siūlo tik kitas distribucijas
- Vartotojas be root teisių, turintis sudo teises
- Domeno vardas, nukreiptas į jūsų VPS IP adresą (pvz., n8n.yourdomain.com)
- SSH prieiga prie jūsų serverio
- Pagrindinės žinios apie „Linux“ komandų eilutę
Tinkamo VPS pasirinkimas
Jūsų pasirinktas serveris turi tiesioginį poveikį „n8n“ našumui. Minimaliai reikės 1 vCPU, 2 GB RAM ir 20 GB SSD saugyklos. Papildoma RAM, palyginti su minimaliu SQLite pagrindu veikiančiu diegimu, reikalinga todėl, kad „PostgreSQL“, „Nginx“ ir „n8n“ veikia vienu metu.
Efektyvaus SEO "viskas viename" platforma
Už kiekvieno sėkmingo verslo slypi stipri SEO kampanija. Tačiau turint daugybę optimizavimo priemonių ir metodų, iš kurių galima rinktis, gali būti sunku žinoti, nuo ko pradėti. Na, nebijokite, nes turiu ką padėti. Pristatome "Ranktracker" "viskas viename" platformą, skirtą efektyviam SEO
Pagaliau pradėjome registruotis į "Ranktracker" visiškai nemokamai!
Sukurti nemokamą paskyrąArba Prisijunkite naudodami savo įgaliojimus
Komandoms, turinčioms daug vartotojų, sudėtingus daugiažingsnius darbo srautus arba didelį „webhook“ pralaidumą, rekomenduojama atnaujinti iki 2 vCPU ir 4 GB RAM. Jei planuojate saugoti ilgus vykdymo žurnalus, atminties talpa turėtų būti ne mažesnė kaip 40 GB.
„PetroSky“ siūlo NVMe VPS planus Paryžiuje ir Monrealyje, kur „n8n“ galima įdiegti vienu paspaudimu atsiskaitant: atvirojo kodo diegimo scenarijus įdiegia „n8n“ su „Docker Compose“ ir automatiškai sukonfigūruoja HTTPS per „Caddy“ ir „Let’s Encrypt“. Šiame vadove aprašomas rankinis diegimo būdas, kuris tinka bet kuriam paslaugų teikėjui.
Renkantis VPS teikėją, taip pat atsižvelkite į geografinę vietą. „n8n“ instanciją talpinkite regione, kuris yra arčiausiai paslaugų, prie kurių ji dažniausiai prisijungs – tai sumažina API vėlavimą vykdant darbo eigos užduotis.
1 žingsnis: Atnaujinkite savo serverį
Prisijunkite prie savo VPS per SSH ir prieš diegdami bet ką, atlikite visą sistemos atnaujinimą:
sudo apt update && sudo apt upgrade -y
Tai užtikrina, kad turite naujausius saugumo pataisymus ir kad visos sistemos bibliotekos yra atnaujintos prieš diegiant „Docker“ ir kitą programinę įrangą.
Jei buvo atnaujintas branduolys, perkraukite sistemą:
sudo reboot
Vėl prisijungę per SSH, sukurkite specialų sistemos vartotoją, skirtą „n8n“ veikimui. Paslaugų vykdymas kaip „root“ kelia saugumo riziką:
sudo adduser n8nuser
sudo usermod -aG sudo n8nuser
su - n8nuser
2 žingsnis: „Docker“ ir „Docker Compose“ įdiegimas
Oficialus „n8n“ rekomenduojamas diegimo būdas yra „Docker“. „Docker“ izoliuoja „n8n“ ir jo priklausomybes nuo likusios sistemos dalies, todėl atnaujinimai ir grįžimas prie ankstesnės versijos tampa paprasti.
Įdiekite „Docker“ naudodami oficialų patogų skriptą:
curl -fsSL https://get.docker.com | sudo sh
„Docker“ dokumentacijoje nurodoma, kad patogumo skriptas nerekomenduojamas gamybinėse aplinkose, nes jis įdiegia naujausią versiją, neleidžiant jums pasirinkti versijos. Jei norite fiksuoti „Docker“ versijas, vietoj to naudokite „apt“ saugyklos metodą iš „Docker“ „Ubuntu“ įdiegimo vadovo (docs.docker.com/engine/install/ubuntu/).
Pridėkite savo vartotoją prie „Docker“ grupės, kad galėtumėte vykdyti „Docker“ komandas be „sudo“:
sudo usermod -aG docker $USER
newgrp docker
Patikrinkite, ar „Docker“ veikia tinkamai:
docker --version
docker compose version
Abi komandos turėtų grąžinti versijos eilutes be klaidų. Jei „Docker Compose“ nerandama, įdiekite ją rankiniu būdu:
sudo apt install docker-compose-plugin -y
3 žingsnis: „PostgreSQL“ nustatymas gamybai
Pagal numatytuosius nustatymus „n8n“ naudoja „SQLite“ kaip savo duomenų bazę. „SQLite“ tinka asmeniniam naudojimui ir nesudėtingiems darbo srautams, tačiau ji prastai tvarko vienu metu atliekamus įrašymus, o tai pasireiškia sulėtėjimais ir klaidomis „duomenų bazė užrakinta“, kai vienu metu vyksta daug darbo srautų. Diegimui gamybinėje aplinkoje tinkamiausias pasirinkimas yra „PostgreSQL“.
Efektyvaus SEO "viskas viename" platforma
Už kiekvieno sėkmingo verslo slypi stipri SEO kampanija. Tačiau turint daugybę optimizavimo priemonių ir metodų, iš kurių galima rinktis, gali būti sunku žinoti, nuo ko pradėti. Na, nebijokite, nes turiu ką padėti. Pristatome "Ranktracker" "viskas viename" platformą, skirtą efektyviam SEO
Pagaliau pradėjome registruotis į "Ranktracker" visiškai nemokamai!
Sukurti nemokamą paskyrąArba Prisijunkite naudodami savo įgaliojimus
Paleiskite „PostgreSQL“ „Docker“ aplinkoje kartu su „n8n“:
mkdir ~/n8n && cd ~/n8n
Sukurkite aplinkos failą, kuriame saugiai laikysite savo slaptažodžius. Niekada neįrašykite slaptažodžių tiesiogiai į „compose“ failą:
nano ~/n8n/.env
Įtraukite šią informaciją, pakeisdami vietos laikiklių reikšmes stipriais ir unikaliais slaptažodžiais:
POSTGRES_USER=n8n
POSTGRES_PASSWORD=jūsų_stiprus_duomenų_bazės_slaptažodis_čia
POSTGRES_DB=n8n
N8N_ENCRYPTION_KEY=jūsų_atsitiktinė_32_simbolių_eilutė_čia
Sukurkite saugų šifravimo raktą naudodami:
openssl rand -hex 16
Naudokite gautą rezultatą kaip savo N8N_ENCRYPTION_KEY. Šis raktas šifruoja „n8n“ saugomus prisijungimo duomenis — jei jį prarasite, visų išsaugotų prisijungimo duomenų atkurti nebus įmanoma.
4 žingsnis: Sukurkite „n8n“ „Docker Compose“ failą
Sukurkite failą „docker-compose.yml“ savo „n8n“ kataloge:
nano ~/n8n/docker-compose.yml
Įklijuokite šią konfigūraciją:
services:
postgres:
image: postgres:16-alpine
restart: always
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
tūriai:
- postgres_data:/var/lib/postgresql/data
būklės patikrinimas:
testas: ["CMD-SHELL", "pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
intervalas: 5s
laiko riba: 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
tomas:
- n8n_data:/home/node/.n8n
priklauso nuo:
postgres:
sąlyga: service_healthy
tomas:
postgres_data:
n8n_data:
Konfigūracijos pastabos:
- Prievado priskyrimas 127.0.0.1:5678:5678 užtikrina, kad prie „n8n“ būtų galima prisijungti tik lokaliai. „Nginx“ tvarkys visą išorinį srautą — niekada tiesiogiai neatskleiskite 5678 prievado į internetą.
- „depends_on“ su sąlyga „service_healthy“ užtikrina, kad „n8n“ prieš paleidimą palauks, kol „PostgreSQL“ bus visiškai paruošta. Be to, „n8n“ nepavyks paleisti pirmojo paleidimo metu, jei duomenų bazė dar nepriima prisijungimų.
- N8N_LOG_LEVEL=info suteikia naudingus veiklos žurnalus, neapkraunant disko saugyklos taip, kaip tai darytų „debug“.
5 žingsnis: „Nginx“ įdiegimas ir konfigūravimas
„Nginx“ veiks kaip atvirkštinis tarpinis serveris, persiunčiantis HTTPS srautą iš 443 prievado į jūsų „n8n“ konteinerį 5678 prievade. Jis taip pat tvarko SSL nutraukimą, o tai reiškia, kad pačiam „n8n“ nereikia valdyti sertifikatų.
sudo apt install nginx -y
Pašalinkite numatytąjį tinklalapį ir sukurkite naują serverio bloką „n8n“:
sudo rm /etc/nginx/sites-enabled/default
sudo nano /etc/nginx/sites-available/n8n
Įklijuokite šį tekstą:
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;
}
}
Viršuje esantis „map“ blokas teisingai apdoroja „WebSocket“ atnaujinimo antraštes. „n8n“ naudoja „WebSockets“ realaus laiko atnaujinimams redaktoriuje, todėl ši konfigūracija yra svarbi — be jos vizualusis redaktorius neveiks tinkamai.
Direktyva „client_max_body_size 50m“ leidžia darbo srautams priimti didelius „webhook“ duomenų paketus. Numatytasis „Nginx“ apribojimas yra 1 MB, o tai per mažai darbo srautams, apdorojantiems failų įkėlimus ar didelius JSON atsakymus.
Įjunkite konfigūraciją ir ją išbandykite:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
6 žingsnis: SSL sertifikato išdavimas naudojant „Let’s Encrypt“
Įdiekite „Certbot“ ir „Nginx“ įskiepį:
sudo apt install certbot python3-certbot-nginx -y
Paprašykite sertifikato savo domenui:
sudo certbot --nginx -d n8n.yourdomain.com
Sekite nurodymus. Kai bus paklausta, ar nukreipti HTTP srautą į HTTPS, pasirinkite „Yes“ (2 variantas). „Certbot“ automatiškai atnaujins jūsų „Nginx“ konfigūraciją, kad ji galėtų tvarkyti šį nukreipimą, ir įdiegs visą sertifikatų grandinę.
Patikrinkite, ar automatinis atnaujinimas sukonfigūruotas teisingai:
sudo certbot renew --dry-run
„Certbot“ įdiegia „systemd“ laikmatį, kuris sertifikatus automatiškai atnaujina kas 12 valandų. Sertifikatai atnaujinami, kai iki jų galiojimo pabaigos lieka mažiau nei 30 dienų. Jums niekada neturėtų prireikti atnaujinti sertifikatų rankiniu būdu.
7 žingsnis: Paleiskite „n8n“
Grįžkite į savo „n8n“ katalogą ir paleiskite visas paslaugas:
cd ~/n8n
docker compose up -d
„Docker “ atsisiųs „PostgreSQL“ ir „n8n“ vaizdus, sukurs tomus, pirmiausia paleis „PostgreSQL“, palauks, kol bus sėkmingai atliktas veikimo patikrinimas, ir tada paleis „n8n“. Šis procesas pirmą kartą trunka 1–3 minutes.
Patikrinkite, ar abu konteineriai veikia:
docker compose ps
Turėtumėte matyti, kad tiek „postgres“, tiek „n8n“ yra sąraše su būsena „Up“. Jei „n8n“ rodo „Restarting“, patikrinkite žurnalus:
docker compose logs n8n --tail=50
Kai abu konteineriai veiks tinkamai, atidarykite naršyklę ir eikite į https://n8n.yourdomain.com. Jums bus pasiūlyta sukurti savininko paskyrą, nurodant el. pašto adresą ir slaptažodį. Ši paskyra turi visas administratoriaus teises jūsų „n8n“ instancijoje.
8 žingsnis: „n8n“ konfigūravimas, kad paleistųsi paleidus sistemą
Docker-compose.yml faile esanti direktyva „restart: always“ užtikrina, kad visi konteineriai automatiškai paleis iš naujo, jei įvyks gedimas arba bus perkrautas serveris.
Tai patikrinkite perkrovę serverį:
sudo reboot
Vėl prisijungę per SSH, patikrinkite, ar „n8n“ paleido automatiškai:
docker compose -f ~/n8n/docker-compose.yml ps
Abu konteineriai turėtų būti rodomi kaip veikiantys be jokio rankinio įsikišimo.
9 žingsnis: automatinių atsarginių kopijų nustatymas
Jūsų „n8n“ duomenys — darbo srautai, prisijungimo duomenys ir vykdymo istorija — saugomi dviejose vietose: „PostgreSQL“ duomenų bazėje ir „n8n_data“ „Docker“ tome (kur saugomi šifravimo raktai ir kai kurie konfigūracijos duomenys). Reguliariai kurkite abiejų atsargines kopijas.
Sukurkite atsarginių kopijų scenarijų:
nano ~/n8n/backup.sh
Įklijuokite šį tekstą:
#!/bin/bash
BACKUP_DIR="/home/n8nuser/backups"
DATE=$(date +%Y-%m-%d_%H-%M)
LOG_FILE="$BACKUP_DIR/backup.log"
# Pirmiausia įsitikinkite, kad atsarginių kopijų katalogas egzistuoja
mkdir -p "$BACKUP_DIR"
# Sukurkite „PostgreSQL“ atsarginę kopiją
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"
# Patikrinti, ar iškėlimas pavyko ir ar failas nėra tuščias
if [ $? -ne 0 ] || [ ! -s "$DUMP_FILE" ]; then
echo "KLAIDA: Duomenų bazės atsarginė kopija nesukurta $DATE" >> "$LOG_FILE"
rm -f "$DUMP_FILE"
exit 1
fi
# Sukurkite šifravimo rakto ir aplinkos kintamųjų atsarginę kopiją
cp /home/n8nuser/n8n/.env "$BACKUP_DIR/n8n_env_$DATE.bak"
# Sukurkite n8n_data tomo (instancijos konfigūracijos ir įdiegtų bendruomenės mazgų) atsarginę kopiją
docker run --rm -v n8n_n8n_data:/data -v "$BACKUP_DIR":/backup alpine \
tar czf /backup/n8n_data_$DATE.tar.gz -C /data .
# Suspausti duomenų bazės iškeltą kopiją
gzip "$DUMP_FILE"
# Palikti tik paskutinių 7 dienų atsargines kopijas
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 "Atsarginė kopija sukurta: n8n_db_$DATE.sql.gz" >> "$LOG_FILE"
Tomo pavadinimas „n8n_n8n_data“ kyla iš to, kad „Docker Compose“ prie tomo prideda projekto aplanko pavadinimą (n8n). Patikrinkite savo pavadinimą komanda „docker volume ls“.
Padarykite skriptą vykdomą ir suplanuokite jo vykdymą naudojant „cron“:
chmod +x ~/n8n/backup.sh
crontab -e
Pridėkite šią eilutę, kad atsarginė kopija būtų kuriama kasdien 2 val. nakties:
0 2 * * * /home/n8nuser/n8n/backup.sh >> /home/n8nuser/backups/backup.log 2>&1
Norėdami užtikrinti atsarginę kopiją kitur, apsvarstykite galimybę sinchronizuoti atsarginių kopijų katalogą su „S3“ suderinamu objektų saugojimo paslaugų teikėju naudodami „rclone“ arba „aws s3 sync“.
10 žingsnis: Įjunkite pagrindinius saugumo sustiprinimus
Ugniasienės nustatymas
Įdiekite UFW ir leiskite naudoti tik tuos prievadus, kurių reikia jūsų serveriui:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
Patikrinkite, ar taisyklės veikia:
sudo ufw status verbose
Turėtumėte matyti, kad leidžiami 22 (SSH), 80 (HTTP) ir 443 (HTTPS) prievadai. Vienas įspėjimas: „Docker“ rašo savo ugniasienės taisykles ir apeina UFW, kai kalbama apie paskelbtus konteinerių prievadus. 5678 prievadas lieka privatus, nes „compose“ failas jį susieja su 127.0.0.1, o ne dėl UFW, todėl niekada nekeiskite to susiejimo į 0.0.0.0.
Išjunkite slaptažodžio autentifikavimą SSH
Jei naudojate SSH raktus (o turėtumėte juos naudoti), visiškai išjunkite prisijungimą prie SSH naudojant slaptažodį. Pirmiausia įsitikinkite, kad „n8nuser“ paskyra gali prisijungti naudojant jūsų raktą. Savo vietiniame kompiuteryje paleiskite:
ssh-copy-id n8nuser@your_server_ip
Tada redaguokite SSH serverio konfigūraciją:
sudo nano /etc/ssh/sshd_config
Nustatykite šias reikšmes:
PasswordAuthentication no
PermitRootLogin no
sudo systemctl restart ssh
Daugelyje „Ubuntu“ debesų vaizdų failas, esantis kataloge /etc/ssh/sshd_config.d/ (dažnai 50-cloud-init.conf), nustato „PasswordAuthentication yes“, ir šis nustatymas turi viršenybę, nes „sshd“ naudoja pirmąją perskaitytą reikšmę. Patikrinkite, koks nustatymas iš tikrųjų galioja:
sudo sshd -T | grep -i passwordauthentication
Turėtų būti rodomas „passwordauthentication no“. Jei taip nėra, pakeiskite reikšmę perrašymo faile ir vėl paleiskite SSH.
Neuždarykite esamos SSH sesijos, kol nepatikrinsite, ar prisijungimas naudojant raktą veikia naujame terminalo lange.
Nustatykite n8n prisijungimo puslapio srauto ribojimą
Nustatykite srauto ribojimą, kad sulėtintumėte „brute-force“ atakas prieš „n8n“ prisijungimo galinį tašką.
Efektyvaus SEO "viskas viename" platforma
Už kiekvieno sėkmingo verslo slypi stipri SEO kampanija. Tačiau turint daugybę optimizavimo priemonių ir metodų, iš kurių galima rinktis, gali būti sunku žinoti, nuo ko pradėti. Na, nebijokite, nes turiu ką padėti. Pristatome "Ranktracker" "viskas viename" platformą, skirtą efektyviam SEO
Pagaliau pradėjome registruotis į "Ranktracker" visiškai nemokamai!
Sukurti nemokamą paskyrąArba Prisijunkite naudodami savo įgaliojimus
**Svarbu: **Direktyva „limit_req_zone“ turi būti įterpta į „http {}“ bloką pagrindiniame „Nginx“ konfigūracijos faile — ne į „server“ bloką. Atidarykite pagrindinį konfigūracijos failą:
sudo nano /etc/nginx/nginx.conf
Į esamą „http {}“ bloką įterpkite šią eilutę:
http {
...
limit_req_zone $binary_remote_addr zone=n8n_login:10m rate=5r/m;
...
}
Tada savo „n8n“ svetainės konfigūracijoje (/etc/nginx/sites-available/n8n) įterpkite šį „location“ bloką į „server“ bloką, kuris klausosi 443 uosto (jį sukūrė „Certbot“ 6 žingsnyje), šalia esamos „location /“. „Nginx“ neperduoda proxy antraščių iš „location /“, todėl jos čia kartojamos:
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;
}
Perkraukite „Nginx“, kad pakeitimai įsigaliotų:
sudo nginx -t && sudo systemctl reload nginx
Tai apriboja kiekvieną IP adresą iki maždaug 5 prisijungimo bandymų per minutę, leidžiant nedidelį trumpalaikį srautą.
Atnaujinkite „n8n“ ir „PostgreSQL“
Reguliariai atsisiųskite naujausius atvaizdus ir paleiskite iš naujo:
cd ~/n8n
docker compose pull
docker compose up -d
„Docker“ atsisiųs naujausius „n8nio/n8n“ ir „postgres“ atvaizdus ir perkraus tik tuos konteinerius, kuriems yra prieinama naujesnė versija.
Naudojant gamybinėje aplinkoje, apsvarstykite galimybę priskirti „n8n“ atvaizdą prie konkrečios versijos žymės (docker.n8n.io/n8nio/n8n:<versija>, paimta iš „n8n“ išleidimo pastabų) ir atnaujinti apgalvotai, kad įprastas atsisiuntimas niekada neperšoktų į naujesnę pagrindinę versiją, kol nesusipažinote su pakeitimų žurnalu.
Dažniausiai pasitaikančių problemų sprendimas
„n8n“ konteineris nuolat paleidžiamas iš naujo
Iš karto po to, kai prasideda perkrovimo ciklas, patikrinkite konteinerio žurnalus:
docker compose logs n8n --tail=100
Dažniausios priežastys:
- Duomenų bazės prisijungimo klaida: Įsitikinkite, kad „PostgreSQL“ veikia tinkamai, naudodami komandą „docker compose ps“. Patikrinkite, ar jūsų .env faile nurodytas „POSTGRES_PASSWORD“ atitinka tą, kuriuo buvo inicijuota duomenų bazė.
- Trūksta šifravimo rakto arba jis pakeistas: Jei N8N_ENCRYPTION_KEY nėra nustatytas arba buvo pakeistas po pirmojo paleidimo, „n8n“ negalės iššifruoti saugomų prisijungimo duomenų ir užstrigs.
- Nepakanka RAM: „PostgreSQL“ ir „n8n“ kartu gali sunaudoti 1–1,5 GB RAM. Patikrinkite laisvą atmintį komanda „free -h“.
Webhooks neveikia
Kad „Webhooks“ veiktų, „n8n“ turi būti pasiekiamas iš interneto jūsų domeno adresu. Patikrinkite:
- Jūsų domeno DNS A įrašas nukreipia į jūsų VPS IP adresą: dig n8n.yourdomain.com
- „Nginx“ veikia: „sudo systemctl status nginx“
- 443 uostas yra atidarytas: „sudo ufw status“
- Aplinkos kintamasis „WEBHOOK_URL“ tiksliai atitinka jūsų viešąjį domeną, įskaitant galinį kablelį
„n8n“ redaktorius neįkeliama tinkamai
Jei vizualusis redaktorius įkeliama, bet rodo tuščią darbo eigos drobę arba nebeveikia atnaujinimai realiuoju laiku, tai reiškia, kad „WebSocket“ ryšys neveikia. Patikrinkite, ar jūsų „Nginx“ konfigūracijoje yra „$http_upgrade“ blokas ir ar eilutėje „proxy_set_header Connection“ naudojate kintamąjį „$connection_upgrade“, o ne tiesioginį žodį „upgrade“.
SSL sertifikato klaidos
Jei „Certbot“ nepavyksta atlikti domeno patvirtinimo dėl klaidos, patikrinkite, ar 80-asis prievadas yra pasiekiamas iš interneto:
curl -I http://n8n.yourdomain.com
Jei užklausos laikas baigiasi, jūsų VPS teikėjo ugniasienė gali blokuoti 80-ąjį prievadą. Patikrinkite ne tik UFW, bet ir debesų konsolės ugniasienės taisykles.
Išvada
Savarankiškai įdiegus „n8n“ Linux VPS serveryje, gaunate gamybai parengtą darbo eigos automatizavimo platformą be vykdymo apribojimų, užtikrinančią visišką duomenų privatumą ir lankstumą vykdyti bet kokią jums reikalingą integraciją. Šiame vadove aprašyta konfigūracija — „Docker“, „PostgreSQL“, „Nginx“ atvirkštinis proxy, „Let’s Encrypt“ SSL, automatiniai atsarginiai kopijavimai ir saugumo stiprinimas — yra ta pati technologijų steko konfigūracija, kuri naudojama gamybinėse aplinkose, ir suteikia jums stabilų bei saugų pagrindą tolesnei plėtrai.
Skirtingai nuo minimalaus „Docker“ „run-command“ įdiegimo, ši konfigūracija sukurta taip, kad atlaikytų serverio perkrovimus, tvarkytų vienu metu vykdomus darbo srautus ir sklandžiai atsigautų po gedimų. Jūsų prisijungimo duomenys yra šifruojami, duomenų atsarginės kopijos daromos kasnakt, o jūsų prisijungimo taškas yra apsaugotas nuo „brute force“ atakų ribojant užklausų dažnį.
Kai jūsų instancija pradės veikti, susipažinkite su „n8n“ integruotais mazgais, skirtais duomenų bazėms, API, „webhookams“ ir AI integracijoms, kad galėtumėte nedelsiant pradėti automatizuoti savo darbo srautus. Savarankiškai prižiūrimas bendruomenės forumas adresu community.n8n.io taip pat yra puikus šaltinis, kuriame rasite idėjų darbo srautams, pagalbą sprendžiant mazgų problemas ir diegimo patarimus.

