Tropic Host

n8n: бұл не және оны Docker Compose арқылы VPS-ке қалай орнатуға болады

8 мин оқу
Tropic
n8n: бұл не және оны Docker Compose арқылы VPS-ке қалай орнатуға болады

Language: kk

VPS-тегі n8n: артық қол еңбегінсіз өз автоматтандыру платформаңыз

Сайттан сұрау түседі. n8n деректерді тексереді, қайталанатын жазбаларды іздейді, мәміле жасайды, AI көмегімен жауап жобасын дайындайды және Telegram арқылы менеджерге хабарлайды. Адам браузер қойындылары арасында дерек тасымалдау үшін емес, тек шешім қажет болғанда араласады.

Төменде n8n қалай жұмыс істейтінін және оны Docker Compose, PostgreSQL, HTTPS және оқшауланған код орындау арқылы VPS-ке қалай орнату керегін қарастырамыз.

n8n-ді жеті қадамда іске қосу

Іске қосудың ең аз жоспары:

  1. VPS жасаңыз және субдоменді оған бағыттаңыз, мысалы n8n.example.com.
  2. Docker және Docker Compose орнатыңыз.
  3. n8n-ді PostgreSQL, сыртқы тапсырма орындаушысы және Caddy-мен іске қосыңыз.
  4. Интерфейсті HTTPS арқылы ашып, иесі аккаунтын жасаңыз.
  5. Telegram, CRM, электрондық поштаны немесе кез келген сыртқы API-ді қосыңыз.
  6. Қателерді өңдеуді және орындалу деректерін сақтау мерзімін реттеңіз.
  7. Дерекқордың, деректердің және шифрлау кілтінің сақтық көшірмесін автоматтандырыңыз.

Шағын өндірістік орнату үшін 2 vCPU және 4 GB RAM-нан бастау орынды. Тестілеуге 2 GB жиі жеткілікті, бірақ PostgreSQL, Docker және қатар орындалатын процестер қалған ресурсты тез жұмсайды.

n8n деген не және ол қалай жұмыс істейді

n8n — жұмыс процестерін автоматтандыру платформасы. Жұмыс процесі түйіндерден құралады: біреуі процесті бастайды, келесі түйіндер деректерді алады әрі түрлендіреді, соңғы түйін әрекетті орындайды.

Қарапайым жұмыс процесі мынадай:

Webhook → data validation → CRM → Telegram → website response

Тізбек webhook, жоспар, электрондық хат, хабарлама немесе сыртқы қызметтегі оқиға арқылы іске қосылуы мүмкін. Түйіндер арасында шарттар, циклдер, сүзгілер, күту және қателерді өңдеу қолжетімді.

n8n-нің артықшылықтарының бірі — автоматтандыру дайын интеграциялармен шектелмейді. HTTP Request арқылы API-і бар кез келген қызметті шақыруға, ал Code түйінінде JavaScript немесе Python көмегімен арнайы логика жазуға болады. Сондықтан n8n қарапайым no-code құрастырғыш пен арнайы серверлік кодтың арасындағы шешім болып саналады.

Неліктен бұл дерек жіберуден әлдеқайда көп

n8n процесс бірнеше жүйені қамтып, шешім қабылдауды қажет еткенде пайдалы:

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

Адамды тек бақылау нүктесінде қалдыруға болады. Мысалы, AI жауап дайындайды, бірақ хабарлама клиентке қызметкер мақұлдағаннан кейін ғана жіберіледі.

Жиі кездесетін қолдану жағдайлары:

  • сату және қолдау: сұрауларды жинау, лидтерді бөлу және мәмілелер жасау;
  • контент және AI: жобалар дайындау, өтініштерді жіктеу және мақұлданғаннан кейін жариялау;
  • DevOps: істен шығу туралы хабарламалар, Git webhook-тары және API тексерулері;
  • ішкі операциялар: электрондық кестелерді, поштаны, күнтізбелерді және корпоративтік жүйелерді синхрондау.

Self-hosted орнату процесс пен дерекқорды басқаруға мүмкіндік береді, бірақ сыртқы қызметтерді жергілікті етпейді. Telegram-ға, CRM-ге немесе бұлттағы AI моделіне жіберілген деректер VPS-тен шығады.

n8n Cloud немесе жеке серверіңіз

