Skip to main content
server.camp Docs
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Getting Started

Your managed Node-RED at server.camp is ready. Node-RED is a visual automation tool for connecting systems and services without deep programming knowledge — the Swiss Army knife for integrations and data flows. This guide is for freelancers, SMBs, and nonprofits that want to automate recurring digital processes and connect their systems together.

Why Node-RED?

Many organizations handle the same tasks over and over manually: transferring data from one system to another, sending notifications, assembling reports, processing forms. It costs time — and introduces errors.

Node-RED lets you configure these workflows visually, once, and have them run automatically. Build by drag-and-drop in the browser — no programming knowledge required (though JavaScript is available for advanced users and makes many things easier).

Common use cases:

  • Notifications: Send an email or Mattermost message when a new order arrives
  • Data transfer: Automatically write form submissions from a website into a CRM or spreadsheet
  • Monitoring response: When Uptime Kuma reports an outage, automatically create a ticket in Zammad
  • Document processing: Automatically pass files to Paperless-ngx
  • Regular reports: Send a daily summary from multiple sources by email at 8 AM
  • Webhook processing: Trigger an action when a GitHub/GitLab event occurs
  • Custom APIs: Provide HTTP endpoints for forms, mini-apps, or other systems
  • Custom dashboards: Web interfaces with real-time data, forms, and input fields
  • IoT and hardware: Process sensor data from machines, measurement devices, or smart home systems

Core concept: flows and nodes

Node-RED works with flows — visual diagrams where nodes are connected by lines. Data flows from left to right through the connections.

Every node has a job:

Node type What it does Examples
Input Starts the flow Receive HTTP request, schedule, MQTT message
Processing Transforms or filters data Parse JSON, check conditions, format text
Function Custom logic with JavaScript Restructure data, calculations, complex conditions
Output Sends the result onward Send email, call an API, write to a database
Debug Shows data in the log panel Essential for testing and troubleshooting
How a flow works

[Receive HTTP POST][Parse JSON][Format message][Send Mattermost notification]

This flow receives a webhook request, reads the data inside it, and sends a formatted notification to Mattermost. The entire setup takes about 10 minutes.


Interface overview

Node-RED has a browser-based interface with three areas:

  • Left: Node palette — all available node types; drag them into the flow
  • Center: Flow editor — build flows visually here; multiple tabs for different flows
  • Right: Info & Debug — documentation for the selected node and debug output

Top right: the “Deploy” button — activates your changes. Until you deploy, the existing flows keep running unchanged.


  1. Explore the interface — click through the standard nodes, read the Info panel
  2. Build your first simple flow — e.g. a scheduled email (see below)
  3. Understand the debug node — the most important tool during development
  4. Install community nodes — extend the palette for your integrations
  5. Build production flows — webhooks, integrations, automations
  6. Add error handling — catch nodes for robust flows
  7. Back up flows — export as JSON, version them

First flow: scheduled email

A simple starting example: every morning at 9 AM, Node-RED sends an email.

Step 1: Inject node (schedule)

  1. Drag an inject node from the palette into the flow
  2. Double-click to open settings
  3. Set “Repeat” to “at a specific time”
  4. Set time: 9:00 AM, daily

Step 2: Email node

  1. Add an e-mail node from the palette (if needed, install it via Menu → Manage palette → Install: node-red-node-email)
  2. Enter SMTP server details (server address, port, username, password)
  3. Configure recipient, subject, and message text

Step 3: Connect and deploy

  1. Connect the output of the inject node to the input of the email node (draw a line)
  2. Click “Deploy” in the top right
  3. Done — the email will arrive every morning at 9 AM
Trigger manually for testing
Every inject node has a small button on the left. Click it to trigger the flow immediately — no need to wait until 9 AM while developing.

Webhooks: the heart of automation

Webhooks connect systems together: when System A does something (e.g. new order), it notifies System B (Node-RED), which then triggers further actions.

