Skip to main content

Connect your device

Your labs — your own Linux machines in the cloud — are private. To reach them from your own computer (SSH, a database client, a web app on any port), you register that computer as a device and bring up an encrypted tunnel.

Do this once per computer or phone. After that, every lab you own is reachable from it.

You do not need this to start

VS Code in the browser works without any of this. Set up a device when you want SSH, or when you want to use local tools against your labs.

1. Install WireGuard​

Windows

Download and run the official installer.

macOS
Linux
sudo apt install wireguard
Android / iOS

Install the WireGuard app from Google Play or the App Store. On mobile you will scan a QR code instead of copying a file.

2. Register the device​

Go to Connectivity → My Devices and select Add Device.

Shown on labs.selfmade.ninja, the Selfmade Ninja Academy platform. On your own platform you will see your own domain and data.
FieldWhat to enter
Device NameAnything recognizable, up to 25 characters
Device TypeLaptop, Desktop, Mobile, Tablet, Server, IoT or Embedded
Auto Generate KeypairLeave checked unless you want to supply your own key
Reserve IP when AllocatedCheck to keep the same address across reconnects

Select Verify and Add.

Who generates the key

With Auto Generate Keypair checked, the platform creates the key pair for you and you can download a ready-to-use config or scan a QR code.

If you prefer that the platform never holds your private key, generate the pair yourself and paste only the public key. You then get a config with a {private_key} placeholder to fill in locally, and the QR code is generated in your browser rather than on the server.

wg genkey | tee privatekey | wg pubkey > publickey

3. Bring up the tunnel​

From the device's menu:

  • Download Tunnel File — a .conf for the desktop app
  • Show QR Code — scan it with the mobile app
  • Show Configuration — copy the text yourself
Shown on labs.selfmade.ninja, the Selfmade Ninja Academy platform. On your own platform you will see your own domain and data.

A configuration looks like this. The addresses below are examples — yours come from the dashboard:

[Interface]
PrivateKey = <your-private-key>
Address = 203.0.113.24/32

[Peer]
PublicKey = <server-public-key>
AllowedIPs = 203.0.113.0/24
Endpoint = <server>:51820
PersistentKeepalive = 25
Desktop app (Windows / macOS)

Open WireGuard, Import tunnel from file, select the downloaded .conf, then select Activate.

Linux
sudo cp your-tunnel.conf /etc/wireguard/wg0.conf
sudo wg-quick up wg0
sudo wg show # confirms the peer and handshake
Mobile

Open the WireGuard app, tap +, choose Scan from QR code, then enable the tunnel.

4. Check it works​

Ping your own lab's address — the Device IP shown on that lab's page:

ping <your-lab-ip>

Replies mean the tunnel is up. Then SSH in:

ssh <your-username>@<your-lab-ip>
Ping the lab, not the network

Test against a running lab's own address. A network or gateway address never replies, so pinging one looks like a broken tunnel when nothing is wrong.

Limits​

Every account can register 5 devices by default. The counter under the Add Device button shows how many you have used; the button is grayed out at the limit. Delete a device you no longer use to free a slot.

If it does not connect​

  • No handshake — check that the tunnel is activated, and that the device has not been deleted in the dashboard.
  • Handshake, but the lab does not answer — confirm the lab is actually running. A stopped lab has no address.
  • It worked yesterday — if the device had no reserved address, it may have been given a different one. Reserve the address to pin it.

See Troubleshooting → Cannot connect.

Do it with an AI assistant​

You can also do this by asking an AI assistant connected to your account — see Connect an AI assistant to set one up.

AskWhat the assistant does
“Register my laptop for the VPN. Here is its public key: …”Registers it with add_device, then gives you the config file from device_config to fill your private key into
“I don't know how to make keys — set up my phone for me”add_device without a key, so the platform makes the pair, then device_config for a complete config
“Which of my devices have connected recently?”list_devices
Prefer giving it your public key

If you let the platform generate the key pair, the private key passes through your conversation with the assistant. Use that config only on the one device, or generate the keys yourself and hand over the public half. Registering devices works on every plan, including free.