From installation to startup to resident operation with systemd. It takes about 5 minutes.
Create a canal on the dashboard, then download the connection file wirecanal.json from the "Setup" tab of the canal details (for step-by-step instructions with screenshots, see ① Create a canal). This file contains the connection key for that canal.
In the directory where you want to place the Agent (e.g. /opt/wirecanal), run this one line. The executable wirecanal is placed in that directory, and the install is verified automatically, ending with the version display.
curl -fsSL https://download.wirecanal.com/install.sh | shTo install manually, download https://download.wirecanal.com/latest/wirecanal-linux-amd64 (for arm64, wirecanal-linux-arm64; for 32-bit ARM, wirecanal-linux-arm), save it as wirecanal, then run chmod +x wirecanal.
On Raspberry Pi (Raspberry Pi OS, 64-bit or 32-bit) and small boards such as the Luckfox Pico, the steps on this page work as they are. All commands are identical.
Place the downloaded wirecanal.json in the same directory, then start the Agent. Since the file contains your connection key, we recommend restricting read access to yourself.
chmod 600 wirecanal.json
./wirecanal -config wirecanal.jsonWhen the startup log shows a line like "canal <ID>: delivering access to https://<hostname> to local forwarding target <target>", the tunnel is open. The canal details on the dashboard also switch to "Connected!".
To keep it running as a server, the most reliable way is to let the OS-standard systemd manage it. Below is a template for an install under /opt/wirecanal (adjust paths and the user name to your environment).
[Unit]
Description=WireCanal Agent
After=network-online.target
Wants=network-online.target
[Service]
User=wirecanal
WorkingDirectory=/opt/wirecanal
ExecStart=/opt/wirecanal/wirecanal -config /opt/wirecanal/wirecanal.json
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetsudo useradd --system --home /opt/wirecanal --shell /usr/sbin/nologin wirecanal
sudo chown -R wirecanal: /opt/wirecanal
sudo systemctl daemon-reload
sudo systemctl enable --now wirecanal
systemctl status wirecanal --no-pagerRestart=always).journalctl -u wirecanal -f.chown above). It still runs without write access, but updates then become manual (wirecanal update).The Agent replaces itself automatically when a new version is released (updates are applied only after signature verification, and if an update fails it automatically rolls back to the previous version). Only if you want to disable it, add "auto_update": false to wirecanal.json.
Just add one line to wirecanal.json, such as "proxy_url": "http://proxy.example.co.jp:8080", and outbound connections go through that proxy (environment-variable proxy settings are not consulted — only the configured value is used, for predictable behavior).
To switch the display language to Japanese, add "lang": "ja" to wirecanal.json ("lang": "en" selects English). If the connection does not come up, start with -verbose for detailed logs. You can revoke and reissue connection keys anytime from the dashboard. All options including these (multiple canals, timeouts, operation records, and more) are covered in the wirecanal.json configuration reference.
Sign-up is free. No credit card required — create your first canal right now.
Sign up free and get started