Overview
Nexus Access Vault supports network isolation, allowing you to restrict access to internal VPN networks only. This guide covers setting up Netbird VPN integration and configuring the application for VPN-only access.Security Best Practice: For production deployments handling sensitive access management, we strongly recommend restricting access to an internal VPN network only.
Network Modes
Nexus Access Vault supports two network modes:Internal Mode
Access restricted to VPN network only. Users must be connected to your Netbird/VPN to access the portal.
Public Mode
Open to public internet. Suitable for development or when using other security controls.
VITE_NETWORK_MODE environment variable:
Netbird VPN Setup
Netbird is a modern, WireGuard-based VPN solution that’s perfect for securing Nexus Access Vault. This section covers the complete setup.Prerequisites
Netbird Account
Create a free account at https://netbird.io or deploy your own self-hosted Netbird instance.
Server Installation
- Ubuntu/Debian
- CentOS/RHEL
- Docker
Get Your Netbird IP
After connecting to Netbird, get your assigned IP address:VITE_INTERNAL_HOST.
See ZITADEL_NETBIRD_SETUP.md:113-118
Application Network Configuration
Environment Variables
Configure the network mode and internal host:.env
Vite Server Configuration
The default Vite configuration binds to all interfaces:vite.config.ts
Binding to
:: (all interfaces) allows connections from both localhost and the Netbird network. The firewall will restrict external access.Production: Bind to Specific Interface
For production deployments, you can bind only to the Netbird interface:vite.config.ts
Firewall Configuration
Configure your firewall to allow connections only from the Netbird network.UFW (Ubuntu)
firewalld (CentOS/RHEL)
iptables
Nginx Reverse Proxy
For production deployments, use Nginx as a reverse proxy with SSL termination.Basic Configuration
/etc/nginx/sites-available/nexus-vault
SSL/TLS Configuration
/etc/nginx/sites-available/nexus-vault-ssl
Internal DNS Configuration
For easier access, configure internal DNS to resolve a friendly name to your Netbird IP.Using Netbird’s Built-in DNS
Netbird supports DNS management:- Navigate to DNS in Netbird dashboard
- Click Add Nameserver
- Add your internal domain records
- Map
vault.internal.company.com→100.64.1.10
Using /etc/hosts
For simple setups, add to each client’s/etc/hosts:
Using Pi-hole or AdGuard Home
If you run Pi-hole or AdGuard Home on your network:- Add a local DNS record
- Domain:
vault.internal.company.com - IP Address:
100.64.1.10
Authentication Configuration
Zitadel Redirect URI
When using VPN-only access, update your Zitadel redirect URI to use the internal address:.env
Update Zitadel Application
In your Zitadel instance:- Navigate to your OIDC application
- Go to Redirect URIs
- Add:
http://100.64.1.10:8080/auth/callback(or your internal domain) - Save changes
Client Access
Installing Netbird on Client Devices
Users need Netbird installed to access the portal:- Windows
- macOS
- Linux
- iOS/Android
- Download from https://netbird.io/downloads
- Run installer
- Enter setup key or login with SSO
- Connect to network
Accessing the Portal
Once connected to Netbird, users can access the portal:User Flow
Authenticate with Zitadel
User clicks “Sign in with Kappa4 Manager” and is redirected to Zitadel for authentication.
Alternative VPN Solutions
While this guide focuses on Netbird, you can use other VPN solutions:Tailscale
Tailscale is another WireGuard-based VPN similar to Netbird:VITE_INTERNAL_HOST.
WireGuard
For a self-hosted solution, use WireGuard directly:- Set up WireGuard server
- Configure client peers
- Use WireGuard subnet (e.g.,
10.0.0.0/24) in firewall rules - Use server’s WireGuard IP for
VITE_INTERNAL_HOST
OpenVPN
OpenVPN is a traditional VPN solution:- Set up OpenVPN server
- Distribute client certificates
- Configure firewall to allow OpenVPN subnet
- Use server’s VPN IP for
VITE_INTERNAL_HOST
Testing Network Isolation
Test VPN Access
From a device connected to VPN:Test External Access
From a device NOT connected to VPN:If external access works, review your firewall rules. The application should be accessible ONLY via VPN.
Troubleshooting
Cannot access portal from VPN
Cannot access portal from VPN
- Verify Netbird is connected:
netbird status - Check Netbird IP:
netbird status | grep IP - Test server connectivity:
ping 100.64.1.10 - Verify application is running:
curl localhost:8080 - Check firewall allows Netbird subnet:
sudo ufw status - Ensure server is bound to correct interface
Authentication redirect fails
Authentication redirect fails
- Verify
VITE_ZITADEL_REDIRECT_URIuses internal IP/domain - Check redirect URI is added in Zitadel application
- Ensure redirect URI matches exactly (http vs https, trailing slashes)
- Test Zitadel is accessible from server:
curl https://manager.kappa4.com - Check browser console for OIDC errors
External access not blocked
External access not blocked
- Verify firewall rules are active:
sudo ufw status - Check rules are in correct order (allow before deny)
- Ensure firewall is enabled:
sudo ufw enable - Test from external IP:
curl http://YOUR_PUBLIC_IP:8080 - Check no port forwarding rules bypass firewall
Netbird not connecting
Netbird not connecting
- Check setup key is valid and not expired
- Verify network connectivity to Netbird servers
- Check logs:
netbird service logs - Try disconnect and reconnect:
netbird down && netbird up - Verify account status in Netbird dashboard
SSL certificate issues
SSL certificate issues
- For internal networks, use self-signed certificates
- Generate certificate:
openssl req -x509 -nodes -days 365 ... - Install certificate on client devices
- Or use Let’s Encrypt with DNS challenge for internal domains
- Configure Nginx with correct certificate paths
Security Considerations
Network Isolation Security
Benefits of VPN-only access:
- Zero Trust Network: Access only from authorized VPN peers
- No Public Exposure: Application not accessible from internet
- Encrypted Transport: All traffic encrypted via WireGuard
- Audit Trail: Netbird logs all connections
- Device Management: Control which devices can connect
- IP Allowlisting: Easy to implement additional IP-based rules
Additional Security Measures
Device Authorization
Device Authorization
Network Segmentation
Network Segmentation
Use Netbird’s network policies:
- Create peer groups (e.g., “admins”, “users”)
- Define access control policies between groups
- Restrict which peers can access the vault server
- Implement least-privilege access
Logging and Monitoring
Logging and Monitoring
Monitor access:
- Enable Netbird activity logs
- Monitor application logs:
pm2 logs nexus-vault - Review Nginx access logs:
tail -f /var/log/nginx/access.log - Set up alerts for suspicious activity
- Review audit logs in the portal regularly
Next Steps
Environment Variables
Configure network mode and internal host
Zitadel OIDC
Set up authentication for VPN access
Self-Hosted Deployment
Complete deployment guide
Admin Panel
Manage users and access permissions