Your infrastructure, block by block.
Blokhouse is a simple, automation-first open source CMDB. Track your infrastructure assets and power your automation tools β Ansible, Puppet, Chef, and custom REST API scripts.
- Configuration Items β manage assets with custom fields, tags, and types
- Ansible Dynamic Inventory β plug directly into your playbooks
- Puppet ENC β External Node Classifier for Puppet masters
- Chef Integration β node inventory and data bags
- REST API β full OpenAPI/Swagger documentation at
/docs - Relationship Graph β visualize asset dependencies
- Audit Logs β track every change
- Maintenance Schedules β plan downtime
- Notifications β stay informed
- CSV Import/Export β bulk operations
- Dark Mode β for the night owls
- Docker support β run anywhere
# 1. Download the compose file and create your env
curl -O https://raw.githubusercontent.com/d4sw4r/blokhouse/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/d4sw4r/blokhouse/main/.env.example
cp .env.example .env
# 2. Generate a secure secret and add it to .env
echo "NEXTAUTH_SECRET=$(openssl rand -hex 32)" >> .env
# 3. Start
docker compose up -dOpen http://localhost:3000. The admin credentials are printed in the container logs:
docker compose logs app | grep -i passwordLogin: admin@example.com / (generated password from logs)
No Docker? One command installs and starts Blokhouse using Node.js directly:
curl -sSL https://raw.githubusercontent.com/d4sw4r/blokhouse/main/install.sh | sudo bashRequirements: Node.js >= 18, npm, git
The script prints the generated admin password at the end β save it.
git clone https://github.com/d4sw4r/blokhouse.git
cd blokhouse
cp .env.example .env
# Edit .env: set NEXTAUTH_SECRET=$(openssl rand -hex 32)
npm install
npx prisma db push
npx prisma db seed
npm run dev# my-dynamic-inventory.yml
plugin: uri
url: http://localhost:3000/api/ansible
validate_certs: false# /etc/puppetlabs/puppet/puppet.conf
[master]
external_nodes = curl -sf -H 'Authorization: Bearer YOUR_TOKEN' http://localhost:3000/api/puppet?node=%s
node_terminus = execcurl -H 'Authorization: Bearer YOUR_TOKEN' http://localhost:3000/api/chefVisit /docs for the interactive Swagger UI or fetch the raw spec:
curl http://localhost:3000/api/docsGenerate API tokens under Settings β API Tokens in the web UI.
- Configuration β environment variables and setup
- Architecture β tech stack and data flow
- API Reference β endpoints and authentication
- Ansible Integration
- Puppet Integration
- Chef Integration
- Deployment Guide β nginx, systemd, backups
Docker: no matching manifest for linux/arm64
The image didn't include your platform. Pull the latest image (rebuilt with multi-arch support):
docker compose pull
docker compose up -dDATABASE_URL must start with postgresql://
You are running a stale Docker image. Pull the latest:
docker compose pull && docker compose up -ddatasource.url property is required
The DATABASE_URL environment variable is not set. Make sure your .env file exists and contains it:
cat .env | grep DATABASE_URL
# Should show: DATABASE_URL=file:./prisma/blokhouse.dbFor the install script, re-run it β it now sources .env automatically.
Port 3000 already in use
Change the host port in docker-compose.yml:
ports:
- "3001:3000" # change 3001 to any free portBlank page or redirect loop after login
Check that NEXTAUTH_URL in your .env matches the URL you are actually using in the browser (including port). Also try clearing browser cookies for localhost.
Contributions are welcome! See CONTRIBUTING.md for guidelines.
MIT β see LICENSE