| title | description |
|---|---|
Quickstart |
Get Pullbase running and see your first servers come online in under 5 minutes. |
This guide gets you from zero to a working Pullbase setup with agents reporting status. By the end, you'll have:
- A running Pullbase server with database
- An admin account
- Two demo agents reporting their status
Time estimate: 5 minutes
- Docker 24.0+ with the Compose plugin (
docker compose) - Git to clone the repository
- A terminal (macOS, Linux, or WSL)
For production:
- Deploy the central server using Docker or bare-metal
- Install agents natively on your Linux servers using the install script — never run production agents in containers
git clone https://github.com/pullbase/pullbase.git
cd pullbase
docker compose up -dThis starts:
- PostgreSQL database
- Pullbase server (API + dashboard)
- Two demo agents (test-server-1, test-server-2)
docker compose psYou should see all services with status healthy or running.
curl http://localhost:8080/api/v1/healthzExpected output:
{"status":"healthy","service":"pullbase-server"}Pullbase generates a one-time bootstrap secret on first start. Retrieve it and create your admin:
# Get the bootstrap secret
docker compose exec central-server cat /app/secrets/bootstrap.secret
# Create admin (replace YOUR_SECRET with the value above)
docker compose exec central-server pullbasectl auth bootstrap-admin \
--server-url http://localhost:8080 \
--bootstrap-secret "YOUR_SECRET" \
--username admin \
--password 'SecurePassword123!'Visit http://localhost:8080 in your browser and sign in with:
- Username:
admin - Password:
SecurePassword123!(or whatever you chose)
Navigate to Servers in the sidebar. Within 60 seconds, you should see:
| Server | Status | Last Seen |
|---|---|---|
| test-server-1 | Applied | Just now |
| test-server-2 | Applied | Just now |
The agents are pulling configuration from the demo environment and reporting their status.
Congratulations! You have a working Pullbase installation.
Now that you've seen Pullbase working, here's how to add a real server.
- Go to Servers → Create Server
- Enter a server ID (e.g.,
web-01) and name - Select an environment
- Click Create
- Go to the server's Tokens tab and create a token
- Copy the install command and run it on your target server
# Set your server URL and token
export PULLBASE_URL=http://localhost:8080
export PULLBASE_TOKEN=<your-access-token-from-step-3>
# Create a server
docker compose exec central-server pullbasectl servers create \
--server-url $PULLBASE_URL \
--admin-token $PULLBASE_TOKEN \
--id web-01 \
--name "Web Server 01" \
--environment-id 1
# Create an agent token
docker compose exec central-server pullbasectl tokens create \
--server-url $PULLBASE_URL \
--admin-token $PULLBASE_TOKEN \
--server-id web-01 \
--description "initial token"The token output includes an install command you can run on your target server.
On your target Linux server (VM, bare-metal, or cloud instance):
curl -fsSL "http://YOUR_PULLBASE_HOST:8080/api/v1/servers/web-01/install-script?token=YOUR_TOKEN" | sudo bashGroup servers and link them to Git repositories Define packages, services, and files to manage Deploy Pullbase on real infrastructure with TLS Master the CLI for automation and workflows
- Ensure Docker is running: `docker info` - Check if port 8080 is available: `lsof -i :8080` - Check if port 5432 is available: `lsof -i :5432` - View logs: `docker compose logs -f` The secret file is created on first boot. Wait 30 seconds after `docker compose up` and try again: ```bash docker compose exec central-server cat /app/secrets/bootstrap.secret ``` - Check agent logs: `docker compose logs test-server-1` - Agents report every 60 seconds — wait and refresh - Verify the central-server is healthy: `curl http://localhost:8080/api/v1/healthz` - Ensure the central-server is running: `docker compose ps` - Check for errors: `docker compose logs central-server` - Try the healthcheck: `docker compose exec central-server wget -qO- http://localhost:8080/api/v1/healthz`
To stop and remove all containers and data:
docker compose down -vThis removes:
- All containers
- The PostgreSQL data volume
- Generated certificates