Files
ironclaw/docs/tunnel.mdx
2026-04-09 14:18:30 +02:00

101 lines
2.6 KiB
Plaintext

---
title: "Setup a Tunnel"
description: "Expose your local agent to the internet"
---
A tunnel exposes your local IronClaw agent to the internet. You need it for webhook-based channels and for instant message delivery where polling is not desired.
<Note>
If you haven't set up your agent yet, follow our [Quickstart guide](./quickstart)
</Note>
---
## Configure
Configure a tunnel through the onboarding command:
```bash
ironclaw onboard --channels-only
```
### ngrok
`ngrok` is a managed tunnel service with a minimal setup, ideal if you are just starting with `ironclaw`. To use it, you will need to get an auth token from the [ngrok dashboard](https://dashboard.ngrok.com/get-started/your-authtoken)
### Cloudflare
`Cloudflare Tunnel` connects your local service to Cloudflare via outbound-only connections from `cloudflared`.
Use it when you already run Cloudflare Zero Trust or want a production-style ingress layer. Before setup:
Install `cloudflared`:
<Tabs>
<Tab title="macOS">
```bash
brew install cloudflared
```
</Tab>
<Tab title="Ubuntu">
[Cloudflare package install guide](https://pkg.cloudflare.com/).
</Tab>
<Tab title="Other">
[Cloudflare Tunnel downloads page](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/).
</Tab>
</Tabs>
Then, create a tunnel in the [Cloudflare dashboard](https://dash.cloudflare.com) under `Zero Trust > Networks > Connectors` follow the instructions to get the tunnel token.
### Tailscale
`Tailscale` is a WireGuard-based private mesh network for your devices (your tailnet). Use it when your team already relies on Tailscale networking.
### Custom
Use this option when you want full control over the tunnel command and process.
Provide a shell command with placeholders:
- `{port}` for IronClaw's local port
- `{host}` for IronClaw's local host
Example:
```bash
bore local {port} --to bore.pub
```
### Static URL
Use this option when the tunnel is managed outside IronClaw and you already have a stable public URL.
IronClaw will use that URL directly and will not start or manage any tunnel process.
---
## Which option to pick
| Option | Best for |
|---|---|
| `ngrok` | quickest setup, local development |
| `Cloudflare` | production-style setup with Cloudflare stack |
| `Tailscale` | teams already using Tailscale networking |
| `Custom` | custom tunnel tooling and command control |
| `Static URL` | externally managed ingress with fixed public URL |
---
## Security notes
- Treat tunnel tokens and URLs as sensitive credentials.
- Prefer short-lived or rotated tokens where possible.
- If exposing public endpoints, apply channel-level auth and least-privilege access.