Documentation / Merakit Tunnel

Merakit Tunnel Documentation

Guides for Merakit Tunnel: installing the agent on a device, creating public addresses, using your own domain, access protection, usage, and example configurations.

tunnel networking https domain wireguard proxmox raspberry pi

Merakit Tunnel makes apps on your local network reachable from the internet through a public address. Your device does not need a public IP, and you do not need to open ports on your router. Everything is configured from the Tunnel menu in the Merakit console portal.

How It Works

  1. The Merakit agent is installed on a device that can reach your app, such as an office server, a Linux laptop, or a Raspberry Pi.
  2. The agent makes an outbound connection to the Merakit gateway through an encrypted WireGuard tunnel.
  3. A visitor opens the public address. The gateway checks access, forwards the request through the tunnel to the device, and the device forwards it to the target app.

The tunnel’s private key is generated on the device and is never sent out.

Device Requirements

RequirementDetails
Operating systemLinux with systemd: Ubuntu, Debian, Raspberry Pi OS, or a Proxmox host
Architectureamd64 or arm64
NetworkOutbound internet access. Outbound UDP is used for the tunnel.
Target appReachable from the device, on the device itself or on the same network

Getting Started

  1. Sign in to the Merakit console and open the Tunnel menu.
  2. Choose Add device, name the device (for example office-server), then choose Create install command.
  3. Run the command shown in the device’s terminal:
curl -fsSL https://console.merakit.co.id/install.sh | sudo MERAKIT_TOKEN=<token-from-console> sh
  1. Wait until the device status changes to Connected.
  2. Choose Add address, fill in the address and target, then save.

The install token is secret. Do not share it publicly.

Writing the Target

The target is written as address:port as seen from the device running the agent.

AppTarget
App on the device itself127.0.0.1:3000
App on another server on the same network192.168.1.20:80
App that already uses HTTPShttps://192.168.1.10:8006

For HTTPS targets with self-signed certificates, such as a Proxmox panel, leave Target must have a trusted certificate unchecked. Check it when the target uses a trusted certificate and you want the gateway to verify it.

Public Addresses

There are two address options:

  • Merakit subdomain: enter a name, for example client-demo, so the address becomes client-demo.tunnel.merakit.my.id. It goes live immediately.
  • Your own domain: enter the full domain, for example attendance.myoffice.id. It goes live after the domain is verified.

Verifying Your Own Domain

Add these two records at your domain’s DNS provider. The token and the gateway IP are shown in the console on the address row awaiting verification.

TXT  _merakit.attendance.myoffice.id  →  merakit-verify=<token-from-console>
A    attendance.myoffice.id           →  <gateway IP from the console>

Once the records are saved, choose Verify. The HTTPS certificate is issued automatically a few seconds after verification.

Access Protection

Each address can have extra protection under Access protection:

  • Username and password: visitors must enter credentials before the request is forwarded to the device.
  • Allowed IPs only: enter allowed IPs or ranges separated by commas, for example 203.0.113.7, 10.0.0.0/8. Leave it empty to allow all IPs.

Rejected requests stop at the gateway and never reach your device.

Example Configurations

NeedTargetAddressSuggested protection
Office Proxmox panelhttps://192.168.1.10:8006pve.myoffice.idOffice IP only
Attendance app on a LAN server192.168.1.20:80attendance.myoffice.idThe app’s own login
Prototype demo from a laptop127.0.0.1:3000client-demo.tunnel.merakit.my.idPassword
Sensor dashboard on a Raspberry Pi127.0.0.1:1880warehouse-sensors.tunnel.merakit.my.idPassword
Payment webhook testing127.0.0.1:8000webhook-dev.tunnel.merakit.my.idNo extra protection, remove after testing

Usage and Billing

  • Rp1,000 per GB with a free quota of 5 GB per month per organization. Months follow WIB (UTC+7).
  • Usage counts HTTP data passing through the gateway, in and out. Tunnel protocol overhead is not billed. 1 GB = 1,000,000,000 bytes.
  • Charges are deducted hourly from your balance.
  • A monthly cap keeps usage within budget.
  • Data flow, response time, and response status charts are available in the Tunnel menu. Hourly details can be downloaded as CSV.

Address Status

StatusMeaningWhat to do
ActiveThe address is reachableNothing
Waiting for deviceThe agent is not installed or not connectedRun the install command on the device
Domain verificationThe TXT record was not foundCheck the DNS record, then choose Verify
Paused · balanceNot enough balanceTop up; the address resumes automatically
Paused · monthly capUsage reached the monthly capRaise the cap or wait for next month
PausedPaused manuallyChoose Resume

Troubleshooting

  • Device shows as disconnected: outbound UDP is usually blocked by a firewall or the network. Make sure the device can send UDP out, then check the logs with journalctl -u merakit-agent -f.
  • Visitors see a 502 error: the target app is not running or the target is wrong. Try opening the target from the device, for example with curl http://127.0.0.1:3000.
  • HTTPS target fails: if the target uses a self-signed certificate, make sure the trusted certificate option is unchecked.

Merakit Documentation

Need More Help

Open the full documentation list or search other topics in the Help Center.