discover · compare · collections · requirements · contribute · feed · watching · stats · help with your tokens
RackulaLives/Rackula · source
Snapshot 0 · 2026-11-04T12:47:28Z · TypeScript · MIT
Content fingerprint
a43800f7e1b381008d20ebe2ae5c6733316d6d7b17189b02d278bc2135b9eb36GitHub description at capture
rack layout designer
README at capture
<p align="center">
<a href="https://count.racku.la">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/Rackula-lockup-dark.svg">
<source media="(prefers-color-scheme: light)" srcset="assets/Rackula-lockup-light.svg">
<img src="assets/Rackula-lockup-dark.svg" alt="Rackula" width="420">
</picture>
</a>
</p>
<p align="center">
<strong>Drag-and-drop rack layout designer</strong><br>
Plan your rack, move some pixels, save your shoulders.
</p>
<p align="center">
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-bd93f9?style=for-the-badge&labelColor=44475a" alt="License: MIT"></a>
<img src="https://img.shields.io/github/v/release/RackulaLives/Rackula?style=for-the-badge&labelColor=44475a&color=ff79c6" alt="GitHub Release">
<a href="https://github.com/RackulaLives/Rackula/pkgs/container/Rackula"><img src="https://img.shields.io/github/v/release/RackulaLives/Rackula?style=for-the-badge&labelColor=44475a&color=50fa7b&label=docker&logo=docker&logoColor=white" alt="Docker"></a>
<img src="https://img.shields.io/badge/versioning-CalVer-ff79c6?style=for-the-badge&labelColor=44475a" alt="CalVer">
<a href="https://github.com/RackulaLives/Rackula/actions/workflows/test.yml"><img src="https://img.shields.io/github/actions/workflow/status/RackulaLives/Rackula/test.yml?style=for-the-badge&labelColor=44475a" alt="CI"></a>
</p>
<p align="center">
<img src="assets/Rackula-hero-drac.gif" alt="Rackula demo" width="500">
</p>
<p align="center">
<img src="assets/screenshot-dracs-rack.png" alt="Rackula showing a rack with server and network devices" width="500">
</p>
---
## Features
- Drag and drop devices into your rack from a real hardware library
- Real device images from the NetBox devicetype-library, not grey boxes
- Export layouts to PNG, PDF, or SVG for documentation and change requests
- Share layouts via URL or QR code, no file attachments needed
- Mobile-friendly interface for field use
- Bayed rack grouping for AV installs and multi-cabinet deployments
- Optional persistent storage with API-backed layout sync
- Self-hostable via Docker, Proxmox LXC, or bare metal
- Optional auth with local accounts or OIDC for shared deployments
## Who It's For
| Audience | Use Case |
| --- | --- |
| **Homelabbers** | Plan your server rack before you rack it. Move pixels, not 4U servers. |
| **AV Technicians** | Bayed rack support for audio installs, map out amp racks, patch bays, and processor chains. |
| **Network Engineers** | Document and plan switch/router topologies. Export for runbooks and change requests. |
| **Data Centre Teams** | Layout planning for colo cages and enterprise cabinets. Share via URL with your team. |
| **Educators & Students** | Teach networking and infrastructure concepts with a visual, hands-on tool. No licence keys, no gatekeeping. |
## Why Though?
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:
- **Plan your layouts** before you build them. It's a lot easier to move your mouse than that 4U server full of hard drives. Your shoulder will thank you.
- **Document existing layouts** so you know what is where.
- **Because you can**
## How Racks Work
Racks are measured in rack units, written U. One U is 1.75 inches of vertical space, and a common full-height rack is 42U. Rackula models racks in whole U: a device occupies a whole number of units and mounts at a whole-U boundary, the same way real rails register equipment under the EIA-310 standard. If something sits at U5, it is really at U5, not floating part of a unit above it.
Gear smaller than 1U, like half-height brackets or side-by-side half-width pairs, does not bolt to the rails on its own. It rides inside a 1U carrier (a bracket, tray, or shelf) that takes up one whole U and holds the smaller devices. The carrier registers to the rails, and the small devices register to the carrier.
## Get Started
### Use it right now
**[count.racku.la](https://count.racku.la)** no account, no install, just racks.
### Self-host with Docker
This is a quick run of the client-side only frontend (no persistence across browser sessions):
```bash
docker run -d -p 8080:8080 ghcr.io/rackulalives/rackula:latest
```
Or with Docker Compose:
```bash
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
```
Open `http://localhost:8080` and get after it.
### Build from Source
```bash
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.
### Deploy on Proxmox (LXC)
> **Note:** LXC is currently in pre-release. See the [Self-Hosting Guide](docs/deployment/SELF-HOSTING.md) for details and manual install instructions.
### Security & Auth
For production deployments, configure API security and authentication:
```bash
# Generate secrets
openssl rand -hex 32 # API write token
openssl rand -hex 32 # Session secret (if using auth)
```
Set `CORS_ORIGIN`, `RACKULA_API_WRITE_TOKEN`, and optionally `RACKULA_AUTH_MODE` (`none`, `local`, or `oidc`) in your `.env` file.
See the [Self-Hosting Guide](docs/deployment/SELF-HOSTING.md) for full configuration details including auth modes, env vars, and TLS setup.
## Built With Claude
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.
## Documentation
- [Architecture Overview](docs/ARCHITECTURE.md)
- [Technical Spec](docs/reference/SPEC.md)
- [Self-Hosting Guide](docs/deployment/SELF-HOSTING.md)
- [Changelog](CHANGELOG.md)
- [Contributing Guide](CONTRIBUTING.md)
- [Discussions](https://github.com/RackulaLives/Rackula/discussions)
## Acknowledgements
Built for the [r/homelab](https://reddit.com/r/homelab) and [r/selfhosted](https://reddit.com/r/selfhosted) communities. Colours from [Dracula Theme](https://draculatheme.com/). Device data from [NetBox devicetype-library](https://github.com/netbox-community/devicetype-library). See [ACKNOWLEDGEMENTS.md](ACKNOWLEDGEMENTS.md) for full credits.
## Licence
[MIT](LICENSE) Copyright © 2025-2026 Gareth Evans