SSD Nodes Learn
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-07-25

VPSలో n8n సెల్ఫ్-హోస్ట్: Docker + HTTPS సెటప్

Docker Compose, Postgres మరియు HTTPS రివర్స్ ప్రాక్సీతో VPSలో n8n నడపడం నేర్చుకోండి. WEBHOOK_URL మరియు encryption-key సమస్యలు, ప్రతి error string వివరాలు ఉన్నాయి.

మీరు నిర్మించేది ఏమిటి

n8n ఒక వర్క్‌ఫ్లో ఆటోమేషన్ సాధనం: ఇది ఒక విజువల్ ఎడిటర్. ఒక ట్రిగ్గర్ — వెబ్‌హుక్, షెడ్యూల్, ఫారమ్ సమర్పణ — APIలను కాల్ చేసే, డేటాను పునఃరూపకల్పన చేసే మరియు ఇతర వ్యవస్థలకు రాసే నోడ్‌ల గొలుసును ప్రేరేపిస్తుంది. ఇది AI-ఏజెంట్ వర్క్‌ఫ్లోల కోసం డిఫాల్ట్ అతుకుగా మారింది. దీనికి కారణం, మీరు ఒక సర్వీస్ రాయకుండానే ఇది ప్రతి మోడల్ ప్రొవైడర్‌తో మరియు డేటాబేస్‌తో మాట్లాడుతుంది. ఒక docker run రెండు నిమిషాల్లో పని చేసే ఎడిటర్‌ను పొందుతుంది. ఈ గైడ్ మిగిలిన తొంభై శాతం గురించి: డిఫాల్ట్ SQLite ఫైల్ బదులు Postgresతో దాన్ని మన్నికైనదిగా చేయడం, HTTPS ద్వారా చేరుకోగలిగేలా చేయడం, మరియు — దాదాపు ప్రతి ఒక్కరూ తప్పు చేసే భాగం — వెబ్‌హుక్‌లు బయటి ప్రపంచం నుండి వాస్తవంగా చేరుకోగలిగే URLను అందించేలా చేయడం.

పూర్తయిన స్టాక్ ఒకే Docker నెట్‌వర్క్‌లో రెండు కంటైనర్‌లు: n8n స్వయంగా, మరియు దాని వర్క్‌ఫ్లోలు మరియు ఆధారాలను కలిగి ఉండే Postgres డేటాబేస్. హోస్ట్‌లోని రివర్స్ ప్రాక్సీ TLSను అంతం చేస్తుంది. అది n8nకు localhostలో ఫార్వర్డ్ చేస్తుంది. కాబట్టి ఆ ప్రాక్సీ ద్వారా తప్ప ఏదీ ఇంటర్నెట్‌కు ఎదురవుదును. ఇది 2026 సెల్ఫ్-హోస్టింగ్ షార్ట్‌లిస్ట్లోని ఇతర సర్వీసుల పక్కన ఉంటుంది.

ముందస్తు అవసరాలు, మరియు వాస్తవ పరిమితులు

మీకు కనీసం 1 GB RAMతో ఒక VPS అవసరం; వర్క్‌ఫ్లోలు వాస్తవ పనిని చేయడం ప్రారంభించినప్పుడు 2 GBకి ప్రణాళిక చేయండి. ఎందుకంటే ఎగ్జిక్యూషన్‌లు మరియు Node.js రన్‌టైమ్ మెమరీని వినియోగిస్తాయి. రన్ మధ్యలో కంటైనర్‌ను ఆపివేసే అవుట్-ఆఫ్-మెమరీ కిల్లర్ దానిని తెలుసుకోవడానికి ఒక చెత్త మార్గం. ప్రారంభానికి ఒకే vCPU సరిపోతుంది.

మీకు ఒక డొమైన్ లేదా సబ్‌డొమైన్ — ఉదాహరణకు n8n.example.com — అవసరం. దానికి VPS పబ్లిక్ IPని సూచించే A రికార్డ్ ఉండాలి. మీరు సర్టిఫికేట్ అభ్యర్థించే ముందు అది పరిష్కరించబడాలి. పోర్టులు 80 మరియు 443 ప్రాక్సీకి తెరిచి ఉండాలి; n8n యొక్క స్వంత పోర్టు 5678 ఇంటర్నెట్‌కు ఎదురుగా ఉండకూడదు. మీకు Docker Engine మరియు Compose ప్లగిన్ అవసరం; docker compose version అనేది docker: 'compose' is not a docker commandతో ఎర్రర్ ఇస్తే మీ వద్ద పాత స్టాండ్‌ఎలోన్ బైనరీ ఉంది, మరియు ప్లగిన్ sudo apt install docker-compose-plugin.

SQLite పరీక్షకు సరిపోతుంది, మీరు ఆధారపడే దేనికైనా Postgres వాడండి

