Drag and drop rack visualizer
Plan your rack layout. Drag your devices in, move them around, export it. It runs in your browser. You can close the tab whenever you want.
You might ask, why should I make an imaginary rack like some sort of IT cosplay? And to that I would say, "fine then! don't! SCRAM!" but also, consider:
docker run -d -p 8080:80 ghcr.io/rackulalives/rackula:latest
curl -O https://raw.githubusercontent.com/rackulalives/rackula/main/docker-compose.yml
docker compose up -d
Then open http://localhost:8080 and get after it.
For layouts that persist across sessions:
git clone https://github.com/RackulaLives/Rackula.git
cd Rackula
curl -fsSL https://raw.githubusercontent.com/RackulaLives/Rackula/main/deploy/docker-compose.persist.yml -o docker-compose.yml
mkdir -p data
sudo chown 1001:1001 data
docker compose up -d
See Self-Hosting Guide for details.
For production/self-hosted API security:
CORS_ORIGIN should be your real app URL (restricts which browser origins can call the API).RACKULA_API_WRITE_TOKEN protects API PUT/DELETE routes (optional, strongly recommended). If unset, write routes remain open.Generate a strong token:
openssl rand -hex 32
Set values in a .env file beside docker-compose.yml:
cat > .env <<'EOF'
CORS_ORIGIN=https://rack.example.com
RACKULA_API_WRITE_TOKEN=replace-with-generated-token
EOF
docker compose up -d
Or pass them inline:
CORS_ORIGIN=https://rack.example.com \
RACKULA_API_WRITE_TOKEN=replace-with-generated-token \
docker compose up -d
git clone https://github.com/RackulaLives/Rackula.git
cd Rackula && npm install && npm run build
Serve the dist/ folder however you like. It's just files.
This project was built using AI-assisted development with Claude. I told it what to build and then said "no, not like that" a lot. The AI did a lot of typing. Commits with substantial AI contributions are marked with Co-authored-by tags because we're not going to pretend otherwise.
Built for the r/homelab and r/selfhosted communities. Colours from Dracula Theme. Device data from NetBox devicetype-library.
See ACKNOWLEDGEMENTS.md for full credits.
MIT - Copyright (c) 2025 Gareth Evans