Setup guide

From nothing to working cameras, step by step.

Everything you need to build your own IPC Terminal server, connect your recorders and start watching, written so you can follow it without being a network engineer.

About 1–2 hours for a first setupNo cost beyond your own hardwareYour keys never leave your devices
Start here

How it fits together

IPC Terminal connects your cameras and the people who watch them through a private server that you own. Everything is encrypted with WireGuard, and the server only passes traffic between your own devices. It never sends anything to the internet.

The four kinds of device

Every device that joins your network is a peer. It has its own key pair and gets a fixed address from a range that depends on its role:

RoleWhat it isAddress range*What it can reach
ServerThe hub you build with the builder.1Only answers tunnel traffic
BoxNext to the cameras: the recorder PC, or a small gateway.2 – .99Nothing on its own. Viewers connect to it.
ViewerPeople who watch live video and playback.100 – .199Boxes, on the camera ports you allow
AdminA viewer who may also use Remote Desktop or server SSH.200 – .254Same as viewer, plus RDP (if enabled) and SSH

*Inside the private network, which defaults to 10.77.0.0/24. Viewers cannot reach each other, and boxes cannot start connections to viewers.

Two ways to build a site

Option A · simplest

The recorder PC is the box

Install WireGuard on the Windows PC that already runs your recorder software. Viewers connect to that PC’s tunnel address. Nothing else to buy or install, and the camera network can keep its own address range.

Option B · whole site

A small gateway on the camera network

A mini-PC or Raspberry Pi running Linux sits next to the cameras and forwards tunnel traffic to them, so viewers can reach every camera and recorder on that LAN by its normal address. Each site needs a different LAN address range.

Where things stand: the server builder is ready now. A dedicated Windows client and a ready-made box image are still in development, so this guide uses the standard, free WireGuard app for the peers. They will keep working when the dedicated client arrives.

Preparation

Before you start

Gather these first. You can follow every step below with just this list.

  • A place to run the server. This can be a small PC or mini-PC with at least 1 GB of RAM, a rack server, or a hosting provider that lets you boot your own ISO image (custom ISO upload or virtual media). The server runs entirely from memory.
  • A public address for it. A fixed IP or a hostname that points to it. Behind a home or office router, you must forward one UDP port (default 51820) to the server.
  • A build machine running Debian 13 (Trixie) with sudo access, about 15 GB free disk space and an internet connection. A virtual machine works. This is only used to create the server image, not to run it.
  • One or two USB sticks (4 GB or more) to put the image on, unless your provider boots ISO files directly. A second stick is needed if you choose the safer key-on-USB option.
  • The WireGuard app on every other device. Download it from wireguard.com/install. It exists for Windows, macOS, Linux, iOS and Android.
  • A list of who and what will connect: which sites (boxes), which people (viewers), and who needs admin rights.

Never email or paste a private key. Each device creates its own key pair. You only ever share the public key, which is safe. The builder website cannot see your private keys and never needs them.

Overview

Quick start

The whole process in eight lines. Each step has a full section below.

  1. Create a key pair on every device

    On each box, viewer and admin device, using the WireGuard app. Copy down the public key of each. Details →

  2. Answer the questions at build.ipcterminal.com

    Name, network, port, key delivery, allowed ports, SSH, hardening, and paste the public keys. Details →

  3. Download the build script and run it on Debian 13

    It creates the server key on your machine, builds the image and prints the server public key. Details →

  4. Back up the secrets folder

    Keep it offline. It is the identity of your server. Details →

  5. Write the image to a USB stick and boot the server

    Open the UDP port. Details →

  6. Finish each peer’s configuration

    Add the server’s public key, its address and the peer’s assigned tunnel address. Boxes → Viewers →

  7. Test

    Ping the server, then the box, then open a camera. Details →

  8. Keep the Peers file

    It is how you add or remove devices later. Details →

Step 1

Create a key pair on every device

