The interactive install.sh script now supports full VPS setup flow plus deployment-specific config generation.
Run the Installer
bash install.sh
The script runs 7 steps.
Step 1: System Prep + Dependency Check
You can choose:
- Auto-install mode (Ubuntu/Debian VPS):
- Node.js 22+
- Git
- Docker + Docker Compose plugin
- Core system packages
- Manual mode: script only validates dependencies.
Step 2: Basic App Configuration
Prompts include:
? Community name [Roost]
? Community tagline [Learn, Build, Grow Together]
? Your domain (or localhost for dev) [localhost]
localhost uses local HTTP URLs.
Domain values use HTTPS URLs.
For Docker VPS target, localhost is not allowed because SSL is enforced.
Step 3: Database Provider
1) Supabase Cloud
2) Supabase Self-hosted
Provider-specific credentials are collected.
For Supabase Self-hosted, installer can auto-generate JWT/anon/service keys (recommended), with manual key entry optional.
Step 4: Deployment Target
1) Docker (Self-hosted VPS)
2) Dockploy (Self-hosted VPS)
3) Vercel (Frontend + separate backend)
4) Netlify (Frontend + separate backend)
5) Local Development Only
Important:
- Docker and Dockploy targets verify Docker runtime.
- Docker target requires a real domain + Let’s Encrypt email for built-in SSL.
- Dockploy target is Supabase self-hosted by design.
- Dockploy target auto-generates required Supabase secrets/keys into
.env.dokploy.
Step 5: Optional Services
Prompts include:
- Storage (AWS S3 or S3-compatible storage, including optional bundled MinIO)
- SMTP
- Redis
- Stripe
For Docker target:
- Redis default URL is
redis://redis:6379. - Traefik reverse proxy + Let’s Encrypt TLS are configured automatically.
- If Docker daemon minimum API is
1.40+(Docker Engine 29+), installer adds a systemd override:DOCKER_MIN_API_VERSION=1.24(Traefik Docker provider compatibility)
- If you pick
S3-Compatible, you can chooseSelf-host MinIO on this VPS.- Installer auto-generates MinIO credentials (or lets you set them)
- Enables
COMPOSE_PROFILES=minio - Sets
S3_ENDPOINT=https://your-domainand routes bucket paths via Traefik
Step 6: File Generation
Always generated:
.env.localserver/.env
Deployment-specific:
Docker:.env(compose runtime env)Dockploy:.env.dokployVercel:vercel.jsonNetlify:netlify.toml
Step 7: Dependency Installation
If you choose yes, the script installs frontend and backend npm dependencies.
Post-Install Checks (Docker Target)
For Docker (Self-hosted VPS), installer now runs automatic checks after setup:
.envgenerated- production domain + Let’s Encrypt email present
docker compose configvalidation- Docker minimum API compatibility status for Traefik
If checks report blocking issues, fix them and re-run bash install.sh.
Quick Start Output by Target
Docker
docker compose up -d --build
Dockploy
Use .env.dokploy values in Dockploy environment UI (or run manually with docker-compose.dokploy.yml).
Vercel / Netlify
Frontend deploy commands are shown; backend remains separate.
Re-running the Installer
You can run bash install.sh any time. It overwrites generated env/config files.
Back up current values first if needed:
cp .env.local .env.local.backup
cp server/.env server/.env.backup
cp .env .env.backup 2>/dev/null || true
cp .env.dokploy .env.dokploy.backup 2>/dev/null || true
What Installer Does Not Do Automatically
- DNS record setup
- Database schema execution (
schema.sql) - First admin creation
Use deployment/database guides for those operational steps.