Get started in 5 minutes

From sign-up to live app. Follow along and you will be deploying before your coffee gets cold.

Quick Start

Six steps to go from zero to a live production app. Let's get you deployed.

1

Create your account

Head to the sign-up page and create your account. You will get a free trial so you can test everything before committing.

app.digitalaura.app/register

Sign up with email or GitHub. Enable 2FA (required for security).

2

Add your SSH key

Before creating a Nod, add your SSH public key. DigitalAura injects it during provisioning so you can SSH in immediately — no passwords needed.

Dashboard → SSH Keys → Add Key

bash
# Get your public key
cat ~/.ssh/id_rsa.pub

# If you don't have one yet, generate it:
ssh-keygen -t ed25519 -C "you@example.com"

Paste the output (starts with ssh-ed25519 or ssh-rsa) into the dashboard.

3

Create your first Nod

From the dashboard, click “Create Nod.” Choose your OS, plan, and region. Select the SSH key you just added. Your Nod will be ready in about 30 seconds.

Create a new Nod

Hostname

my-nextjs-app
Ubuntu 22.04
Debian 12
AlmaLinux 9

Standard

₦12,000/mo

Pro

₦22,000/mo

4

SSH into your Nod

Once your Nod is running, grab the IP from the dashboard and connect via SSH. Your SSH key is injected automatically during setup.

bash
ssh root@102.34.56.78

Tip: You can also use the noVNC console in the dashboard if SSH is not available.

5

Deploy with git push

Install the DigitalAura CLI and link your project. After that, every push to your main branch triggers an automatic deploy.

bash
# Install the CLI
npm install -g @nolbase/cli

# Login to your account
nolbase login

# Link your project
nolbase init

# Deploy (or just push to GitHub — we auto-deploy)
nolbase deploy
6

Add a custom domain

Point your domain's DNS to your Nod IP. DigitalAura provisions a free SSL certificate automatically — usually within 30 seconds.

bash
# Add your domain via CLI
nolbase domains add myapp.com

# Or add a subdomain
nolbase domains add api.myapp.com

# Check SSL status
nolbase domains list
# ┌──────────────┬─────────┬──────────┐
# │ Domain       │ SSL     │ Status   │
# ├──────────────┼─────────┼──────────┤
# │ myapp.com    │ Active  │ Verified │
# │ api.myapp.com│ Active  │ Verified │
# └──────────────┴─────────┴──────────┘

Nods

Manage your Nods — create, resize, snapshot, and destroy.

Create a Nod

bash
# Via CLI
nolbase nods create \
  --name my-api \
  --plan standard \
  --os ubuntu-22.04 \
  --region ng-lag1 \
  --ssh-key ~/.ssh/id_rsa.pub

List your Nods

bash
nolbase nods list
# ┌───────────┬─────────┬───────────┬────────────────┐
# │ Name      │ Status  │ Plan      │ IP             │
# ├───────────┼─────────┼───────────┼────────────────┤
# │ my-api    │ RUNNING │ Standard  │ 102.34.56.78   │
# │ staging   │ STOPPED │ Starter   │ 102.34.56.79   │
# └───────────┴─────────┴───────────┴────────────────┘

Take a snapshot

bash
nolbase nods snapshot my-api --name "pre-deploy-backup"
# Snapshot created: snap_abc123 (2.4GB)

Deployments

Push your code and DigitalAura handles the rest — build, deploy, health check, rollback.

How auto-deploy works

Connect your GitHub, GitLab, or Bitbucket repo. Every push to your default branch triggers a build. DigitalAura auto-detects your framework and generates the right Dockerfile and config.

bash
# Connect a repo
nolbase projects connect --repo github.com/you/my-app

# Trigger manual deploy
nolbase deploy

# View deploy logs in real-time
nolbase deploy logs --follow

# Rollback to a previous deploy
nolbase deploy rollback --to deploy_abc123

Supported frameworks

Next.js
React
Vue.js
Express
NestJS
Django
Flask
Go
Laravel
Rails
Static sites
Docker

Databases

Add managed databases to your project. You get a connection string — we handle backups, monitoring, and updates.

bash
# Create a managed PostgreSQL database
nolbase db create --type postgres --name my-db --plan basic

