Hosting InsightsGhid practic Acasa > Blog > Cum instalezi n8n cu AI pe un VPS Ubuntu

Cum instalezi n8n cu AI pe un VPS Ubuntu

Instalează n8n pe un VPS Ubuntu cu Docker Compose, PostgreSQL și HTTPS, apoi creează prima automatizare AI. Tutorial cu comenzi, securitate și backup.

6 min lectură

Cum instalezi n8n cu AI pe un VPS Ubuntu
DistribuieLinkedInXFacebook

Automatizarea sarcinilor repetitive poate economisi timp unei afaceri: de la pregătirea răspunsurilor pentru clienți până la organizarea solicitărilor sau generarea rapoartelor. Cu n8n poți crea fluxuri care conectează aplicații, servicii web și modele de inteligență artificială. În acest tutorial Hosteaza.Com instalăm n8n pe un VPS Ubuntu, folosind Docker Compose, PostgreSQL și HTTPS, apoi construim prima automatizare AI. Modelul lingvistic va fi accesat printr-un API extern, deci nu este obligatoriu un server cu GPU.

1. Ce îți trebuie pentru instalarea n8n pe VPS?

Pregătește un server Ubuntu 24.04 LTS sau 22.04 LTS cu acces SSH și privilegii sudo, un domeniu sau subdomeniu și o adresă IP publică. Pentru un proiect mic, cu modele AI accesate prin API, poți porni orientativ de la 2 vCPU și 4 GB RAM, apoi monitorizezi consumul. Această configurație nu garantează performanța unui anumit număr de execuții: fluxurile, fișierele procesate și concurența pot crește semnificativ necesarul de resurse.

Un server VPS oferă un mediu în care poți instala și administra aplicații proprii. Pentru automatizări complexe ori volume mari de date, consultă și oferta de servere dedicate. Verifică resursele pachetului ales înainte de instalare.

2. Instalează Docker Engine și Docker Compose pe Ubuntu

Conectează-te prin SSH, actualizează sistemul și instalează Docker din depozitul oficial. Comenzile următoare sunt pentru Ubuntu; dacă Docker există deja, verifică instalarea înainte de a modifica depozitele:


sudo apt update
sudo apt install -y ca-certificates curl openssl
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
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<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
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker --version
sudo docker compose version

Documentația de referință este Docker Engine pentru Ubuntu. Nu adăuga utilizatori neautorizați în grupul docker: accesul la acesta poate echivala cu privilegii administrative asupra serverului.

3. Configurează domeniul, HTTPS și fișierele n8n

În zona DNS a domeniului, creează o înregistrare A pentru automatizari.exemplu.ro, orientată către IP-ul VPS-ului. Înlocuiește acest nume cu subdomeniul propriu în toate exemplele. Permite traficul către porturile 80 și 443 din firewall și păstrează accesul SSH permis numai administratorilor. Dacă domeniul are înregistrare AAAA, aceasta trebuie să indice un IPv6 funcțional.

Vom folosi Caddy drept proxy invers, deoarece poate obține și reînnoi automat certificatele TLS pentru un domeniu public. Portul intern n8n, 5678, nu va fi publicat direct pe internet.

Creează directorul proiectului și două secrete aleatoare pentru baza de date și criptarea credențialelor n8n:


sudo mkdir -p /opt/n8n
sudo chown "$USER":"$USER" /opt/n8n
cd /opt/n8n
umask 077
printf 'POSTGRES_PASSWORD=%s\nN8N_ENCRYPTION_KEY=%s\n' \
  "$(openssl rand -hex 24)" "$(openssl rand -hex 32)" > .env
chmod 600 .env

Creează fișierul Caddyfile folosind nano Caddyfile, apoi introdu următorul conținut și salvează:


automatizari.exemplu.ro {
    reverse_proxy n8n:5678
}