n8n యొక్క డిఫాల్ట్ డేటాబేస్ /home/node/.n8n/database.sqlite వద్ద ఉన్న SQLite ఫైల్. కేవలం పరీక్ష కోసం ఇది సరిపోతుంది — మీరు వాల్యూమ్‌ను మౌంట్ చేయకపోతే, మొదటి కంటైనర్ రీక్రియేట్‌పై అది పోతుంది, అదే ఒక పాఠం. Postgresకు మారాల్సిన కారణం వేగం కాదు; SQLite ఒకే రైటర్ లాక్‌ను కలిగి ఉంటుంది, కాబట్టి ఒకేసారి అనేక వర్క్‌ఫ్లోలను నడుపుతున్న ఇన్‌స్టెన్స్, లేదా మీరు చివరికి కావాల్సిన క్యూ మోడ్, కాంకరెన్సీ కింద SQLITE_BUSY: database is locked ను విసిరివేస్తుంది. Postgresకు ఆ పరిమితి లేదు, pg_dump తో శుభ్రంగా బ్యాకప్ అవుతుంది, మరియు మీరు ఆధారపడే సర్వర్ కోసం n8n యొక్క సొంత డాక్స్ దేనిని ఊహిస్తాయో అది ఇదే. తర్వాత మారడం అంటే డేటాను మాన్యువల్‌గా మైగ్రేట్ చేయడం అర్థం, కాబట్టి ఈ బాక్స్ ముఖ్యమైనదైతే, Postgresతోనే ప్రారంభించండి.

DNS మరియు ఫైర్‌వాల్

ముందుగా రికార్డ్‌ను సెట్ చేయండి మరియు పోర్ట్‌లను తెరవండి. దీనివల్ల తర్వాత సర్టిఫికేట్ దశ పరిష్కరించని పేరు వద్ద విఫలం కాదు.

dig +short n8n.example.com
curl -s ifconfig.me
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow OpenSSH
sudo ufw enable

5678 ను తెరవవద్దు. compose ఫైల్ n8n ను 127.0.0.1:5678 కు బైండ్ చేస్తుంది. కాబట్టి హోస్ట్ యొక్క రివర్స్ ప్రాక్సీ మాత్రమే దానిని చేరుకోగలదు. ఒక ufw allow 5678 ఆ వేరుపడటాన్ని రద్దు చేస్తుంది.

Compose ఫైల్

ఒక పని డైరెక్టరీ మరియు docker-compose.yml సృష్టించండి. ఇది మొత్తం స్టాక్ — రెండు సర్వీసులు, ఒక ప్రైవేట్ నెట్‌వర్క్, రెండు నేమ్‌డ్ వాల్యూమ్‌లు.

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

  n8n:
    image: docker.n8n.io/n8nio/n8n:2.29.10
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - N8N_HOST=n8n.example.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.example.com/
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - N8N_PROXY_HOPS=1
      - GENERIC_TIMEZONE=Europe/London
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - n8n_net
    depends_on:
      postgres:
        condition: service_healthy

volumes:
  postgres_data:
  n8n_data:

networks:
  n8n_net:

కొన్ని నిర్ణయాలను స్పష్టంగా పేర్కొనడం విలువైనది. DB_POSTGRESDB_HOST=postgres అనేది సర్వీస్ పేరు, దీన్ని Docker షేర్డ్ నెట్‌వర్క్‌లో పరిష్కరిస్తుంది — ఇది localhost కాదు, n8n కంటైనర్ లోపల అది n8n స్వంతాన్ని సూచిస్తుంది. depends_on తో పాటు condition: service_healthy ఉండటం వల్ల n8n బూట్ సమయంలో Postgresతో పోటీపడకుండా ఆగిపోతుంది; ఇది లేకపోతే n8n ప్రారంభమై, డేటాబేస్ కనుగొనక, నిష్క్రమిస్తుంది. /home/node/.n8n వద్ద ఉన్న నేమ్‌డ్ వాల్యూమ్ n8n_data ఎన్‌క్రిప్షన్ కీని మరియు SQLiteలో డేటాబేస్‌ను నిలుపుతుంది — మీరు కోల్పోకూడని ఏకైక డైరెక్టరీ ఇది. ఇమేజ్‌ను సరైన వెర్షన్‌కు నిర్ణయించండి, latest ను ఎప్పుడూ ఉపయోగించవద్దు; కారణాలు కింద ఉన్న అప్‌గ్రేడ్ విభాగంలో ఉన్నాయి.

రహస్యాల ఫైలు

పాస్‌వర్డ్‌లను ఎప్పుడూ compose ఫైల్‌లో ఉంచవద్దు. దాని పక్కన ఉన్న .env ఫైల్‌లో ఉంచు. Compose ఆ ఫైల్‌ను స్వయంచాలకంగా చదువుతుంది. వాటిని నిజంగా యాదృచ్ఛికంగా ఉండేలా సృష్టించు.

printf 'POSTGRES_PASSWORD=%s\n'  "$(openssl rand -hex 24)" >  .env
printf 'N8N_ENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" >> .env
chmod 600 .env

N8N_ENCRYPTION_KEY ఇక్కడ అత్యంత ముఖ్యమైన స్ట్రింగ్. ప్రతి నిల్వ ఉన్న ఆధారపు సంఖ్య దీనితోనే ఎన్‌క్రిప్ట్ అవుతుంది. n8n ఒకటి సృష్టించనివ్వకుండా దాన్ని స్పష్టంగా సెట్ చేయి. నీవు సృష్టించిన విలువను నీవు రాసి పెట్టుకోవచ్చు, తిరిగి పునరుద్ధరించవచ్చు. n8n ఈ కీతో తన మొదటి ఆధారపు సంఖ్యను ఎన్‌క్రిప్ట్ చేసిన తర్వాత, దాన్ని మార్చడం వల్ల ప్రతి ఆధారపు సంఖ్య డీక్రిప్ట్ కాని స్థితికి చేరుతుంది — కాబట్టి దాన్ని ఇప్పుడు ఒకసారి సెట్ చేయి, ఆ వరుసను మళ్లీ తాకకు.