# Get connection string
nolbase db info my-db
# Host:     db-my-db.internal.digitalaura.app
# Port:     5432
# User:     nolbase_user
# Password: ••••••••
# Database: my_db
# URI:      postgresql://nolbase_user:****@db-my-db.internal.digitalaura.app:5432/my_db

# List databases
nolbase db list

# Create a backup
nolbase db backup my-db

Domains

Add custom domains to your projects. SSL certificates are provisioned automatically via Let's Encrypt.

bash
# Add a custom domain
nolbase domains add myapp.com

# Verify DNS records
nolbase domains verify myapp.com
# ✓ A record points to 102.34.56.78
# ✓ SSL certificate provisioned
# ✓ Domain is live

# Remove a domain
nolbase domains remove old-domain.com

# Every project also gets a free subdomain:
# your-project.digitalaura.app

Framework Guides

DigitalAura auto-detects your framework and generates the right build config. Here's what happens for each runtime.

Next.js

Detected by: next.config.js or "next" in dependencies. Deployed via PM2 with next start.

bash
# Required env var on your server
PORT=3000           # DigitalAura assigns a port automatically

# Build command (auto-detected)
npm run build

# Start command (auto-detected)
npm run start

# Health check endpoint DigitalAura pings after deploy
# Add this to your app (optional but recommended):
# GET /health → { "status": "ok" }

Express / NestJS

Detected by: express or @nestjs/core in dependencies. Deployed via PM2.

bash
# Your app must listen on process.env.PORT
const port = process.env.PORT || 3000;
app.listen(port);

# Build command (auto-detected)
npm run build

# Start command (auto-detected)
node dist/main.js     # NestJS
node index.js         # Express

Django

Detected by: manage.py + requirements.txt. Deployed via Gunicorn (systemd unit).

bash
# requirements.txt must include:
gunicorn
django

# DigitalAura generates a systemd service running:
gunicorn myproject.wsgi:application --bind 0.0.0.0:$PORT --workers 3

# Run migrations — DigitalAura detects and runs automatically on deploy:
python manage.py migrate --no-input

# Static files — add to your deploy hook or settings:
STATIC_ROOT = '/var/www/myapp/static'
python manage.py collectstatic --no-input

Flask

Detected by: flask in requirements.txt. Deployed via Gunicorn.

bash
# requirements.txt:
flask
gunicorn

# Your app entry point (app.py or wsgi.py):
from flask import Flask
app = Flask(__name__)

# DigitalAura runs:
gunicorn app:app --bind 0.0.0.0:$PORT

Laravel (PHP)

Detected by: artisan file. Deployed via nginx + PHP-FPM with a per-app pool.

bash
# DigitalAura runs on deploy:
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache

# Document root is set to /public automatically
# nginx vhost is generated and reloaded — no manual config needed

Go

Detected by: go.mod. Deployed via PM2 (binary execution).

bash
# Build command (auto-detected):
go build -o app .

# Start command:
./app

# Your app must read the port from env:
port := os.Getenv("PORT")
if port == "" { port = "8080" }
http.ListenAndServe(":"+port, nil)

Static sites (React, Vue, Vite)

Detected when no server runtime is found. Served via nginx with zero running processes.

bash
# Build command (auto-detected):
npm run build

# Output directory — DigitalAura checks these in order:
dist/   build/   out/   public/

# nginx serves the output directory directly.
# All routes return index.html (SPA mode).
# No PORT needed — static files only.

Docker

Detected by: Dockerfile in root. Uses blue/green container swap for zero-downtime deploys.

bash
# DigitalAura runs:
docker build -t app-blue .
docker run -d -p $PORT:$PORT --name app-blue app-blue

# On next deploy — blue/green swap:
docker build -t app-green .
docker run -d -p $NEW_PORT:$PORT --name app-green app-green
# nginx upstream swapped → old container removed

# Your Dockerfile must EXPOSE a port:
EXPOSE 3000
CMD ["node", "server.js"]

Teams & RBAC

Invite your team, assign roles, and control who can deploy, scale, or manage billing.

Role permissions

ActionOwnerAdminDeveloperViewer
View Nods & projects
Deploy & rollback
Manage env variables
Create / destroy Nods
Manage domains & SSL
Invite / remove members
Manage billing & plans
Delete team

Invite a team member

Go to Dashboard → Teams → [your team] → Members → Invite. Enter their email and choose a role. They receive an email with a join link.

Email address

colleague@company.com

Role

Developer
Admin
Viewer

Role definitions

