Language: ro
n8n pe VPS: propria platformă de automatizare fără muncă manuală repetitivă
O solicitare sosește de pe site. n8n validează datele, verifică duplicatele, creează o ofertă, pregătește un răspuns cu AI și îl anunță pe manager în Telegram. O persoană intervine doar când este necesară o decizie, nu pentru a muta date între file de browser.
Mai jos vedem cum funcționează n8n și cum îl instalezi pe un VPS cu Docker Compose, PostgreSQL, HTTPS și execuție izolată a codului.
n8n în șapte pași
Un plan minimal de lansare:
- Creează un VPS și direcționează o subdomenă către el, de exemplu
n8n.example.com. - Instalează Docker și Docker Compose.
- Rulează n8n cu PostgreSQL, un task runner extern și Caddy.
- Deschide interfața prin HTTPS și creează contul proprietarului.
- Conectează Telegram, un CRM, emailul sau orice API extern.
- Configurează tratarea erorilor și perioada de păstrare a datelor de execuție.
- Automatizează backupurile bazei de date, ale datelor și ale cheii de criptare.
Pentru o instalare mică de producție, este rezonabil să începi cu 2 vCPU și 4 GB RAM. 2 GB sunt adesea suficienți pentru testare, dar PostgreSQL, Docker și procesele simultane consumă rapid rezerva rămasă.
Ce este n8n și cum funcționează
n8n este o platformă de automatizare a fluxurilor de lucru. Un workflow este construit din noduri: unul pornește procesul, următoarele preiau și transformă datele, iar ultimul nod execută o acțiune.
Un workflow simplu arată astfel:
Webhook → data validation → CRM → Telegram → website response
Un lanț poate fi declanșat de un webhook, o programare, un email, un mesaj sau un eveniment dintr-un serviciu extern. Între noduri sunt disponibile condiții, bucle, filtre, așteptări și tratarea erorilor.
Unul dintre punctele forte ale n8n este că automatizarea nu se limitează la integration-uri gata făcute. Poți apela orice serviciu cu un API prin HTTP Request, iar logica personalizată poate fi scrisă într-un Code node folosind JavaScript sau Python. Astfel, n8n se situează între un builder no-code simplu și codul personalizat de pe server.
De ce este mai mult decât redirecționarea datelor
n8n este util când un proces trece prin mai multe sisteme și necesită o decizie:
form → validation → duplicate search → AI assessment → manager approval → CRM
Poți păstra o persoană doar în punctul de control. De exemplu, AI pregătește răspunsul, dar mesajul este trimis clientului numai după aprobarea unui angajat.
Cazuri tipice de utilizare:
- vânzări și suport: colectarea solicitărilor, distribuirea leadurilor și crearea ofertelor;
- conținut și AI: redactarea, clasificarea solicitărilor și publicarea după aprobare;
- DevOps: notificări despre întreruperi, webhookuri Git și verificări API;
- operațiuni interne: sincronizarea foilor de calcul, emailului, calendarelor și sistemelor companiei.
O instalare self-hosted îți oferă control asupra procesului și bazei de date, dar nu transformă serviciile externe în servicii locale. Datele trimise către Telegram, CRM sau un model AI cloud părăsesc VPS-ul.
n8n Cloud sau propriul server
| Parametru | n8n Cloud | n8n pe VPS |
|---|---|---|
| Lansare | Nu este necesară configurarea serverului | Sunt necesare domeniu, Docker și HTTPS |
| Actualizări | Gestionate de n8n | Gestionate de proprietar |
| Bază de date și fișiere | În infrastructura serviciului | Pe serverul ales |
| Scalare | Conform planului cloud | Configurată independent |
| Responsabilitate | Mai puțină administrare | Backupurile, securitatea și monitorizarea revin proprietarului |
| Potrivit pentru | Un început rapid fără DevOps | Control, personalizare și procese permanente |
Community Edition poate fi găzduită gratuit și folosită pentru procese personale și interne ale unei companii. Totuși, n8n nu este distribuit sub o licență open-source tradițională, ci sub Sustainable Use License, o licență fair-code. Aceasta permite utilizarea internă și modificarea, dar nu îți permite să instalezi pur și simplu n8n, să adaugi propriul logo și să vinzi accesul ca SaaS independent. Pentru un astfel de produs, termenii licenței trebuie analizați separat.
Cerințele serverului n8n
Încărcarea depinde de volumul datelor, concurență și tipul operațiunilor. Fișierele, listele lungi, Code node-urile și fluxurile AI necesită mai multă memorie decât transmiterea unor payloaduri JSON mici între API-uri.
| Scenariu | Configurație de pornire |
|---|---|
| Teste și workflow-uri personale bazate pe text | 1 vCPU, 2 GB RAM, 20 GB NVMe |
| Instalare mică de producție | 2 vCPU, 4 GB RAM, 25–40 GB NVMe |
| Procese simultane, AI sau fișiere | 4 vCPU, 8 GB RAM sau mai mult |
| Mai multe procese worker în queue mode | Dimensionare după volumul execuțiilor |
SQLite este potrivit pentru învățare și pentru o instalare mică cu o singură instanță. PostgreSQL este mai convenabil în producție: backupurile sunt mai ușoare, iar trecerea ulterioară la queue mode este mai simplă.
Cum instalezi n8n pe un VPS
În acest exemplu folosim Ubuntu 24.04, PostgreSQL, Caddy și un task runner extern. Înlocuiește n8n.example.com și fusul orar cu valorile tale.
1. Configurează DNS-ul și pregătește serverul
Creează un record DNS de tip A care indică spre adresa IPv4 a VPS-ului, apoi conectează-te prin SSH:
ssh root@SERVER_IP
apt update && apt upgrade -y
apt install -y ca-certificates curl ufw opensslInstalează Docker Engine și pluginul Compose din depozitul oficial:
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
cat > /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose versionPermite doar SSH, HTTP și HTTPS:
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enableNu închide sesiunea SSH curentă până nu confirmi că o conexiune nouă funcționează.
2. Creează variabilele de mediu
Pregătește directorul:
mkdir -p /opt/n8n
cd /opt/n8nCreează .env. Comenzile de mai jos generează imediat secrete aleatorii separate pentru PostgreSQL, criptarea n8n și task runner:
cat > .env <<EOF
N8N_VERSION=stable
N8N_HOST=n8n.example.com
GENERIC_TIMEZONE=Europe/Berlin
POSTGRES_DB=n8n
POSTGRES_USER=n8n
POSTGRES_PASSWORD=$(openssl rand -hex 32)
N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)
RUNNERS_AUTH_TOKEN=$(openssl rand -hex 32)
EOF
chmod 600 .envEticheta stable este convenabilă la prima lansare. După verificarea instalării, este mai bine să fixezi o versiune n8n exactă, pentru ca următoarea actualizare a imaginii să nu apară pe neașteptate.
Nu trebuie să pierzi N8N_ENCRYPTION_KEY. n8n folosește această cheie pentru a cripta parolele, tokenurile și alte credențiale stocate. Dacă restaurezi doar PostgreSQL fără cheie, înregistrările vor rămâne în baza de date, dar n8n nu le va putea citi.
3. Creează fișierul Docker Compose
Creează compose.yaml:
services:
postgres:
image: postgres:18-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
PGDATA: /var/lib/postgresql/data
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 10
n8n:
image: docker.n8n.io/n8nio/n8n:${N8N_VERSION}
restart: unless-stopped
environment:
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_HOST: ${N8N_HOST}
N8N_PORT: "5678"
N8N_PROTOCOL: https
N8N_EDITOR_BASE_URL: https://${N8N_HOST}
N8N_WEBHOOK_URL: https://${N8N_HOST}/
N8N_PROXY_HOPS: "1"
GENERIC_TIMEZONE: ${GENERIC_TIMEZONE}
TZ: ${GENERIC_TIMEZONE}
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
N8N_BLOCK_ENV_ACCESS_IN_NODE: "true"
N8N_RUNNERS_MODE: external
N8N_RUNNERS_AUTH_TOKEN: ${RUNNERS_AUTH_TOKEN}
N8N_RUNNERS_BROKER_LISTEN_ADDRESS: 0.0.0.0
EXECUTIONS_DATA_PRUNE: "true"
EXECUTIONS_DATA_MAX_AGE: "168"
EXECUTIONS_DATA_PRUNE_MAX_COUNT: "10000"
volumes:
- n8n_data:/home/node/.n8n
expose:
- "5678"
depends_on:
postgres:
condition: service_healthy
n8n-runner:
image: n8nio/runners:${N8N_VERSION}
restart: unless-stopped
environment:
N8N_RUNNERS_AUTH_TOKEN: ${RUNNERS_AUTH_TOKEN}
N8N_RUNNERS_TASK_BROKER_URI: http://n8n:5679
depends_on:
- n8n
caddy:
image: caddy:2-alpine
restart: unless-stopped
environment:
N8N_HOST: ${N8N_HOST}
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
depends_on:
- n8n
volumes:
postgres_data:
name: n8n_postgres_data
n8n_data:
name: n8n_data
caddy_data:
name: n8n_caddy_data
caddy_config:
name: n8n_caddy_configTask runner-ul extern execută codul separat de procesul principal n8n. Este mai sigur decât modul intern și reduce riscul ca o eroare dintr-un Code node să afecteze editorul și procesarea webhookurilor.
4. Activează HTTPS
Creează Caddyfile:
{$N8N_HOST} {
reverse_proxy n8n:5678
}Caddy va obține automat un certificat TLS dacă DNS-ul indică deja spre VPS și porturile 80 și 443 sunt accesibile. Portul intern 5678 nu este expus pe internet: extern sunt disponibile doar porturile 80 și 443, iar Caddy accesează n8n prin rețeaua Docker.
Variabilele N8N_WEBHOOK_URL și N8N_PROXY_HOPS sunt necesare pentru ca editorul să genereze adrese publice corecte pentru webhookuri și să aibă încredere în headerele unui singur reverse proxy.
5. Pornește n8n
Validează configurația finală și pornește containerele:
docker compose config
docker compose up -d
docker compose ps
docker compose logs --tail=100 n8n caddyDeschide:
https://n8n.example.comCreează contul proprietarului. Nu-i distribui parola colegilor: pentru lucru în echipă, folosește conturi separate și acordă fiecărei persoane doar accesul necesar.
Primul tău workflow util
Un test bun este procesarea unei solicitări de pe un site:
- Adaugă un nod
Webhookcu metodaPOST. - Folosește
Edit Fieldspentru a păstra doar numele, adresa de email și sursa. - Folosește un nod
Ifpentru a respinge solicitările fără datele obligatorii. - Creează o ofertă în CRM sau trimite solicitarea prin
HTTP Request. - Adaugă o notificare Telegram.
- Încheie lanțul cu un nod
Respond to Webhook. - După testare, activează workflow-ul și înlocuiește webhookul de test cu URL-ul de producție.
Acest exemplu verifică imediat domeniul, HTTPS-ul, solicitările primite, credențialele și integrarea externă. Apoi adaugă un Error Workflow separat, care să te anunțe când lanțul principal eșuează.
Securizarea n8n după instalare
O instanță n8n instalată nu este automat și una fiabilă. După lansare, verifică următoarele:
- editorul este accesibil doar prin HTTPS;
.envare permisiuni600și nu este comis în Git;- cheile API externe au numai permisiunile necesare;
- fiecare webhook verifică semnătura sau secretul sursei;
- istoricul execuțiilor este șters automat;
- erorile din workflowurile critice sunt trimise administratorului.
Community nodes sunt instalate ca pachete și pot avea acces la datele workflowurilor și la server. Nu adăuga noduri necunoscute fără să le analizezi. Dacă nu ai nevoie de ele, dezactivează-le cu N8N_COMMUNITY_PACKAGES_ENABLED=false.
Rulează auditul integrat:
docker compose exec n8n n8n auditAcesta ajută la identificarea webhookurilor neprotejate, nodurilor riscante și problemelor cu credențialele, dar nu înlocuiește o verificare manuală.
Istoricul execuțiilor și datele personale
n8n stochează datele de intrare și de ieșire pentru depanare. Împreună cu acestea pot rămâne în baza de date mesaje email, numere de telefon, documente și răspunsuri API.
În configurația de mai sus, execuțiile sunt șterse după șapte zile, iar numărul lor este limitat la 10.000. Pentru procese sensibile, alege perioada de păstrare conform politicii de retenție a datelor și elimină câmpurile inutile înainte de finalizarea workflowului.
Backupuri și actualizări
Pentru recuperare sunt necesare un dump PostgreSQL, volumul n8n_data, fișierele de configurare și .env care conține N8N_ENCRYPTION_KEY. Înainte de copiere, oprește procesoarele și lasă PostgreSQL să ruleze. Astfel apare o scurtă întrerupere a executării workflowurilor:
cd /opt/n8n
mkdir -p backup
docker compose stop n8n n8n-runner
docker compose exec -T postgres sh -c \
'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' \
| gzip > "backup/n8n-db-$(date +%F).sql.gz"
docker run --rm \
-v n8n_data:/source:ro \
-v "$PWD/backup":/backup \
alpine sh -c \
'tar -czf /backup/n8n-data-$(date +%F).tar.gz -C /source .'
tar -czf "backup/n8n-config-$(date +%F).tar.gz" \
.env compose.yaml Caddyfile
docker compose start n8n n8n-runnerArhiva care conține .env include secrete: cripteaz-o și stocheaz-o în afara VPS-ului. Verifică periodic backupul efectuând o restaurare de test.
Înainte de actualizare, fă un backup și citește informațiile despre versiune:
cd /opt/n8n
docker compose pull
docker compose up -d
docker compose psTask runner-ul și containerul principal trebuie să folosească aceeași etichetă de versiune.
Când devine necesară scalarea
Nu începe cu Redis și mai mulți workeri înainte să existe o încărcare reală. O singură instanță cu PostgreSQL este mai ușor de întreținut și acoperă de obicei procesele interne mici.
Queue mode devine necesar când sarcinile lungi întârzie webhookurile, multe workflowuri pornesc simultan sau procesarea fișierelor consumă regulat toată memoria disponibilă. În această configurație, instanța principală primește evenimentele, Redis distribuie joburile, iar workerii le execută în paralel. Toate componentele trebuie să se conecteze la aceeași bază PostgreSQL și să folosească aceeași N8N_ENCRYPTION_KEY.
Ce VPS să alegi pentru n8n
Pentru n8n, PostgreSQL, Caddy și task runner împreună, este rezonabil să începi cu 2 vCPU, 4 GB RAM și un disc NVMe. Pe tropic.host, planul Light corespunde acestei configurații: 2 vCPU, 4 GB RAM și 25 GB NVMe. Este suficient pentru primele workflowuri de producție fără procesare intensă a fișierelor.
Pentru documente, seturi mari de date și multe workflowuri AI simultane, 8 GB RAM sunt o alegere mai bună. Și o rețea stabilă este importantă: webhookurile, callbackurile OAuth și joburile programate trebuie să rămână disponibile permanent.
Concluzie
n8n transformă operațiunile repetitive în fluxuri vizuale clare: nodurile gata făcute grăbesc lansarea, HTTP Request conectează aproape orice API, iar un Code node îți permite să adaugi propria logică.
Versiunea self-hosted îți oferă control asupra serverului și bazei de date, dar necesită HTTPS, chei cu permisiuni limitate, curățarea istoricului și backupuri verificate. Păstrează N8N_ENCRYPTION_KEY împreună cu PostgreSQL: fără ea, credențialele restaurate nu pot fi decriptate.
FAQ
Poate fi folosit n8n gratuit?
Da. Community Edition poate fi găzduită gratuit pe propriul server pentru procese personale și interne. Revânzarea n8n găzduit ca SaaS independent este restricționată de licența fair-code.
Se poate instala n8n fără domeniu?
Pentru testare locală, da. Pentru webhookuri publice și OAuth, este mai bine să folosești un domeniu și HTTPS.
De cât RAM are nevoie n8n?
Workflowurile personale simple rulează adesea cu 2 GB RAM. Pentru n8n cu PostgreSQL, Caddy și task runner, 4 GB sunt mai potriviți; fișierele și execuțiile simultane pot necesita 8 GB sau mai mult.
Toate datele rămân în VPS?
Doar datele pe care workflowul nu le trimite în altă parte. Baza de date și istoricul execuțiilor sunt stocate pe VPS, dar nodurile Telegram, CRM sau modelele AI externe trimit datele selectate către serviciul corespunzător.
Ce trebuie inclus într-un backup n8n?
Un dump PostgreSQL, volumul n8n_data, compose.yaml, Caddyfile și .env care conține N8N_ENCRYPTION_KEY. Stochează backupul în afara VPS-ului, criptat, și verifică-l prin restaurare.
