Johdanto
n8n on yksi tehokkaimmista avoimen lähdekoodin työnkulun automatisointityökaluista, joita nykyään on saatavilla. Toisin kuin Zapierin tai Maken kaltaiset SaaS-vaihtoehdot, n8n antaa sinulle täyden hallinnan tiedoistasi ja automaatioistasi – mutta vain, jos isännöit sitä itse. Linux-VPS on ihanteellinen ympäristö tähän: se on aina käytettävissä, edullinen ja täysin hallinnassasi.
Tämä opas opastaa sinut läpi koko prosessin, jossa asennat tuotantokäyttöön valmiin, itse isännöidyn n8n-instanssin Linux-VPS:lle. Aloitat tyhjästä palvelimesta ja pääset lopulta täysin suojattuun, SSL-yhteensopivaan n8n-asennukseen, jossa on Docker, Nginx, PostgreSQL, automaattiset varmuuskopiot ja vahvistettu tietoturvamääritys.
Tärkeimmät kohdat
- n8n VPS-palvelimella tarjoaa sinulle rajattomat työnkulut, ei käyttörajoituksia ja täyden omistusoikeuden tietoihisi
- Docker on suositeltava asennustapa, joka helpottaa päivityksiä ja eristämistä
- PostgreSQL on suositeltava tietokanta tuotantokäyttöön (ei SQLite)
- Tuotantokäyttöön tarvitaan käänteinen välityspalvelin (Nginx) ja Let’s Encrypt SSL
- VPS:lläsi tulisi olla vähintään 1 vCPU ja 2 GB RAM-muistia, jotta n8n toimii sujuvasti PostgreSQL:n kanssa
- Säännölliset automaattiset varmuuskopiot suojaavat työnkulun tietojasi ja tunnistetietojasi
Mikä on n8n?
n8n (lausutaan ”n-eight-n”) on avoimen lähdekoodin työnkulun automatisointialusta, jonka avulla voit yhdistää sovelluksia, sovellusrajapintoja ja palveluita visuaalisen solmupohjaisen editorin avulla. Se tukee yli 400 integraatiota heti käyttövalmiina ja mahdollistaa mukautetun JavaScript- tai Python-koodin ajamisen työnkulkujen sisällä.
n8n:n ja sen kilpailijoiden välinen keskeinen ero tiivistyy kolmeen seikkaan: omistajuus, kustannukset ja joustavuus.
**Omistajuus: **Kun isännöit n8n:ää itse, työnkulkutietosi, tunnistetietosi ja suorituslokisi eivät koskaan poistu omalta palvelimeltasi. Tämä on erittäin tärkeää tiimeille, jotka käsittelevät arkaluonteisia asiakastietoja, talouskirjanpitoa tai yrityskohtaista liiketoimintalogiikkaa. Pilvialustat tallentavat automaatiologiikkasi omaan infrastruktuuriinsa, jolloin se on alisteinen niiden tietojen säilyttämiskäytännöille ja tietoturvatasolle.
**Kustannukset: **n8n:n pilvipaketti veloittaa työnkulun suorituksen mukaan, mikä kasvaa nopeasti suurivolyymisissä automaatioissa. Keskikokoinen tiimi, joka suorittaa tuhansia suorituksia päivässä, voi kuluttaa satoja dollareita kuukaudessa. Omalla VPS-palvelimellasi suoritukset ovat rajoittamattomia ilman lisäkustannuksia, kun olet kerran maksanut palvelimesta.
**Joustavuus: **Itse isännöidyn n8n:n avulla voit asentaa yhteisön solmuja, suorittaa mitä tahansa koodia työnkulkujen sisällä, muodostaa yhteyden sisäisiin palveluihin, joihin ei pääse julkisesta internetistä, ja määrittää käyttöönoton kaikki osa-alueet mieleiseksesi. Pilvipaketit rajoittavat monia näistä ominaisuuksista.
Edellytykset
Ennen kuin aloitat, varmista, että sinulla on:
- Linux-VPS, jossa on Ubuntu 22.04 tai 24.04 (suositeltava). Tarkista, että palveluntarjoajasi tarjoaa Ubuntua valitsemassasi pakettikokossa, sillä jotkut perustason paketit tarjoavat vain muita jakeluversioita
- Ei-root-käyttäjä, jolla on sudo-oikeudet
- VPS-palvelimesi IP-osoitteeseen osoittava verkkotunnus (esim. n8n.yourdomain.com)
- SSH-yhteys palvelimeesi
- Perustiedot Linuxin komentorivistä
Oikean VPS:n valinta
Valitsemasi palvelin vaikuttaa suoraan n8n:n suorituskykyyn. Tarvitset vähintään 1 vCPU:n, 2 GB RAM-muistia ja 20 GB SSD-tallennustilaa. Lisämuistia tarvitaan verrattuna minimaaliseen SQLite-pohjaiseen asennukseen, koska PostgreSQL, Nginx ja n8n toimivat kaikki samanaikaisesti.
All-in-One-alusta tehokkaaseen hakukoneoptimointiin
Jokaisen menestyvän yrityksen takana on vahva SEO-kampanja. Mutta kun tarjolla on lukemattomia optimointityökaluja ja -tekniikoita, voi olla vaikea tietää, mistä aloittaa. No, älä pelkää enää, sillä minulla on juuri oikea apu. Esittelen Ranktracker all-in-one -alustan tehokasta SEO:ta varten.
Olemme vihdoin avanneet Ranktrackerin rekisteröinnin täysin ilmaiseksi!
Luo ilmainen tiliTai Kirjaudu sisään omilla tunnuksillasi
Jos tiimissäsi on useita käyttäjiä, monimutkaisia monivaiheisia työnkulkuja tai suuri webhook-läpimenomäärä, päivitä 2 vCPU:hun ja 4 GB RAM-muistiin. Tallennustilan tulisi olla vähintään 40 GB, jos aiot säilyttää pitkiä suorituslokeja.
PetroSky tarjoaa NVMe-VPS-paketteja Pariisissa ja Montrealissa, ja n8n on saatavilla yhden klikkauksen sovelluksena kassalla: avoimen lähdekoodin asennusskripti ottaa n8n:n käyttöön Docker Compose -sovelluksella ja määrittää HTTPS:n automaattisesti Caddy- ja Let’s Encrypt -palveluiden kautta. Tämä opas käsittelee manuaalista asennustapaa, joka toimii minkä tahansa palveluntarjoajan kanssa.
Kun valitset VPS-palveluntarjoajaa, ota huomioon myös maantieteellinen sijainti. Isännöi n8n-instanssiasi alueella, joka on lähimpänä palveluita, joihin se muodostaa yhteyden useimmin – tämä vähentää API-viivettä työnkulun suorituksissa.
Vaihe 1: Päivitä palvelimesi
Yhdistä VPS-palvelimeesi SSH:n kautta ja suorita täydellinen järjestelmän päivitys ennen minkään asentamista:
sudo apt update && sudo apt upgrade -y
Tämä varmistaa, että sinulla on uusimmat tietoturvakorjaukset ja että kaikki järjestelmäkirjastot ovat ajan tasalla ennen Docker-ohjelmiston ja muiden ohjelmistojen asentamista.
Käynnistä järjestelmä uudelleen, jos ytimen päivitys on asennettu:
sudo reboot
Kun olet muodostanut yhteyden uudelleen SSH:n kautta, luo erillinen järjestelmäkäyttäjä n8n:n ajamista varten. Palveluiden ajaminen root-käyttäjänä on turvallisuusriski:
sudo adduser n8nuser
sudo usermod -aG sudo n8nuser
su - n8nuser
Vaihe 2: Asenna Docker ja Docker Compose
n8n:n virallisesti suositeltu asennustapa on Docker. Docker eristää n8n:n ja sen riippuvuudet muusta järjestelmästä, mikä helpottaa päivityksiä ja palautuksia.
Asenna Docker virallisen apuskriptin avulla:
curl -fsSL https://get.docker.com | sudo sh
Docker-dokumentaatiossa huomautetaan, että kätevää komentosarjaa ei suositella tuotantoympäristöihin, koska se asentaa uusimman julkaisun antamatta sinun valita versiota. Jos haluat kiinnittää Docker-versiot, käytä sen sijaan apt-pakettivarastomenetelmää Docker-asennusoppaasta Ubuntulle (docs.docker.com/engine/install/ubuntu/).
Lisää käyttäjäsi Docker-ryhmään, jotta voit suorittaa Docker-komentoja ilman sudo-komentoa:
sudo usermod -aG docker $USER
newgrp docker
Varmista, että Docker toimii oikein:
docker --version
docker compose version
Molempien komentojen tulisi palauttaa versiotiedot ilman virheitä. Jos Docker Composea ei löydy, asenna se manuaalisesti:
sudo apt install docker-compose-plugin -y
Vaihe 3: PostgreSQL:n määrittäminen tuotantokäyttöön
Oletusarvoisesti n8n käyttää SQLite-tietokantaa. SQLite sopii hyvin henkilökohtaiseen käyttöön ja kevyisiin työnkulkuihin, mutta se käsittelee samanaikaisia kirjoituksia huonosti, mikä näkyy hidastumina ja ”tietokanta on lukittu” -virheinä, kun useita työnkulkuja ajetaan samanaikaisesti. Tuotantokäyttöön PostgreSQL on oikea valinta.
All-in-One-alusta tehokkaaseen hakukoneoptimointiin
Jokaisen menestyvän yrityksen takana on vahva SEO-kampanja. Mutta kun tarjolla on lukemattomia optimointityökaluja ja -tekniikoita, voi olla vaikea tietää, mistä aloittaa. No, älä pelkää enää, sillä minulla on juuri oikea apu. Esittelen Ranktracker all-in-one -alustan tehokasta SEO:ta varten.
Olemme vihdoin avanneet Ranktrackerin rekisteröinnin täysin ilmaiseksi!
Luo ilmainen tiliTai Kirjaudu sisään omilla tunnuksillasi
Käynnistä PostgreSQL Dockerissa n8n:n rinnalla:
mkdir ~/n8n && cd ~/n8n
Luo ympäristötiedosto salaisuuksien turvallista tallentamista varten. Älä koskaan kirjoita salasanoja suoraan compose-tiedostoon:
nano ~/n8n/.env
Lisää seuraava teksti ja korvaa paikkamerkkien arvot vahvoilla, ainutlaatuisilla salasanoilla:
POSTGRES_USER=n8n
POSTGRES_PASSWORD=kirjoita_tähän_vahva_tietokantasalasanasi
POSTGRES_DB=n8n
N8N_ENCRYPTION_KEY=kirjoita_tähän_satunnainen_32_merkin_merkkijono
Luo turvallinen salausavain seuraavalla komennolla:
openssl rand -hex 16
Käytä tulostetta N8N_ENCRYPTION_KEY-arvona. Tämä avain salaa n8n:ään tallennetut tunnistetiedot — jos kadotat sen, kaikkia tallennettuja tunnistetietoja ei voi enää palauttaa.
Vaihe 4: Luo n8n-Docker Compose -tiedosto
Luo docker-compose.yml-tiedosto n8n-hakemistoosi:
nano ~/n8n/docker-compose.yml
Liitä seuraava konfiguraatio:
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:
Määritysohjeet:
- Portin sidonta 127.0.0.1:5678:5678 varmistaa, että n8n on käytettävissä vain paikallisesti. Nginx käsittelee kaiken ulkoisen liikenteen — älä koskaan avaa porttia 5678 suoraan internetiin.
- depends_on-määritteen service_healthy-ehto varmistaa, että n8n odottaa PostgreSQL:n olevan täysin valmis ennen käynnistymistä. Ilman tätä n8n epäonnistuu ensimmäisellä käynnistyksellä, jos tietokanta ei vielä hyväksy yhteyksiä.
- N8N_LOG_LEVEL=info tuottaa hyödyllisiä toimintalokeja ilman, että levytila täyttyy, kuten debug-asetuksella tapahtuisi.
Vaihe 5: Nginxin asennus ja konfigurointi
Nginx toimii käänteisvälityspalvelimena, joka välittää HTTPS-liikenteen portista 443 n8n-konttiisi porttiin 5678. Se hoitaa myös SSL-yhteyden päättämisen, mikä tarkoittaa, että n8n:n ei itse tarvitse hallinnoida varmenteita.
sudo apt install nginx -y
Poista oletussivusto ja luo uusi palvelinlohko n8n:lle:
sudo rm /etc/nginx/sites-enabled/default
sudo nano /etc/nginx/sites-available/n8n
Liitä seuraava teksti:
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;
}
}
Yläosassa oleva map-lohko käsittelee WebSocket-päivitysotsikoita oikein. n8n käyttää WebSocket-yhteyksiä reaaliaikaisiin päivityksiin editorissa, joten tämä asetus on tärkeä — ilman sitä visuaalinen editori ei toimi oikein.
client_max_body_size 50m -ohje mahdollistaa suurten webhook-kuormien vastaanottamisen työnkuluissa. Nginxin oletusraja on 1 MB, mikä on liian pieni tiedostojen lähetystä tai suuria JSON-vastauksia käsitteleville työnkuluille.
Ota asetus käyttöön ja testaa se:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Vaihe 6: Hanki SSL-varmenne Let’s Encryptin avulla
Asenna Certbot ja Nginx-laajennus:
sudo apt install certbot python3-certbot-nginx -y
Pyydä varmenne verkkotunnuksellesi:
sudo certbot --nginx -d n8n.yourdomain.com
Seuraa ohjeita. Kun sinulta kysytään, haluatko ohjata HTTP-liikenteen HTTPS:ään, valitse Kyllä (vaihtoehto 2). Certbot päivittää automaattisesti Nginx-asetuksesi tämän uudelleenohjauksen käsittelemiseksi ja asentaa täydellisen varmenneketjun.
Varmista, että automaattinen uusinta on määritetty oikein:
sudo certbot renew --dry-run
Certbot asentaa systemd-ajastimen, joka uusii varmenteet automaattisesti 12 tunnin välein. Varmenteet uusitaan, kun niiden voimassaoloaika päättyy 30 päivän kuluessa. Sinun ei pitäisi koskaan joutua uusimaan varmenteita manuaalisesti.
Vaihe 7: Käynnistä n8n
Palaa n8n-hakemistoon ja käynnistä kaikki palvelut:
cd ~/n8n
docker compose up -d
Docker lataa PostgreSQL- ja n8n-kuvat, luo levyt, käynnistää ensin PostgreSQL:n, odottaa, kunnes toimintatarkistus on suoritettu onnistuneesti, ja käynnistää sitten n8n:n. Tämä prosessi kestää ensimmäisellä kerralla 1–3 minuuttia.
Tarkista, että molemmat kontit ovat käynnissä:
docker compose ps
Luettelossa pitäisi näkyä sekä postgres että n8n tilassa Up. Jos n8n:n tilana näkyy Restarting, tarkista lokit:
docker compose logs n8n --tail=50
Kun molemmat kontit ovat kunnossa, avaa selain ja siirry osoitteeseen https://n8n.yourdomain.com. Sinua pyydetään luomaan omistajatili sähköpostiosoitteella ja salasanalla. Tällä tilillä on täydet järjestelmänvalvojan oikeudet n8n-instanssiisi.
Vaihe 8: Määritä n8n käynnistymään käynnistyksen yhteydessä
Docker-compose.yml-tiedostossa oleva restart: always -määräys varmistaa, että kaikki kontit käynnistyvät uudelleen automaattisesti kaatumisen tai palvelimen uudelleenkäynnistyksen yhteydessä.
Varmista tämä käynnistämällä palvelimesi uudelleen:
sudo reboot
Kun olet muodostanut yhteyden uudelleen SSH:n kautta, tarkista, että n8n käynnistyi automaattisesti uudelleen:
docker compose -f ~/n8n/docker-compose.yml ps
Molempien konttien pitäisi näkyä käynnissä ilman manuaalista puuttumista.
Vaihe 9: Määritä automaattiset varmuuskopiot
n8n-tietosi — työnkulut, tunnistetiedot ja suoritushistoria — sijaitsevat kahdessa paikassa: PostgreSQL-tietokannassa ja n8n_data-Docker-volyymissä (joka tallentaa salausavaimet ja osan asetuksista). Varmuuskopioi molemmat säännöllisesti.
Luo varmuuskopiointiskripti:
nano ~/n8n/backup.sh
Liitä seuraava teksti:
#!/bin/bash
BACKUP_DIR="/home/n8nuser/backups"
DATE=$(date +%Y-%m-%d_%H-%M)
LOG_FILE="$BACKUP_DIR/backup.log"
# Varmista ennen muuta, että varmuuskopiohakemisto on olemassa
mkdir -p "$BACKUP_DIR"
# PostgreSQL:n varmuuskopiointi
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"
# Varmista, että varmuuskopiointi onnistui ja tiedosto ei ole tyhjä
if [ $? -ne 0 ] || [ ! -s "$DUMP_FILE" ]; then
echo "VIRHE: Tietokannan varmuuskopiointi epäonnistui päivänä $DATE" >> "$LOG_FILE"
rm -f "$DUMP_FILE"
exit 1
fi
# Varmuuskopioi salausavain ja ympäristömuuttujat
cp /home/n8nuser/n8n/.env "$BACKUP_DIR/n8n_env_$DATE.bak"
# Varmuuskopioi n8n_data-levy (instanssin asetukset ja asennetut yhteisön solmut)
docker run --rm -v n8n_n8n_data:/data -v "$BACKUP_DIR":/backup alpine \
tar czf /backup/n8n_data_$DATE.tar.gz -C /data .
# Pakkaa tietokantadump
gzip "$DUMP_FILE"
# Säilytä vain viimeisen 7 päivän varmuuskopiot
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 "Varmuuskopiointi valmis: n8n_db_$DATE.sql.gz" >> "$LOG_FILE"
Volyymin nimi n8n_n8n_data johtuu siitä, että Docker Compose lisää volyymille etuliitteeksi projektikansion nimen (n8n). Varmista omasi komennolla docker volume ls.
Määritä skripti suoritettavaksi ja ajoita se cronilla:
chmod +x ~/n8n/backup.sh
crontab -e
Lisää tämä rivi, jotta varmuuskopiointi suoritetaan joka päivä klo 2 aamulla:
0 2 * * * /home/n8nuser/n8n/backup.sh >> /home/n8nuser/backups/backup.log 2>&1
Ulkoisen redundanssin varmistamiseksi kannattaa harkita varmuuskopiokansion synkronointia S3-yhteensopivaan objektitallennuspalveluun rclone- tai aws s3 sync -työkalun avulla.
Vaihe 10: Ota käyttöön perustason tietoturvan vahvistaminen
Määritä palomuuri
Asenna UFW ja salli vain palvelimesi tarvitsemat portit:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
Varmista, että säännöt ovat voimassa:
sudo ufw status verbose
Porttien 22 (SSH), 80 (HTTP) ja 443 (HTTPS) pitäisi näkyä sallittuina. Yksi varoitus: Docker kirjoittaa omat palomuurisäännöt ja ohittaa UFW:n julkaistujen konttiporttien osalta. Portti 5678 pysyy yksityisenä, koska compose-tiedosto sitoo sen osoitteeseen 127.0.0.1, ei UFW:n takia, joten älä koskaan muuta tätä sidontaa osoitteeksi 0.0.0.0.
Poista salasana-autentikointi käytöstä SSH:ssa
Jos käytät SSH-avaimia (kuten sinun pitäisi), poista salasanapohjainen SSH-kirjautuminen kokonaan käytöstä. Varmista ensin, että n8nuser-tili voi kirjautua sisään avaimellasi. Suorita paikalliselta koneeltasi:
ssh-copy-id n8nuser@palvelimesi_ip
Muokkaa sitten SSH-palvelimen asetuksia:
sudo nano /etc/ssh/sshd_config
Aseta seuraavat arvot:
PasswordAuthentication no
PermitRootLogin no
sudo systemctl restart ssh
Monissa Ubuntu-pilvikuva-asennuksissa /etc/ssh/sshd_config.d/ -kansiossa oleva tiedosto (usein 50-cloud-init.conf) asettaa PasswordAuthentication-asetukseksi yes, ja tämä asetus on voimassa, koska sshd käyttää ensimmäistä lukemaansa arvoa. Tarkista, mikä asetus on tosiasiallisesti voimassa:
sudo sshd -T | grep -i passwordauthentication
Komenon tuloksena pitäisi näkyä passwordauthentication no. Jos näin ei ole, muuta arvoa ohitustiedostossa ja käynnistä SSH uudelleen.
Älä sulje nykyistä SSH-istuntoasi, ennen kuin olet varmistanut, että avainpohjainen kirjautuminen toimii uudessa terminaali-ikkunassa.
Rajoita n8n-kirjautumissivun pyyntöjen määrää
Lisää rajoitus hidastamaan n8n-kirjautumispisteeseen kohdistuvia brute-force-hyökkäyksiä.
All-in-One-alusta tehokkaaseen hakukoneoptimointiin
Jokaisen menestyvän yrityksen takana on vahva SEO-kampanja. Mutta kun tarjolla on lukemattomia optimointityökaluja ja -tekniikoita, voi olla vaikea tietää, mistä aloittaa. No, älä pelkää enää, sillä minulla on juuri oikea apu. Esittelen Ranktracker all-in-one -alustan tehokasta SEO:ta varten.
Olemme vihdoin avanneet Ranktrackerin rekisteröinnin täysin ilmaiseksi!
Luo ilmainen tiliTai Kirjaudu sisään omilla tunnuksillasi
**Tärkeää: **limit_req_zone-ohjeen on oltava Nginx-pääasetustiedoston http {} -lohkossa — ei server-lohkossa. Avaa pääasetustiedosto:
sudo nano /etc/nginx/nginx.conf
Lisää tämä rivi olemassa olevaan http {} -lohkoon:
http {
...
limit_req_zone $binary_remote_addr zone=n8n_login:10m rate=5r/m;
...
}
Lisää sitten n8n-sivuston konfiguraatioon (/etc/nginx/sites-available/n8n) tämä location-lohko porttia 443 kuuntelevan server-lohkon sisään (Certbot loi sen vaiheessa 6), olemassa olevan location / -kohdan viereen. Nginx ei siirrä proxy-otsikoita location / -kohdasta, joten ne toistetaan tässä:
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;
}
Lataa Nginx uudelleen, jotta muutokset tulevat voimaan:
sudo nginx -t && sudo systemctl reload nginx
Tämä rajoittaa kunkin IP-osoitteen kirjautumisyritykset noin viiteen minuutissa, ja sallii pienen hetkellisen ylityksen.
Pidä n8n ja PostgreSQL ajan tasalla
Lataa uusimmat kuvat säännöllisesti ja käynnistä palvelut uudelleen:
cd ~/n8n
docker compose pull
docker compose up -d
Docker lataa uusimmat n8nio/n8n- ja postgres-kuvat ja käynnistää uudelleen vain ne kontit, joille on saatavilla uudempi versio.
Tuotantokäytössä kannattaa harkita n8n-kuvan kiinnittämistä tiettyyn versiotunnisteeseen (docker.n8n.io/n8nio/n8n:<versio>, otettu n8n:n julkaisutiedoista) ja päivittää tarkoituksellisesti, jotta rutiinilatauksessa ei koskaan hypätä pääversiota eteenpäin ennen kuin olet lukenut muutospäiväkirjan.
Yleisten ongelmien vianmääritys
n8n-kontti käynnistyy uudelleen jatkuvasti
Tarkista kontin lokit heti, kun uudelleenkäynnistyssilmukka alkaa:
docker compose logs n8n --tail=100
Yleisiä syitä:
- Tietokantayhteyden vika: Varmista, että PostgreSQL toimii oikein komennolla docker compose ps. Tarkista, että .env-tiedostosi POSTGRES_PASSWORD-asetus vastaa sitä, millä tietokanta alustettiin.
- Salausavain puuttuu tai on muuttunut: Jos N8N_ENCRYPTION_KEY-muuttujaa ei ole määritetty tai se on muutettu ensimmäisen ajon jälkeen, n8n ei voi purkaa tallennettuja tunnistetietoja ja kaatuu.
- Riittämätön RAM-muisti: PostgreSQL ja n8n voivat yhdessä käyttää 1–1,5 GB RAM-muistia. Tarkista käytettävissä oleva muisti komennolla `free -h`.
Webhookit eivät toimi
Webhookit edellyttävät, että n8n on saavutettavissa internetistä omalla verkkotunnuksellasi. Varmista:
- Verkkotunnuksesi DNS A-tietue osoittaa VPS:n IP-osoitteeseen: dig n8n.yourdomain.com
- Nginx on käynnissä: sudo systemctl status nginx
- Portti 443 on auki: sudo ufw status
- WEBHOOK_URL-ympäristömuuttuja vastaa tarkalleen julkista verkkotunnustasi, mukaan lukien lopussa oleva kauttaviiva
n8n-editori ei lataudu oikein
Jos visuaalinen editori latautuu, mutta työnkulun työkenttä näkyy tyhjänä tai reaaliaikaiset päivitykset lakkaavat toimimasta, WebSocket-yhteys on katkennut. Tarkista, että Nginx-määrityksissäsi on $http_upgrade-lohko ja että käytät $connection_upgrade-muuttujaa — et kirjaimellista merkkijonoa ”upgrade” — proxy_set_header Connection -rivillä.
SSL-varmennevirheet
Jos Certbot epäonnistuu verkkotunnuksen vahvistusvirheen vuoksi, tarkista, että portti 80 on saavutettavissa internetistä:
curl -I http://n8n.yourdomain.com
Jos pyyntö aikakatkaistaan, VPS-palveluntarjoajasi palomuuri saattaa estää portin 80. Tarkista UFW:n lisäksi pilvipalvelukonsolin palomuurisäännöt.
Johtopäätös
n8n:n itseisännöinti Linux-VPS:llä tarjoaa tuotantokäyttöön valmiin työnkulun automatisointialustan, jossa ei ole suoritusrajoituksia, joka takaa täydellisen tietosuojan ja jonka joustavuus mahdollistaa minkä tahansa tarvitsemasi integraation toteuttamisen. Tässä oppaassa käsitelty asennus — Docker, PostgreSQL, Nginx-käänteisvälityspalvelin, Let’s Encrypt SSL, automatisoidut varmuuskopiot ja tietoturvan vahvistaminen — on sama kokonaisuus, jota käytetään tuotantoympäristöissä, ja se tarjoaa vakaan ja turvallisen perustan, jolle rakentaa.
Toisin kuin minimaalinen Docker-run-komennolla tehty asennus, tämä kokoonpano on suunniteltu kestämään palvelimen uudelleenkäynnistykset, käsittelemään samanaikaisia työnkulkujen suorituksia ja palautumaan sujuvasti vikatilanteista. Käyttäjätunnuksesi on salattu, tiedoistasi otetaan varmuuskopio joka yö, ja kirjautumispäätepistettäsi rajoitetaan brute force -hyökkäysten varalta.
Kun instanssisi on käynnissä, tutustu n8n:n sisäänrakennettuihin solmuihin tietokantoja, API:ita, webhookeja ja tekoälyintegraatioita varten, jotta voit aloittaa työnkulkujesi automatisoinnin välittömästi. Itse isännöity yhteisöfoorumi osoitteessa community.n8n.io on myös erinomainen lähde työnkulkuideoille, solmujen vianmääritykselle ja käyttöönottovinkkeille.

