Quick Start
This guide will help you deploy NeoSC and launch your first secure workspace in under 15 minutes.Prerequisites
Before you begin, ensure you have:- Docker and Docker Compose installed
- A domain with DNS access (or use
/etc/hostsfor local testing) - Zitadel OIDC credentials (see Zitadel SSO setup)
- Git installed
For production deployments, you’ll need valid TLS certificates. For local testing, you can use self-signed certificates.
Deployment Steps
Clone and configure
Clone the repository and set up your environment variables.Edit
infra/.env and configure the following required variables:infra/.env
How to generate secure secrets
How to generate secure secrets
Use OpenSSL to generate cryptographically secure secrets:Copy each generated value to the corresponding variable in your
.env file.Configure Zitadel OIDC
Set up your Zitadel application with the correct redirect URIs and scopes.Required Configuration:
- Redirect URI:
https://portal.kappa4.com/auth/callback(or your domain) - Post Logout URI:
https://portal.kappa4.com - Grant Types: Authorization Code, Refresh Token
- Application Type: Web or User Agent (for PKCE)
Start the services
Launch the full NeoSC stack using Docker Compose.This will start:Verify services are running:You should see all four services in the “Up” state.
- Pomerium - Zero Trust reverse proxy (ports 80, 443)
- Frontend - React application (internal port 3000)
- Backend - FastAPI server (internal port 8001)
- MongoDB - Database (internal port 27017)
All services except Pomerium run on an internal network with no direct external exposure. Pomerium handles all authentication and proxying.
Verify deployment
Test that the platform is accessible and properly configured.Check service health:Access the web interface:Open your browser and navigate to:You should be redirected to Zitadel for authentication.
Troubleshooting common issues
Troubleshooting common issues
503 Service Unavailable
- Check that all containers are running:
docker compose ps - Check container logs:
docker compose logs -f
- For local testing, accept the self-signed certificate
- For production, configure valid TLS certificates in Pomerium config
- Verify redirect URIs match in Zitadel and your
.envfile - Check Pomerium logs:
docker compose logs pomerium
Launch your first workspace
Once authenticated, you can launch a secure workspace from the dashboard.Via the Web UI:
- Log in at
https://portal.kappa4.com - Navigate to Workspaces
- Click Launch on any workspace type
- Wait for the workspace to start (status changes to “Running”)
- Click Connect to access the workspace
Example API response
Example API response
Default Workspaces
NeoSC comes with five pre-configured workspace types:Linux Desktop
Full Ubuntu desktop environment with GUI applications
Windows 11
Windows 11 Pro desktop with RDP access
Secure Browser
Isolated browser environment for safe web browsing
Dev Container
Pre-configured development environment with tools
Admin Desktop
Privileged environment for system administration
Security Features
Your NeoSC deployment includes these security features by default:- ✅ Zero Trust Network - All connections authenticated and encrypted
- ✅ SSO Integration - Zitadel OIDC with MFA support
- ✅ Session Recording - Complete audit trail of user actions
- ✅ Encrypted Tunnels - WireGuard-based secure connections
- ✅ Identity Verification - Continuous authentication checks
- ✅ Audit Logging - Comprehensive logging of all activities
Next Steps
Architecture
Understand the system architecture and components
Configure Workspaces
Customize workspace types and settings
User Management
Add users and configure roles
Security Policies
Configure MFA and security policies
API Reference
Integrate with the NeoSC API
Monitoring
Set up monitoring and alerts
Getting Help
Common issues and solutions
Common issues and solutions
Services won’t start
- Check Docker is running:
docker ps - Check port availability:
sudo lsof -i :80 -i :443 - Review logs:
docker compose logs
- Verify Zitadel configuration matches
.envvariables - Check redirect URIs are correctly configured
- Ensure client ID and secret are valid
- Check MongoDB is running:
docker compose ps mongo - Verify backend logs:
docker compose logs backend - Ensure workspace images are available
- Verify DNS resolution for configured domains
- Check firewall rules allow traffic on ports 80 and 443
- Ensure internal Docker network is properly configured
- Deployment Guide - Detailed deployment instructions
- Troubleshooting - Advanced troubleshooting
- GitHub Issues - Report bugs or request features