Receiving a webhook

  1. Drag an http in node into the flow
  2. Method: POST, URL: e.g. /webhook/new-order
  3. Node-RED provides an endpoint at https://your-nodered.srv.camp/webhook/new-order
  4. Attach an http response node so the sender receives a confirmation

Processing and forwarding data

  1. Attach a debug node — shows which data arrives in the Debug panel
  2. Use a function node or change node to read and reformat data
  3. Forward the output to the desired service
Always debug first
Always attach a debug node to the output of your http in node first. The Debug panel shows exactly what data arrives — and tells you which fields you can work with. Only once the data structure is clear should you build the rest of the flow.

Practical flows: concrete examples to build

1. Monitoring alert → create ticket

Scenario: Uptime Kuma reports a website outage → Node-RED automatically creates a ticket in Zammad and posts a message in Mattermost.

[Receive webhook from Uptime Kuma]
    → [Check status: is it "DOWN"?]
        → [Create Zammad ticket via REST API]
        → [Mattermost message: "⚠️ Website X is down since HH:MM"]
    → [http response: 200 OK]

Required nodes: http in, switch, http request (Zammad API), mattermost node or http request (webhook), http response

2. New form submission → process data → email + CRM

Scenario: A contact form on your website sends data to Node-RED → automatic confirmation email to the sender + entry in the CRM.

[Receive HTTP POST /contact-form]
    → [Validate input data]
    → [Send confirmation email to sender]
    → [Send data to CRM API]
    → [Notify sales team in Mattermost]
    → [http response: "Thank you for your message"]

Required nodes: http in, function (validation), e-mail, http request (CRM API), mattermost, http response

3. Daily report from multiple sources

Scenario: Every morning at 8 AM, data from multiple sources is combined and sent as an email report.

[Schedule: daily at 8:00]
    → [Fetch sales data from shop API]
    → [Fetch ticket stats from Zammad API]
    → [Fetch uptime data]
    → [Merge data and format as HTML table]
    → [Send email to leadership]

Required nodes: inject (schedule), multiple http request, join, template (HTML), e-mail

4. Association event reminder

Scenario: 48 hours before an association event, an automatic reminder is sent to the #events Mattermost channel and by email to registered participants.

[Schedule: check hourly]
    → [Query calendar API / JSON file with events]
    → [Check: is there an event in 48h?]
        → Yes: [Send reminder to Mattermost]
               [Send email to participant list]
        → No: [Do nothing]

5. Shop order → Mattermost + invoice

Scenario: For every new order in the online shop, the sales team is notified and an invoice draft is prepared.

[Receive webhook from shop]
    → [Extract order data: items, amount, customer]
    → [Mattermost: "🛒 New order #1234 from Company X for €1,299"]
    → [Send invoice data to accounting API]
    → [http response: 200 OK]
Start small, build incrementally
Start every flow with the simplest possible setup: Input → Debug. When data arrives correctly, add the next node. You’ll catch errors immediately and build robust flows step by step.

Key node types in detail

Standard nodes (pre-installed)

Node Purpose Typical use
inject Starts a flow manually or on a schedule Schedules, cron jobs, test triggers
debug Shows data in the Debug panel Development and troubleshooting
function Custom JavaScript logic Transform data, conditions, calculations
change Set, change, or delete data — without code Rename fields, set values
switch Branch: route data to different outputs based on conditions “If status = ‘DOWN’ → path A, else → path B”
template Build text with variables (Mustache syntax) Email body, HTML pages, API requests
http in / http response Provide HTTP endpoints Receive webhooks, custom APIs
http request Send HTTP requests to external APIs Call REST APIs, fetch data
join / split Merge or split messages Combine multiple API responses
delay Delay or throttle messages Rate limiting, queues
catch Catch errors Error handling in production flows
link in / link out Connect flows without visible lines Keep large flows tidy

Community nodes (installable)

Via Menu → Manage palette → Install, choose from thousands of community nodes. The most useful ones for server.camp users:

Package Purpose Integration with
node-red-node-email Send and receive emails (SMTP/IMAP) Any mail server
node-red-contrib-cron-plus Advanced schedules (cron syntax, sunrise/sunset) Scheduled flows
node-red-node-mysql Query and write MySQL/MariaDB databases Databases
node-red-contrib-postgresql Query and write PostgreSQL databases Databases
node-red-contrib-telegrambot Build Telegram bots and send messages Telegram
node-red-contrib-slack Send messages to Slack Slack
@flowfuse/node-red-dashboard Web dashboard with charts, forms, and displays Custom dashboards
node-red-contrib-aws-s3 Read/write files to S3-compatible storage AWS S3, MinIO
node-red-node-feedparser Read RSS/Atom feeds News feeds, blog monitoring
node-red-node-openweathermap Fetch weather data Events, outdoor activities

Browse all available nodes at flows.nodered.org.

Choose community nodes carefully
Check download counts and last-updated dates for community nodes. Popular, actively maintained nodes are more reliable. When in doubt: test the node in a separate flow before adding it to a production flow.

Dashboard: build custom web interfaces

With the dashboard node package (@flowfuse/node-red-dashboard), build custom web interfaces — without writing HTML, CSS, or JavaScript.

What’s possible

Element Use
Charts (line, bar, gauge) Visualize real-time data (revenue, temperatures, server load)
Text displays Status info, KPIs, latest events
Input fields and forms Enter data to trigger a flow
Buttons Trigger actions manually (e.g. “Generate report now”)
Tables Display data in tabular form
Notifications Pop-up alerts on the dashboard

Use case examples

  • Production dashboard: Sensor values, machine status, alarms at a glance
  • Support dashboard: Current ticket counts from Zammad, uptime status, open tasks
  • Association dashboard: Next events, membership numbers, weather for the next outdoor event
  • Input form: Internal form for requesting time off → triggers email to HR