În același director creează fișierul compose.yaml folosind nano compose.yaml:


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

  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      DB_TYPE: postgresdb
      DB_POSTGRESDB_HOST: postgres
      DB_POSTGRESDB_DATABASE: n8n
      DB_POSTGRESDB_USER: n8n
      DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
      N8N_HOST: automatizari.exemplu.ro
      N8N_PROTOCOL: https
      N8N_EDITOR_BASE_URL: https://automatizari.exemplu.ro/
      N8N_WEBHOOK_URL: https://automatizari.exemplu.ro/
      N8N_PROXY_HOPS: '1'
      N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: 'true'
      GENERIC_TIMEZONE: Europe/Bucharest
      TZ: Europe/Bucharest
    volumes:
      - n8n_data:/home/node/.n8n

  caddy:
    image: caddy:2
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
      - caddy_config:/config
    depends_on:
      - n8n

volumes:
  postgres_data:
  n8n_data:
  caddy_data:
  caddy_config:

Important: în fișierul YAML înlocuiește cele trei apariții ale subdomeniului de exemplu; în Caddyfile înlocuiește încă una. Variabila N8N_WEBHOOK_URL este folosită de versiunile recente n8n pentru adresele webhook din spatele unui proxy. PostgreSQL și n8n comunică numai în rețeaua internă Docker. Pentru producție, testează și fixează etichetele imaginilor la versiuni stabile cunoscute, în loc să actualizezi necontrolat eticheta latest.

4. Pornește n8n și verifică accesul securizat

Din directorul proiectului, validează configurația și pornește serviciile:


sudo docker compose config --quiet
sudo docker compose up -d
sudo docker compose ps
sudo docker compose logs --tail=50 n8n

Accesează https://automatizari.exemplu.ro, folosind subdomeniul real, și creează contul inițial de administrator. Dacă certificatul HTTPS nu apare, verifică DNS-ul, porturile 80 și 443 și jurnalele Caddy cu sudo docker compose logs caddy. Activează autentificarea în doi pași din cont și nu distribui accesul administrativ inutil.

5. Creează prima automatizare AI pentru afacerea ta

Vom genera un răspuns propus pentru o solicitare comercială, fără trimitere automată către client. În interfața n8n creează un flux nou și adaugă nodurile Manual Trigger, Edit Fields (Set) și Basic LLM Chain. În Edit Fields adaugă un câmp text numit cerere, cu valoarea: Clientul întreabă ce informații trebuie să ofere pentru alegerea unui VPS.

În Basic LLM Chain selectează Define below pentru prompt și folosește expresia:


{{ $json.cerere }}

Adaugă nodul secundar OpenAI Chat Model la intrarea de model a lanțului. Creează acreditările folosind cheia API din contul furnizorului AI, apoi selectează un model disponibil. Poți adăuga și o instrucțiune de sistem prin care soliciți un răspuns concis, politicos, în limba română și fără promisiuni comerciale neverificate.

Apasă Execute Workflow și examinează răspunsul generat. După verificare poți extinde fluxul cu un formular, un serviciu de e-mail sau o notificare internă. Pentru mesaje trimise clienților, recomandăm aprobarea umană înainte de expediere. Atenție: dacă folosești un API AI extern, datele transmise părăsesc VPS-ul și pot exista costuri separate, în funcție de furnizor.

6. Securitate, backup și extinderea automatizărilor

Păstrează fișierul .env privat, nu publica cheile API în fluxuri și limitează accesul la aplicație. Efectuează backup pentru PostgreSQL, volumul n8n_data, configurația Docker și cheia de criptare. Un export al fluxurilor, fără baza de date și cheia de criptare, nu reprezintă un backup complet. Testează periodic restaurarea și păstrează copii într-o locație separată de VPS.

Pentru întreținere, verifică versiunile n8n și notele de lansare înainte de actualizări. Monitorizează spațiul ocupat de istoricul execuțiilor; n8n permite eliminarea periodică a datelor vechi. Documentația oficială explică instalarea prin Docker Compose, backupul și restaurarea și configurarea Basic LLM Chain.

Un VPS poate reprezenta punctul de plecare pentru automatizări AI care apelează modele externe. Dacă numărul execuțiilor, baza de date sau aplicațiile conectate cresc, analizează resurse suplimentare sau un server dedicat. Alege infrastructura după consumul măsurat, nu doar după numărul de automatizări configurate.

Partenerii noștri

Construim încredere alături de cei mai importanți parteneri din industrie.