Tropic Host

n8n: ni nini na jinsi ya kuiweka kwenye VPS kwa Docker Compose

Kusoma kwa 9 min
Tropic
n8n: ni nini na jinsi ya kuiweka kwenye VPS kwa Docker Compose

Language: sw

n8n kwenye VPS: jukwaa lako la kiotomatisha bila kazi za mikono zisizo za lazima

Ombi linafika kutoka kwenye tovuti. n8n hukagua data, hutafuta nakala, huunda dili, huandaa rasimu ya jibu kwa kutumia AI na kumjulisha meneja kwenye Telegram. Mtu huingilia tu uamuzi unapohitajika, si kuhamisha data kati ya vichupo vya kivinjari.

Hapa chini tutaangalia jinsi n8n inavyofanya kazi na jinsi ya kuiweka kwenye VPS kwa Docker Compose, PostgreSQL, HTTPS na utekelezaji wa msimbo uliotengwa.

Hatua saba za kuanzisha n8n

Mpango wa chini kabisa wa kuanzisha:

  1. Unda VPS na uelekeze subdomain kwake, kwa mfano n8n.example.com.
  2. Sakinisha Docker na Docker Compose.
  3. Endesha n8n pamoja na PostgreSQL, kiendeshaji cha kazi cha nje na Caddy.
  4. Fungua kiolesura kupitia HTTPS na uunde akaunti ya mmiliki.
  5. Unganisha Telegram, CRM, barua pepe au API yoyote ya nje.
  6. Sanidi ushughulikiaji wa makosa na muda wa kuhifadhi data ya utekelezaji.
  7. Otomatisha nakala za kuhifadhi za hifadhidata, data na ufunguo wa usimbaji.

Kwa usakinishaji mdogo wa uzalishaji, kuanza na 2 vCPU na 4 GB za RAM ni jambo la busara. 2 GB mara nyingi inatosha kwa majaribio, lakini PostgreSQL, Docker na michakato inayotokea kwa wakati mmoja hutumia haraka nafasi iliyobaki.

n8n ni nini na inafanyaje kazi

n8n ni jukwaa la kuendesha kiotomatiki mtiririko wa kazi. Mtiririko huundwa kwa nodi: moja huanzisha mchakato, zinazofuata hupokea na kubadilisha data, na nodi ya mwisho hufanya kitendo.

Mtiririko rahisi huonekana hivi:

Webhook → data validation → CRM → Telegram → website response

Mnyororo unaweza kuanzishwa na webhook, ratiba, barua pepe, ujumbe au tukio katika huduma ya nje. Masharti, mizunguko, vichujio, kusubiri na ushughulikiaji wa makosa vinapatikana kati ya nodi.

Moja ya nguvu za n8n ni kwamba otomatishaji hauishii kwenye miunganisho iliyo tayari. Unaweza kuita huduma yoyote yenye API kupitia HTTP Request, huku ukiandika mantiki maalum katika nodi ya Code kwa JavaScript au Python. Hivyo n8n iko kati ya kijenzi rahisi cha no-code na msimbo maalum wa upande wa seva.

Kwa nini ni zaidi ya kusambaza data

n8n ni muhimu mchakato unapohusisha mifumo kadhaa na kuhitaji uamuzi:

form → validation → duplicate search → AI assessment → manager approval → CRM

Mtu anaweza kubaki tu kwenye sehemu ya udhibiti. Kwa mfano, AI huandaa jibu, lakini ujumbe hutumwa kwa mteja baada ya mfanyakazi kuuidhinisha.

Matumizi ya kawaida:

  • mauzo na usaidizi: kukusanya maombi, kugawa vielelezo vya wateja na kuunda dili;
  • maudhui na AI: kuandaa rasimu, kuainisha maombi na kuchapisha baada ya kuidhinishwa;
  • DevOps: arifa za kukatika kwa huduma, Git webhook na ukaguzi wa API;
  • shughuli za ndani: kusawazisha lahajedwali, barua pepe, kalenda na mifumo ya kampuni.

Usakinishaji wa self-hosted hukupa udhibiti wa mchakato na hifadhidata, lakini hauzifanyi huduma za nje kuwa za ndani. Data inayotumwa Telegram, CRM au modeli ya AI ya wingu hutoka kwenye VPS.

n8n Cloud au seva yako mwenyewe