Параметрn8n CloudVPS-тегі n8n
Іске қосуСерверді реттеу қажет емесДомен, Docker және HTTPS қажет
Жаңартуларn8n басқарадыИесі басқарады
Дерекқор және файлдарҚызмет инфрақұрылымындаТаңдалған серверде
МасштабтауБұлттық жоспарға сайЖеке реттеледі
ЖауапкершілікӘкімшілік жұмыс азСақтық көшірме, қауіпсіздік және мониторинг иесінің жауапкершілігінде
Кімге қолайлыDevOps-сыз жылдам бастауғаБақылау, бейімдеу және үнемі жұмыс істейтін процестерге

Community Edition нұсқасын жеке және ішкі бизнес процестері үшін өз серверіңізде тегін self-hosted етуге болады. Бірақ n8n дәстүрлі ашық код лицензиясымен емес, fair-code Sustainable Use License лицензиясымен таратылады. Ол ішкі пайдалануға және өзгертуге рұқсат береді, алайда n8n-ді жай орналастырып, өз логотипіңізді қосып, қолжетімділікті дербес SaaS ретінде сатуға рұқсат етпейді. Мұндай өнім үшін лицензия шарттарын бөлек тексеру қажет.

n8n серверіне қойылатын талаптар

Жүктеме дерек көлеміне, қатар орындалуға және операция түріне байланысты. Файлдар, ұзын тізімдер, Code түйіндері және AI процестері API арасында шағын JSON пакеттерін тасымалдағаннан гөрі көбірек жад талап етеді.

СценарийБастапқы конфигурация
Тесттер және жеке мәтіндік жұмыс процестері1 vCPU, 2 GB RAM, 20 GB NVMe
Шағын өндірістік орнату2 vCPU, 4 GB RAM, 25–40 GB NVMe
Қатар процестер, AI немесе файлдар4 vCPU, 8 GB RAM немесе одан көп
Queue mode ішіндегі бірнеше worker процесіОрындалу көлеміне қарай есептеледі

SQLite үйренуге және бір данадан тұратын шағын орнатуға жарайды. PostgreSQL өндірістік ортаға ыңғайлырақ: сақтық көшірме алу оңай, кейін queue mode режиміне көшу жеңілірек.

n8n-ді VPS-ке қалай орнатуға болады

Бұл мысалда Ubuntu 24.04, PostgreSQL, Caddy және сыртқы тапсырма орындаушысы қолданылады. n8n.example.com пен уақыт белдеуін өз мәндеріңізге ауыстырыңыз.

1. DNS-ті реттеп, серверді дайындаңыз

VPS-тің IPv4 адресіне бағытталған A DNS жазбасын жасаңыз, кейін SSH арқылы қосылыңыз:

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

Docker Engine мен Compose плагинін ресми репозиторийден орнатыңыз:

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

Тек SSH, HTTP және HTTPS-ке ғана рұқсат беріңіз:

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

Жаңа қосылымның жұмыс істейтініне көз жеткізбей, ағымдағы SSH сеансын жаппаңыз.

2. Орта айнымалыларын жасаңыз

Каталогты дайындаңыз:

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

.env файлын жасаңыз. Төмендегі командалар PostgreSQL, n8n шифрлауы және тапсырма орындаушысы үшін бөлек кездейсоқ құпияларды бірден жасайды:

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

stable тегі алғашқы іске қосуға ыңғайлы. Орнатуды тексергеннен кейін n8n-нің нақты нұсқасын бекіткен дұрыс, сонда келесі image жаңартуы күтпеген уақытта орындалмайды.

N8N_ENCRYPTION_KEY жоғалмауы керек. n8n сақталған парольдерді, токендерді және басқа тіркелгі деректерін шифрлау үшін осы кілтті пайдаланады. Егер PostgreSQL-ді кілтсіз ғана қалпына келтірсеңіз, жазбалар дерекқорда қалады, бірақ n8n оларды оқи алмайды.

3. Docker Compose файлын жасаңыз

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

Сыртқы тапсырма орындаушысы кодты негізгі n8n процесінен бөлек орындайды. Бұл ішкі режимге қарағанда қауіпсіз және Code түйініндегі қате редактор мен webhook өңдеуіне әсер ету ықтималдығын азайтады.

4. HTTPS-ті қосыңыз

Caddyfile жасаңыз:

{$N8N_HOST} {
    reverse_proxy n8n:5678
}

DNS VPS-ке бағытталып, 80 және 443 порттары қолжетімді болса, Caddy TLS сертификатын автоматты түрде алады. Ішкі 5678 порты интернетке ашылмайды: сырттан тек 80 және 443 порттары қолжетімді, ал Caddy n8n-ге Docker желісі арқылы қатынайды.

N8N_WEBHOOK_URL және N8N_PROXY_HOPS айнымалылары редактор дұрыс ашық webhook мекенжайларын жасап, бір reverse proxy-ден келген тақырыптарға сенуі үшін қажет.

5. n8n-ді іске қосыңыз

Соңғы конфигурацияны тексеріп, контейнерлерді іске қосыңыз:

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

Ашыңыз:

https://n8n.example.com

Иесі аккаунтын жасаңыз. Оның паролін әріптестеріңізбен бөліспеңіз: топпен жұмыс істеу үшін бөлек аккаунттар жасап, әр адамға тек қажет рұқсаттарды беріңіз.

Алғашқы пайдалы жұмыс процесіңіз

Жақсы тест — веб-сайттан келген сұрауды өңдеу:

  1. Webhook түйінін POST әдісімен қосыңыз.
  2. Тек аты-жөнін, электрондық пошта мекенжайын және дереккөзді қалдыру үшін Edit Fields пайдаланыңыз.
  3. Міндетті деректері жоқ сұрауды қабылдамау үшін If түйінін пайдаланыңыз.
  4. CRM-де мәміле жасаңыз немесе HTTP Request арқылы сұрау жіберіңіз.
  5. Telegram хабарламасын қосыңыз.
  6. Тізбекті Respond to Webhook түйінімен аяқтаңыз.
  7. Тестілеуден кейін процесті белсендіріп, тест webhook-ын өндірістік URL-мен ауыстырыңыз.

Бұл мысал доменді, HTTPS-ті, кіріс сұрауларын, тіркелгі деректерін және сыртқы интеграцияны бірден тексереді. Одан кейін негізгі тізбек істен шыққанда сізге хабарлайтын бөлек Error Workflow қосыңыз.

Орнатудан кейін n8n-ді қорғау

Орнатылған n8n автоматты түрде сенімді жүйеге айналмайды. Іске қосқаннан кейін мыналарды тексеріңіз:

  • редактор тек HTTPS арқылы қолжетімді;
  • .env файлында 600 рұқсаттары бар және ол Git-ке жіберілмейді;
  • сыртқы API кілттерінің тек қажетті ең аз рұқсаттары бар;
  • әр webhook дереккөздің қолтаңбасын немесе құпиясын тексереді;
  • орындау тарихы автоматты түрде өшіріледі;
  • маңызды процестердегі қателер әкімшіге жіберіледі.

Community түйіндері пакет ретінде орнатылады және жұмыс процесінің деректері мен серверге қол жеткізуі мүмкін. Бейтаныс түйіндерді тексермей қоспаңыз. Қажет болмаса, оларды N8N_COMMUNITY_PACKAGES_ENABLED=false арқылы өшіріңіз.

Кірістірілген аудитті іске қосыңыз:

docker compose exec n8n n8n audit

Ол қорғалмаған webhook-тарды, қауіпті түйіндерді және тіркелгі деректерінің мәселелерін табуға көмектеседі, бірақ қолмен тексеруді алмастырмайды.

Орындалу тарихы және жеке деректер

n8n ақауларды жөндеу үшін кіріс және шығыс деректерді сақтайды. Онымен бірге электрондық хаттар, телефон нөмірлері, құжаттар және API жауаптары да дерекқорда қалуы мүмкін.

Жоғарыдағы конфигурацияда орындалулар жеті күннен кейін өшіріледі, ал саны 10 000-мен шектеледі. Құпия процестер үшін сақтау мерзімін дерек сақтау саясатыңызға сай таңдаңыз және жұмыс процесі аяқталғанға дейін қажетсіз өрістерді алып тастаңыз.

Сақтық көшірмелер және жаңартулар

Қалпына келтіру үшін PostgreSQL dump, n8n_data volume, конфигурация файлдары және .env ішінде сақталған N8N_ENCRYPTION_KEY қажет. Көшіру алдында PostgreSQL-ді жұмыс істеп қалдырып, процессорларды тоқтатыңыз. Бұл жұмыс процестерін орындауда қысқа үзіліс туғызады:

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