వెబ్‌హుక్‌లు పనిచేస్తాయో లేదో నిర్ణయించే env వేరియబుల్స్

నాలుగు వేరియబుల్స్ n8n బాహ్య ప్రపంచానికి తనను తాను ఎలా పరిచయం చేసుకుంటుందో నియంత్రిస్తాయి, వీటిని తప్పుగా సెట్ చేయడం n8n అత్యధిక సపోర్ట్ ప్రశ్నగా నిలుస్తోంది.

  • N8N_HOST అనేది పబ్లిక్ హోస్ట్‌నేమ్, n8n.example.com. ప్రాక్సీ వెనుక దీన్ని డిఫాల్ట్ localhost వద్దే వదిలేస్తే, ఎడిటర్ మీ బ్రౌజర్‌లో localhost నుండి దాని సొంత APIని లోడ్ చేయడానికి ప్రయత్నిస్తుంది, అది విఫలమవుతుంది.
  • N8N_PROTOCOL=https n8n కి TLS ద్వారా అందించబడుతోందని చెబుతుంది, కాబట్టి అది దాని సెషన్ కుకీని Secure గా గుర్తిస్తుంది మరియు https:// URLలను నిర్మిస్తుంది.
  • N8N_PORT=5678 అనేది n8n కంటైనర్ లోపల వింటున్న పోర్ట్. అది పబ్లిక్ పోర్ట్ కాదు; ప్రాక్సీ 443 ని కలిగి ఉంటుంది.
  • WEBHOOK_URL=https://n8n.example.com/ మిమ్మల్ని ఇబ్బందికి గురిచేసేది. n8n ఈ విలువల నుండి నిర్మించి, మీరు Stripe, GitHub లేదా ఏ బాహ్య కాలర్‌లోనైనా పేస్ట్ చేసే వెబ్‌హుక్ చిరునామాలను ప్రింట్ చేస్తుంది. అది సెట్ చేయబడకపోయినా లేదా తప్పుగా ఉన్నా, n8n N8N_HOST:N8N_PORT కు తిరుగుతుంది మరియు మీకు https://n8n.example.com:5678/webhook/... ఇస్తుంది లేదా, మరింత చెత్తగా, http://localhost:5678/webhook/... ఇస్తుంది — ఎలాంటి ఎర్రర్ లేకుండా ప్రింట్ అవుతుంది, నమ్మదగినట్లు కనిపిస్తుంది, మరియు ఇంటర్నెట్ నుండి చేరుకోలేనిదిగా ఉంటుంది, కాబట్టి కాలర్ అభ్యర్థనలు నిశ్శబ్దంగా ఎప్పటికీ చేరవు. దీన్ని ఖచ్చితమైన పబ్లిక్ బేస్ URLకి ట్రైలింగ్ స్లాష్‌తో సహా సెట్ చేయండి, తర్వాత వెబ్‌హుక్ నోడ్ పోర్ట్ లేని URLను చూపిస్తుందని నిర్ధారించుకోండి.

N8N_PROXY_HOPS=1 n8n యొక్క Express సర్వర్‌కు దాని ముందు ఒక ప్రాక్సీని విశ్వసించమని చెబుతుంది, కాబట్టి రేట్-లిమిటింగ్ మరియు క్లయింట్ IPని చదివే ఏ ఫీచరైనా ప్రాక్సీ చిరునామా కాకుండా నిజమైన చిరునామాను చూస్తుంది. ఇక్కడ మీరు ఉద్దేశపూర్వకంగా సెట్ చేయని ఒక వేరియబుల్ N8N_RUNNERS_ENABLED: టాస్క్ రన్నర్‌లు — n8n వేరే సాండ్‌బాక్స్‌డ్ ప్రాసెస్‌లో Code-node లాజిక్‌ను అమలు చేయడం — 1.69 నుండి డిఫాల్ట్‌గా ఉన్నాయి మరియు ఈ గైడ్ పిన్ చేసే 2.x లైన్ నుండి తప్పనిసరి, కాబట్టి పాత ఆప్ట్-ఇన్ డిప్రికేట్ చేయబడింది. దీన్ని ఇప్పుడు సెట్ చేస్తే n8n దాన్ని తీసివేయమని చెబుతూ కేవలం ఒక నోటీస్‌ను లాగ్ చేస్తుంది.

మొదటి ప్రారంభం

docker compose up -d
docker compose ps
docker compose logs -f n8n

సజావుగా జరిగిన మొదటి బూట్ Editor is now accessible via: లైన్‌తో ముగుస్తుంది, దాని పైన n8n ready on ..., port 5678 లైన్ ఉంటుంది. docker compose ps రెండు కంటైనర్‌లను Up చూపించాలి, వీటిలో postgres అని (healthy) గుర్తించబడి ఉంటుంది. n8n ఒక Restarting లూప్‌లో చిక్కుకుంటే, లాగ్‌లను చదవండి — ఇది దాదాపు ఎల్లప్పుడూ కింద పేర్కొన్న డేటాబేస్ కనెక్షన్ లేదా వాల్యూమ్ అనుమతుల సమస్య అవుతుంది.