Kigezon8n Cloudn8n kwenye VPS
KuanzishaHakuna usanidi wa seva unaohitajikaKikoa, Docker na HTTPS vinahitajika
MasasishoHusimamiwa na n8nHusimamiwa na mmiliki
Hifadhidata na failiKwenye miundombinu ya hudumaKwenye seva iliyochaguliwa
KupanuaKulingana na mpango wa winguHusanidiwa kwa kujitegemea
WajibuUsimamizi mdogoNakala za kuhifadhi, usalama na ufuatiliaji ni wajibu wa mmiliki
Inafaa kwaMwanzo wa haraka bila DevOpsUdhibiti, urekebishaji na michakato inayofanya kazi daima

Community Edition inaweza kujiendesha kwa self-hosted bila malipo kwenye seva yako kwa michakato ya kibinafsi na ya ndani ya biashara. Hata hivyo, n8n haisambazwi chini ya leseni ya kawaida ya open-source, bali chini ya fair-code Sustainable Use License. Inaruhusu matumizi ya ndani na marekebisho, lakini hairuhusu uweke n8n tu, uongeze nembo yako na uuze ufikiaji kama SaaS huru. Kwa bidhaa kama hiyo, masharti ya leseni yanapaswa kuchunguzwa kando.

Mahitaji ya seva ya n8n

Mzigo hutegemea kiasi cha data, utekelezaji wa wakati mmoja na aina ya shughuli. Faili, orodha ndefu, nodi za Code na mtiririko wa AI huhitaji kumbukumbu zaidi kuliko kupitisha pakiti ndogo za JSON kati ya API.

HaliUsanidi wa kuanzia
Majaribio na mtiririko wa kibinafsi unaotegemea maandishi1 vCPU, 2 GB RAM, 20 GB NVMe
Usakinishaji mdogo wa uzalishaji2 vCPU, 4 GB RAM, 25–40 GB NVMe
Michakato ya wakati mmoja, AI au faili4 vCPU, 8 GB RAM au zaidi
Michakato kadhaa ya worker katika queue modePima kulingana na kiasi cha utekelezaji

SQLite inafaa kwa kujifunza na usanidi mdogo wa instans moja. PostgreSQL ni rahisi zaidi kwa uzalishaji: nakala za kuhifadhi ni rahisi na kuhamia queue mode baadaye ni rahisi zaidi.

Jinsi ya kusakinisha n8n kwenye VPS

Mfano huu unatumia Ubuntu 24.04, PostgreSQL, Caddy na kiendeshaji cha kazi cha nje. Badilisha n8n.example.com na eneo la muda kwa thamani zako.

1. Sanidi DNS na uandae seva

Unda rekodi ya A ya DNS inayoelekeza kwenye anwani ya IPv4 ya VPS, kisha unganisha kupitia SSH:

ssh root@SERVER_IP
apt update && apt upgrade -y
apt install -y ca-certificates curl ufw openssl

Sakinisha Docker Engine na programu-jalizi ya Compose kutoka hazina rasmi:

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 version

Ruhusu SSH, HTTP na HTTPS pekee:

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Usifunge kipindi cha sasa cha SSH hadi uthibitishe kuwa muunganisho mpya unafanya kazi.

2. Unda vigezo vya mazingira

Andaa saraka:

mkdir -p /opt/n8n
cd /opt/n8n

Unda .env. Amri zilizo hapa chini hutengeneza mara moja siri tofauti za PostgreSQL, usimbaji wa n8n na kiendeshaji cha kazi:

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 .env

Tag ya stable inafaa kwa kuanzisha mara ya kwanza. Baada ya kuthibitisha usakinishaji, ni bora kubandika toleo maalum la n8n ili sasisho la image linalofuata lisitokee bila kutarajiwa.

Usipoteze N8N_ENCRYPTION_KEY. n8n hutumia ufunguo huu kusimba nywila, tokeni na vitambulisho vingine vilivyohifadhiwa. Ukirejesha PostgreSQL pekee bila ufunguo, rekodi zitabaki kwenye hifadhidata, lakini n8n haitaweza kuzisoma.

3. Unda faili ya Docker Compose

Unda 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_config

Kienyeji cha nje cha kazi hutekeleza msimbo kando na mchakato mkuu wa n8n. Hii ni salama zaidi kuliko hali ya ndani na hupunguza uwezekano wa hitilafu kwenye nodi ya Code kuathiri editor na uchakataji wa webhook.

