[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81280":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":38,"readmeContent":39,"aiSummary":40,"trendingCount":16,"starSnapshotCount":16,"syncStatus":41,"lastSyncTime":42,"discoverSource":43},81280,"rackpad","Kobii-git\u002Frackpad","Kobii-git","Self-hosted infrastructure inventory and operations for homelabs and labs: racks, devices, ports, cables, IPAM, VLANs, WiFi, compute, discovery, monitoring, reports, and topology visualization.","https:\u002F\u002Frackpad.co.za",null,"TypeScript",136,3,1,11,0,79,83,88,237,90.61,"MIT License",false,"main",[26,27,28,29,30,31,32,33,34,35,36,37],"docker","docker-compose","fastify","homelab","inventory","inventory-management-system","ipam","networking","networkingmonitoring","react","self-hosted","sqlite","2026-06-12 04:01:32","# Rackpad\n\nRackpad is a self-hosted infrastructure inventory and operations app for racks, devices, ports, cables, VLANs, IP address management, WiFi, compute, discovery, monitoring, labs, and users.\n\nCurrent release: `v1.3.0`\n\nIt is a full-stack app:\n\n- React + Vite frontend\n- Fastify API\n- SQLite persistence through `better-sqlite3`\n- session-based authentication with admin\u002Feditor\u002Fviewer roles\n- per-device health checks with multi-target ICMP, TCP, HTTP, and HTTPS monitor support\n- Docker support for a single-container test deployment\n\n## Quick links\n\nIf `rackpad.co.za` is unavailable, the repo still contains the core material you need:\n\n- [Installation guide](.\u002FINSTALL.md)\n- [Proxmox install notes](.\u002Fdocs\u002FPROXMOX.md)\n- [Hyper-V import guide](.\u002Fdocs\u002FHYPERV_IMPORT.md)\n- [Proxmox import guide](.\u002Fdocs\u002FPROXMOX_IMPORT.md)\n- [Reports guide](.\u002Fdocs\u002FREPORTS.md)\n- [Visualizer guide](.\u002Fdocs\u002FVISUALIZER.md)\n- [OIDC login guide](.\u002Fdocs\u002FOIDC.md)\n- [Documentation and images guide](.\u002Fdocs\u002FDOCUMENTATION.md)\n- [Security policy](.\u002FSECURITY.md)\n- [Changelog](.\u002FCHANGELOG.md)\n- [MIT license](.\u002FLICENSE)\n- [Support notes](.\u002FSUPPORT.md)\n\n## Screenshots\n\nThese are 1920x1200 live captures from the working Rackpad demo environment,\nembedded directly in the GitHub repo.\n\n### Overview and physical inventory\n\n| Dashboard                                              | Racks                                               |\n| ------------------------------------------------------ | --------------------------------------------------- |\n| ![Rackpad dashboard](.\u002Fdocs\u002Fscreenshots\u002Fdashboard.png) | ![Rackpad racks view](.\u002Fdocs\u002Fscreenshots\u002Fracks.png) |\n\n| Devices                                                      | Ports                                                            |\n| ------------------------------------------------------------ | ---------------------------------------------------------------- |\n| ![Rackpad devices inventory](.\u002Fdocs\u002Fscreenshots\u002Fdevices.png) | ![Rackpad ports and patching view](.\u002Fdocs\u002Fscreenshots\u002Fports.png) |\n\n| Cables                                                   | IPAM                                                   |\n| -------------------------------------------------------- | ------------------------------------------------------ |\n| ![Rackpad cables workspace](.\u002Fdocs\u002Fscreenshots\u002Fcables.png) | ![Rackpad IPAM workspace](.\u002Fdocs\u002Fscreenshots\u002Fipam.png) |\n\n### Visualizer cable mapping\n\n| Topology and cable paths                                       | Selected cable inspector                                                |\n| -------------------------------------------------------------- | ----------------------------------------------------------------------- |\n| ![Rackpad visualizer workspace](.\u002Fdocs\u002Fscreenshots\u002Fvisualizer.png) | ![Rackpad visualizer selected cable](.\u002Fdocs\u002Fscreenshots\u002Fvisualizer-cables.png) |\n\n| Health overlay                                                        | Trace mode                                                        |\n| --------------------------------------------------------------------- | ----------------------------------------------------------------- |\n| ![Rackpad visualizer health overlay](.\u002Fdocs\u002Fscreenshots\u002Fvisualizer-health.png) | ![Rackpad visualizer trace mode](.\u002Fdocs\u002Fscreenshots\u002Fvisualizer-trace.png) |\n\n| Loose devices below racks                                             |\n| --------------------------------------------------------------------- |\n| ![Rackpad visualizer loose-device layout](.\u002Fdocs\u002Fscreenshots\u002Fvisualizer-layout.png) |\n\n### Operations and documentation\n\n| Monitoring                                                         | Compute                                                      |\n| ------------------------------------------------------------------ | ------------------------------------------------------------ |\n| ![Rackpad monitoring workspace](.\u002Fdocs\u002Fscreenshots\u002Fmonitoring.png) | ![Rackpad compute workspace](.\u002Fdocs\u002Fscreenshots\u002Fcompute.png) |\n\n| Documentation                                                      |\n| ------------------------------------------------------------------ |\n| ![Rackpad documentation workspace](.\u002Fdocs\u002Fscreenshots\u002Fdocumentation.png) |\n\n### Wireless, discovery, and address management\n\n| WiFi                                                   | Discovery                                                        |\n| ------------------------------------------------------ | ---------------------------------------------------------------- |\n| ![Rackpad WiFi workspace](.\u002Fdocs\u002Fscreenshots\u002Fwifi.png) | ![Rackpad discovery workspace](.\u002Fdocs\u002Fscreenshots\u002Fdiscovery.png) |\n\nThese are enough to see the app before installing it, and the full screenshot set used for GitHub previews lives in [`docs\u002Fscreenshots`](.\u002Fdocs\u002Fscreenshots).\n\n## What you can see before install\n\nFrom the GitHub repo alone, you can already preview the major Rackpad workspaces:\n\n- Dashboard for inventory, health, capacity, and recent activity\n- Racks for physical placement, mounted gear, and room-tech context\n- Devices for searchable inventory and placement-aware records\n- Ports for switch, host, AP, VM, and patch-panel connectivity\n- Compute for hosts, VMs, and virtual switch \u002F bridge membership\n- WiFi for controllers, SSIDs, radios, clients, and signal context\n- Discovery for staged imports, MAC\u002Fvendor hints, and duplicate detection\n- Monitoring for multi-target ICMP, TCP, HTTP, and HTTPS checks\n- IPAM for subnets, DHCP scopes, IP zones, and linked assignments\n- Documentation for Markdown notes, runbooks, and inline pictures\n- Imports for review-first Hyper-V and Proxmox host, VM, and container onboarding\n- Reports for printable\u002FPDF, Excel-compatible, and CSV exports\n- Visualizer for rack, loose-room, port, and cable relationship maps\n\n## What works\n\n- Rack inventory and physical placement\n- Add, edit, and delete racks\n- Add, edit, and delete devices\n- Custom device types for inventory, discovery, icons, filters, and port templates\n- MAC address fields, search, sort, import, and display beside IP context\n- Device placement modes for rack, room, wireless, and virtual inventory\n- Parent-child device relationships for hosted VMs and AP-linked wireless clients\n- Compute workspace for virtualization hosts and VMs\n- Capacity tracking for hosts and VMs with CPU, memory, storage, and specs fields\n- Port templates for new devices\n- Manual port create, edit, and delete\n- Create, edit, and delete cables\n- VLAN allocation and VLAN deletion\n- VLAN range create, edit, and delete\n- IPAM subnet, DHCP scope, and IP zone CRUD\n- Controller-aware WiFi workspace for controllers, SSIDs, AP radios, and wireless clients\n- Wireless client telemetry with AP, SSID, band, channel, signal, last-seen, and roam context\n- Discovery inbox with subnet scan, duplicate awareness, review, and import into inventory\n- Discovery enrichment with MAC\u002Fvendor capture and direct linking to existing inventory\n- Management IP synchronization between device records and IPAM\n- Next-free IP allocation and IP release\n- Direct links between devices, ports, IPAM assignments, racks, rooms, dashboard cards, reports, and visualizer inspector entries\n- Audit log writes for the main workflows\n- User bootstrap, login, logout, and user management\n- Optional OIDC login with PKCE, role mapping, and Authentik-style issuer\u002Fdebug guidance\n- Admin-only JSON backup export from the users screen\n- Backup exports preserve password hashes, documentation pages, device images, MACs, and parent-linked devices for restore, but redact stored alert-delivery secrets before download\n- Device health-check configuration, alert destinations, repeat-alert controls, and on-demand monitor runs\n- Multiple monitor targets per device so servers, firewalls, and multi-NIC systems can track separate management, service, storage, or VIP endpoints\n- SMTP\u002Femail alert delivery beside Discord and Telegram, plus recent alert activity in the admin area\n- Reports workspace with printable\u002FPDF-friendly inventory summaries plus Excel-compatible and CSV exports\n- Visualizer workspace for rack, room-tech, port, and cable relationship mapping, with Health mode, Trace mode, loose-device layout toggles, and room-only rack-zone toggles\n- Markdown Documentation workspace for runbooks and notes, including inline image insertion\n- Device image attachments with labels and notes on device detail pages\n- Hyper-V import wizard for staging hosts, VMs, power state, guest OS, virtual switches, virtual NICs, VLANs, IPs, CPU, memory, and disk data from a local PowerShell export, with editable host mapping before import\n- Proxmox import wizard for staging nodes, Linux bridges, QEMU VMs, LXC containers, MACs, VLAN tags\u002Ftrunks, guest IPs, CPU, RAM, disks, boot flags, and Proxmox metadata from a local node export\n- Expanded demo data with multiple labs, MAC addresses, discovery states, custom templates\u002Fdevice types, multi-target monitors, room tech, documentation pages, device image examples, compute, and WiFi examples\n- Production build of the frontend and backend\n- Docker packaging for the frontend + API together\n\n## Feature guides\n\nUse these when you want the workflow steps rather than just the overview:\n\n- [Hyper-V import](.\u002Fdocs\u002FHYPERV_IMPORT.md): download the collector, collect inventory on a Hyper-V host, map or create the host record, review VMs, and import selected categories.\n- [Proxmox import](.\u002Fdocs\u002FPROXMOX_IMPORT.md): download the collector, collect inventory on a Proxmox node, map or create the node record, review QEMU VMs and LXC containers, and import selected categories.\n- [Reports](.\u002Fdocs\u002FREPORTS.md): generate a clean inventory report, print\u002Fsave to PDF, and export CSV or Excel-compatible files.\n- [Visualizer](.\u002Fdocs\u002FVISUALIZER.md): inspect rack, loose-room, port, and cable relationships from existing Rackpad data.\n- [OIDC login](.\u002Fdocs\u002FOIDC.md): configure Authentik or another IdP, map roles, and debug issuer\u002Fdiscovery URL problems.\n- [Documentation and images](.\u002Fdocs\u002FDOCUMENTATION.md): create Markdown runbooks, insert pictures, attach device reference images, and include them in backups.\n\n## Versioning\n\nRackpad uses semantic versioning and Git tags in the form `vX.Y.Z`.\n\n- The app version lives in [package.json](.\u002Fpackage.json).\n- Release notes live in [CHANGELOG.md](.\u002FCHANGELOG.md).\n- The `v1.0` rollout checklist lives in [V1_CHECKLIST.md](.\u002FV1_CHECKLIST.md).\n- Install and deploy examples should pin a version instead of assuming `main`.\n\nEvery shipped change should update the version and add a matching changelog entry describing what changed.\n\n## Release channels\n\nRackpad now uses two long-lived Git branches:\n\n- `main`: stable release branch intended for production and tagged releases\n- `beta`: pre-release testing branch for changes that should be validated before they land on `main`\n\nRecommended workflow:\n\n- test new work from `beta`\n- merge validated fixes and features into `main`\n- create version tags like `v1.3.0` from `main`\n\nIf you want the newest testing build instead of the latest stable tag:\n\n```bash\ngit checkout beta\ngit pull origin beta\n```\n\n## Legal and support files\n\nThe repository now also includes:\n\n- the project [LICENSE](.\u002FLICENSE)\n- copyright and project notices in [NOTICE.md](.\u002FNOTICE.md)\n- a basic disclosure policy in [SECURITY.md](.\u002FSECURITY.md)\n- maintainer\u002Fsupport expectations in [SUPPORT.md](.\u002FSUPPORT.md)\n\n## Requirements\n\n- Docker Engine with the Compose plugin for normal installs\n- Node 22 LTS and npm for development or native installs\n\nThe repo includes `.nvmrc`, so if you use `nvm`:\n\n```bash\nnvm use\n```\n\n## Development\n\nInstall dependencies:\n\n```bash\nnpm install\n```\n\nRun the full dev stack:\n\n```bash\nnpm run dev:all\n```\n\nThis starts:\n\n- frontend on `http:\u002F\u002Flocalhost:5173`\n- API on `http:\u002F\u002Flocalhost:3000`\n\nThe Vite dev server proxies `\u002Fapi` to the Fastify backend.\n\n## Production build\n\nBuild both the frontend and backend:\n\n```bash\nnpm run build\n```\n\nStart the compiled app:\n\n```bash\nnpm start\n```\n\nDefault environment variables:\n\n```bash\nHOST=0.0.0.0\nPORT=3000\nDATABASE_PATH=.\u002Frackpad.db\nMONITOR_INTERVAL_MS=300000\nNODE_ENV=production\nTRUST_PROXY=0\nTRUSTED_HOSTS=\nTRUSTED_ORIGINS=\nAPP_URL=\nOIDC_ENABLED=0\nOIDC_ISSUER_URL=\nOIDC_CLIENT_ID=\nOIDC_CLIENT_SECRET=\nOIDC_REDIRECT_URI=\nOIDC_LABEL=OIDC\nOIDC_DEFAULT_ROLE=viewer\nOIDC_DEBUG=0\nOIDC_ADMIN_USERS=\nOIDC_EDITOR_USERS=\nOIDC_VIEWER_USERS=\nOIDC_ADMIN_GROUPS=\nOIDC_EDITOR_GROUPS=\nOIDC_VIEWER_GROUPS=\nOUI_AUTO_UPDATE=1\nDISCOVERY_MAC_SCAN_MODE=auto\n```\n\nOIDC uses the authorization-code flow with PKCE. Configure the provider\nredirect URI as `APP_URL\u002Fapi\u002Fauth\u002Foidc\u002Fcallback`, or set `OIDC_REDIRECT_URI`\nexplicitly when Rackpad is behind a proxy with a non-standard public URL.\n`OIDC_ISSUER_URL` must be the provider issuer, not the authorize URL or client\nsettings page. Rackpad fetches\n`OIDC_ISSUER_URL\u002F.well-known\u002Fopenid-configuration`; if login returns a 502 with\nHTTP 404, test that exact discovery URL in a browser or with `curl`. For\nproviders with per-application issuers, such as authentik, this usually means\nusing the application\u002Fprovider issuer path rather than the IdP root domain.\nSet `OIDC_DEBUG=1` temporarily to log the discovery URL, redirect URI, token\nendpoint status, and JWKS URL used during sign-in.\n\nExample Authentik configuration:\n\n```bash\nOIDC_ENABLED=1\nOIDC_ISSUER_URL=https:\u002F\u002Fauthentik.example.com\u002Fapplication\u002Fo\u002Frackpad\nOIDC_CLIENT_ID=\u003Cclient-id>\nOIDC_CLIENT_SECRET=\u003Cclient-secret>\nOIDC_REDIRECT_URI=https:\u002F\u002Frackpad.example.com\u002Fapi\u002Fauth\u002Foidc\u002Fcallback\nOIDC_LABEL=Authentik\nOIDC_DEFAULT_ROLE=viewer\nOIDC_ADMIN_GROUPS=admin\n```\n\nIn Authentik, set the redirect URI to\n`https:\u002F\u002Frackpad.example.com\u002Fapi\u002Fauth\u002Foidc\u002Fcallback` and assign a signing key to\nthe provider\u002Fapplication. For a single-admin private deployment you can set\n`OIDC_DEFAULT_ROLE=admin`; for shared installs, keep the default role at\n`viewer` and map admin\u002Feditor groups explicitly.\n\nDiscovery MAC\u002Fvendor enrichment needs layer-2 visibility from the Rackpad\nruntime. `DISCOVERY_MAC_SCAN_MODE=auto` tries `arp-scan` and `nmap` when the\nruntime can use them, then falls back to the OS neighbor\u002FARP cache. In Docker,\nMACs may remain unavailable on bridge networking, Docker Desktop, routed VLANs,\nVPNs, or containers without raw-socket capability; Rackpad will show scan\ndiagnostics when that happens.\n\n## First run\n\nOn the first boot there are no users yet.\n\n1. Open Rackpad in the browser.\n2. Create the initial admin account.\n3. Sign in.\n4. Choose whether to start empty or preload the expanded demo environment.\n5. Start documenting racks, devices, VLANs, and IPAM.\n\n## Install With Docker\n\nRecommended no-clone install from the published GHCR image:\n\n```bash\nsudo apt-get update\nsudo apt-get install -y curl ca-certificates\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FKobii-git\u002FRackpad\u002Fmain\u002Fscripts\u002Finstall-docker.sh | bash\n```\n\nUse `RACKPAD_TAG=latest` if you want the newest stable GHCR image,\n`RACKPAD_TAG=1.3.0` if you want this exact release, or `RACKPAD_TAG=beta` if\nyou want the newest beta image:\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FKobii-git\u002FRackpad\u002Fmain\u002Fscripts\u002Finstall-docker.sh -o \u002Ftmp\u002Finstall-rackpad.sh\nRACKPAD_TAG=1.3.0 bash \u002Ftmp\u002Finstall-rackpad.sh\n```\n\nOpen:\n\n```text\nhttp:\u002F\u002FSERVER_IP:3000\n```\n\nManual no-clone compose install:\n\n```bash\nsudo mkdir -p \u002Fopt\u002Frackpad\ncd \u002Fopt\u002Frackpad\nsudo curl -fsSLo compose.yml https:\u002F\u002Fraw.githubusercontent.com\u002FKobii-git\u002FRackpad\u002Fmain\u002Fdocker-compose.release.yml\nsudo tee .env >\u002Fdev\u002Fnull \u003C\u003C'EOF'\nRACKPAD_IMAGE=ghcr.io\u002Fkobii-git\u002Frackpad\nRACKPAD_TAG=1.3.0\nRACKPAD_PORT=3000\nMONITOR_INTERVAL_MS=300000\nTRUST_PROXY=0\nTRUSTED_HOSTS=\nTRUSTED_ORIGINS=\nEOF\nsudo docker compose pull\nsudo docker compose up -d\n```\n\nBuild locally from a cloned repo only if you want to build from source:\n\n```bash\ndocker compose up --build -d\n```\n\nThe compose stack:\n\n- exposes Rackpad on `${RACKPAD_PORT:-3000}`\n- stores SQLite data in the named volume `rackpad_data`\n- serves the compiled frontend and API from the same container\n- runs with a read-only root filesystem except for `\u002Fdata` and `\u002Ftmp`\n- uses `\u002Fapi\u002Fhealth` for the container health check\n\nTo stop it:\n\n```bash\ndocker compose down\n```\n\nTo stop it and remove the database volume:\n\n```bash\ndocker compose down -v\n```\n\nFull Linux, Proxmox, and Windows install details, plus update steps, backups,\ngit-clone\u002Fsource-build options, and reverse-proxy settings live in\n[INSTALL.md](.\u002FINSTALL.md).\n\n## Linux test deploy\n\nFor a simple non-Docker Linux test deploy:\n\n```bash\nnpm install\nnpm run build\nPORT=3000 HOST=0.0.0.0 DATABASE_PATH=.\u002Frackpad.db npm start\n```\n\nIf `better-sqlite3` needs to compile during `npm install`, install build tools first:\n\n```bash\nsudo apt-get update\nsudo apt-get install -y python3 make g++\n```\n\n## Reverse proxy \u002F TLS\n\nFor any public-facing or VPN-exposed deployment, put Rackpad behind a TLS reverse proxy and set the trusted proxy\u002Forigin environment values.\n\nRecommended environment shape:\n\n```bash\nTRUST_PROXY=1\nTRUSTED_HOSTS=rackpad.example.com\nTRUSTED_ORIGINS=https:\u002F\u002Frackpad.example.com\n```\n\nExample proxy files are included in:\n\n- [deploy\u002FCaddyfile.example](.\u002Fdeploy\u002FCaddyfile.example)\n- [deploy\u002Fnginx-rackpad.conf](.\u002Fdeploy\u002Fnginx-rackpad.conf)\n\nThe app already sets:\n\n- `Content-Security-Policy`\n- `Strict-Transport-Security` when the request arrives over HTTPS\n- `X-Frame-Options`\n- `X-Content-Type-Options`\n- `Referrer-Policy`\n\nSo the main deployment job is to terminate TLS, forward the correct `X-Forwarded-*` headers, and keep Rackpad reachable only through the hostname you trust.\n\n## Windows note\n\nOn this Windows machine, the app builds and lints cleanly, but the local runtime is still blocked under Node 24 because `better-sqlite3` does not have a matching native binding installed.\n\nThe intended local fix is:\n\n- switch to Node 22\n- rerun `npm install`\n\nLinux and Docker remain the preferred validation paths.\n\n## Quality checks\n\nThese are wired into the repo now:\n\n```bash\nnpm run build\nnpm run lint\nnpm run test:server\n```\n\n`npm run test:server` is expected to work on Linux\u002FNode 22 or any environment where `better-sqlite3` can load successfully.\n\n## Project layout\n\n```text\nrackpad\u002F\n|- docs\u002Fscreenshots\u002F       GitHub-friendly app screenshots\n|- server\u002F                 Fastify API, SQLite schema, seed data, routes, tests\n|- src\u002F\n|  |- components\u002F          UI and feature components\n|  |- lib\u002F                 typed API client, store, types, helpers\n|  |- pages\u002F               route-level screens\n|- dist\u002F                   built frontend\n|- dist-server\u002F            built backend\n|- Dockerfile              production container build\n|- docker-compose.yml      local container orchestration\n```\n\nFull step-by-step setup instructions are in [INSTALL.md](.\u002FINSTALL.md).\nVersion-by-version release notes are in [CHANGELOG.md](.\u002FCHANGELOG.md).\n\n## Support the project\n\nRackpad is free to use. If it helps you and you want to support the work,\nthere is an optional Ko-fi link here on GitHub: [ko-fi.com\u002Fk0bii](https:\u002F\u002Fko-fi.com\u002Fk0bii).\n","Rackpad 是一个自托管的基础架构库存和运维应用，适用于家庭实验室和个人实验室的设备、端口、线缆、VLAN、IP地址管理、WiFi、计算资源、发现、监控以及用户管理。其核心功能包括通过React + Vite构建的前端界面、Fastify API后端服务、使用`better-sqlite3`实现的SQLite持久化存储、基于会话的角色认证（管理员\u002F编辑者\u002F查看者），以及针对单个设备的健康检查支持多种协议（ICMP, TCP, HTTP, HTTPS）。此外，Rackpad还提供了详细的报告生成与网络拓扑可视化功能，并且可以通过Docker轻松部署于测试环境中。此项目非常适合需要对小型至中型规模的IT基础设施进行有效管理和监控的场景，如个人数据中心或企业内部的小范围实验环境。",2,"2026-06-11 04:04:27","CREATED_QUERY"]