The server needs to know every peer’s public key when it is built. So create the keys first. If you forget one, you can always add it later by rebuilding (see Add peers & update).

On Windows, macOS, iOS or Android

  1. Open the WireGuard app

    Choose Add Tunnel → Add empty tunnel… (on Windows) or the equivalent Create from scratch (mobile and Mac).

  2. Give it a name

    Use something meaningful such as site-malmo or alice-laptop.

  3. Copy the public key

    The app creates a key pair automatically and shows Public key, a 44-character string ending in =. Copy it and keep it with the device’s name. Do not close this window yet. You will come back and finish this tunnel in step 5 or step 6.

On Linux

Terminal
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
cat publickey

Keep privatekey on the device. Send only the contents of publickey.

Tip: keep a simple list as you go: role, name, public key. For example: box, site-malmo, AbC…=. You will paste this list into the builder.

Step 2

Answer the builder

Open build.ipcterminal.com. It asks one question at a time and everything happens in your browser. Nothing is uploaded. Here is what each question means and what to answer if you are unsure.

QuestionWhat it meansGood default
Server nameA label for this customer or location. It becomes the folder name.The customer’s name
ArchitectureThe CPU of the server. Most PCs and VPS are x86_64. Raspberry Pi 4/5 and Ampere servers are ARM64.x86_64
NetworkDHCP takes its address from the network. Static needs an address like 203.0.113.10/24, a gateway and DNS.DHCP on a LAN, static on a rack or VPS
UDP portThe one port the server listens on. This is the only port you open.51820
Overlay networkThe private address range inside the tunnel. It must be a /24 and must not clash with a real network you want to reach.10.77.0.0/24 (change it if 10.77.x.x is already in use)
MTUThe largest packet through the tunnel. Lower it on mobile, PPPoE or double-NAT links if video stutters.1420
Public IP or hostnameWhere peers will find the server. Only printed in your guide so that you can copy it later.Your DNS name or fixed IP
Key deliveryEmbedded: the server key is inside the image, so the image itself is a secret and the server boots unattended. Separate USB: the image holds no secrets, but someone must insert a USB stick labelled IPCKEYS at every boot.Embedded for unattended sites, USB for the highest security
Traffic portsWhat viewers may send to the cameras. Everything else is dropped by the server firewall. RTSP 554, HTTP 80, HTTPS 443 and the Hikvision SDK port 8000 are on by default. RDP 3389 is for admins only.Leave the defaults. Add RDP only if you will use Remote Desktop.
Extra TCP portsAny other ports your equipment uses. Dahua uses 37777 for its main service. Some cameras use 8080 or 8554.Dahua: 37777. Otherwise empty.
Admin SSHLets an admin log in to the server through the tunnel, with a key, to look at status. Without it the server has no login at all and is changed only by rebuilding.Headless unless you need to inspect it
HardeningExtra protection layers. All are on by default, and you should leave them.Keep the defaults. Turn on Preshared keys if you want one more layer.
PeersPaste the public keys you collected in step 1. See below.

Pasting peers

At the peers step, paste your list. The simplest format is one public key per line, with a default role chosen from the dropdown. For more control, use one line per peer in this form:

role,name,publickey,address,routes
box,site-malmo,<44-character public key>
viewer,alice,<44-character public key>
admin,ops,<44-character public key>
box,site-lund,<44-character public key>,,192.168.50.0/24
  • The address is optional. Leave it empty and the builder assigns the next free one for the role.
  • Routes are only for Option B gateways. They are the camera LAN behind the box, for example 192.168.50.0/24. Use a semicolon to list more than one. Only private ranges between /16 and /32 are accepted, and two boxes cannot share a range.
  • You can also paste a whole client config. The builder works out its public key locally and throws the private key away. You can paste the Peers file or an old build script from a previous build to carry over everything.

Write down each peer’s address. After you generate the build, open the Peers file tab. The fourth column is the tunnel address each device must use in its own configuration.