రివర్స్ ప్రాక్సీతో TLS

n8n స్వయంగా 5678 పోర్టుపై సాధారణ HTTPని ఉపయోగిస్తుంది; దాని ముందు ఉన్న ఒక వ్యవస్థ HTTPSని ముగిస్తుంది. రెండు స్పష్టమైన ఎంపికలు ఉన్నాయి.

మీరు ఇప్పటికే అనేక కంటైనర్‌లను నడుపుతుంటే, n8nని కొన్ని లేబుల్‌లతో TLS సర్టిఫికేట్‌లను స్వయంచాలకంగా జారీ చేసే ట్రాఫిక్ రివర్స్ ప్రాక్సీ వెనుక ఉంచండి — ట్రాఫిక్ మీ కోసం సర్టిఫికేట్‌ను అభ్యర్థిస్తుంది మరియు నవీకరిస్తుంది.

ఇది ఆ సర్వర్‌లో ఉన్న ఏకైక యాప్ అయితే, Let's Encrypt సర్టిఫికేట్‌తో ఒక nginx వర్చువల్ హోస్ట్ సరళంగా ఉంటుంది. సర్టిఫికేట్ పొందడానికి Ubuntu 24.04 కోసం Certbot మరియు nginx TLS సెటప్ ఉపయోగించండి, తర్వాత ఈ సర్వర్ బ్లాక్:

server {
    listen 443 ssl;
    server_name n8n.example.com;

    ssl_certificate     /etc/letsencrypt/live/n8n.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 3600;
        client_max_body_size 16m;
    }
}

Upgrade మరియు Connection "upgrade" హెడర్‌లు ఐచ్ఛికం కావు. n8n ఎడిటర్‌కు WebSocket ద్వారా ప్రత్యక్ష ఎగ్జిక్యూషన్ అప్‌డేట్‌లను పంపుతుంది, మరియు ఆ రెండు లైన్‌లు లేకుంటే లాగిన్ పేజీ లోడ్ అవుతుంది మరియు కనెక్షన్ కోల్పోయిన బ్యానర్‌తో అక్కడే నిలిచిపోతుంది. proxy_read_timeout 3600 సుదీర్ఘకాలం నడిచే ఎగ్జిక్యూషన్‌లు nginx యొక్క డిఫాల్ట్ 60 సెకన్ల వద్ద కట్ అవ్వకుండా కాపాడుతుంది. X-Forwarded-Proto $scheme హెడర్ N8N_PROXY_HOPS=1కి సహచరం: ప్రాక్సీ సాధారణ HTTP ద్వారా చేరుకున్నప్పటికీ, అసలు అభ్యర్థన HTTPS అని అది n8nకి చెబుతుంది, తద్వారా n8n కనెక్షన్ అసురక్షితంగా ఉందని భావించి దాని స్వంత కుకీని తిరస్కరించదు.

మీ మొదటి వర్క్‌ఫ్లో, దాన్ని వాస్తవంగా మార్చడానికి

https://n8n.example.com/ ను తెరవండి, యజమాని ఖాతాను సృష్టించండి (తదుపరి విభాగం), మరియు పథం సరిగా పనిచేస్తుందని రుజువుచేసే అతి చిన్న వర్క్‌ఫ్లోను నిర్మించండి: లోపలకు ఒక వెబ్‌హుక్, ఒక HTTP కాల్, బయటకు ఒక స్పందన.

  1. ఒక Webhook నోడ్‌ను జోడించండి. పద్ధతిని POST గా మరియు పథాన్ని hello లాగా అమర్చండి. అది రెండు URL లను చూపుతుంది, ఒక Test URL మరియు ఒక Production URL — "నా వెబ్‌హుక్ పనిచేయడం లేదు" అనే ఫిర్యాదులకు సగం మూలం ఇదే. Test URL ఒకే ఒక కాల్‌కు స్పందిస్తుంది, మరియు మీరు Listen for test event క్లిక్ చేసినంత సేపు మాత్రమే; తర్వాత అది గడువు ముగుస్తుంది. Production URL వర్క్‌ఫ్లో Active గా ఉన్నప్పుడు ఎప్పుడైనా స్పందిస్తుంది.
  2. దాని తర్వాత ఒక HTTP Request నోడ్‌ను జోడించండి, దాన్ని ఏదైనా పబ్లిక్ JSON API వైపు చూపండి — https://api.github.com/zen కు ఒక GET ఒక వాక్య స్ట్రింగ్‌ను అందిస్తుంది, అది సరిపోతుంది.
  3. ఒక Respond to Webhook నోడ్‌ను జోడించండి, మరియు కాలర్‌కు HTTP నోడ్ అవుట్‌పుట్ తిరిగి లభించేలా Webhook నోడ్ యొక్క Respond ఎంపికను "Using Respond to Webhook node" గా అమర్చండి.
  4. వర్క్‌ఫ్లోను Active గా మార్చండి (పైన కుడి వైపు) మరియు దాన్ని కాల్ చేయండి: curl -X POST https://n8n.example.com/webhook/hello. మీకు ఆ zen వాక్యం తిరిగి లభించాలి — లోపలకు POST, API కాల్, బయటకు స్పందన, ఇది చాలా వాస్తవ ఆటోమేషన్‌ల ఆకారం.

