cmd start - nself-org/cli GitHub Wiki

nself start

Boot the ษณSelf stack with health checks and automatic database initialization.

Synopsis

nself start [flags]
nself up [flags]

Alias: up

Description

nself start brings up the entire ษณSelf stack in the correct order: PostgreSQL first, then automatic database initialization (schemas, extensions, permissions), then Hasura, Auth, Nginx, optional services, monitoring, and custom services. Each service is health-checked before the next group starts.

Before launching containers, nself start validates that docker-compose.yml exists (run nself build first), the Docker daemon is running, and all required ports are available. A pre-flight port check scans for conflicts on ports 80, 443, 5432, 8080, 4000, 6379, and 9000 and reports the conflicting process name if a port is in use.

Database initialization is automatic and idempotent, ษณSelf creates the database, schemas (auth, storage, public), and extensions (pgcrypto, citext, uuid-ossp) if they do not already exist. After all services are healthy, the console prints all service URLs.

Flags

Flag Default Description
--fresh false Force recreate all containers
--force-recreate false Alias for --fresh
--clean-start false Remove all containers before starting
--skip-build false Skip automatic rebuild detection
--skip-health-checks false Skip health validation after startup
--skip-port-check false Skip port availability check
--quick false Quick start (timeout=30s, required=60%)
--timeout 120 Health check timeout in seconds (range: 30โ€“600)
--quiet false Suppress progress output (for CI). Preserves --json output.
--watch false Enable health auto-restart: poll services and restart unhealthy containers
--skip-plugins false Start base stack only, skipping plugin compose files
--no-monorepo false Disable automatic monorepo backend detection
--allow-legacy false Bypass v0.9 artifact check and proceed with WARNING (not recommended). Use only as a temporary workaround while running nself migrate.
--debug, -d false Show debug information
--verbose, -v false Show detailed Docker output
--help, -h โ€” Show help

v0.9 project detection

nself start scans the current directory for v0.9 project artifacts before launching any containers. Detection uses five heuristics (v0.9 docker-compose.yml header, NSELF_VERSION=0.x in .env, flat nginx/ layout, .nself/config as a plain file, and nself.sh bootstrap script). Two or more hits trigger a hard error:

error: v0.9 project detected. Found 3 legacy artifact(s): docker-compose.yml, .env, nginx/nginx.conf
Run `nself migrate` first. See https://docs.nself.org/migrate/from-v0.9

A single hit produces a non-blocking warning. Use nself migrate detect to see all detected artifacts before running the migration. See Upgrade-From-v0.9 for the full migration guide.

Examples

# Standard boot
nself start

# Using the alias
nself up

# Force container recreation (useful after config changes)
nself start --fresh

# Remove existing containers before starting fresh
nself start --clean-start

# Fast mode for CI โ€” lower timeout, 60% health threshold
nself start --quick

# Skip health checks (not recommended for production)
nself start --skip-health-checks

# Custom health check timeout
nself start --timeout 300

# Verbose output to debug startup issues
nself start -v

# Suppress progress output for CI pipelines
nself start --quiet

First-run transcript

On the very first nself start in a project directory, the CLI detects that Docker images have not been pulled yet and streams progress to avoid a silent terminal during the 1-3 minute pull:

[1/7] Checking docker-compose.yml โœ“
[2/7] Loading configuration โœ“
[3/7] Checking port availability โœ“
[4/7] Starting PostgreSQL
First run detected โ€” pulling Docker images (this takes 1-3 minutes on slow connections)...
โš™ Pulling images [12s elapsed] โ€” first run takes 1-3 minutes...
โš™ Pulling images [16s elapsed] โ€” first run takes 1-3 minutes...
โš™ Pulling images [24s elapsed] โ€” first run takes 1-3 minutes...
โœ“ Docker images ready
...

The progress line updates every 4 seconds. Once all images are pulled, the marker file .nself/.first-run-complete is written and subsequent starts skip the pull step entirely.

Pass --quiet to suppress all progress output. Useful in CI where the log is captured elsewhere.

Aliases

nself up is a hidden alias for nself start. Same flags. Same behavior. Provided so docker-compose users can keep their muscle memory.

โ† [Commands]] ](/nself-org/cli/wiki/[[Home) โ†’