← Wszystkie szablony · Automatyzacja
Wdróż Node-RED jednym kliknięciem
Przepływy low-code, które łączą API, urządzenia i usługi online
Alternatywa dla Zapier i IFTTT, hostowana u siebie.
Czym jest Node-RED?
Node-RED to narzędzie open source do programowania low-code aplikacji sterowanych zdarzeniami, często używane zamiast Zapiera albo IFTTT. W jego edytorze w przeglądarce przeciągasz węzły na kanwę i łączysz je w przepływy: wiadomość przychodzi z żądania HTTP, tematu MQTT, webhooka albo timera, przechodzi przez węzły, które ją zmieniają, filtrują albo kierują dalej, i trafia do bazy danych, API albo czatu. Węzeł Function uruchamia twój własny JavaScript tam, gdzie żaden węzeł nie pasuje, a biblioteka społeczności ma ponad 6000 węzłów do zainstalowania prosto z edytora.
Node-RED powstał w IBM w 2013 roku, a dziś jest projektem OpenJS Foundation. Używa się go do automatyki domowej, często obok Home Assistanta, do danych z IoT i przemysłu oraz jako spoiwa między usługami webowymi, a hostuje u siebie, żeby automatyzacje działały całą dobę bez opłat za każde uruchomienie. Ten szablon otwiera edytor tylko dla podanej nazwy użytkownika i hasła. Haczyk: trasy węzłów HTTP In są publiczne, więc endpoint, który ma być prywatny, wymaga httpNodeAuth w settings.js albo własnej weryfikacji.
Hosting Node-RED na Pethost
- Logujesz się do Pethost kluczem dostępu, przez GitHub albo Google. Nie masz jeszcze maszyny? Wybierasz plan, a link czeka, aż będzie gotowa.
- Okno „Nowy projekt” otwiera się na aplikacji Node-RED. Wypełniasz to, o co prosi, i klikasz „Utwórz projekt”: Nazwa użytkownika, Hasło administratora.
- Za minutę czy dwie aplikacja Node-RED działa pod własnym adresem z HTTPS. Jej sekrety są tworzone losowo, a dane trafiają do nocnego backupu.
- To projekt jak każdy inny: ty albo twój agent możecie go zmienić, cofnąć do wcześniejszej wersji albo przywrócić.
Pytania o Node-RED
Czy Node-RED jest darmowy?
Tak. Node-RED to open source na licencji Apache 2.0 i nic nie kosztuje, bez względu na liczbę przepływów czy wiadomości. Jest projektem OpenJS Foundation.
Jak zainstalować nowe węzły w Node-RED?
Otwórz menu główne, wybierz Manage palette i szukaj w zakładce Install, która pokazuje węzły z biblioteki społeczności. Zainstalowane węzły są przechowywane w wolumenie data, więc przetrwają restarty i kolejne wdrożenia.
Czy Node-RED współpracuje z Home Assistantem?
Tak. Węzły node-red-contrib-home-assistant-websocket komunikują się z Home Assistantem przez jego API WebSocket i REST, żeby reagować na jego zdarzenia i wywoływać jego usługi. Twój Home Assistant musi być osiągalny z maszyny, na której działa Node-RED.
Jak zrobić dashboard w Node-RED?
Zainstaluj @flowfuse/node-red-dashboard przez Manage palette: jego węzły rysują przyciski, wykresy i formularze na stronie, którą udostępnia Node-RED. Starszy node-red-dashboard jest oznaczony jako przestarzały od czerwca 2024 roku.
Jak zabezpieczyć endpointy HTTP w przepływach Node-RED?
Edytor wymaga logowania, ale trasy węzłów HTTP In odpowiadają każdemu. Ustaw httpNodeAuth z użytkownikiem i hashem bcrypt w /data/settings.js, żeby objąć je wszystkie jednym hasłem, albo sprawdzaj token w samym przepływie.
Ile pamięci i miejsca na dysku potrzebuje Node-RED?
Node-RED ma małe wymagania: około 100 MB pamięci; przepływy zajmują kilobajty, a instalowane węzły po kilka megabajtów każdy. Na Pethost wystarczy mu plan Starter, z miejscem na inne aplikacje obok.
Node-RED: plik Docker Compose
Szablon to ten compose.yaml i zmienne zapisywane do .env projektu przy jego tworzeniu. Pethost uruchamia plik dokładnie tak, jak jest napisany.
Kontenery: node-red (nodered/node-red:5).
Wolumeny, w nocnym backupie: data.
services:
node-red:
image: nodered/node-red:5
restart: unless-stopped
environment:
TZ: ${TZ:-UTC}
ADMIN_USERNAME: ${ADMIN_USERNAME}
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
# The editor would be open to anyone with the address. Node-RED starts with the settings of
# /data/settings.js, which are yours to edit, and with the username and password of the
# project's .env as its only sign-in, unless settings.js sets adminAuth itself.
entrypoint: ["/bin/bash", "-c"]
command:
- |
# The first start: settings.js to edit, and no flow, where the image's would warn of a
# missing volume, which the project has.
if [ ! -f /data/settings.js ]; then
cp node_modules/node-red/settings.js /data/settings.js
rm -f /data/flows.json
fi
cat > /tmp/settings.js <<'END'
const { createHash, timingSafeEqual } = require("node:crypto");
const settings = require("/data/settings.js");
const digest = (text) => createHash("sha256").update(String(text)).digest();
const user = (username) => (username === process.env.ADMIN_USERNAME ? { username, permissions: "*" } : null);
settings.adminAuth ??= {
type: "credentials",
users: async (username) => user(username),
authenticate: async (username, password) =>
timingSafeEqual(digest(password), digest(process.env.ADMIN_PASSWORD)) ? user(username) : null
};
module.exports = settings;
END
exec ./entrypoint.sh --settings /tmp/settings.js
volumes:
- data:/data
volumes:
data:
Więcej w kategorii Automatyzacja
- n8nAutomatyzacja workflowów z wizualnym edytorem
- JenkinsSerwer automatyzacji do buildów, testów i wdrożeń
- Semaphore UIInterfejs webowy do Ansible, Terraform i innej automatyzacji
- ActivepiecesAutomatyzacje i agenci AI z setek gotowych klocków, bez kodu
- WindmillSkrypty, flow i aplikacje w Pythonie, TypeScripcie, Go, SQL lub Bashu, uruchamiane przez workery według harmonogramu, webhookiem albo przyciskiem