ఒక షెడ్యూల్ చేయబడిన వేరియంట్ Webhook నోడ్ స్థానంలో Schedule Trigger ను ఉంచుతుంది మరియు దాని స్థానంలో ఒక మోడల్ ఎండ్‌పాయింట్‌ను కాల్ చేస్తుంది — అదే VPS పై నడుస్తున్న Ollama నుండి ఒక స్వయం-హోస్ట్ చేసినది రాత్రిపూట సారాంశకర్తను నిర్మించడానికి ఒక చక్కని మార్గం.

వినియోగదారు నిర్వహణ, basic auth కాదు

పాత n8n గైడ్‌లు N8N_BASIC_AUTH_ACTIVE=true ను సెట్ చేయమని చెబుతాయి. ఆ వేరియబుల్స్ n8n 1.0లో తీసివేయబడ్డాయి. అవి ఇప్పుడు ఏమీ చేయవు. ప్రస్తుత ప్రామాణీకరణ అంటే ఓనర్ ఖాతా: మీరు మొదటిసారి ఎడిటర్‌ను లోడ్ చేసినప్పుడు, n8n మిమ్మల్ని ఒక ఇమెయిల్-మరియు-పాస్‌వర్డ్ ఓనర్‌ను సృష్టించమని కోరుతుంది. ఆ గేట్ తప్పనిసరి — అనామక మోడ్ అనేది లేదు. ఎవరికైనా URL అందించడానికి ముందు, మొదటి బూట్ తర్వాత వెంటనే దాన్ని సృష్టించండి: docker compose up మరియు ఆ మొదటి ఫారమ్ సమర్పణ మధ్య, ఎవరు ముందుగా చేరుకుంటే వారు ఆ ఇన్‌స్టెన్స్‌ను స్వంతం చేసుకోవచ్చు. దాని పైన ఒక reverse-proxy basic-auth పొర ఒక సహేతుకమైన అదనపు లాక్, కానీ అది రెండవ ఫ్యాక్టర్, నిజమైన ప్రామాణీకరణ కాదు.

బ్యాకప్‌లు: ముందు ఎన్‌క్రిప్షన్ కీ, తర్వాత డేటాబేస్

రెండు పనులకు బ్యాకప్ అవసరం. అవి రెండూ ఒకేలా భర్తీ చేయదగినవి కావు.

N8N_ENCRYPTION_KEY. n8n లో మీరు నిల్వ చేసే ప్రతి ఆధారాలు — API టోకెన్‌లు, డేటాబేస్ పాస్‌వర్డ్‌లు, OAuth రహస్యాలు — ఈ కీతో ఎన్‌క్రిప్ట్ చేయబడి నిల్వ ఉంటాయి. దీని లేకుండా Postgres లోని వర్క్‌ఫ్లోలు పనికిరావు. వేరే కీతో కొత్త సర్వర్‌లో డేటాబేస్‌ను పునరుద్ధరిస్తే n8n ఒక్క ఆధారాన్ని కూడా డీక్రిప్ట్ చేయలేదు. దీనికి పునరుద్ధారణ లేదు, రీసెట్ లేదు. మీ .env ఫైల్ ఈ కీని కలిగి ఉంటుంది. దాన్ని సర్వర్ వెలుపల ఎక్కడైనా కాపీ చేయండి — పాస్‌వర్డ్ మేనేజర్ ఎంట్రీ అనేది అత్యుత్తమం — మీరు దాన్ని సృష్టించిన రోజే చేయండి. నిజంగా ముఖ్యమైనది ఈ బ్యాకపే.

Postgres డేటాబేస్, వర్క్‌ఫ్లోలు, ఎగ్జిక్యూషన్ హిస్టరీ మరియు ఎన్‌క్రిప్ట్ చేసిన ఆధారాల కోసం:

docker compose exec -T postgres pg_dump -U n8n -d n8n \
  | gzip > n8n-db-$(date +%F).sql.gz

దీన్ని ఒక షెడ్యూల్‌పై అమలు చేయండి. డంప్‌ను సర్వర్ వెలుపలకు కాపీ చేయండి. కొత్త VPS లో పునరుద్ధరించడానికి: స్టాక్‌ను ఒకసారి ప్రారంభించండి తద్వారా డేటాబేస్ సృష్టించబడుతుంది, n8n ను ఆపండి, డంప్‌ను psql తో తిరిగి లోడ్ చేయండి, అదే N8N_ENCRYPTION_KEY ను .env లోకి ఉంచండి, మరియు n8n ను ప్రారంభించండి. అదే కీ ప్లస్ డంప్ అనేది పనిచేసే ఇన్‌స్టెన్స్; కొత్త కీ అనేది ఒక్క ఆధారాన్ని కూడా ఉపయోగించలేని వర్క్‌ఫ్లోలు.

అప్‌గ్రేడ్‌లు: ట్యాగ్‌ను పిన్ చేయండి

