[n8n] Konfiguracja Apache2 dla n8n w Docker

Cześć. Dziś na tapetę bierzemy konfigurację Apache2 w Debian 12 do celów instalacji n8n.

n8n jest aplikacją stworzoną na wzór make.com do automatyzacji procesów (np. publikacji postów na social media). Posiada wersję darmową (Community Edition) oraz płatną (wersja Cloud i self-hosted). Dziś skupimy się na wersji Community, którą zahostujemy (on-premise) na serwerze z Debian 12. Jeśli obsługujesz Debian 11 – sprawdź ten poradnik.

Obrazek, który ukazuje tworzenie workflow i automatyzacji.

Zacznijmy więc od instalacji Dockera oraz powiązanych paczek (źródło):

apt-get update
apt-get install ca-certificates curl -y
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update; 
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Następnie instalujemy Apache2 z zależnościami oraz certbotem:

apt install apache2 apache2-dev certbot

Teraz przejdźmy do najistotniejszej rzeczy – konfiguracji wirtualnego hosta (VirtualHost). Tworzymy plik: n8n.conf w katalogu /etc/apache2/sites-available/

<IfModule mod_ssl.c>
  <VirtualHost *:443>
    ServerName (NAZWA_DOMENY)

    # Logi
    ErrorLog ${APACHE_LOG_DIR}/n8n-error.log
    CustomLog ${APACHE_LOG_DIR}/n8n-access.log combined
    # Reverse Proxy
    ProxyPreserveHost On
    ProxyRequests Off

    ProxyPreserveHost On
    ProxyRequests Off

    # Standardowy reverse proxy do hosta n8n
    ProxyPass        / http://127.0.0.1:5678/
    ProxyPassReverse / http://127.0.0.1:5678/

    # Obsługa WebSocketów
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /(.*) ws://127.0.0.1:5678/$1 [P,L]

    ProxyPassMatch "^/(.*\.sockjs.*)$" "ws://127.0.0.1:5678/$1"
    ProxyPassReverse "/rest/push/" "ws://127.0.0.1:5678/rest/push/"
  </VirtualHost>
</IfModule>

Włącz potrzebne moduły Apache2:

a2enmod proxy proxy_http proxy_wstunnel rewrite

To jest moment na podpięcie subdomeny / domeny do serwera. Przekieruj na adres IP Twojego serwera wpis IN A, np:

n8n.jankowalski.pl. 3600 IN A 192.168.124.124

Teraz chwilę poczekajmy na propagację rekordu DNS.

W tym czasie możemy przejść do instalacji n8n przez Docker:

docker volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n

Po tym aktywujemy VirtualHosta:

a2ensite n8n

Następnie tworzymy certyfikat SSL:

sudo certbot --apache -d (nazwa_domeny) --non-interactive --agree-tos -m (twój e-mail)

Pamiętaj o podmienieniu danych na Twoje!

Teraz możesz pocałow… zrestartować Apache2:

systemctl enable apache2
systemctl restart apache2

Przejdź teraz pod adres: https://(twojadomena.pl) i skonfiguruj swoją instancję n8n! 🙂