Finish by choosing Generate build guide & script. You get three things: a build guide, the script (download it) and the Peers file (save it).

Step 3

Build the server image

Do this on your Debian 13 build machine. The builder shows the exact commands with your own file names, so copy them from there. This is what they do:

  1. Install the build tools

    Terminal
    sudo apt update
    sudo apt install -y live-build debootstrap squashfs-tools xorriso wireguard-tools openssh-client git curl gnupg

    For an ARM64 server built on a normal PC, the guide also adds qemu-user-static binfmt-support. That build is much slower.

  2. Run the script as root

    Terminal
    chmod +x ~/Downloads/build-ipc-name.sh
    sudo ~/Downloads/build-ipc-name.sh

    The script creates a folder ~/ipc-name, makes the server key on your machine, writes every configuration file and asks Run the build now? [y/N]. Type y. A build takes 20–60 minutes.

  3. Write down the server public key

    Near the end the script prints a box containing the Server public key, the listen port, the overlay network and the endpoint. Every peer needs the first and the last.

  4. Back up the secrets folder

    Do this now. ~/ipc-name/secrets holds the server private key (and the SSH host key and preshared keys, if you use them). Copy it to encrypted offline storage. If you lose it, every peer has to be reconfigured. Rebuilds reuse it automatically, which is how an update keeps the same server identity.

  5. Check the files

    Terminal
    cd ~/ipc-name && sha256sum -c SHA256SUMS

    Every line should say OK. The finished image is live-image-amd64.hybrid.iso (or arm64) in the same folder, and its checksum is in ISO.sha256.

Step 4

Boot the server

  1. Write the image to a USB stick

    Or attach the ISO as virtual media if your provider or server supports it.

    Terminal
    lsblk
    sudo dd if=~/ipc-name/live-image-amd64.hybrid.iso of=/dev/sdX bs=4M status=progress conv=fsync

    This erases the target. Replace sdX with the whole USB device you identified with lsblk, for example /dev/sdb, never a partition and never your own system disk. If you are not certain, stop and check the size and name in lsblk again.

    On Windows or macOS you can use a tool such as balenaEtcher or Rufus to write the same ISO file (use “DD image” mode in Rufus).

  2. If you chose “Separate USB stick”, prepare the key stick

    Use a second stick. The label must be exactly IPCKEYS.

    Terminal
    sudo mkfs.vfat -F 32 -n IPCKEYS /dev/sdY1
    sudo mkdir -p /mnt/ipckeys && sudo mount /dev/sdY1 /mnt/ipckeys
    sudo cp -r ~/ipc-name/secrets/. /mnt/ipckeys/
    sudo umount /mnt/ipckeys

    Keep this stick offline except while the server boots. The server waits up to 15 minutes for it, copies the keys into memory and unmounts it, and then you can take it out.

  3. Boot the server from the stick

    Plug the stick into the server and choose it in the boot menu (UEFI or BIOS). The system loads completely into RAM, so the server needs at least 1 GB. Leave the stick plugged in if you can: after a power cut the server will come back on its own.

    If a server refuses to boot with Secure Boot enabled, turn Secure Boot off in its firmware settings. The image is not signed for it.

  4. Open the UDP port

    Allow UDP 51820 (or the port you picked) to the server, and nothing else. On a router, forward that port to the server’s address. On a hosting provider, add it to the firewall or security group.

  5. Point a name at it

    Create a DNS record for your hostname, or use the fixed public IP. This is the Endpoint the peers will use, for example vpn.example.com:51820.

Step 5

Connect a site (box)

Pick one of the two options. You will need three things from the earlier steps: the server public key, the endpoint and the tunnel address the Peers file gave this box.