కంపోజ్ ఫైలు ఉద్దేశపూర్వకంగా latest బదులుగా n8nio/n8n:2.29.10ను పిన్ చేస్తుంది. n8n దాదాపు ప్రతి వారం కొత్త మైనర్ వెర్షన్‌ను విడుదల చేస్తుంది. అప్పుడప్పుడు అవి వాటి మధ్య డేటాబేస్ స్కీమా లేదా నోడ్ ప్రవర్తనను మారుస్తాయి. కాబట్టి latest అంటే, ఎవరు పర్యవేక్షించకుండా చేసిన పుల్ మీ డేటాబేస్‌ను ప్రారంభమవుతున్న వెంటనే మైగ్రేట్ చేసే ఒక బిల్డ్‌ను మీకు అందించవచ్చు. ఒక వెర్షన్‌ను పిన్ చేయండి. అప్‌గ్రేడ్ చేయడానికి ముందు విడుదల గమనికలు చదవండి — n8n అక్కడ బ్రేకింగ్ మార్పులను ప్రత్యేకంగా పేర్కొంటుంది — మరియు జాగ్రత్తగా అప్‌గ్రేడ్ చేయండి:

docker compose exec -T postgres pg_dump -U n8n -d n8n | gzip > pre-upgrade.sql.gz
# edit the image tag in docker-compose.yml, then:
docker compose pull n8n
docker compose up -d n8n
docker compose logs -f n8n

మేజర్-వెర్షన్ దూకుడు దీని వల్ల అత్యంత ముఖ్యమైనది. ఉదాహరణకు, 2.0 లైన్ డిఫాల్ట్‌గా N8N_BLOCK_ENV_ACCESS_IN_NODEను trueకి మార్చింది. కాబట్టి process.envను చదివే ఏ కోడ్ నోడ్ అయినా మీరు దాన్ని మళ్లీ falseకి సెట్ చేసే వరకు నిశ్శబ్దంగా యాక్సెస్‌ను కోల్పోతుంది; అదే విడుదల సెట్టింగ్‌ల ఫైలుపై కఠినమైన అనుమతులను విధించడం ప్రారంభించింది. ఒక మేజర్ హద్దును దాటడానికి ముందు 2.0 బ్రేకింగ్-మార్పుల పేజీ చదవండి. n8n ప్రారంభంలో అవసరమైన ఏవైనా డేటాబేస్ మైగ్రేషన్‌లను స్వయంచాలకంగా నడుపుతుంది — అందుకే అప్‌గ్రేడ్‌కు ముందు pg_dump ఐచ్ఛికం కాదు. ఆధారాలు .envలో ఉన్న కీతో ఎన్‌క్రిప్ట్ చేయబడి ఉంటాయి మరియు డేటా Postgresలో ఉంటుంది కాబట్టి, కంటైనర్‌లు విస్మరించదగినవి: మీరు వాటిని భర్తీ చేయడం ద్వారా అప్‌గ్రేడ్ చేస్తారు, మరియు మునుపటి ట్యాగ్‌ను పిన్ చేసి డంప్‌ను రిస్టోర్ చేయడం ద్వారా రోల్ బ్యాక్ చేస్తారు.

వైఫల్య రకాలు, మీరు చూసే స్ట్రింగ్‌లతో

The requested webhook "POST hello" is not registered. వర్క్‌ఫ్లో Active కాని వెబ్‌హుక్‌ను కాల్ చేసినప్పుడు 404, లేదా ఎవరూ విననప్పుడు టెస్ట్ పాత్‌ను కాల్ చేసినప్పుడు 404. మీరు "Listen for test event" క్లిక్ చేసినప్పుడు మాత్రమే టెస్ట్ పాత్‌లు (/webhook-test/...) స్పందిస్తాయి; వర్క్‌ఫ్లో టోగుల్ ఆన్‌లో ఉన్నప్పుడు మాత్రమే ప్రొడక్షన్ పాత్‌లు (/webhook/...) స్పందిస్తాయి. సోదర This webhook is not registered for GET requests. Did you mean to make a POST request? అంటే పద్ధతి తప్పు — నోడ్ POST కోరుకుంటుంది మరియు మీరు GET పంపారు.

వెబ్‌హుక్ URL :5678 లేదా localhost చూపిస్తుంది. నోడ్ https://n8n.example.com:5678/webhook/... లేదా http://localhost:5678/... ప్రదర్శిస్తుంది. WEBHOOK_URL సెట్ కాలేదు లేదా తప్పు, కాబట్టి n8n మీ పబ్లిక్ బేస్‌కు బదులుగా N8N_HOST:N8N_PORT నుండి చిరునామాను నిర్మించింది. WEBHOOK_URL=https://n8n.example.com/ సెట్ చేయండి, docker compose up -d తో కంటైనర్‌ను తిరిగి సృష్టించండి, పోర్ట్ అదృశ్యమవుతుంది.

బ్రౌజర్‌లో There was a problem loading init data. ఎడిటర్ లోడ్ అయింది కానీ దాని స్వంత బ్యాకెండ్ API ని చేరుకోలేకపోయింది. ప్రాక్సీ వెనుక ఇది దాదాపు ఎల్లప్పుడూ తప్పుడు N8N_HOST లేదా WEBHOOK_URL, WebSocket Upgrade హెడర్‌లు లేని ప్రాక్సీ, లేదా మీరు కనెక్ట్ అయ్యే విధానానికి N8N_PROTOCOL సరిపోలకపోవడం. నాలుగు పబ్లిక్-ఫేసింగ్ వేరియబుల్‌లను మరియు ప్రాక్సీ Upgrade మరియు Connection ను ఫార్వర్డ్ చేస్తుందని నిర్ధారించుకోండి.

