【免费下载链接】Rackula
rack layout designer
Rackula 是一款开源免费的机架布局设计工具(rack layout designer),你可以在浏览器里拖拽真实的服务器、交换机、UPS 等设备图像,先"画"好机架,再动手装机。本文带你用一条 Docker 命令从零部署 Rackula,5 分钟后即可在本地规划属于自己的 42U 可视化机架。
为什么要先建一台"虚拟机架"?🔧
搬动一台装满硬盘的 4U 服务器,远不如在屏幕上拖动它来得轻松。Rackula 解决的正是这类问题:
- 拖拽式布局:从内置的真实硬件库中拖出设备放入机架,不再是灰色方块,而是来自真实设备库的产品图像
- 前后双面视图:FRONT 与 REAR 双视图同步显示,布线规划一目了然
- 导出与分享:布局可导出为 PNG / PDF / SVG,也可通过 URL 或二维码分享给团队
- 移动端友好:机房现场用手机也能查看和编辑
- 可自托管:Docker、Docker Compose 均可,数据完全掌握在自己手里
如上图所示,左侧是设备库分类(服务器、网络、电源、存储等),中间是机架正反面视图,右侧是设备编辑面板——这就是 Rackula 机架布局设计的核心工作区。
一条 Docker 命令:5 分钟跑起来 🚀
前置条件
- 已安装 Docker(Docker Desktop 或
dockerd均可) - 验证一下:
docker --version启动命令
在任意"空仓库"目录(或任意目录)中执行这一条命令:
docker run -d -p 8080:8080 ghcr.io/rackulalives/rackula:latest三个参数,各管一件事:
| 参数 | 作用 |
|---|---|
-d | 后台运行容器 |
-p 8080:8080 | 把宿主机 8080 端口映射到容器内 nginx |
ghcr.io/rackulalives/rackula:latest | 官方最新前端镜像(amd64 / arm64 均支持) |
验证部署
docker ps # 应看到 rackula 容器处于 Up 状态 curl -fsS http://localhost:8080/version.json # 返回版本号即成功然后打开浏览器访问http://localhost:8080,你的 Rackula 已经跑起来了。
⚠️ 这种最简模式是纯前端部署:布局保存在浏览器本地(IndexedDB),换一台电脑或换浏览器看不到之前画的机架。想跨设备同步?看下一节。
进阶:带持久化的 Docker Compose 部署 📦
正式使用的推荐方式是 Compose 部署——前端 + API 两个容器,机架布局以 YAML 文件形式落盘,任意浏览器打开都能看到同一份数据。
第 1 步:克隆仓库,拿到官方 Compose 文件:
git clone https://gitcode.com/gh_mirrors/ra/Rackula cd Rackula第 2 步:创建数据目录(API 容器以 UID 1001 运行,必须给它写权限):
mkdir -p data && sudo chown 1001:1001 data第 3 步:启动整套服务:
docker compose -f deploy/docker-compose.persist.yml up -d配置文件见 deploy/docker-compose.persist.yml,完整原理见 docs/deployment/SELF-HOSTING.md。
架构非常简洁:
浏览器 → nginx (8080) → 提供前端页面 → 代理 /api/* 到 API 容器 API (3001) → 读写 ./data 下的 YAML 机架布局数据会以这样的结构保存在./data/中,备份只需打包这个目录:
./data/ ├── my-homelab-11111111-.../ │ ├── my-homelab.rackula.yaml # 机架布局(YAML) │ └── assets/{deviceId}/front.png # 自定义设备图部署完成后,先画一台机架 🎨
1. 新建机架:进入应用后会自动创建一台默认机架。选中它,右侧 Edit 面板可调整高度(12U~48U)、宽度(10"~23")与 U 编号方向。首次部署时会看到这样的空机架:
2. 拖入设备:左侧设备库按品牌或分类筛选(Generic 类别即包含通用服务器、交换机、PDU 等),把设备拖到目标 U 位,放置时会自动校验高度与冲突:
3. 多机架管理:点击左侧 "Racks" 标签可添加第二台、第三台机架,整排机柜并排展示,适合网络柜 + 服务器柜 + 音频柜的组合:
4. 导入与导出:仓库内置了三份 YAML 模板,可直接导入体验完整布局:
- static/templates/home-lab.rackula.yaml
- static/templates/media-server.rackula.yaml
- static/templates/network-closet.rackula.yaml
完成后通过 Share 功能导出 PNG / PDF / SVG,或生成二维码把布局发到手机查看。
常用配置速查表 ⚙️
生产部署时,按需设置这几个环境变量即可(更多变量见 docs/deployment/SELF-HOSTING.md 的 Environment Variables 一节):
| 变量 | 默认值 | 说明 |
|---|---|---|
RACKULA_PORT | 8080 | 宿主机 Web 端口,如RACKULA_PORT=3000 docker compose up -d |
CORS_ORIGIN | http://localhost:8080 | 改端口/域名后必须同步为真实浏览器来源 |
RACKULA_STORAGE_MODE | server(Compose 持久版) | 前端存储模式:browser / server |
RACKULA_AUTH_MODE | none | 认证模式:none / local / oidc |
RACKULA_API_WRITE_TOKEN | 未设置 | 保护 API 写入路由(PUT/DELETE)的 Bearer 令牌 |
对外网部署,建议至少设置明确的CORS_ORIGIN与写入令牌;认证与 TLS 细节可参考 docs/deployment/AUTHENTICATION.md。
升级与备份(每次升级前必做)
cp -a data data.bak # 1. 备份数据目录 docker compose -f deploy/docker-compose.persist.yml pull # 2. 拉取新镜像 docker compose -f deploy/docker-compose.persist.yml up -d # 3. 重建容器提示:拉取新镜像本身不会触碰
/data中的布局,风险只在于升级后"第一次保存"会改写文件格式,所以备份是必选项而非可选项。
常见问题排查 🩺
| 症状 | 排查方法 |
|---|---|
| 8080 端口被占用 | RACKULA_PORT=8081 docker compose up -d,访问localhost:8081 |
Permission denied保存失败 | API 以 UID 1001 运行:sudo chown -R 1001:1001 ./data |
| UI 提示 "Persistence API unavailable" | docker compose logs rackula-api查看 API 容器是否健康 |
| 确认部署版本 | curl -fsS http://localhost:8080/version.json(前端)与/api/version(后端),两者版本号应一致 |
容器反复重启时,优先看日志:docker logs rackula与docker logs rackula-api。
写在最后
回顾一下这条最短路径:一条docker run命令即可体验 Rackula;加上deploy/docker-compose.persist.yml三个步骤,就拥有了带持久化、可备份、可升级的完整自托管部署。布局先画在屏幕上的每一分钟,都是机房里少弯一次腰。更多架构细节可查阅 docs/ARCHITECTURE.md,项目采用 MIT 协议开源,欢迎参与共建。
【免费下载链接】Rackula
rack layout designer
相关推荐
如何一条命令部署QQ机器人:go-cqhttp Docker容器化部署分步实战教程
如何一条命令部署QQ机器人:go cqhttp Docker容器化部署分步实战教程 go cqhttp 是 cqhttp 的 Go 语言原生实现,轻量且跨平台,
即时通讯后端3步切换任意游戏的DLSS版本:DLSS Swapper新手完全指南
3步切换任意游戏的DLSS版本:DLSS Swapper新手完全指南 游戏内置的图像增强技术常常锁死在发售时的旧版上,你自己既升不上去也换不了。DLSS Swa
桌面应用如何用Ansible Semaphore实现Ansible Playbook可视化部署:完整教程
如何用Ansible Semaphore实现Ansible Playbook可视化部署:完整教程 Ansible Semaphore是一个现代化的Ansible
后端前端任务调度运维CI/CD认证鉴权
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考