Option A: the recorder PC is the box (Windows)

  1. Open the tunnel you created in step 1

    In the WireGuard app select the tunnel and choose Edit. Leave the PrivateKey line exactly as the app made it, and add the rest:

    WireGuard config
    [Interface]
    PrivateKey = (leave the line the app generated)
    Address = 10.77.0.2/32
    MTU = 1420
    
    [Peer]
    PublicKey = <SERVER public key from the build>
    Endpoint = vpn.example.com:51820
    AllowedIPs = 10.77.0.0/24
    PersistentKeepalive = 25

    Keep AllowedIPs to the tunnel network only. Never use 0.0.0.0/0. It would try to send all your internet traffic into the tunnel. The server would drop it anyway, but the PC would lose its internet.

  2. Save and activate

    Click Save, then Activate. After a few seconds the status should show a latest handshake.

  3. Allow the recorder software through Windows Firewall

    Windows treats the tunnel as a public network, so rules written only for “Private” networks will not apply. Create an inbound rule that allows your recorder’s ports (for example TCP 80, 443, 554, 8000 and, if you use admin Remote Desktop, 3389) and limit it to the remote address range 10.77.0.0/24.

    Remote Desktop can only be hosted on Windows Pro or higher, not Windows Home.

  4. Make it start by itself

    For a recorder that must reconnect after every reboot, install the tunnel as a Windows service. Run this in an administrator Command Prompt, using the full path to a saved copy of the config file:

    Command Prompt (admin)
    "C:\Program Files\WireGuard\wireguard.exe" /installtunnelservice "C:\path\to\site-malmo.conf"

    Delete the loose .conf copy afterwards, because it contains the private key.

Option B: a gateway on the camera network (Linux)

Use a mini-PC or Raspberry Pi running Debian or Ubuntu, connected to the same LAN as the cameras. In this setup the box needs a route: when you pasted its peer in the builder, you added the camera LAN, for example 192.168.50.0/24.

  1. Install WireGuard and create the keys

    Terminal
    sudo apt install -y wireguard iptables
    umask 077
    wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey
  2. Create /etc/wireguard/wg0.conf

    Replace eth0 with the box’s network interface name (see ip -br link) and use your own addresses and keys.

    /etc/wireguard/wg0.conf
    [Interface]
    PrivateKey = <contents of /etc/wireguard/privatekey>
    Address = 10.77.0.3/32
    MTU = 1420
    PostUp = sysctl -w net.ipv4.ip_forward=1; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    
    [Peer]
    PublicKey = <SERVER public key from the build>
    Endpoint = vpn.example.com:51820
    AllowedIPs = 10.77.0.0/24
    PersistentKeepalive = 25

    The two extra lines let the box pass tunnel traffic on to the cameras and make the cameras see it as coming from the box itself, so the cameras do not need any special route back.

  3. Start it and keep it running

    Terminal
    sudo systemctl enable --now wg-quick@wg0
    sudo wg show

    wg show should list the server with a latest handshake of a few seconds ago.

Do not use the same LAN range at two sites when you use gateways. Each box must have its own camera range, because viewers reach cameras by their normal LAN address. Many sites use 192.168.1.0/24. Change one of them, or use Option A for that site, which has no such limit.

Step 6

Connect viewers and admins

