Quick Start¶
Go from signup to a running server with SSH access — and see it appear in billing — in about 15 minutes.
What you'll build: one compute instance, SSH-accessible, attached to your first project.
Step 1 — Create an account¶
Open app.bnerd.cloud and complete the signup form, or use the API:
curl -X POST https://api.bnerd.cloud/create-account \
-H "Content-Type: application/json" \
-d '{
"login": "you@example.com",
"name": "Your Name",
"password": "a-strong-password",
"password-confirm": "a-strong-password",
"organization_name": "My Org"
}'
Check your email and click the verification link before proceeding.
Step 2 — Authenticate and get a token¶
Via the dashboard¶
Log in at app.bnerd.cloud. For automation you will want a long-lived static token — self-service token management is currently in development (roadmap #20). Contact hello@bnerd.com if you need a static token before it ships.
Via the CLI (recommended for the terminal workflow)¶
The interactive prompt asks for your API URL, credentials, and organization, then writes ~/.bnerd.yaml (mode 0600). Verify it works:
Via the API directly¶
curl -si -X POST https://api.bnerd.cloud/login \
-H "Content-Type: application/json" \
-d '{"login": "you@example.com", "password": "a-strong-password"}' \
| grep -i '^authorization:'
TOKEN="<the JWT from the header>"
JWTs expire. For scripts and CI/CD use a static token (see Authentication).
Step 3 — Create a project¶
Projects group resources within your organization. Create one for this quickstart:
Go to Projects → New Project, enter a name, and click Create.
The CLI prints the new project ID. Set it as the default for subsequent commands:
Step 4 — Upload an SSH key¶
You'll need an SSH public key to log in to the server.
Go to SSH Keys → Add Key, paste your public key, and save.
Step 5 — Launch a server¶
Go to Servers → New Server. Pick a flavor, image (e.g. Ubuntu 24.04), your keypair, and click Create. The server detail page shows the build progress.
Look up available images and flavors first:
Then create the server:
The CLI returns 202 Accepted. Poll until ACTIVE:
# Get image and flavor IDs
curl "https://api.bnerd.cloud/cloud/images?project_id=$PROJECT_ID" \
-H "Authorization: Bearer $TOKEN"
curl "https://api.bnerd.cloud/cloud/flavors?project_id=$PROJECT_ID" \
-H "Authorization: Bearer $TOKEN"
# Create the server
curl -X POST "https://api.bnerd.cloud/cloud/servers?project_id=$PROJECT_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"project_id": "'"$PROJECT_ID"'",
"name": "web-01",
"flavor_id": "<flavor-id>",
"image_id": "<image-uuid>",
"key_name": "my-key"
}'
Returns 202 Accepted. Poll GET /cloud/servers/<id>?project_id=... until status is ACTIVE.
Step 6 — Get the IP address and SSH in¶
On the server detail page, copy the IP address from the Addresses section.
SSH in using the key you uploaded:
Default user varies by image
Ubuntu images use ubuntu, Debian uses debian, Rocky Linux uses rocky. Check the image description if you're unsure.
Step 7 — See it in billing¶
The server starts accruing usage the moment it moves to ACTIVE. To verify it appears in your billing overview:
Clean up¶
To avoid ongoing charges, delete the server when you're done with it:
Troubleshooting¶
| Symptom | Likely cause | Fix |
|---|---|---|
Server stuck in BUILD > 10 min | Scheduler issue or image pull delay | Check task_state in the server detail; if error appears, delete and retry |
| SSH connection refused | Server still booting, or wrong IP | Wait for status: ACTIVE and task_state: null; verify you're using the correct address |
| SSH permission denied | Wrong key or wrong user | Confirm the keypair name was set at creation; check the default username for the image |
403 Forbidden on API calls | Token lacks openstack permissions | Check your membership permissions at Settings → Members |
Next steps¶
| I want to… | Go to |
|---|---|
| Understand organizations and roles | Concepts |
| Control inbound traffic with a firewall | Per-instance firewalling |
| Provision object storage | Provision S3 Storage |
| Manage DNS for my domain | Manage DNS |
| Manage everything as code | Infrastructure as Code with Terraform |
| Browse all API endpoints | API Reference |