Requirements
| Resource | Minimum | Recommended |
|---|---|---|
| RAM | 4 GB | 8 GB |
| Disk | 10 GB | 50 GB |
| CPU | 2 cores | 4 cores |
| OS | Linux (Debian/Ubuntu recommended) | |
| Software | Docker + Docker Compose | |
Quick Install
# Download and run the install script
curl -fsSL https://kovanex.dev/install.sh | bash
curl -fsSL https://kovanex.dev/install.sh | bash
The script will:
- Check prerequisites (Docker, disk space, RAM)
- Create
/opt/kovanex/directory - Generate docker-compose.yml and .env with random secrets
- Pull and start containers
- Create admin user
- Print connection details
Manual Install
# 1. Create directory
mkdir -p /opt/kovanex && cd /opt/kovanex
# 2. Create docker-compose.yml
cat > docker-compose.yml <<'EOF'
services:
kovanex:
image: registry.kovanex.dev/kovanex:latest
ports:
- "8080:8080" # gRPC-Web + PWA
- "9000:9000" # gRPC
- "2222:2222" # Git SSH
env_file: .env
depends_on:
surrealdb: { condition: service_healthy }
restart: unless-stopped
surrealdb:
image: surrealdb/surrealdb:latest
command: start --user root --pass root surrealkv://data
volumes: [surrealdb_data:/data]
healthcheck:
test: ["/surreal", "isready"]
restart: unless-stopped
volumes:
surrealdb_data:
EOF
# 3. Generate secrets
cat > .env <<EOF
KOVANEX_DB_USER=kovanex
KOVANEX_DB_PASS=$(openssl rand -hex 16)
JWT_SECRET=$(openssl rand -hex 32)
ADMIN_PASSWORD=$(openssl rand -hex 12)
EOF
# 4. Start
docker compose up -d
# 5. Wait for health
until curl -sf http://localhost:8080/healthz; do sleep 2; done
# 6. Get CLI
docker cp kovanex:/usr/local/bin/kovanex-ctl /usr/local/bin/
# 7. Login
kovanex-ctl login admin $(grep ADMIN_PASSWORD .env | cut -d= -f2)
OK logged in as admin
mkdir -p /opt/kovanex && cd /opt/kovanex
# 2. Create docker-compose.yml
cat > docker-compose.yml <<'EOF'
services:
kovanex:
image: registry.kovanex.dev/kovanex:latest
ports:
- "8080:8080" # gRPC-Web + PWA
- "9000:9000" # gRPC
- "2222:2222" # Git SSH
env_file: .env
depends_on:
surrealdb: { condition: service_healthy }
restart: unless-stopped
surrealdb:
image: surrealdb/surrealdb:latest
command: start --user root --pass root surrealkv://data
volumes: [surrealdb_data:/data]
healthcheck:
test: ["/surreal", "isready"]
restart: unless-stopped
volumes:
surrealdb_data:
EOF
# 3. Generate secrets
cat > .env <<EOF
KOVANEX_DB_USER=kovanex
KOVANEX_DB_PASS=$(openssl rand -hex 16)
JWT_SECRET=$(openssl rand -hex 32)
ADMIN_PASSWORD=$(openssl rand -hex 12)
EOF
# 4. Start
docker compose up -d
# 5. Wait for health
until curl -sf http://localhost:8080/healthz; do sleep 2; done
# 6. Get CLI
docker cp kovanex:/usr/local/bin/kovanex-ctl /usr/local/bin/
# 7. Login
kovanex-ctl login admin $(grep ADMIN_PASSWORD .env | cut -d= -f2)
OK logged in as admin
After Install
# Check status
kovanex-ctl status
# Create your first project
kovanex-ctl projects create "My App"
# Read documentation
kovanex-ctl docs
# Open PWA in browser
open http://localhost:8080
kovanex-ctl status
# Create your first project
kovanex-ctl projects create "My App"
# Read documentation
kovanex-ctl docs
# Open PWA in browser
open http://localhost:8080
Source Code
Public Git repository available at git.kovanex.dev (coming soon).
Container images at registry.kovanex.dev (coming soon).