లాగ్‌లలో password authentication failed for user "n8n", కంటైనర్ రీస్టార్ట్ అవుతోంది. n8n పంపే పాస్‌వర్డ్ డేటాబేస్ ప్రారంభించబడిన దానితో సరిపోలడం లేదు. ఈ ఉచ్చు: Postgres ఖాళీ డేటా డైరెక్టరీని ప్రారంభించినప్పుడు మాత్రమే POSTGRES_PASSWORD చదువుతుంది. స్టాక్‌ను ఒకసారి ప్రారంభించండి, తర్వాత .env లో POSTGRES_PASSWORD మార్చండి, మరియు ఇప్పటికే ఉన్న postgres_data వాల్యూమ్ ఇప్పటికీ పాత పాస్‌వర్డ్‌ను కలిగి ఉంటుంది. దాన్ని అసలు విలువకు తిరిగి సెట్ చేయండి, లేదా, మీరు ఉంచడానికి డేటా లేకుంటే, docker compose down మరియు docker volume rm postgres వాల్యూమ్, తర్వాత దాన్ని తాజాగా ప్రారంభించండి.

ప్రారంభంలో EACCES: permission denied, open '/home/node/.n8n/config'. n8n node యూజర్ (UID 1000) గా నడుస్తుంది మరియు దాని కాన్ఫిగ్ డైరెక్టరీకి రాయలేదు. ఇది root యాజమాన్యంలో ఉన్న హోస్ట్ ఫోల్డర్ (./n8n_data:/home/node/.n8n) ను బైండ్-మౌంట్ చేసే వ్యక్తులను కాటేస్తుంది. పైన చూపిన నేమ్‌డ్ వాల్యూమ్‌ను ఉపయోగించండి, లేదా మీరు బైండ్ మౌంట్‌పై పట్టు సాగిస్తే, ముందుగా sudo chown -R 1000:1000 ./n8n_data.

Permissions 0644 for n8n settings file /home/node/.n8n/config are too wide. Changing permissions to 0600.. 2.x లైన్ నుండి n8n ఆ సెట్టింగ్‌ల ఫైల్‌పై 0600 ను డిఫాల్ట్‌గా విధిస్తుంది మరియు బూట్‌పై దాన్ని స్వయంగా సర్దుబాటు చేస్తుంది — ఈ లాగ్ లైన్ అంటే ఇది ఇప్పటికే మోడ్‌ను సవరించింది, సాధారణంగా బైండ్ మౌంట్ తర్వాత లేదా రిస్టోర్ ఫైల్‌ను అనుమతులు లేకుండా తిరిగి కాపీ చేసిన తర్వాత. చర్య అవసరం లేదు; మీ ఫైల్‌సిస్టమ్ నిజంగా అనుమతులకు మద్దతు ఇవ్వలేకపోతే మాత్రమే N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false సెట్ చేయండి.

Mismatching encryption keys — పూర్తి లైన్ సెట్టింగ్‌ల ఫైల్‌లోని ఎన్‌క్రిప్షన్ కీ /home/node/.n8n/config మీ ఎన్విరాన్మెంట్‌లోని N8N_ENCRYPTION_KEY తో సరిపోలదని చెబుతుంది. మీ ఎన్విరాన్మెంట్‌లోని కీ n8n మునుపటి రన్‌లో దాని డేటా వాల్యూమ్‌లో వ్రాసిన దానికి భిన్నంగా ఉంది — తరచుగా వేరియబుల్ సెట్ చేయబడనప్పుడు n8n మునుపటి బూట్‌పై రాండమ్ కీని సృష్టించింది, మరియు మీరు తర్వాత వేరొక దాన్ని సెట్ చేశారు కాబట్టి. అసలు కీని .env లో తిరిగి ఉంచండి, లేదా, మీరు నిజంగా ఉంచడానికి విలువైన స్టోర్ చేసిన ఆధారాలు లేకుంటే మాత్రమే, n8n_data వాల్యూమ్‌లోని config ఫైల్‌ను తొలగించండి మరియు n8n దాన్ని తిరిగి సృష్టించడానికి అనుమతించండి — ఇప్పటికే ఉన్న ఆధారాలు చదవలేనివి అవుతాయని అంగీకరిస్తూ.

సురక్షిత కుకీల గురించి లాగిన్ బ్యానర్: Your n8n server is configured to use a secure cookie, however you are either visiting this via an insecure URL, or using Safari. మీరు N8N_PROTOCOL=https సెట్ చేశారు కానీ సాధారణ HTTP ద్వారా n8n ను చేరుకున్నారు — సాధారణంగా HTTPS ప్రాక్సీకి బదులుగా IP మరియు పోర్ట్‌ను నేరుగా హిట్ చేయడం ద్వారా. దాన్ని https://n8n.example.com/ ద్వారా చేరుకోండి. మీరు నిజంగా HTTPS ఉపయోగించలేనప్పుడు మాత్రమే N8N_SECURE_COOKIE=false సెట్ చేయాలి, మరియు ఇంటర్నెట్-ఫేసింగ్ బాక్స్‌పై ఎప్పుడు కాదు.