A viewer is configured in the same way as a box. The differences are the address range and AllowedIPs.

  1. Open the tunnel you created in step 1 and edit it

    WireGuard config
    [Interface]
    PrivateKey = (leave the line the app generated)
    Address = 10.77.0.100/32
    MTU = 1420
    
    [Peer]
    PublicKey = <SERVER public key from the build>
    Endpoint = vpn.example.com:51820
    AllowedIPs = 10.77.0.0/24, 192.168.50.0/24
    PersistentKeepalive = 25
    • Address: the address from the Peers file. Viewers use .100–.199, admins .200–.254.
    • AllowedIPs: the tunnel network, plus the camera LAN of every Option B gateway you want to reach (here 192.168.50.0/24). If you only use Option A boxes, the tunnel network alone is enough.
  2. Save and activate

    Turn the tunnel on when you want to view cameras and off when you are done. Everything else on the computer keeps using the normal internet connection.

  3. Open your viewing software

    Add the device by IP address, using the box’s tunnel address (Option A) or the camera’s own LAN address (Option B).

    WhatUse
    Hikvision iVMS-4200 / NVRAdd the IP, SDK port 8000, and the device’s user and password
    Dahua SmartPSS / NVRAdd the IP, port 37777 (add it as an extra port in the builder), user and password
    VLC or any RTSP player (Hikvision)rtsp://user:pass@IP:554/Streaming/Channels/101
    VLC or any RTSP player (Dahua)rtsp://user:pass@IP:554/cam/realmonitor?channel=1&subtype=0
    Camera web pagehttp://IP or https://IP
    Remote control of the recorder PC (admin)Remote Desktop to the box’s tunnel address, when RDP is enabled in the builder

    Automatic device search tools (such as Hikvision SADP) only find devices on the same local network, so they will not see devices through the tunnel. Always add them by IP address.

Phones and tablets: the WireGuard app for iOS and Android can import a config by QR code or file. The setup is the same as for a viewer. Make sure the config only lists the tunnel network and camera LANs in AllowedIPs.

Step 7

Test it

Test in small steps, so that if something fails you know which part. Start from a viewer with its tunnel turned on.

  1. Ping the server

    Terminal
    ping 10.77.0.1

    A reply proves the tunnel itself works. No reply? See no handshake.

  2. Ping the box

    Terminal
    ping 10.77.0.2

    Windows blocks ping by default. If the recorder PC does not answer but the tunnel shows a handshake, go on to the next step and test the real port instead.

  3. Open a camera or the recorder

    Use the software from step 6, or open http://<box or camera address> in a browser.

  4. Check the isolation (optional, recommended)

    With the tunnel on, check that your public IP address is unchanged by visiting any “what is my IP” page. It must still show your own connection. This confirms that no internet traffic goes through the server.

  5. Check from the server (only if you enabled SSH)

    Terminal (admin peer, tunnel on)
    ssh ipcadmin@10.77.0.1
    sudo wg show
    sudo nft list ruleset

    You should see a recent latest handshake for each connected peer and a forward chain that only accepts traffic from wg0 to wg0.

Keep it running

Add peers and update the server

The server never changes while it is running, which is what makes it secure. To add or remove a device, change a port, or update the system, you build a fresh image with the same identity and boot it.

  1. Collect the new public keys

    Create the key pair on the new device as in step 1.

  2. Open the builder and paste your old peers

    At the peers step paste your saved Peers file (or the previous build script). All existing peers come back automatically. Add the new public keys, or remove peers with the × button.

  3. Generate and run the new script on the same build machine

    It reuses secrets/, so the server key does not change and no peer needs updating. If you build somewhere else, copy the secrets folder there first.

  4. Write the new image and reboot the server

    Peers reconnect by themselves, typically within a minute. Save the new Peers file for next time.

  5. Finish the new peer

    Give the new device the server public key, the endpoint and its tunnel address, as in steps 5 and 6.

If you change the port, the tunnel network or the MTU, every peer’s own configuration must be updated too. Plan this before you make the change.

Lost or compromised device

Remove its public key at the peers step, rebuild and reboot. From then on it can no longer connect. If a device is stolen, also change the passwords on cameras and recorders that it could reach.

Lost secrets folder

The server can still be rebuilt, but it gets a new key. Every peer must then be given the new server public key. Keeping an offline backup avoids this.

Keep it running

Camera-side tips

The tunnel protects the path between sites and viewers. These settings make the cameras themselves safer:

  • Remove the camera’s route to the internet. On an isolated camera LAN, leave the camera’s default gateway empty so it cannot reach vendor servers.
  • Turn off cloud and P2P features (for example Hik-Connect, EZVIZ or Dahua P2P) on cameras and recorders. They are not needed with IPC Terminal.
  • Change default passwords and use a different strong password per device.
  • Prefer RTSP over TCP. It travels cleanly inside the tunnel. Only enable “RTP over UDP” in the builder if you have a specific need, because it weakens isolation.
  • Keep firmware up to date by downloading it on a separate machine and uploading it locally.