4. Washa HTTPS

Unda Caddyfile:

{$N8N_HOST} {
    reverse_proxy n8n:5678
}

Ikiwa DNS tayari inaelekeza kwenye VPS na porti 80 na 443 zinapatikana, Caddy itapata cheti cha TLS kiotomatiki. Porti ya ndani 5678 haijawekwa wazi kwenye mtandao: ni porti 80 na 443 pekee zinazopatikana nje, huku Caddy ikiifikia n8n kupitia mtandao wa Docker.

Vigezo N8N_WEBHOOK_URL na N8N_PROXY_HOPS vinahitajika ili editor itengeneze anwani sahihi za webhook za umma na iamini vichwa kutoka reverse proxy moja.

5. Anzisha n8n

Thibitisha usanidi wa mwisho na uanzishe kontena:

docker compose config
docker compose up -d
docker compose ps
docker compose logs --tail=100 n8n caddy

Fungua:

https://n8n.example.com

Unda akaunti ya mmiliki. Usishiriki nenosiri lake na wenzako: kwa kazi ya timu, tumia akaunti tofauti na mpe kila mtu ruhusa anazohitaji tu.

Mtiririko wako wa kwanza wenye manufaa

Jaribio zuri ni kuchakata ombi kutoka kwenye tovuti:

  1. Ongeza nodi ya Webhook yenye mbinu ya POST.
  2. Tumia Edit Fields kubakiza jina, anwani ya barua pepe na chanzo pekee.
  3. Tumia nodi ya If kukataa ombi lisilo na data inayohitajika.
  4. Unda dili kwenye CRM au tuma ombi kupitia HTTP Request.
  5. Ongeza arifa ya Telegram.
  6. Maliza mnyororo kwa nodi ya Respond to Webhook.
  7. Baada ya kujaribu, washa mtiririko na ubadilishe webhook ya majaribio kwa URL ya uzalishaji.

Mfano huu hukagua mara moja kikoa, HTTPS, maombi yanayoingia, vitambulisho na muunganisho wa nje. Kisha ongeza Error Workflow tofauti itakayokuarifu mnyororo mkuu unaposhindwa.

Kulinda n8n baada ya usakinishaji

Instans ya n8n iliyosakinishwa haiwi ya kuaminika kiotomatiki. Baada ya kuanzisha, hakikisha kwamba:

  • editor inapatikana kupitia HTTPS pekee;
  • .env ina ruhusa 600 na haijatumwa Git;
  • funguo za API za nje zina ruhusa za chini zinazohitajika;
  • kila webhook inathibitisha sahihi au siri ya chanzo;
  • historia ya utekelezaji inafutwa kiotomatiki;
  • makosa katika mtiririko muhimu yanatumwa kwa msimamizi.

Nodi za Community husakinishwa kama vifurushi na zinaweza kupata data ya mtiririko na seva. Usiongeze nodi usizozijua bila kuzikagua. Ikiwa huzihitaji, zizime kwa N8N_COMMUNITY_PACKAGES_ENABLED=false.

Endesha ukaguzi uliojengwa ndani:

docker compose exec n8n n8n audit

Husaidia kutambua webhook zisizolindwa, nodi hatari na matatizo ya vitambulisho, lakini haichukui nafasi ya ukaguzi wa mikono.

Historia ya utekelezaji na data binafsi

n8n huhifadhi data ya kuingiza na kutoa kwa ajili ya kutatua hitilafu. Pamoja nayo, ujumbe wa barua pepe, nambari za simu, nyaraka na majibu ya API vinaweza kubaki kwenye hifadhidata.

Katika usanidi ulio hapo juu, utekelezaji hufutwa baada ya siku saba na idadi yake inawekewa kikomo cha 10,000. Kwa michakato nyeti, chagua muda wa kuhifadhi kulingana na sera yako ya kuhifadhi data na uondoe sehemu zisizohitajika kabla mtiririko haujakamilika.

Nakala za kuhifadhi na masasisho

Urejeshaji unahitaji dump ya PostgreSQL, n8n_data volume, faili za usanidi na .env iliyo na N8N_ENCRYPTION_KEY. Kabla ya kunakili, simamisha vichakataji huku PostgreSQL ikiendelea kufanya kazi. Hii husababisha usumbufu mfupi katika utekelezaji wa mtiririko:

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-runner