ఆ వర్క్‌ఫ్లోలలో లాంగ్వేజ్ మోడల్‌ను ఉంచడానికి, Claude మరియు n8n తో AI వర్క్‌ఫ్లోలను నిర్మించడం చూడండి.

FAQ

n8n కోసం SQLite వాడాలా లేక Postgres వాడాలా?

SQLite (అప్రమేయం) n8n ను ప్రయత్నించడానికి మరియు ఒకే సమయంలో ఒక వర్క్‌ఫ్లో నడిచే వ్యక్తిగత ఇన్‌స్టాన్స్‌కు సరిపోతుంది. మీరు ఆధారపడే దేనికైనా Postgres కు మారండి: ఏకకాల వినియోగంలో SQLite యొక్క సింగిల్ రైటర్ లాక్ database is locked ను విసిరేస్తుంది, మరియు Postgres pg_dump తో శుభ్రంగా బ్యాకప్ చేస్తుంది. తరువాత మైగ్రేషన్ మాన్యువల్, కాబట్టి ఆ బాక్స్ ముఖ్యమైనదైతే, Postgres తోనే ప్రారంభించండి.

నా n8n వెబ్‌హుక్‌లు ఎందుకు ఎప్పుడూ ఫైర్ అవ్వవు?

దాదాపు ఎల్లప్పుడూ WEBHOOK_URL. సెట్ చేయకపోతే లేదా తప్పుగా సెట్ చేస్తే, n8n N8N_HOST:N8N_PORT నుండి నిర్మించిన వెబ్‌హుక్ చిరునామాలను ముద్రిస్తుంది — తరచుగా వాటిలో :5678 లేదా localhost ఉంటుంది — అవి చెల్లుబాటు అయినట్లు కనిపిస్తాయి కానీ ఇంటర్నెట్ నుండి చేరుకోలేవు, కాబట్టి కాలర్ అభ్యర్థనలు ఎప్పుడూ చేరవు. WEBHOOK_URL=https://n8n.example.com/ సెట్ చేయండి మరియు నోడ్ పోర్ట్ లేని URL ను చూపిస్తుందని నిర్ధారించుకోండి. రెండవ కారణం, వర్క్‌ఫ్లో Active గా టోగుల్ చేయబడని వెబ్‌హుక్‌ను కాల్ చేయడం, ఇది The requested webhook ... is not registered. ను అందిస్తుంది

n8n లో నేను దేనిని బ్యాకప్ చేయాలి?

రెండు పనులు. మీ .env ఫైల్ నుండి N8N_ENCRYPTION_KEY, ఎందుకంటే ప్రతి నిల్వ ఉన్న ఆధారాలు దానితో ఎన్‌క్రిప్ట్ చేయబడతాయి మరియు దానిని కోల్పోవడం వల్ల అవి శాశ్వతంగా డీక్రిప్ట్ చేయలేవు — మీరు దానిని సృష్టించిన రోజే సర్వర్ నుండి కాపీ చేయండి. మరియు వర్క్‌ఫ్లోలు, హిస్టరీ మరియు ఆధారాల కోసం Postgres డేటాబేస్ యొక్క pg_dump. ఒక రిస్టోర్‌కు రెండూ అవసరం: అదే కీ ప్లస్ డంప్.

n8n ను HTTPS వెనుక ఎలా ఉంచాలి?

n8n పోర్ట్ 5678 పై సాధారణ HTTP సర్వీస్ చేస్తుంది; ముందు ఉన్న రివర్స్ ప్రాక్సీ TLS ను టెర్మినేట్ చేస్తుంది. n8n ను 127.0.0.1:5678 కు బైండ్ చేయండి తద్వారా ప్రాక్సీ మాత్రమే దానిని చేరుకోగలదు, తరువాత ఆటోమేటిక్ సర్టిఫికేట్‌లతో Traefik ఉపయోగించండి లేదా Let's Encrypt సర్టిఫికేట్‌తో nginx ఉపయోగించండి. N8N_PROTOCOL=https మరియు WEBHOOK_URL=https://your-host/ సెట్ చేయండి, మరియు ప్రాక్సీ WebSocket Upgrade హెడర్‌లను ఫార్వర్డ్ చేస్తుందని నిర్ధారించుకోండి లేదా ఎడిటర్ హ్యాంగ్ అవుతుంది.

n8n ను సురక్షితంగా ఎలా అప్‌గ్రేడ్ చేయాలి?

latest బదులుగా ఒక నిర్దిష్ట ఇమేజ్ ట్యాగ్‌ను పిన్ చేయండి, ముందుగా pg_dump తీసుకోండి ఎందుకంటే n8n ప్రారంభంలో మైగ్రేషన్‌లను ఆటోమేటిక్‌గా నడుపుతుంది, బ్రేకింగ్ మార్పుల కోసం రిలీజ్ నోట్స్ చదవండి, తరువాత ట్యాగ్‌ను బంప్ చేసి docker compose pull n8n && docker compose up -d n8n నడపండి. కంటైనర్ డిస్పోజబుల్, కాబట్టి మునుపటి ట్యాగ్‌ను పిన్ చేయడం మరియు అప్‌గ్రేడ్-పూర్వ డంప్‌ను రిస్టోర్ చేయడం ద్వారా రోల్ బ్యాక్ చేయండి.