Owner

Full control. Can delete the team, manage billing, and promote/demote any member. One per team.

Admin

Can do everything except billing and team deletion. Typically your lead engineers or tech leads.

Developer

Can deploy, rollback, manage env vars, and view all resources. Cannot create or destroy Nods.

Viewer

Read-only. Can see Nods, projects, and logs but cannot take any action. Good for clients or stakeholders.

License Shield

License Shield lets you protect apps you build for clients. Embed a lightweight SDK so you control activation — and get paid automatically via split payments.

How it works

1You build an app for a client and embed the License Shield SDK.
2Your client signs up on DigitalAura using your referral link — permanently linking you.
3The client pays their monthly hosting bill via Paystack.
4DigitalAura auto-splits the payment: hosting fee → DigitalAura, license fee → you (minus 10% platform fee).
5If the client stops paying, you can gate or lock the app — client data is never deleted.

Install the SDK

bash
# TypeScript / Node.js
npm install @nolbase/license-sdk

# Python
pip install nolbase-license

# PHP (Laravel)
composer require nolbase/license-sdk

Embed in your app (Node.js example)

typescript
import { LicenseShield } from '@nolbase/license-sdk';

const license = new LicenseShield({
  appId: process.env.NOLBASE_APP_ID,    // from your developer dashboard
  secretKey: process.env.NOLBASE_SECRET,
});

// Check license on app start
await license.verify();
// Throws LicenseInactiveError if the client's payment is overdue

// Gate a premium feature
if (await license.hasFeature('advanced-reports')) {
  // render the feature
}

License modes

Full Lock

App stops working entirely if license lapses. Use for client-critical tools.

Read-Only

App enters read-only mode — clients can view data but not create or modify.

Feature Gate

Specific features are disabled. Core app keeps working.

Grace Period

App runs normally for a configurable grace period (minimum 3 days) before locking.

Set up your referral link

Go to Dashboard → Developer → Referral to get your unique link. When a client signs up via this link, they are permanently linked to your account for automatic split payments.

Your referral link

https://digitalaura.app/register?ref=YOUR_CODE

AI Assistant

Every project has its own AI assistant powered by Claude. It reads your logs, understands your stack, and gives you actionable answers — not generic links.

What the AI can do

Diagnose deploy failures

Reads your build and runtime logs, identifies the root cause, and suggests the exact fix.

Analyse app logs

Ask "why is my app slow?" or "show me all 500 errors in the last hour." AI parses logs and summarises.

Detect anomalies

Proactively alerts you to memory leaks, error spikes, and unusual traffic patterns.

Generate code

Ask it to write a Dockerfile, nginx config, or migration — scoped to your project context.

Explain your stack

Ask anything about how your app is configured. The AI has full context: env vars, recent deploys, Nod specs.

Suggest scaling

AI monitors your resource usage and tells you when to upgrade — before you get an OOM crash.

Use from the CLI

bash
# Ask anything about your project
nolbase ai "why did my last deploy fail?"

# Analyse logs
nolbase ai "show me all database errors from the last 24 hours"

# Get a code suggestion
nolbase ai "write a health check endpoint for my Express app"

# The AI has context about your project — no need to explain your stack

Model routing by task

TaskModelPlans
Log queries, quick answersClaude HaikuAll plans
Deploy analysis, code genClaude SonnetStandard and above
Deep debugging, architectureClaude OpusPro and above

AI query quotas

Starter100 queries/moHaiku only
Basic300 queries/moHaiku only
Standard1,000 queries/moHaiku + Sonnet
Pro3,000 queries/moAll models
Business5,000 queries/moAll models

Quota resets on the 1st of each month. Unused queries do not roll over.

Troubleshooting

Common issues and how to fix them. If you're still stuck, open a support ticket from the dashboard.

Deploy failed — build error

Status shows FAILED, build log ends with a non-zero exit code

bash
# View the full build log in the dashboard:
# Projects → [your project] → Deployments → [failed deploy] → View Logs

# Or via CLI:
nol logs --project my-app

# Common causes:
# 1. Missing env variable — add it under Projects → [app] → Environment
# 2. Wrong Node version — add a .nvmrc or set NODE_VERSION env var
# 3. Build command wrong — check Projects → [app] → Settings → Build Command

SSH: Connection refused

"Connection refused" or timeout when running ssh root@IP

