Fixes docker permissions by enabling Docker daemon during provisioning. Replaces make dev with three managed systemd services: probo-stack (auto-starting Docker Compose infra), probod (API server with gow for hot-reload), and probo-console (frontend dev server). The stack now starts automatically on VM boot; probod and console are started manually after build. Signed-off-by: Bryan Frimin <bryan@getprobo.com>
3.0 KiB
3.0 KiB
Sandbox Environments
When to use
Use a sandbox when you need to:
- Run the full service stack (Docker services, probod, console)
- Test changes end-to-end with
make test-e2e - Build the full binary with
make build - Run any command that requires Docker or the full service stack
Quick reference
# Create a sandbox (first time only)
./contrib/lima/sandbox.sh create
# Start an existing sandbox
./contrib/lima/sandbox.sh start
# Build and start the app (probo-stack starts automatically on boot)
./contrib/lima/sandbox.sh exec -- make build
./contrib/lima/sandbox.sh exec -- sudo systemctl start probod probo-console
# Get the VM IP and service URLs
./contrib/lima/sandbox.sh status
# Interactive shell
./contrib/lima/sandbox.sh ssh
# Stop (shutdown — preserves disk and Docker images, but running processes are lost)
./contrib/lima/sandbox.sh stop
# Delete entirely
./contrib/lima/sandbox.sh delete
Accessing services
After sandbox.sh status, use the VM IP to access services from the host:
| Service | URL |
|---|---|
| Console | http://<vm-ip>:5173 |
| API | http://<vm-ip>:8080 |
| Grafana | http://<vm-ip>:3001 |
| Mailpit | http://<vm-ip>:8025 |
| Keycloak | http://<vm-ip>:8082 |
| PostgreSQL | psql -h <vm-ip> -U probod |
Auto-generated configuration
During provisioning, the sandbox automatically generates:
/etc/probod/config.yml— probod config with the VM IP as cookie domain,secure: false, and correct CORS originsapps/console/.envandapps/trust/.env—VITE_API_URLpointing to the VM IP
Probod config is at /etc/probod/config.yml.
Systemd services
The sandbox provisions three systemd services:
| Service | Description | Starts on boot |
|---|---|---|
probo-stack |
Docker Compose stack (Postgres, SeaweedFS, Keycloak, etc.) | Yes |
probod |
Probo API server (depends on probo-stack) |
No |
probo-console |
Console frontend dev server | No |
probo-stack starts automatically when the VM boots. probod and probo-console must be started manually after building.
Manage them with systemctl:
./contrib/lima/sandbox.sh exec -- sudo systemctl start probod probo-console
./contrib/lima/sandbox.sh exec -- sudo systemctl stop probod
./contrib/lima/sandbox.sh exec -- sudo systemctl restart probod
./contrib/lima/sandbox.sh exec -- sudo systemctl status probod
./contrib/lima/sandbox.sh exec -- sudo journalctl -u probod -f
Common workflows
Start the app:
./contrib/lima/sandbox.sh exec -- make build
./contrib/lima/sandbox.sh exec -- sudo systemctl start probod probo-console
Run tests:
./contrib/lima/sandbox.sh exec -- make build
./contrib/lima/sandbox.sh exec -- make test
Run e2e tests:
./contrib/lima/sandbox.sh exec -- make test-e2e
Restart after code changes: Code changes are reflected immediately (virtiofs mount). Just rebuild and restart probod — no need to restart the VM.
./contrib/lima/sandbox.sh exec -- make build
./contrib/lima/sandbox.sh exec -- sudo systemctl restart probod