Fix it

Troubleshooting

Find the symptom, then work down the list. Start with the first one that matches what you see.

The tunnel is on but there is no “latest handshake”

The peer never reached the server, or the server did not accept it. Check in this order:

  • Port. UDP (not TCP) 51820 must be open or forwarded to the server. Test from a different network, such as a phone hotspot.
  • Endpoint. The hostname or IP and the port must be exactly right, with no http://.
  • Server public key. It must be the one printed by the build script, not the peer’s own key.
  • Was the peer in the build? The server only accepts keys that were in the peers list when the image was built. A new device needs a rebuild (see Add peers).
  • Is the server running? Did it finish booting? With key-stick mode, it waits for the IPCKEYS stick.
  • Hotel or guest Wi-Fi sometimes blocks UDP. Try another network.
Handshake works but I cannot reach a camera or recorder
  • Wrong address? Use the box’s tunnel address for Option A, and the camera’s LAN address for Option B.
  • Port not allowed. The server firewall only passes the ports chosen in the builder. Dahua needs 37777. Rebuild with the extra port added.
  • Option B route missing. The camera LAN must be in the box’s routes (builder) and in the viewer’s AllowedIPs.
  • Option B forwarding. On the gateway, sysctl net.ipv4.ip_forward must print 1 and the masquerade rule must exist (sudo iptables -t nat -S). Check that eth0 is the right interface name.
  • Option A firewall. Windows Firewall must allow the recorder’s ports from 10.77.0.0/24 on all profiles.
  • Same address as your own LAN. If your local network also uses the camera’s address range, your computer sends the traffic to the wrong place. Use a different camera range, or Option A.
  • Role limits. Viewers can only reach boxes. They cannot reach each other.
Ping to the recorder PC fails but the tunnel is up

Windows blocks ping (ICMP) by default. This is normal. Test the real service instead, for example by opening http://<address> or adding the device in your viewing software. If you need ping, allow “File and Printer Sharing (Echo Request – ICMPv4-In)” in Windows Firewall.

Video freezes, stutters or shows grey blocks
  • Use RTSP over TCP in your player. In VLC, add --rtsp-tcp to the options.
  • Lower the stream’s resolution or bit rate (use the sub-stream) if the site’s upload is slow.
  • On mobile, PPPoE or double-NAT links, reduce the MTU to 1380 or 1280. This needs a rebuild and an update of every peer.
  • Check the site’s uplink speed. One 4 Mbit/s camera stream needs about 4 Mbit/s of upload.
My software cannot find the devices automatically

Discovery tools such as SADP, Dahua ConfigTool search and ONVIF device discovery use broadcasts that do not cross a VPN. Add devices manually by IP address and port.

The build script fails or stops
  • Run df -h and confirm at least 15 GB free in your home folder.
  • Confirm the machine is Debian 13 and that you ran the script with sudo.
  • Check the internet connection and that apt update works.
  • The script rebuilds from scratch each time, so you can simply run it again. Your secrets folder is kept.
  • A mirror can be temporarily unavailable. Wait a few minutes and try again.
The server does not boot from the USB stick
  • Choose the stick in the boot menu (often F12, F11 or Esc). Try both UEFI and legacy/BIOS entries.
  • Turn off Secure Boot in the firmware.
  • Write the image again with dd to the whole device, and run sync before removing it.
  • Verify the file: sha256sum of the ISO should match ISO.sha256.
  • Check that the architecture matches (x86_64 image on an x86_64 server).
“IPCKEYS USB stick not found” or the server never comes up (key-stick mode)
  • The label must be exactly IPCKEYS and the format FAT32.
  • The files (server.key and so on) must be at the top level of the stick, not inside a folder. The cp -r secrets/. … command in step 4 does this.
  • Insert the stick before or right after the boot. The server waits up to 15 minutes and then gives up, and you would have to reboot it.
