Overview
Nexus Access Vault can be deployed as a self-hosted solution in your own infrastructure, giving you complete control over your data, security, and network configuration. This guide covers the complete deployment process from initial setup to production.Prerequisites
Before deploying Nexus Access Vault, ensure you have:Node.js
Node.js 18+ and npm installed (Install with nvm)
Supabase Project
Active Supabase project with project ID and anon key
Zitadel Instance
Zitadel OIDC provider configured for authentication
Network Access
Netbird VPN or similar for network isolation (optional but recommended)
Deployment Steps
Configure Environment Variables
Copy the example environment file and configure your settings:See Environment Variables for detailed configuration.
Set Up Database
Configure Network Access (Optional)
For VPN-only access, configure Netbird or your network solution:See Network Configuration for details.
Build the Application
Build the production-ready application:This creates optimized static files in the
dist/ directory.Production Deployment Options
Option 1: Static Hosting
Since Nexus Access Vault is built with Vite, you can deploy the built static files to any static hosting service:Deploy to Nginx
Deploy to Nginx
Deploy with Apache
Deploy with Apache
Option 2: Node.js Server
Run the application using Node.js with the built-in preview server:Option 3: Docker Deployment
Create aDockerfile for containerized deployment:
nginx.conf:
docker-compose.yml):
Server Configuration
Binding to Specific Network Interface
The default Vite configuration binds to all interfaces (::). For production, you may want to bind to a specific interface:
Firewall Rules
For VPN-only access, configure your firewall to allow connections only from your VPN subnet:Health Checks and Monitoring
Application Health
Monitor your application with PM2:Database Health
Monitor your Supabase database through the Supabase dashboard or CLI:SSL/TLS Configuration
For production deployments, always use HTTPS:- Let's Encrypt
- Self-Signed Certificate
Backup and Recovery
Database Backups
Supabase automatically backs up your database. You can also create manual backups:Application Backups
Backup your configuration files:Troubleshooting
Application won't start
Application won't start
- Check that all environment variables are set correctly
- Verify Node.js version is 18 or higher:
node --version - Check for port conflicts:
lsof -i :8080 - Review application logs:
pm2 logs nexus-vault
Cannot connect to database
Cannot connect to database
- Verify Supabase project ID and URL are correct
- Check that Supabase API key has not expired
- Ensure database migrations have been run:
supabase db status - Test connection:
supabase db ping
Authentication not working
Authentication not working
- Verify Zitadel issuer URL is accessible
- Check that redirect URI matches the configured value
- Ensure client ID is correct
- Review browser console for OIDC errors
VPN access issues
VPN access issues
- Verify Netbird is connected:
netbird status - Check firewall rules allow traffic from VPN subnet
- Ensure application is bound to correct interface
- Test connectivity:
curl http://netbird-ip:8080
Updating Your Deployment
To update your deployment to a new version:Next Steps
Environment Variables
Configure all environment variables for your deployment
Database Setup
Set up and migrate your Supabase database
Network Configuration
Configure VPN-only access with Netbird
Authentication
Set up Zitadel OIDC authentication