Team VPN
Turn your server into a VPN for your team. Each laptop or phone gets its own key, can have an expiry date, and can be revoked any time. No business VPN subscription needed: just the VM you already rent and the free official WireGuard app.
What it is for
- Reaching internal systems from anywhere: ERP, admin panels, databases or office apps that must not be open to the internet.
- A fixed IP for whitelists: bank APIs, payment gateways or partner systems that only accept certain IPs. In full mode, your team's laptops go out to the internet with the server's IP.
- Replacing a business VPN subscription for small teams, with no per-user fee.
This VPN is for team access and a fixed IP, not for getting around blocked sites.
Set up the VPN
Open VPN, pick a server and press Set up VPN. The server must be connected, have a public IP and not be a Kubernetes node. Saka installs WireGuard, turns on packet forwarding and NAT, and opens the UDP port (default 51820) in the server firewall. It takes about 30 seconds to 2 minutes; sites and apps on the server are not affected.
Provider firewall. If your VPS provider has its own firewall outside the server (e.g. DigitalOcean Cloud Firewall or AWS Security Groups), open the port for UDP there too. If you later turn on the server firewall from Server security, the VPN port is opened automatically.
Add a device
Press + Add device, enter a name (e.g. Budi's laptop) and its user, then choose what goes through the VPN:
- Internal systems only (split): the VPN network, the server's private networks and any extra addresses you enter go through the VPN. Facebook, YouTube and other sites still use the normal internet, so the server is not loaded. Extra addresses can be IPs, CIDRs or domains (e.g.
erp.office.example); those systems see access coming from the VPN server's IP. - All traffic (full): all of the device's traffic goes through the server, so the device appears as the server's IP. The device uses 1.1.1.1 and 8.8.8.8 for DNS. It uses the server's bandwidth quota.
Also choose how long it is valid (no limit, 1, 7, 30, 90 or 365 days), handy for freelancers or vendors. Saka then shows a QR code and a Download .conf file button. The configuration contains the device's secret key and is shown only once; if it is lost, revoke that device and create a new one.
Changing the mode or extra addresses means creating a new configuration: add a new device, then revoke the old one. Domains are resolved to IPs when the configuration is created; if that system's IP changes, create the configuration again.
Set it up on the device
Use the free official WireGuard app (wireguard.com/install):
- Windows: install WireGuard for Windows, click Import tunnel(s) from file, choose the
.conffile, then Activate. - Mac: install WireGuard from the Mac App Store, choose Import Tunnel(s) from File, allow the VPN configuration, then Activate.
- iPhone/iPad: install WireGuard from the App Store, tap +, Create from QR code, scan the QR code and turn it on.
- Android: install WireGuard from Google Play, tap +, Scan from QR code, and turn it on.
- Linux:
sudo apt install wireguard-tools, save the file as/etc/wireguard/saka.conf, thensudo wg-quick up saka. If you see Rule family not supported (IPv6 is off on that computer), remove, ::/0from the AllowedIPs line.
Check. Full mode: open ifconfig.me on the device; it should show the server's IP. Split mode: open your internal system's address.
If the laptop is on a network with the same addresses as the server's private network (rare, e.g. both 10.43.76.0/24), split mode can clash; use full mode for that device.
Monitor, revoke and alerts
- The VPN page shows every device: mode, VPN IP, when and from which IP it last connected, data transferred, and its expiry.
- Revoke disconnects a device immediately; its configuration can no longer connect. Expired devices are revoked automatically and you are notified.
- When a device connects for the first time, you get a Telegram message with its source IP, so a leaked configuration is noticed quickly.
- The VPN comes back on its own after a server reboot. If the server was disconnected from Saka when you revoked a device, the revocation is applied as soon as it reconnects.
Sites that open only through the VPN
On a site's page, the VPN only card restricts part of the site so it opens only from the team VPN; other visitors see a 403 page:
- WordPress admin pages:
/wp-adminand/wp-login.php.admin-ajax.phpstays open because public features (forms, carts) use it. - The whole site: for internal apps such as an ERP, dashboards or a home-made admin panel.
- Specific paths: e.g.
/admin*or/dashboard*.
Allowed are the VPN server's public IP and the VPN network, so the site may live on another server. It also works behind Cloudflare or a load balancer, because Saka reads the visitor's real IP. Full-mode devices can open it right away. Split-mode devices created after protection is turned on include it automatically: sites on other servers through a route to their IP, and sites on the VPN server itself through the VPN gateway DNS (the device asks the gateway, which answers that domain with the gateway address and forwards other names to public DNS). Split devices created earlier need to be recreated. The Saka panel is not locked, so you can always turn protection off; if the VPN is removed, its site protection is lifted too. AI agents use the MCP tool situs_hanya_vpn.
Security
- A device's secret key is created when its configuration is issued and is not stored by Saka; Saka keeps only the public key. The server's secret key exists only on your server.
- VPN traffic goes directly between the device and your server, not through Saka.
- One VPN holds up to 200 devices.
Through the API and AI agents
GET /api/v1/vpn
POST /api/v1/vpn {"server_id": "srv_...", "port": 51820}
POST /api/v1/vpn/<id>/perangkat {"nama": "Budi laptop", "mode": "split", "rute": ["erp.office.example"], "hari": 30}
DELETE /api/v1/vpn/<id>/perangkat/<id>
DELETE /api/v1/vpn/<id> {"konfirmasi": "<server name>"}AI agents use the MCP tool vpn (actions daftar, pasang, perangkat_buat, perangkat_cabut, hapus).