I cannot log in with SSH
  • SSH only works inside the tunnel, from an admin peer (address .200–.254). Connect to the server’s tunnel address, for example ssh ipcadmin@10.77.0.1.
  • The user is ipcadmin, and only the key you pasted in the builder works. There is no password.
  • If there was no admin peer in the build, rebuild with one.
  • The server has no other login, not even on screen. That is by design.
The builder warns about overlapping addresses

A box’s camera LAN overlaps the tunnel network, the server’s own network or another box’s LAN. Pick a different tunnel network at the “Overlay network” question (for example 10.99.0.0/24), or give the site another camera range, or connect that site with Option A.

Internet on my computer stopped working when the tunnel is on

The config probably has AllowedIPs = 0.0.0.0/0. Change it to only the tunnel network (and any camera LANs). IPC Terminal is never meant to carry your internet traffic.

The tunnel drops after being idle

Make sure every peer has PersistentKeepalive = 25. It keeps the path open through routers and firewalls. Peers behind NAT, such as every box, need it.

Questions

FAQ

Does my video go through someone else’s server?

Only through your own server, which you build and run. It is encrypted all the way between the viewer and the site. There is no IPC Terminal cloud in the middle and no vendor cloud such as Hik-Connect.

Can someone use my server as a VPN for the internet?

No. The firewall forwards traffic only between tunnel peers, there is no NAT and no route out. Even if a peer’s config is edited to ask for 0.0.0.0/0, the server drops it.

Why is the server “diskless”?

It runs entirely from memory and hides internal disks, so there is nothing stored on it to steal or tamper with. A reboot returns it to a known, clean state.

Does the builder website see my keys?

No. It runs only in your browser, and nothing is uploaded. It only handles public keys. The server’s private key is created by the script on your own machine. If you paste a client config, the private key is used locally to work out the public key and is then discarded. Even so, prefer pasting public keys only.

How many devices can I have?

In a /24 tunnel network: up to 98 boxes, 100 viewers and 55 admins per server. For more, create another server. The design is one server per customer anyway.

What do I need on the server side for a hosting provider?

A virtual or dedicated server where you can boot your own ISO (custom ISO upload, or IPMI/KVM virtual media), at least 1 GB of RAM, a public IP and the ability to open one UDP port. Providers that only offer fixed operating-system images will not work.

Can I use it with other makes than Hikvision and Dahua?

Yes. IPC Terminal works at the network level. Anything that speaks over the allowed TCP ports works, including ONVIF cameras and any RTSP source. Add the ports your equipment uses at the “Extra TCP ports” question.

Is there a Windows app?

A dedicated IPC Terminal client is in development. Until then, use the free WireGuard app as described in this guide.

What happens if the server loses power?

It starts again from the same USB stick and reconnects all peers. With “Embedded” key delivery this happens without help. With “Separate USB stick” someone must insert the IPCKEYS stick during the boot.

Can I rename, move or clone a server?

Move or clone: copy the secrets folder and build again. For a separate customer, always use a new server with its own secrets.

Is it free?

The tools and guide are free to use. You supply the hardware or hosting and your own time.

Still stuck?

Asking for help

The fastest way to a solution is to send the facts. Please include:

  • What you were doing and the exact step that failed.
  • The exact error message, copied as text.
  • The role of the device that fails (box, viewer, admin) and whether it is Option A or B.
  • The output of wg show on the Linux device, or a screenshot of the Windows tunnel status, with the latest handshake visible.
  • On the server (SSH enabled): sudo wg show.
  • Your Peers file. It holds public keys only and is safe to share.

Never send private keys, the secrets folder, the privatekey file or a full client config with a PrivateKey line. If you pasted one by mistake, replace that key pair and rebuild the server.

Find the maker and project updates on the project homepage.