bash
# 1. Check Nod status in dashboard — must be RUNNING
# 2. Check firewall rules — SSH (port 22) must be open:
#    Nods → [your Nod] → Firewall → Add rule: TCP port 22 from 0.0.0.0/0

# 3. Check your SSH key is added:
#    Dashboard → SSH Keys → make sure your public key is listed

# 4. Try the noVNC console as fallback:
#    Nods → [your Nod] → Console

Domain not resolving / SSL not working

Browser shows "site can't be reached" or SSL certificate error

bash
# 1. Verify DNS — your domain's A record must point to your Nod IP:
#    Check: dig A yourdomain.com
#    Expected: your Nod IP (e.g. 144.91.64.234)

# 2. DNS propagation takes up to 48 hours — check status:
#    Projects → [app] → Domains → [domain] → Verify

# 3. SSL provisioning requires port 80 to be open:
#    Nods → [your Nod] → Firewall → ensure TCP 80 is open

# 4. Re-trigger SSL provisioning:
#    Projects → [app] → Domains → [domain] → Provision SSL

App crashes immediately after deploy

Health check fails, deploy shows FAILED after build succeeds

bash
# 1. Check the AI Deploy Doctor — it reads your logs and suggests fixes:
#    Projects → [app] → Deployments → [deploy] → Diagnose with AI

# 2. Check live logs via CLI:
nol logs --project my-app --tail

# Common causes:
# 1. App not listening on process.env.PORT (must use env var, not hardcode)
# 2. Missing DATABASE_URL or other required env var
# 3. App crashes on startup — check for uncaught exceptions in logs
# 4. Wrong start command — check Projects → [app] → Settings → Start Command

Database connection error

"ECONNREFUSED" or "could not connect to server"

bash
# 1. Get the correct connection string:
#    Databases → [your database] → Connection String → Copy

# 2. Set it as an env var on your project:
nol env set DATABASE_URL="postgresql://user:pass@host:5432/db"

# 3. If using Prisma, make sure schema.prisma uses env("DATABASE_URL")

# 4. Check if the database is running:
#    Databases → [your database] → Status must be RUNNING

# 5. Ensure your Nod and database are in the same VPC for internal access:
#    Use the internal hostname (db-mydb.internal.digitalaura.app) for lower latency

Auto-deploy not triggering on git push

Push to GitHub succeeds but no new deploy appears in dashboard

bash
# 1. Check the GitHub webhook is installed:
#    Dashboard → Git → GitHub App → [your repo] → Webhook status: Active

# 2. Verify auto-deploy is enabled for your project:
#    Projects → [app] → Settings → Auto Deploy → must be ON

# 3. Check the tracked branch matches what you pushed to:
#    Projects → [app] → Settings → Branch (default: main)

# 4. Check webhook delivery in GitHub:
#    GitHub → [your repo] → Settings → Webhooks → Recent Deliveries

CLI Reference

Install the DigitalAura CLI and manage everything from your terminal.

bash
npm install -g @nolbase/cli
nolbase loginAuthenticate with your DigitalAura account
nolbase initInitialize a project in the current directory
nolbase deployDeploy the current project
nolbase logsStream logs for the current project
nolbase ai "your question"Ask the AI assistant about your project
nolbase env set KEY=valueSet environment variables
nolbase sshSSH into the project Nod
nolbase scale --plan proUpgrade your Nod plan
nolbase rollbackRollback to the previous deploy
nolbase db create --type postgresCreate a managed database

API Reference

The DigitalAura REST API lets you manage Nods, deployments, databases, and domains programmatically. Authenticate with a bearer token from your dashboard.

bash
# Base URL
https://api.digitalaura.app/v1

# Authentication
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.digitalaura.app/v1/servers

# Create a Nod
curl -X POST https://api.digitalaura.app/v1/servers \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-api",
    "plan": "standard",
    "os": "ubuntu-22.04",
    "region": "ng-lag1"
  }'

Endpoints

GET/v1/serversList all Nods
POST/v1/serversCreate a Nod
GET/v1/servers/:idGet Nod details
DELETE/v1/servers/:idDestroy a Nod
POST/v1/deployTrigger a deployment
GET/v1/databasesList databases
POST/v1/databasesCreate a database
GET/v1/domainsList domains
POST/v1/domainsAdd a domain

Ready to start building?

Create your free account and deploy your first app in under 5 minutes.

Get started