Getting Started
Introduction to NexusCloud
NexusCloud is a self-hosted hosting panel that brings every major runtime — PHP, .NET, Node.js, Python, Java, Ruby, and Docker — under one unified interface, installed with a single command.
One license. One server. Each NexusCloud license covers a single VPS or dedicated machine. Install as many sites as your hardware supports.
What NexusCloud does
- Manages web hosting for 7 runtimes through a single dashboard
- Automates SSL certificates via Let's Encrypt
- Provides DNS zone management
- Handles email domains and mailboxes
- Enforces license-based access (trial → paid → grace → read-only)
- Exposes a REST API for automation
Architecture
Your VPS / Dedicated Server
┌─────────────────────────────────────────┐
│ Nexus Dashboard (web UI) │
│ Nexus API (REST API) │
│ Nexus Engine (hosting core) │
│ Database │
└─────────────────────────────────────────┘
│ verifies license (JWT, offline-capable)
▼
license.nexuscloud.run (Licensing server)
Getting Started
Requirements
Operating System
| OS | Support |
| Ubuntu 24.04 LTS | Recommended |
| Ubuntu 22.04 LTS | Supported |
| Debian 12 | Beta |
| CentOS / RHEL | Not supported |
Minimum Hardware
| Resource | Minimum | Recommended |
| CPU | 2 vCPU | 4+ vCPU |
| RAM | 2 GB | 8 GB |
| Disk | 20 GB SSD | 100 GB NVMe |
| Network | 100 Mbit/s | 1 Gbit/s |
Network
- A public IPv4 address
- Ports
80, 443, 22 open (UFW or iptables)
- A domain pointing to the server IP (for SSL to work)
- Outbound HTTPS to
license.nexuscloud.run for license validation
Root access
The installer requires root or sudo access. It configures system services and modifies /etc.
Getting Started
Quick Start
Install NexusCloud on a fresh Ubuntu 24.04 server in one command.
1. Download and run install.sh
curl -fsSL https://license.nexuscloud.run/install.sh | sudo bash
Fresh server only. Run the installer on a clean Ubuntu installation. Do not run it on a server that already has Apache, nginx, or another control panel installed.
2. What the installer does
- Registers a 15-day free trial with the licensing server
- Saves a signed JWT token to
/etc/nexus/license.conf
- Installs system dependencies (nginx, MySQL, PHP, .NET runtime)
- Installs and configures ISPConfig as the hosting engine
- Deploys Nexus API and Dashboard
- Configures UFW firewall (ports 22, 80, 443)
- Enables
nexus-engine.service and nexus-api.service
3. Access the dashboard
Once installation completes (10–20 min), open your browser:
https://<your-server-ip>/
Default credentials are shown at the end of the install output.
4. Activate a paid license
After purchasing at nexuscloud.run/pricing, go to your customer dashboard and follow the activation steps.
Licensing
Free Trial
Every new installation automatically starts a 15-day free trial. No credit card required.
What's included
- Full access to all dashboard features
- Unlimited sites (hardware permitting)
- All 7 runtimes enabled
- DNS, SSL, and mail management
Trial expiry
When the trial expires, NexusCloud enters read-only mode:
- All existing sites continue to serve traffic normally
- Creating or modifying sites, DNS zones, or mail domains is blocked
- The dashboard shows a red banner with upgrade options
- HTTP
402 Payment Required is returned for write operations via the API
NexusCloud never kills running sites. Even in restricted mode, your hosted websites remain fully operational. Only management operations are blocked.
License file location
cat /etc/nexus/license.conf
Licensing
Plans & Pricing
Each plan covers one server. To manage multiple servers, purchase one license per machine.
Solo
$9/mo
- 1 server
- All runtimes
- Unlimited sites
- Community support
Get Solo
Most Popular
Pro
$19/mo
- 1 server
- All runtimes
- Unlimited sites
- Email support
Get Pro
Business
$49/mo
- 1 server
- All runtimes
- Unlimited sites
- Priority support
Get Business
Hosting Co
$99/mo
- Up to 10 servers
- All runtimes
- Unlimited sites
- Dedicated support
Get Hosting Co
Annual billing
All plans are billed monthly. Annual billing with a 20% discount is coming soon.
Licensing
Activate a License
From the customer dashboard (recommended)
- Go to nexuscloud.run/dashboard and log in
- Find your license key under My Licenses
- On your server, run:
nexus license activate YOUR-LICENSE-KEY
Manual activation via API
curl -X POST https://license.nexuscloud.run/license/activate \
-H "Content-Type: application/json" \
-d '{
"licenseKey": "YOUR-LICENSE-KEY",
"installationId": "'$(cat /etc/nexus/installation_id)'",
"fingerprint": "...",
"hostname": "'$(hostname)'"
}'
On success, the response contains a new JWT token which is automatically saved to /etc/nexus/license.conf.
Releasing a license
To move your license to a different server, release it first:
Licensing
Grace Period
NexusCloud validates its license token every 24 hours by contacting license.nexuscloud.run. If the licensing server is temporarily unreachable, a 7-day grace period begins automatically.
Grace period behavior
- The dashboard shows an orange warning banner
- All features remain fully operational
- NexusCloud attempts reconnection every 24 hours
- If connectivity is restored within 7 days, the license is silently renewed
- If 7 days pass without reconnection, the panel enters read-only mode
This protects you from being locked out due to a temporary outage of our licensing servers — not from non-payment. Unpaid subscriptions that expire will enter read-only mode immediately after the billing cycle ends.
License states
| State | Description | Write access |
| Trial | 15-day free trial active | Yes |
| Licensed | Active paid subscription | Yes |
| Grace | Server unreachable, <7 days | Yes |
| Restricted | Expired or unlicensed | No |
Runtimes
PHP
PHP is the primary runtime in NexusCloud, managed automatically by the hosting engine.
Supported versions
PHP 7.4
PHP 8.0
PHP 8.1
PHP 8.2
PHP 8.3
Creating a PHP site
- In the dashboard, go to Sites → Add Site
- Set runtime to PHP
- Select your PHP version
- Enter the domain and document root
- Click Create — SSL is provisioned automatically
php.ini customization
Per-site php.ini overrides are supported via .user.ini in the document root:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
memory_limit = 256M
Runtimes
Node.js
Node.js sites run as persistent processes behind nginx reverse proxy, managed by pm2.
Supported versions
Node 18 LTS
Node 20 LTS
Node 22
Creating a Node.js site
- Select runtime Node.js when creating a site
- Specify the entry file (e.g.
server.js or dist/main.js)
- Specify the port your app listens on internally
- NexusCloud creates a pm2 process and an nginx upstream automatically
Environment variables
nexus site env set mysite.com NODE_ENV=production DB_URL=postgres://...
Runtimes
.NET
ASP.NET Core applications run as systemd services behind nginx, using Kestrel as the internal web server.
Supported versions
.NET 6
.NET 8 LTS
.NET 10
Deployment
- Publish your app:
dotnet publish -c Release -r linux-x64 --self-contained false
- Upload the
publish/ folder to the site's document root
- NexusCloud creates a systemd unit and nginx proxy automatically
Use --self-contained false to reuse the .NET runtime already installed on the server and reduce upload size.
Runtimes
Python
Python sites run via Gunicorn (WSGI) or Uvicorn (ASGI for FastAPI/Starlette), with nginx in front.
Supported versions
Python 3.10
Python 3.11
Python 3.12
WSGI (Django, Flask)
web: gunicorn myapp.wsgi:application --bind 0.0.0.0:$PORT
ASGI (FastAPI, Starlette)
web: uvicorn main:app --host 0.0.0.0 --port $PORT
Runtimes
Java
Spring Boot and other executable JAR applications run as systemd services behind nginx.
Supported versions
Java 17 LTS
Java 21 LTS
Deployment
- Build your JAR:
mvn package -DskipTests or ./gradlew bootJar
- Upload the JAR to the site directory
- NexusCloud wraps it in a systemd service and proxies via nginx
Runtimes
Ruby
Ruby (Rails, Sinatra) apps run via Puma behind nginx.
Supported versions
Ruby 3.1
Ruby 3.2
Ruby 3.3
Gemfile requirement
NexusCloud detects Gemfile.lock and runs bundle install automatically on deploy.
Runtimes
Docker
Any language or framework containerized with Docker. NexusCloud manages the container lifecycle and nginx proxy.
Requirements
- A
Dockerfile in the project root, or a pre-built image on Docker Hub / GHCR
- The container must expose a TCP port
Supported deployment methods
| Method | Description |
| Dockerfile | NexusCloud builds and runs the image on the server |
| Docker Hub image | Pulls and runs a public or private image |
| docker-compose.yml | Multi-container apps (coming soon) |
Docker runtime requires the Business plan or higher.
Dashboard
Managing Sites
Create a site
- Navigate to Sites → Add Site
- Enter the domain name (e.g.
myapp.com)
- Select the runtime and version
- Configure document root and entry point
- Click Create
NexusCloud automatically provisions a Let's Encrypt SSL certificate and creates the nginx vhost.
Site status indicators
| Status | Meaning |
| Running | Process active, serving traffic |
| Starting | Process starting up |
| Stopped | Process stopped or crashed |
| Deploying | Build or deploy in progress |
Dashboard
DNS Zones
NexusCloud includes a full DNS server managed automatically. You can host DNS for any domain directly on your server.
Adding a DNS zone
- Go to DNS → Add Zone
- Enter the domain and SOA settings
- Add A, CNAME, MX, and TXT records
Pointing your domain
Update your domain registrar's nameservers to your server's hostname:
NS1: ns1.yourserver.com → your-server-ip
NS2: ns2.yourserver.com → your-server-ip
Dashboard
SSL Certificates
NexusCloud automatically provisions and renews Let's Encrypt certificates for all sites.
Automatic SSL
When you create a site with a domain that resolves to your server, NexusCloud:
- Runs an ACME HTTP-01 challenge via nginx
- Installs the certificate to
/etc/letsencrypt/live/
- Configures nginx to redirect HTTP → HTTPS
- Sets up automatic renewal via certbot's systemd timer
Custom certificates
You can upload your own certificate (e.g. a wildcard cert) via Sites → SSL → Upload Certificate.
Dashboard
Mail Domains
NexusCloud manages email hosting via its built-in mail stack.
Add a mail domain
- Go to Mail → Add Domain
- Enter the domain (e.g.
mycompany.com)
- Add mailboxes and aliases
- NexusCloud generates SPF and DKIM DNS records for you automatically
Webmail
Roundcube webmail is available at https://mail.yourserver.com/webmail after setup.
Reference
Licensing API
Base URL: https://license.nexuscloud.run
Trial
POST
/install/register-trial
Registers a new installation and starts a 15-day trial. Called automatically by install.sh.
{
"installationId": "uuid-v4",
"fingerprint": "sha256-hex",
"hostname": "myserver.com",
"ipAddress": "1.2.3.4"
}
License activation
{
"licenseKey": "XXXX-XXXX-XXXX-XXXX",
"installationId": "uuid-v4",
"fingerprint": "sha256-hex",
"hostname": "myserver.com"
}
License validation
Called every 24h by LicenseValidationService. Returns a refreshed JWT token.
License release
Deactivates a license from an installation so it can be moved to another server.
Customer endpoints
| Method | Path | Description |
| POST | /customer/register | Create account |
| POST | /customer/login | Authenticate |
| GET | /customer/me | Current user info |
| POST | /customer/logout | Clear session |
| GET | /customer/license | List licenses |
Reference
install.sh Reference
The installer is a Bash script hosted at https://license.nexuscloud.run/install.sh.
Steps performed
| Step | Description |
| 0 | Register trial with licensing server, save /etc/nexus/license.conf |
| 1 | System update and base dependencies |
| 2 | Install nginx, PHP, MySQL |
| 3 | Install .NET runtime |
| 4 | Install Node.js and pm2 |
| 5 | Configure ISPConfig engine (configure_engine.sh) |
| 6 | Deploy Nexus API |
| 7 | Deploy Nexus Dashboard |
| 8 | Configure UFW firewall |
| 9 | Enable and start all services |
| 10 | Run post-install health check |
Environment variables
| Variable | Default | Description |
NEXUS_LICENSING_URL | https://license.nexuscloud.run | Licensing server URL |
NEXUS_SKIP_TRIAL | false | Skip trial registration (for re-installs) |
Reference
FAQ
Can I run NexusCloud on a shared hosting provider?
No. NexusCloud requires root access and a dedicated VPS or bare-metal server. Shared hosting is not supported.
What happens to my sites when the license expires?
All currently running sites continue to serve traffic. NexusCloud enters read-only mode — you cannot create or modify sites, DNS zones, or mail domains until you renew.
Can I move my license to a different server?
Yes. Run nexus license release on the old server, then activate on the new one from your customer dashboard.
Does NexusCloud work without internet access?
Yes, for up to 7 days. The license token is validated locally (JWT, no network required). If the licensing server is unreachable for more than 7 days, the panel enters read-only mode.
Is there a money-back guarantee?
Yes. We offer a 7-day money-back guarantee on all paid plans. See the
Refund Policy for details.
Can I host multiple domains on one server?
Yes, unlimited domains on a single server. One license covers the entire machine regardless of how many sites you host.
Reference
Troubleshooting
License not validated after payment
Allow up to 5 minutes for the Stripe webhook to process. If it still doesn't appear, check your customer dashboard. You can also manually trigger validation:
nexus license validate --force
SSL certificate not provisioning
- Ensure the domain's A record points to your server IP
- Ensure port 80 is open (needed for ACME HTTP-01 challenge)
- Check certbot logs:
journalctl -u certbot --no-pager
Service won't start after install
# Check API service
journalctl -u nexus-api -n 50 --no-pager
# Check engine service
journalctl -u nexus-engine -n 50 --no-pager
# Check nginx
nginx -t && systemctl status nginx
Dashboard shows "License: Restricted" after valid payment
The JWT token on disk may be stale. Re-run validation:
nexus license validate --force
systemctl restart nexus-api
Getting help
For support, email support@nexuscloud.run or open a ticket from your customer dashboard.