> ## Documentation Index
> Fetch the complete documentation index at: https://docs.boxd.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Nod

> Run your own Nod server, n8n's open-source personal agent, on a boxd machine with HTTPS and no domain or firewall to set up.

![The Nod wordmark inside the boxd card.](https://mintcdn.com/azin/hzxvJlAVnEvK1ZI1/images/boxd-x-nod.png?fit=max\&auto=format\&n=hzxvJlAVnEvK1ZI1\&q=85\&s=196ab4d21bce66f7fcaf661ae02480c1)

[Nod](https://nod.n8n.io) is n8n's open-source personal agent with its own computer. It works across your email, calendar, apps, and the web, and asks before it acts for you. You can run it as a desktop app, or host one server and reach the same assistant from the web, the desktop app, Telegram, and WhatsApp.

A Nod server is a Docker Compose stack that includes the server, PostgreSQL, a workspace container, and a browser container. A boxd machine has Docker and Compose installed and its own HTTPS address, so the server needs no domain, no certificate, and no firewall rules. Nod's docs have a community guide for this, [Deploy on boxd](https://nod.n8n.io/docs/deploy/boxd/), added in this [pull request](https://github.com/n8n-io/nod/pull/733). This page is the short version.

## Set up

**1. Create a machine**

On your computer, with the [boxd CLI](https://docs.boxd.sh/cli/installation.md) installed and signed in. Pick your own machine name and use it in place of `nod` below:

```bash theme={"theme":"github-dark"}
boxd machine new nod --vcpu=2 --isolated --auto-suspend-timeout=0 --auto-hibernate-timeout=0
```

This creates a machine with 2 vCPUs and 8 GiB of memory, the size Nod's docs start with. The command prints the machine's address as `url`: `nod.boxd.sh`, or `nod.nyc.boxd.sh` in [New York](https://docs.boxd.sh/guides/regions.md). `boxd machine get nod` shows it again.

**2. Get Nod**

Open a shell on the machine with `boxd connect nod`, then clone Nod and generate its configuration:

```bash theme={"theme":"github-dark"}
git clone https://github.com/n8n-io/nod.git
cd nod/deployment/self-host
sh setup.sh
```

`setup.sh` writes a private `.env` with a server token, an encryption key, and a database password.

**3. Set the address**

In `.env`, edit these three lines. Use the exact `url` from the first step as the address, such as `https://nod.nyc.boxd.sh` in New York:

```bash .env theme={"theme":"github-dark"}
PORT=8000
NOD_BIND_ADDRESS=0.0.0.0
NOD_PUBLIC_URL=https://nod.boxd.sh
```

**4. Build and start**

```bash theme={"theme":"github-dark"}
docker compose up -d --build --wait
```

The first build compiles Nod and its browser tools. It took about 7 minutes in our test on this machine size. The command returns when every container is healthy.

**5. Sign in**

Print the server token:

```bash theme={"theme":"github-dark"}
grep NOD_AUTH_TOKEN .env
```

Open the machine's address, enter the token, and finish onboarding to connect a model. The desktop app connects to the same address with **Connect to a server**.

## Check it from a terminal

With your machine's address, the page answers without a token, and the API doesn't:

```bash theme={"theme":"github-dark"}
curl -s -o /dev/null -w '%{http_code}\n' https://nod.boxd.sh/
curl -s -o /dev/null -w '%{http_code}\n' https://nod.boxd.sh/api/state
```

```text theme={"theme":"github-dark"}
200
401
```

## What the settings do

| Setting | Why |
| - | - |
| `--isolated` | Nod runs commands and a browser for you. An [isolated](https://docs.boxd.sh/use-cases/sandboxes.md) machine holds no boxd credentials and can't reach your other machines. |
| `--auto-suspend-timeout=0` and `--auto-hibernate-timeout=0` | Nod runs schedules and checks your accounts when no client is open. With both timeouts off, the machine never [sleeps](https://docs.boxd.sh/guides/suspend-resume.md). |
| `PORT=8000` | boxd's [HTTPS proxy](https://docs.boxd.sh/guides/https.md) finds the server on port 8000 and serves it at the machine's address. |
| `NOD_BIND_ADDRESS=0.0.0.0` | Nod listens on localhost only by default. This makes it reachable at the machine's address. |
| `NOD_PUBLIC_URL` | The address you open Nod at. Nod also uses it for app sign-in pages. |

boxd terminates TLS, so leave Nod's own `https` profile off.

The address is public, and Nod's server token is what protects it. Keep the token private. PostgreSQL, the browser, and the workspace are not published outside the machine.

## Clients that aren't a browser

The desktop app, Telegram webhooks, and Meta's WhatsApp Cloud API call the machine's address directly. [Bot protection](https://docs.boxd.sh/guides/bot-protection.md) in the **On** mode asks every visitor for a browser check, which those clients can't pass. Check the machine's mode, and set it to **Sleep only** if it is **On**:

```bash theme={"theme":"github-dark"}
boxd machine config get nod bot-protection
boxd machine config set nod bot-protection sleep_only
```

This machine never sleeps, so in **Sleep only** every request goes straight to Nod.

## Running it

* **Restarts:** the containers start again by themselves when the machine reboots, and conversations, files, and schedules are on the machine's disk.
* **Cost:** the machine runs all day. See [boxd.sh/pricing](https://boxd.sh/pricing) for the rates, and the [cost section](https://nod.n8n.io/docs/deploy/boxd/#check-the-cost) of Nod's guide for an estimate.
* **Backups:** follow Nod's [backup procedure](https://nod.n8n.io/docs/deploy/server-operations/#back-up) and keep a copy outside the machine.
* **Size:** browser tasks and local models can need more than 2 vCPUs. See [machine sizes](https://docs.boxd.sh/guides/resources.md#machine-sizes).

## Read more

* [Deploy on boxd](https://nod.n8n.io/docs/deploy/boxd/) in Nod's docs
* [Host your own server](https://nod.n8n.io/docs/deploy/self-host/) for the desktop app, Telegram, and WhatsApp
* [Nod on GitHub](https://github.com/n8n-io/nod)
* [HTTPS on boxd](https://docs.boxd.sh/guides/https.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.