Kumbukumbu yenye .env ina siri: isimba na ihifadhi nje ya VPS. Thibitisha nakala ya kuhifadhi mara kwa mara kwa kuifanya urejeshaji wa majaribio.

Kabla ya kusasisha, tengeneza nakala na usome maelezo ya toleo:

cd /opt/n8n
docker compose pull
docker compose up -d
docker compose ps

Kiendeshaji cha kazi na kontena kuu lazima zitumie tagi moja ya toleo.

Ni lini upanuzi unahitajika

Usianze na Redis na worker kadhaa kabla ya kuwa na mzigo halisi. Instans moja yenye PostgreSQL ni rahisi kuitunza na kwa kawaida inatosha kwa michakato midogo ya ndani.

Queue mode inahitajika wakati kazi ndefu zinapochelewesha webhook, mtiririko mingi inapoanza kwa wakati mmoja au uchakataji wa faili unapomaliza kumbukumbu yote mara kwa mara. Katika usanidi huu, instans kuu hupokea matukio, Redis hugawa kazi na worker huzitekeleza kwa wakati mmoja. Vipengele vyote lazima viunganishwe na hifadhidata ileile ya PostgreSQL na vitumie N8N_ENCRYPTION_KEY ileile.

VPS ipi uchague kwa n8n

Kwa n8n, PostgreSQL, Caddy na kiendeshaji cha kazi kwa pamoja, kuanza na 2 vCPU, 4 GB RAM na diski ya NVMe ni jambo la busara. Kwenye tropic.host, mpango wa Light unaendana na usanidi huu: 2 vCPU, 4 GB RAM na 25 GB NVMe. Hiyo inatosha kwa mtiririko wa kwanza wa uzalishaji bila uchakataji mzito wa faili.

Kwa nyaraka, seti kubwa za data na mtiririko mwingi wa AI unaotokea kwa wakati mmoja, 8 GB RAM ni chaguo bora. Mtandao thabiti pia ni muhimu: webhook, callback za OAuth na kazi zilizopangwa lazima zipatikane kila wakati.

Hitimisho

n8n hugeuza shughuli zinazorudiwa kuwa mtiririko wa kuona ulio wazi: nodi zilizo tayari huharakisha kuanzisha, HTTP Request huunganisha karibu API yoyote na nodi ya Code hukuruhusu kuongeza mantiki yako.

Toleo la self-hosted hukupa udhibiti wa seva na hifadhidata, lakini linahitaji HTTPS, funguo zenye mipaka, usafishaji wa historia na nakala za kuhifadhi zilizothibitishwa. Hifadhi N8N_ENCRYPTION_KEY pamoja na PostgreSQL: bila hiyo, vitambulisho vilivyorejeshwa haviwezi kufumbuliwa.

FAQ

Je, n8n inaweza kutumika bila malipo?

Ndiyo. Community Edition inaweza kuendeshwa bila malipo kwenye seva yako kwa michakato ya kibinafsi na ya ndani. Kuuza tena hosted n8n kama SaaS huru kumewekewa vikwazo na leseni ya fair-code.

Je, n8n inaweza kusakinishwa bila kikoa?

Kwa majaribio ya ndani, ndiyo. Kwa webhook za umma na OAuth, ni bora kutumia kikoa na HTTPS.

n8n inahitaji RAM kiasi gani?

Mtiririko rahisi wa kibinafsi mara nyingi hufanya kazi kwa 2 GB za RAM. Kwa n8n iliyo na PostgreSQL, Caddy na kiendeshaji cha kazi, 4 GB ni busara zaidi; faili na utekelezaji wa wakati mmoja unaweza kuhitaji 8 GB au zaidi.

Je, data yote hubaki ndani ya VPS?

Ni data tu ambayo mtiririko hautumi kwingine hubaki ndani. Hifadhidata na historia ya utekelezaji huhifadhiwa kwenye VPS, lakini nodi za Telegram, CRM au modeli ya AI ya nje hutuma data iliyochaguliwa kwenye huduma husika.

Ni nini kinapaswa kujumuishwa katika nakala ya n8n?

Dump ya PostgreSQL, n8n_data volume, compose.yaml, Caddyfile na .env iliyo na N8N_ENCRYPTION_KEY. Hifadhi nakala hiyo nje ya VPS ikiwa imesimbwa na ithibitishe kwa kuirejesha.