Jak zainstalować n8n na serwerze Synology NAS?
Spis treści:
Dlaczego warto zainstalować n8n na serwerze Synology?
Chcąc rozpocząć pracę z n8n masz kilka dostępnych opcji. Możesz skorzystać z planów subskrypcyjnych na n8n.io i w ramach niewielkiej opłaty rozpocząć automatyzowanie swoich procesów. To rozwiązanie ma oczywiście szereg zalet, gdzie nie musisz się martwić o utrzymanie własnej infrastruktury, jednak wiąże się z oczywiście też z minusami – czyli ponoszonym kosztem. Jeśli nie posiadasz swojego serwera NAS lub cenisz sobie „spokój” związany z utrzymaniem usługi poza swoimi mocami przerobowymi – jest to na pewno opcja warta rozważanie. Jeśli jednak chcesz mieć pełną kontrolę nad danymi, niższe koszty długoterminowe (brak opłat subskrypcyjnych), możliwość łatwej integracji z innymi aplikacjami lokalnymi to proponujemy, abyś n8n zainstalował u siebie i wpiął je we własną infrastrukturę. Po stronie minusów takiego rozwiązania na pewno trzeba wskazać konieczność zadbania samodzielnego o aktualizacje n8n, bezpieczeństwo, backupy, certyfikaty SSL itp. W tym artykule skupimy się zatem na tym podejściu, w którym możesz zainstalować n8n na serwerze NAS a zademonstrujemy to na przykładzie NAS od Synology.
Instalacja Docker na serwerze NAS
W pierwszej kolejności zaczniemy od instalacji Dockera, który pozwoli nam na utworzenie swoistego kontenera, w którym osadzimy nasz n8n. Docker / Container Manager wspierane są wyłącznie na urządzeniach z architekturą CPU x86_64. Warto zatem przed próbą instalacji sprawdzić czy masz odpowiednią wersję Synology. Zdecydowanie dobrym pomysłem jest też zadbanie o aktualizacje aplikacji i pakietów na swoich serwerze NAS (to recepta ogólna, nie tylko dla NAS od Synology).
Przejdź zatem do centrum pakietów, odnajdź pakiet Docker i zainstaluj go:
Po kliknięciu przycisku Zainstaluj Docker zostanie pobrany oraz zainstalowany.
Niezależnie od procesu instalacji Dockera przygotuj przestrzeń, gdzie będziesz przechowywać swoje automatyzacje (workflowy) i dane użytkownika.
Docker powinien przygotować Ci automatycznie folder współdzielony o takiej nazwie.
Wewnątrz tego folderu przygotuj folder dla usługi n8n:
Standardowo do folderu Docker dostęp mają grupy wskazane zgodnie z poniższym zrzutem:
W ramach uprawnienia do folderu Docker możesz usunąć Everyone z tej grupy. Zostaw dostęp tylko dla administratorów. Następnie dla folderu n8n Wyłącz dziedziczenie uprawnień i dodaj Odczyt/Zapis dla wszystkich włączając opcję „Zastosuj do tego folderu, podfolderów i plików”
Podsumowując, najprościej na tym etapie będzie jeśli:
Do folderu współdzielonego Docker dostęp będziesz mieć Ty i ew. inni admini lub osoby, które zgodnie z logiką biznesową powinny mieć dostęp
Do folderu n8n ustaw uprawnienie dla Wszyscy – odczyt i zapis. To ustawienie nie spowoduje, że każdy użytkownik będzie miał dostęp ale zapewni, że proces kontenera (UID 1000) będzie mógł zapisywać i odczytywać w nim. Inni użytkownicy nie dostaną się do tego folderu ponieważ sam udział SMB (folder Docker) będzie ograniczał wstęp jako swoista preselekcja albo „bramka”. To na co należy w tej sytuacji uważać to sytuacja, gdy potencjalnie w przyszłości będziesz chcieć udzielić komuś dostępu do folderu Docker – wtedy będzie użytkownik mógł swobodnie dostawać się (czytać i pisać) w folderze n8n
Istnieją alternatywne sposoby zarządzania tym dostępem jednak wymagają one bardziej technicznych rozwiązać, a postanowiliśmy że w tutorialu wstępnym jak zainstalować n8n skupimy się na użytkownikach z wiedzą bardziej biznesową niż techniczną, gdyż wierzymy że tak powinny działać automatyzacje w dzisiejszych czasach – łatwo i skutecznie dla użytkowników biznesowych bez konieczności wspierania się ultrawyspecjalizowaną wiedzą techniczną.
Pobieranie n8n z rejestru w Docker
Otwórz następnie aplikację Docker i przejdź do sekcji Rejestr, po czym wpisz n8n i wyszukaj odpowiednią usługę zgodnie z poniższym zrzutem. Podświetl obraz n8nio/n8n a następnie wciśnij przycisk Pobierz.
Obraz n8nio/n8n dostępny w rejestrze jest oficjalnym obrazem, pozostałe są obrazami prywatnymi/zmodyfikowanymi przez różnych użytkowników.
Po kliknięciu przycisku Pobierz zostaniesz zapytany jaką wersję n8n chcesz pobrać z domyślnie ustawioną wartością latest:
Latest oznacza najnowsze i stabilne wydanie i taką wersję polecamy Ci wybrać do środowiska produkcyjnego, jeśli chcesz testować nowości w n8n bez pełnej gwarancji stabilności i z większym ryzykiem otrzymania błędów – możesz skorzystać z wersji next (nie polecamy).
Po pobraniu rejestru kliknij przycisk Uruchom.
Proponujemy zmienić domyślną nazwę kontenera na n8n dla czytelności na tym ekranie:
Konfiguracja kontenera n8n
Opcję Uruchom kontener przy użyciu wysokich uprawnień pozostaw odznaczoną, analogicznie opcję Włącz ograniczenia zasobów – kontener z n8n będzie zużywał tyle ile potrzebuje i ile jest dostępne. Jeśli masz wiele usług to możesz odpowiednio przydzielić im zasoby, żeby zadbać o stabilność usług.
Przejdź do sekcji Ustawienia zaawansowane.
Włącz opcję „Włącz automatyczne ponowne uruchamianie”. Włączenie tej opcji pozwoli Dockerowi na ponowne automatyczne uruchomienie n8n w przypadku gdyby kontener nie został prawidłowo zamknięty.
W sekcji Wolumin wskaż folder, który utworzyłeś wcześniej dla n8n oraz analogiczną/przynależną mu ścieżkę montowania w kontenerze (/home/node/.n8n):
W sekcji Ustawienia portu wskazujesz pod jakim portem będzie się zgłaszać n8n. Domyślnie portem kontenera jest 5678, jeśli jednak ten port masz już zajęty dla innej usługi – możesz go zmienić na tym etapie. Przykładowo jeśli masz NASa dostępnego pod 10.1.1.20, to do usługi dostaniesz się bezpośrednio pod adresem 10.1.1.20:5678 (adres portu lokalnego).
Ważne – standardowo Synology port lokalny przydzieli Ci jako automatyczny i przekieruje na port kontenera 5678. Jeśli chcesz od razu przekierować ten port to ustaw w Ustawieniach portu przekierowanie z portu lokalnego (to pod tym portem zgłasza się n8n). Dlatego proponujemy, żebyś na tym etapie ustawił od razu przekierowanie z portu lokalnego na port kontenera:
Zmienne środowiskowe dla n8n
Następnie przejdź do sekcji Środowisko, gdzie jesteś w stanie zdefiniować zmienne środowiskowe dla n8n.
Do istniejących zmiennych środowiskowych dodaj:
GENERIC_TIMEZONE
Europe/Warsaw
Dzięki tej zmiennej będziesz mieć ustawioną odpowiednią strefę czasową co będzie bardzo istotne dla automatycznych zadań cron/webhooków etc.
Jeśli tylko Ty masz dostęp do n8n i nie jest wystawiony na świat to możesz na tym etapie zakończyć konfigurację, jeśli jednak chcesz się dodatkowo zabezpieczyć to warto ustawić jeszcze kilka rzeczy zaczynając od zmiennej środowiskowej do klucza do szyfrowania poświadczeń.
Proponujemy ustawić zatem:
N8N_ENCRYPTION_KEY
32-64 znakowy klucz
Stały klucz do szyfrowania przekazywanych poświadczeń. Dzięki temu w przypadku reinstalacji kontenera poprzednie dane dalej się odszyfrują. Klucz proponujemy zapisać w menedżerze haseł typu KeePass lub 1Password. To jest klucz z poświadczeniami n8n. Bez niego nie będzie możliwe odszyfrowanie zapisanych haseł i integracji. Jeśli nie wygenerujesz go samodzielnie to n8n wygeneruje swój klucz. Nie będziesz mieć jednak go zapisanego w zewnętrznym miejscu gdyby doszło do jakiegoś uszkodzenia/utraty np. wolumenu.
Po zdefiniowaniu zmiennej kliknij przycisk „Zrobione”. Domyślnie zaznaczona opcja „Uruchom ten kontener po zakończeniu pracy z kreatorem” spowoduje, że n8n zostanie od razu uruchomiony i będziesz mógł zacząć z niego korzystać tworząc pierwsze automatyzacje.
Uruchomiony kontener n8n zobaczysz w sekcji Kontener w aplikacji Docker:
Rozwiązywanie problemów z uruchomieniem n8n
Czysto teoretycznie jesteś na etapie, gdzie możesz dostać się do n8n z poziomu Synology a przynajmniej o krok od tego etapu.
Dlaczego?
Spróbuj wywołać w przeglądarce adres IP swojego Synology nas z portem 5678. Przykładowo jeśli Twój Synology ma adres 10.1.1.20 to wywołaj n8n z użyciem: 10.1.1.20:5678.
Najprawdopodobniej rezultat jaki dostaniesz to nie będą otwarte drzwi do świata automatyzacji w n8n, ale:
n8n ma standardowo włączoną opcję secure cookie – jest to zwykłe ciasteczko ale z flagą http = secure. Przeglądarka takie ciasteczko wysyła tylko przez HTTPS – jeśli zatem wchodzisz przez http jest ignorowane. Pomaga to chronić sesję przed sniffingiem.
Możemy sobie z tym poradzić na kilka sposobów:
Dodanie zmiennej środowiskowej N8N_SECURE_COOKIE z wartością false. Nie jest to jednak rozwiązanie, które rekomendujemy do dalszej pracy (a wiemy, że rozwiązania „na szybko” zostają potem na stałe 😉
Włączenie dostępu przez HTTPS
Wykorzystamy zatem drugą opcję, żeby bezpieczniej logować się do n8n na naszym serwerze Synology.
W pierwszej kolejności utworzymy certyfikat (może być samopodpisany). Przejdź do Panelu sterowania, następnie Bezpieczeństwo, Certyfikat, Dodaj.
W pierwszym kroku wybierz Dodaj nowy certyfikat i kliknij Następne.
W kolejnym kroku podaj opis certyfikatu oraz wybierz opcję Utwórz certyfikat z podpisem własnym:
W kolejnym kroku uzupełnij dane certyfikatu głównego:
W kolejnym kroku podajesz dane certyfikatu serwera, niejako podpisanego przez główny.
W nazwie pospolitej i alternatywnej nazwie podmiotu wskaż adres IP, pod którym zgłasza się Twój nas. Jeśli posiadasz usługę DNS – np. w xxx.synology.me to możesz wykorzystać już ten adres DNS i tym samym umożliwić sobie dostęp ze świata zewnętrznego do n8n na Synology NAS.
Po kliknięciu Zastosuj zostanie utworzony certyfikat, który wykorzystasz do zabezpieczenia logowania do n8n.
Reverse proxy dla n8n
Kolejnym krokiem naszej konfiguracji będzie przypisanie Odwróconego Serwera Proxy (Reverse Proxy). W celu przypisania wejdź do Portalu aplikacji a następnie wybierz Odwrócony serwer proxy i kliknij Utwórz:
Po kliknięciu Utwórz podaj parametry reguł dla Reverse Proxy. Wpisz numer portu, który przekierowywany będzie na n8n – możesz spróbować użyć portu 443 jeśli nie wykorzystujesz go jeszcze do innych usług. W moim przypadku, ponieważ ten port jest już zarezerwowany wprowadzę inny port – np. 8443. 8443 jest „typowym” alternatywnym portem dla HTTPS.
Następnie przejdź do sekcji Niestandardowy nagłówek i wybierz Utwórz/WebSocket ze standardowymi opcjami:
Teraz możesz powrócić do listy certyfikatów, zaznaczyć certyfikat n8n-certificate i kliknąć przycisk konfiguruj, aby wskazać który konkretny certyfikat ma obsługiwać odwrócone proxy.
W miejscu oznaczonym strzałką wybierz certyfikat zgodny z adresem IP swojego NAS.
Ostatnim krokiem tej konfiguracji będzie ustawienie zmiennych środowiskowych (N8N_PROTOCOL, N8N_HOST, WEBHOOK_URL). Ustaw je zgodnie z parametrami poniżej:
Zmienna środowiskowa
Wartość
N8N_PROTOCOL
https
N8N_HOST
Tutaj podaj IP NASa
WEBHOOK_URL
https://<IP_NASa>:8443/
Zmienne środowiskowe możesz dodawać w momencie, gdy kontener n8n na Docker będzie zatrzymany.
Uruchomienie i dostęp do n8n
Po wykonaniu wszystkich kroków – uruchom ponownie n8n na Docker.
Możesz się teraz dostać do n8n wpisując w przeglądarce adres zgodny ze zmienną środowiskową WEBHOOK_URL.
Zobaczysz okno, w którym może utworzyć konto właściciela dla n8n.
Po utworzeniu konta możesz przejść do świata tworzenia automatyzacji z użyciem bardzo wygodnego narzędzia.