Skip to content

n8n

Instalacja

n8n uruchamiany jest jako aplikacja webowa i zapisuje dane w PostgreSQL.

Założenia konfiguracyjne:

  • Plik Compose znajduje się w /srv/docker/compose/n8n
  • Dane n8n znajdują się w /srv/docker/data/n8n
  • Sekrety (zmienne środowiskowe) znajdują się w /srv/docker/secrets/n8n/app.env
  • n8n łączy się z PostgreSQL po sieci Dockera internal
  • n8n jest wystawiany przez reverse proxy po sieci Dockera proxy
  • Logi pozostają domyślne (stdout/stderr) i są dostępne przez docker logs (nie tworzymy katalogu /srv/docker/logs)

Dostęp do sieci Docker

Wymagany dostęp do sieci proxy oraz internal

Aby udostępnić aplikację publicznie oraz komunikować się z innymi kontenerami, aplikacja wymaga dostępu do sieci Docker proxy i internal.

Tworzenie sieci Docker


Tworzenie katalogów

Tworzymy katalog dla Compose:

sudo mkdir -p /srv/docker/compose/n8n
sudo chown -R "$USER:$USER" /srv/docker/compose/n8n

Tworzymy katalog na dane n8n:

sudo mkdir -p /srv/docker/data/n8n
sudo chown -R "$USER:$USER" /srv/docker/data/n8n

Tworzymy katalog na sekrety:

sudo mkdir -p /srv/docker/secrets/n8n
sudo chown -R "$USER:$USER" /srv/docker/secrets/n8n

Tworzenie bazy w PostgreSQL

Tworzymy dedykowanego użytkownika i bazę dla n8n.

Uruchamiamy psql w kontenerze PostgreSQL:

docker exec -it postgres psql -U postgres

W psql tworzymy użytkownika i bazę:

CREATE USER n8n WITH PASSWORD 'TU_DAJ_MOCNE_HASLO';
CREATE DATABASE n8n OWNER n8n;
GRANT ALL PRIVILEGES ON DATABASE n8n TO n8n;

Wychodzimy z psql:

\q

Tworzenie pliku app.env

Tworzymy i edytujemy plik app.env:

micro /srv/docker/secrets/n8n/app.env

W pliku umieszczamy:

app.env
TZ=Europe/Warsaw

N8N_HOST=n8n.fulc.ro
N8N_PROTOCOL=https
N8N_PORT=5678
WEBHOOK_URL=https://n8n.fulc.ro/
N8N_EDITOR_BASE_URL=https://n8n.fulc.ro/

DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=postgres
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=TU_DAJ_MOCNE_HASLO
DB_POSTGRESDB_SCHEMA=public

Zapisujemy plik i wychodzimy z edytora.


Konfiguracja Docker Compose

Przechodzimy do katalogu Compose:

cd /srv/docker/compose/n8n

Tworzymy i edytujemy plik compose.yaml:

micro compose.yaml

W pliku umieszczamy:

compose.yaml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped

    env_file:
      - /srv/docker/secrets/n8n/app.env

    volumes:
      - /srv/docker/data/n8n:/home/node/.n8n

    networks:
      - internal
      - proxy

networks:
  internal:
    external: true
  proxy:
    external: true

Zapisujemy plik i wychodzimy z edytora.


Uruchomienie kontenera

Uruchamiamy n8n:

docker compose up -d

Sprawdzamy, czy kontener działa:

docker ps | grep n8n

Konfiguracja Caddy

Dodajemy wpis do Caddyfile:

Caddyfile
n8n.fulc.ro {
  reverse_proxy n8n:5678
}

Przeładowujemy Caddy:

docker exec -it caddy caddy reload --config /etc/caddy/Caddyfile

Test

W przeglądarce otwieramy:

https://n8n.fulc.ro

Podgląd logów

Podglądamy logi kontenera:

docker logs -f n8n