Dashboard as a mini-app
The dashboard is accessible via its own URL (e.g. https://your-nodered.srv.camp/ui). Bookmark it in the browser or add it as a web app on your phone. A simple dashboard — no separate app development needed.

Subflows: reusable building blocks

When you need the same process in multiple flows (e.g. “format error and send to Mattermost”), encapsulate it as a subflow.

Useful subflow examples:

  • “Send to Mattermost” — accepts text and posts to a configurable channel
  • “Error handler” — catches errors, formats them, sends notification
  • “API authentication” — fetches a token, caches it, adds it to requests
  • “Validate record” — checks whether all required fields are present

A subflow behaves like its own node — drag it from the palette into a flow and configure it through parameters.


Error handling: building robust flows

Node-RED provides catch nodes that intercept errors from other nodes. Without error handling, flows fail silently — you only notice when results stop arriving.

  1. Add at least one catch node to every production flow
  2. Connect the catch node to:
    • A debug node (for logging)
    • A notification (email or Mattermost) that alerts you to the error
  3. For HTTP webhooks: add an http response node in the error case so the sender doesn’t wait indefinitely

Status nodes

Status nodes show the current state of individual nodes in the flow editor (e.g. “Connected”, “Waiting for data”, “Error”). Ideal for nodes that maintain persistent connections (MQTT, databases, WebSockets).


Exporting, importing, and backing up flows

Flows can be exported and imported as JSON:

  1. Select a flow or all flows → Menu → Export → Clipboard or Download file
  2. The JSON can be imported into a new Node-RED → Menu → Import
Back up flows regularly
Save important flows as JSON backups in Nextcloud or Seafile, or use a Git repository in GitLab. server.camp includes daily backups, but your own versioned backup lets you restore older versions of a flow.
Sharing flows
Node-RED has a community library at flows.nodered.org where thousands of flows and nodes are shared. Before building a flow from scratch, check there first — a template you can adapt often already exists.

Best practices for freelancers

Challenge Solution with Node-RED
New inquiry via contact form → manual forwarding Webhook from form → automatically email + CRM entry + Mattermost message
Assembling client project status from multiple sources Daily report flow: fetch API data → HTML report → email
Forgetting to renew SSL certificates or domains Scheduled flow: check expiration dates → reminder via email/Telegram
Creating invoices manually Webhook on project completion → send invoice data to accounting API
“Is the client’s website still up?” Uptime Kuma webhook → Node-RED → Mattermost/Telegram notification + Zammad ticket

Tip for freelancers: Node-RED is ideal for closing the gaps between your tools. You use a CRM, a calendar, a mail server, and cloud storage — Node-RED connects them all and eliminates daily repetitive manual work.

Best practices for SMBs and agencies

Challenge Solution with Node-RED
New shop order → manually notify everyone Shop webhook → Mattermost message to sales + email to logistics
Monitoring alert → manually create ticket Uptime Kuma webhook → automatically create Zammad ticket + Mattermost alert
Daily status report assembled manually Scheduled flow: aggregate data from Zammad, shop, monitoring → HTML report
Client onboarding: manual checklist Flow with form dashboard: enter client data → create accounts, send emails, work through checklist
Transfer data from one system to another HTTP request to API A → transform data → send to API B
Archive paper documents Scan → Nextcloud folder → Node-RED forwards to Paperless-ngx

Tip for SMBs: Start by automating whatever saves the most manual effort.

Best practices for associations and nonprofits

Challenge Solution with Node-RED
New membership applications handled manually Web form → Node-RED → confirmation email + entry in member list + notification to board
Event reminders sent manually Scheduled flow: 48h before event → email to participants + Mattermost post
Weather check for outdoor events Flow: fetch weather data → if rain, automatically warn in Mattermost channel
Social media posts created manually Flow: event data from calendar → format post → send to API or email for approval
Confirming donations Webhook from payment provider → thank-you email to donor + entry in donation list
Association newsletter to all members Scheduled flow: newsletter text from template + current data → email to mailing list

Tip for associations: The dashboard feature is especially valuable: create a simple association dashboard with upcoming events and important links — accessible via a URL, no app development required.


Integration with other server.camp services

Node-RED is the ideal connector between all your server.camp services:

From To What Node-RED does
Uptime Kuma Zammad On outage → create ticket with all monitoring details
Uptime Kuma Mattermost On outage → notify team in chat
Zammad Mattermost On new VIP ticket → instant notification
Authentik Vaultwarden Sync groups and memberships
Contact form Zammad Create ticket from form data
External system Paperless-ngx Automatically forward documents for archiving
Nextcloud / Seafile Paperless-ngx New file in scan folder → automatically hand off to Paperless
Shop system Mattermost New order → notify team
Any API Dashboard Fetch data and visualize in real time on the dashboard
Node-RED as a central integration hub
In organizations using Nextcloud, Zammad, Mattermost, Uptime Kuma, Paperless-ngx, and other tools, Node-RED is the connecting element. It receives webhooks from all systems and can trigger actions in all others. Instead of connecting each system to every other system individually, everything flows through Node-RED as a central hub.

Security

Access protection

Node-RED at server.camp is accessible via your personal URL and protected with username/password. Keep your credentials secure. On the Corporate plan, SSO via OpenID Connect can be configured — contact support for help.

Securing webhook endpoints

Your webhook URLs are publicly reachable. To prevent abuse:

  • Shared secret: Send a secret token in the header and verify it in the flow
  • IP whitelist: Check in the flow whether the request comes from a known IP
  • HMAC verification: Many systems (GitHub, Stripe) sign webhooks — verify the signature in the flow
Always secure webhooks
Without protection, anyone who knows your webhook URL can send data to your flow. Implement at least a shared secret and verify it in the flow with a switch node.

Questions?

Need help setting up a flow or implementing a more complex automation? Reach out at support@server.camp. We’re happy to help.

Find frequently asked questions about Node-RED on our product page.