.env бар архивте құпия деректер бар: оны шифрлап, VPS-тен тыс сақтаңыз. Сақтық көшірмені сынақ арқылы қалпына келтіріп, мезгіл-мезгіл тексеріңіз.

Жаңартудан бұрын сақтық көшірме жасап, релиз ескертпелерін оқыңыз:

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

Тапсырма орындаушысы мен негізгі контейнер бірдей нұсқа тегін қолдануы керек.

Масштабтау қашан қажет болады

Нақты жүктеме пайда болмайынша Redis пен бірнеше worker іске қоспаңыз. PostgreSQL бар бір инстансты жүргізу оңайырақ және ол әдетте шағын ішкі процестерге жеткілікті.

Queue mode ұзақ тапсырмалар webhook-тарды кідірткенде, көптеген жұмыс процесі бір уақытта басталғанда немесе файл өңдеу қолжетімді жадты үнемі тауысып отырғанда қажет болады. Бұл құрылымда негізгі инстанс оқиғаларды қабылдайды, Redis тапсырмаларды бөледі, ал worker-лер оларды параллель орындайды. Барлық компонент бір PostgreSQL дерекқорына қосылып, бірдей N8N_ENCRYPTION_KEY қолдануы керек.

n8n үшін қандай VPS таңдау керек

n8n, PostgreSQL, Caddy және тапсырма орындаушыны бірге іске қосу үшін 2 vCPU, 4 GB RAM және NVMe дискіден бастау орынды. tropic.host сайтындағы Light жоспары осы конфигурацияға сәйкес келеді: 2 vCPU, 4 GB RAM және 25 GB NVMe. Бұл ауыр файл өңдеусіз алғашқы өндірістік процестерге жеткілікті.

Құжаттар, үлкен деректер жиынтығы және қатар орындалатын көптеген AI процестері үшін 8 GB RAM жақсырақ. Тұрақты желі де маңызды: webhook-тар, OAuth callback-тері және жоспарланған тапсырмалар үнемі қолжетімді болуы тиіс.

Қорытынды

n8n қайталанатын операцияларды түсінікті визуалды ағындарға айналдырады: дайын түйіндер іске қосуды жеделдетеді, HTTP Request кез келген API-ді дерлік қосады, ал Code түйіні өз логикаңызды қосуға мүмкіндік береді.

Self-hosted нұсқасы сервер мен дерекқорды бақылауға береді, бірақ HTTPS, шектеулі кілттер, тарихты тазалау және тексерілген сақтық көшірмелерді талап етеді. N8N_ENCRYPTION_KEY мәнін PostgreSQL-мен бірге сақтаңыз: онсыз қалпына келтірілген тіркелгі деректерін шифрдан шығару мүмкін емес.

FAQ

n8n-ді тегін пайдалануға бола ма?

Иә. Community Edition-ды жеке және ішкі процестер үшін өз серверіңізде тегін орналастыруға болады. Hosted n8n-ді дербес SaaS ретінде қайта сату fair-code лицензиясымен шектеледі.

n8n-ді доменсіз орнатуға бола ма?

Жергілікті тест үшін — иә. Ашық webhook-тар мен OAuth үшін домен және HTTPS қолданған дұрыс.

n8n-ге қанша RAM қажет?

Қарапайым жеке процестер көбіне 2 GB RAM-мен жұмыс істейді. PostgreSQL, Caddy және тапсырма орындаушысы бар n8n үшін 4 GB орындырақ, ал файлдар мен қатар орындалуларға 8 GB немесе одан көп қажет болуы мүмкін.

Барлық дерек VPS ішінде қала ма?

Жұмыс процесі басқа жерге жібермеген деректер ғана ішінде қалады. Дерекқор мен орындалу тарихы VPS-те сақталады, бірақ Telegram, CRM немесе сыртқы AI моделінің түйіндері таңдалған деректерді тиісті қызметке жібереді.

n8n сақтық көшірмесіне не кіруі керек?

PostgreSQL dump, n8n_data volume, compose.yaml, Caddyfile, .env және оның ішіндегі N8N_ENCRYPTION_KEY. Көшірмені VPS-тен тыс шифрланған түрде сақтап, қалпына келтіру арқылы тексеріңіз.