{"id":42064980,"url":"https://github.com/kellerlabs/homeracker","last_synced_at":"2026-04-18T15:08:40.965Z","repository":{"id":284819614,"uuid":"956160853","full_name":"kellerlabs/homeracker","owner":"kellerlabs","description":"A fully modular 3D-printable rack-building system","archived":false,"fork":false,"pushed_at":"2026-01-25T00:49:29.000Z","size":24548,"stargazers_count":333,"open_issues_count":19,"forks_count":25,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-01-25T06:44:07.639Z","etag":null,"topics":["10inch","19inch","3d-printing","fusion360","homelab","openscad","openstandards","rack","rackbuilding","rackmount","raspberry-pi","specification"],"latest_commit_sha":null,"homepage":"https://homeracker.org/","language":"OpenSCAD","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kellerlabs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"kellervater","patreon":null,"open_collective":null,"ko_fi":"kellervater","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2025-03-27T19:49:57.000Z","updated_at":"2026-01-25T00:49:15.000Z","dependencies_parsed_at":"2025-03-27T21:27:12.254Z","dependency_job_id":"9d8a2c66-7a26-440c-997c-761c8c6bf2b3","html_url":"https://github.com/kellerlabs/homeracker","commit_stats":null,"previous_names":["kellervater/home-racker","kellervater/homeracker","kellerlabs/homeracker"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/kellerlabs/homeracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellerlabs%2Fhomeracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellerlabs%2Fhomeracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellerlabs%2Fhomeracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellerlabs%2Fhomeracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kellerlabs","download_url":"https://codeload.github.com/kellerlabs/homeracker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellerlabs%2Fhomeracker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28770197,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T07:45:00.504Z","status":"ssl_error","status_checked_at":"2026-01-26T07:45:00.070Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["10inch","19inch","3d-printing","fusion360","homelab","openscad","openstandards","rack","rackbuilding","rackmount","raspberry-pi","specification"],"created_at":"2026-01-26T08:09:40.188Z","updated_at":"2026-04-06T09:07:56.239Z","avatar_url":"https://github.com/kellerlabs.png","language":"OpenSCAD","funding_links":["https://github.com/sponsors/kellervater","https://ko-fi.com/kellervater"],"categories":[],"sub_categories":[],"readme":"[📚 What's it for?](#-use-cases) | [⚙️ How does it work?](#-features) | [🌐 Free \u0026 OpenSource](#-open-specs) | [🤝 Contributing](CONTRIBUTING.md)\n\n[![What is HomeRacker - YouTube video](./img/homeracker_watch_on_youtube.png)](https://youtu.be/g8k6X_axYug)\n\nHomeRacker is a fully modular 3D-printable rack-building system for virtually any “racking needs” (server rack, shoe rack, bookshelf, you name it).\n\nYou can find all parametric and non-parametric models, as well as the `.f3d` files (like the `HomeRacker - Core`), on [Makerworld](https://makerworld.com/en/@kellerlab).\n\nThe parametric models are available in the [HomeRacker GitHub Repository](https://github.com/kellerlabs/homeracker/tree/main/models).\n\n\u003e 💡 **Note**\n\u003e The basic HomeRacker system is also referred to as `HomeRacker - Core`. Free for everyone to use, remix, and reshare.\n\n# 📑 Table of Contents\n- [🔧 Use Cases](#-use-cases)\n- [✨ Features](#-features)\n  - [⚙️ How it works](#%EF%B8%8F-how-it-works)\n    - [🛠️ Assembly Basics](#%EF%B8%8F-assembly-basics)\n    - [💡 Assembly Tips](#-assembly-tips)\n    - [🖨️ Printing Tips](#%EF%B8%8F-printing-tips)\n- [📐 Tech Specs](#-tech-specs)\n  - [🧱 Supports](#-supports)\n  - [🔗 Connectors](#-connectors)\n  - [📏 Lock Pins](#-lock-pins)\n  - [🌍 Open Specs](#-open-specs)\n- [💬 Community](#-community)\n- [❓ Why the name?](#-why-the-name)\n- [📜 Licensing](#-licensing)\n- [🤝 Contributing](CONTRIBUTING.md)\n- [🛠️ Developer Tools](#%EF%B8%8F-developer-tools)\n- [🚀 Releases](#-releases)\n- [🧪 Tests](#-tests)\n  - [⚠️ Disclaimer](#%EF%B8%8F-disclaimer)\n  - [🔬 How I tested](#-how-i-tested)\n- [🏷️ Logo](#%EF%B8%8F-logo)\n\n# 🔧 Use Cases\nI created HomeRacker because I was dissatisfied with the existing solutions available online.\nMany designs were too specific—accommodating only certain devices owned by their creators. Others supported only the 10\" standard, with no flexibility for deviations, often requiring additional adapters.\n\nAs I began my homelab journey in April 2025, I wanted a modular solution that could adapt and grow with my evolving needs. This would eliminate the need to purchase larger racks or completely change concepts when the original design no longer met my requirements.\n\n![xkcd: The General Problem](https://imgs.xkcd.com/comics/the_general_problem.png)\n\nAs it is my nature to overengineer everything, I came up with a more generic solution to serve ANY racking need. Be it a small rack for a few Raspberry Pis, a 10\" standard rack for homelabs, or even a 19\" standard rack (still working on that though). You can even create bookshelves, shoe racks—or combine all of the above into an abomination of a rack.\n\nTo give you an idea of how this may look (10\" rack, half-constructed Pi mini-rack, bookshelf):\n\n![Real Life Example](./img/real_life_example.jpg)\n\nAside from the basic [building blocks](#-tech-specs), the rack above also contains the following parts:\n\n* **10\" Rack**\n  * [HomeRacker - 10\" Rackmount Kit](https://makerworld.com/en/models/1353730-modular-10-server-rack#profileId-1396904) for standard-height units\n  * [Raspi 5 Mount Kit](https://makerworld.com/en/models/1324096-pi-5-snapcase-for-homeracker#profileId-1360937):\n    * Vertical Mount Adapter for HomeRacker\n    * Front panel for 10\" racks\n  * Rackmount ears for the switch. These are fully customizable rackmount ears I created as an [OpenSCAD file](https://github.com/kellerlabs/homeracker/blob/main/models/rackmount_ears/parts/rackmount_ears.scad). You can customize it directly [here](https://makerworld.com/en/models/1259227-fully-customizable-rackmount-ears#profileId-1283271).\n  * [HomeRacker Airflow Kit](https://makerworld.com/en/models/1353730-modular-10-server-rack#profileId-1396904) (currently part of the 10\" rack model), which consists of:\n    * Front/back panels\n    * Side panels\n    * Bottom/top panels with air intake/exhaust grids and bores for standard fans (80/92/120mm)\n\n* **Shelf** (Build any shelf configuration you like.)\n\n# ✨ Features\n\nThe `HomeRacker - Core` features:\n\n* **Fully modular** – Thanks to the support-connector system, you can scale in any direction. The only limits are material strength—and how much money, space, and time you have.\n* **3D-printable** – The entire core system is printable, and no tools are required for assembly.\n* **No supports needed** – Not a single part of the core system needs printed supports.\n* **OpenSource** – Build your own adapters and use the system in personal or commercial projects (see [🌍 Open Specs](#-open-specs) and [📜 Licensing](#-licensing) for details).\n\n## ⚙️ How it works\n\u003e **tl;dr** Think of a rack shape you want to build, download the [Core model on MakerWorld](https://makerworld.com/en/models/1317298-homeracker-core) (or customize it there or from [this repo](models/core/)), print it, assemble it, and add your own mounts/adapters/whatever-you-like.\n\nI might post a YouTube video here to show how it works.\n\n### 🛠️ Assembly Basics\n\n![Assembly Basics 4 White](./img/assembly_basics_4_white.png)\n\nAssembly is straightforward and requires no tools:\n\n1. **Prepare the components**: Download the [HomeRacker - Core](https://makerworld.com/en/models/1317298-homeracker-core) (or customize it on MakerWorld / from [this repo](models/core/)), and print all required parts. Clean off any debris.\n2. **Connect supports and connectors**: Attach connectors to supports based on your desired configuration.\n3. **Secure with Lock Pins**: Use Lock Pins to lock parts in place. They can be inserted horizontally or vertically thanks to their square profile.\n4. **Add features**: Attach panels, shelves, and other accessories as needed.\n\n### 💡 Assembly Tips\n\n\u003e 💡 **Pro Tip**: I created a sample [10\" Cyberpunk-themed 3D model on MakerWorld](https://makerworld.com/en/models/1353730-modular-10-server-rack#profileId-1396904) for inspiration.\n\n1. Plan ahead! Otherwise, you'll end up with an army of unused parts like me:\n\n   ![Army of Parts](./img/homeracker_army.jpg)\n\n   Make a parts list:\n   * How many supports of what lengths (in `base units`)?\n   * How many connectors of each type (pull-throughs, feet, regular)?\n   * Print a ton of Lock Pins. You'll need more than you might think. The [Core model](https://makerworld.com/en/models/1317298-homeracker-core) on MakerWorld includes a 100-pin plate and a [Gridfinity](https://gridfinity.xyz/) box for storage.\n\n2. Build layer by layer: Start with the base frame, add vertical supports, then stack intermediate/top frames.\n3. Make sure Lock Pins are fully inserted—gentle force might be needed.\n\n### 🖨️ Printing Tips\n\n1. If bed adhesion is sketchy: Add a brim to the supports. The small contact surface on connectors can cause print failures.\n2. Prevent warping: Keep the print bed clean and oil-free. Even a fingerprint can cause issues.\n3. When printing new filament: Make sure to calibrate the material flow!\n\u003e 💡 **Pro Tip**: If you need to disassemble and the pin is stuck, push it from the other side with another pin to release it.\n\n## 📐 Tech Specs\n\n\u003e 💡 **Note** - For actual dimensions, check out the original Fusion `.f3d` files on Makerworld. All designs are fully parameterized for easy scaling.\n\nThe system is based on 4 core measurements:\n\n1. **15mm** – The `base_unit`. Each support has 15mm x/y dimensions, with z being a multiple of 15mm.\n2. **4mm** – Side length of Lock Pins and matching holes.\n3. **2mm** – Wall thickness of connectors.\n4. **0.2mm** – Tolerance added to connector interiors for print/material variances.\n\n\u003e These values (except tolerance) are arbitrary—just made sense during design.\n\n### 🧱 Supports\n\nSupports are the structural spine of HomeRacker.\n\n![Core Support 3D Transparent](./img/core_support_3d_transparent.png)\n\nHeight is a multiple of 15mm (base units).\nE.g.: A 3-unit support = 45mm tall, a 17-unit = 255mm.\n\nEach unit height includes a 4mm hole for a Lock Pin.\n\n* Holes match Lock Pin dimensions (no tolerance).\n* Holes are convex on x and z axes for multi-directional insertion.\n\nSchematics:\n\n**Front View**\n![Support Front View](./img/core_support_front_profile.png)\n\n**Side View**\n![Support Side View](./img/core_support_side_profile.png)\n\n**Top View**\n![Support Top View](./img/core_support_top_profile.png)\n\n### 🔗 Connectors\n\nConnectors join supports in 1 to 3 dimensions.\nFrom straight extenders to 6-way junctions.\n\n![3D Shot of All Connectors](./img/3d_shot_all_connectors.png)\n\nTypes:\n* **Standard** – Solid center; best for load-bearing.\n* **Pull-Through** – Open center for complex builds (e.g. 10\" rack).\n* **Feet** – Solid end pieces; used as rack feet.\n\n\u003e ❗ **Important**\n\u003e Connector centers are always 1 `base_unit` in height. No offsets, no fluff.\n\u003e So: 2 × 3-unit supports + 1 connector = exactly 7 base units (105mm).\n\nSchematics:\n\n**Top View – Outer**\n![Connector Outer Measurements](./img/core_connector_outer_measurement.png)\n\n**Top View – Inner**\n![Connector Inner Measurements](./img/core_connector_inner_measurement.png)\n\n### 📏 Lock Pins\n\nLock Pins hold the system together.\n\n![Lock Pin 3D](./img/core_lock_pin_3d.png)\n\nThey rely on tension from their convex shape to stay in place.\n\nSchematics:\n\n**Top View**\n![Lock Pin Top](./img/core_lock_pin_top.png)\n\n**Side View**\n\u003e Don't ask why the height is 3.791mm—it works. I left it as-is.\n\n![Lock Pin Side](./img/core_lock_pin_side.png)\n\n\u003e I may tweak the pin grip in future versions to make it easier to pull out again. But the base dimensions will remain the same for compatibility.\n\n\u003e 💡 **Tip**: Pulling out Lock Pins one at a time can be tedious. Check out the [Pinpusher](models/pinpusher/) — a tool designed to push Lock Pins back out quickly, especially when removing several at once.\n\n## 🌍 Open Specs\n\nI created `HomeRacker - Core` to be an open spec that any maker can build on, with (almost) no strings attached.\n(See [📜 Licensing](#-licensing) for more.)\n\nI encourage you to make your own models based on HomeRacker!\nLet me know, and I’ll feature your work on this page and cross-link it on Makerworld (subject to my \"very objective\" approval 😄).\nJust [create an issue](https://github.com/kellerlabs/homeracker/issues/new) if you want to be featured.\n\n\u003e 💡 **Want to contribute new features or extensions?**\n\u003e Head over to the [HomeRacker Community Repository](https://github.com/kellerlabs/homeracker-community)!\n\u003e This core repo focuses on the base system and accepts primarily bugfixes. New modules, adapters, and creative extensions live in the community repo.\n\n# 💬 Community\n\nGot questions? Want to share your builds? Join the HomeRacker community!\n\n- **🐙 [Community Repo](https://github.com/kellerlabs/homeracker-community)** – Contribute new features, extensions, and modules\n- **💬 [Discord](https://discord.gg/b6myzHRxc3)** – Chat with me and other builders, get help, share ideas\n- **🎥 [YouTube](https://www.youtube.com/@kellerlabs)** – Watch build guides, tutorials, and project updates\n- **🖨️ [Makerworld](https://makerworld.com/@kellerlab)** – Grab ready-to-print models and remixes\n\nWhether you're just starting out or have a wild idea for a custom rack, I'd love to hear from you. The HomeRacker community is all about sharing knowledge and helping each other build cool stuff!\n\n# ❓ Why the name?\n\nAfter ~4 hours of research, I found all my original ideas (UniRack, OpenRack, etc.) were taken.\n\nSo, \"HomeRacker\" was born—part practical, part tongue-in-cheek. It fits the homelab theme, but also hints at the \"home-wrecking\" time sink this can become.\n\n# 📜 Licensing\n\n\u003e 💡 **tl;dr**\n\u003e  – Use it for ANY purpose (even commercial), but credit me and share alike!\n\n* Source code: `MIT License` ([LICENSE](https://github.com/kellerlabs/homeracker/blob/main/LICENSE))\n* 3D models \u0026 creative assets (`/models/`): `CC BY-SA 4.0 License` ([/models/LICENSE](https://github.com/kellerlabs/homeracker/blob/main/models/LICENSE))\n\nThese licenses apply to all models in this repository (Core, Gridfinity, Rackmount Ears, Wall Mount, Pinpusher, etc.).\n\n\u003e ❗ **Important**\n\u003e Other models I publish may have more restrictive licenses. This will be stated clearly on Makerworld.\n\nHomeRacker is an unregistered trademark of Patrick Pötz, first used publicly on 12.04.2025.\n\n# 🛠️ Developer Tools\n\nHomeRacker includes custom tooling to streamline development:\n\n- **[scadm](cmd/scadm/README.md)** - OpenSCAD + library dependency manager\n  - Zero-dependency Python package for installing OpenSCAD (nightly/stable) and libraries\n  - Cross-platform: Windows, Linux, macOS (might work, dunno)\n  - Install: `pip install scadm` → `scadm`\n  - Manages dependencies from `scadm.json`\n\n- **[Setup OpenSCAD Action](.github/actions/setup-openscad/README.md)** - Reusable GitHub Action for CI\n  - Installs OpenSCAD, system dependencies, and libraries in one step\n  - Uses scadm under the hood, with caching for fast runs\n  - Usage: `uses: kellerlabs/homeracker/.github/actions/setup-openscad@setup-openscad-v1`\n\n- **[Renovate Preset](renovate-dependencies.json)** - Automated dependency updates\n  - Tracks OpenSCAD versions, GitHub releases, and Python packages\n  - Custom rules for this project's specific needs\n  - Extend in your project: `\"extends\": [\"github\u003ekellerlabs/homeracker:renovate-dependencies\"]`\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for setup instructions.\n\n# 🚀 Releases\n\nReleases are fully automated:\n\n- **Automated versioning**: Follows [Semantic Versioning](https://semver.org/) based on [Conventional Commits](https://www.conventionalcommits.org/)\n- **Changelog generation**: Automatically generated from commit messages\n- **Release schedule**: Weekly auto-merge of release PRs (Mondays) or manual trigger\n- **GitHub releases**: Tagged releases with changelog and version information\n- **PR validation**: Pull request titles are validated to ensure Conventional Commits compliance\n\nThe release automation is powered by [Camunda's infra-global-github-actions](https://github.com/camunda/infra-global-github-actions/tree/main/teams/infra/pull-request).\n\nTo contribute and trigger releases, use conventional commit messages. See [CONTRIBUTING.md](CONTRIBUTING.md#-commit-conventions) for details.\n\n# 🧪 Tests\n\nOf course I tested stuff... It took ~4 months from idea to this release.\nLook at all the prototypes:\n![Photo showing a variety of HomeRacker prototypes lined up](./img/prototypes.jpg)\n\n## ⚠️ Disclaimer\n\n\u003e ⚠️ **Warning**\n\u003e This project is provided “as is,” without any warranty. Use at your own risk. I’m not responsible for damage, injury, or loss caused by using this system or its parts.\n\n\nAside from the scary warning above, I need to mention, that due to the high modularity of this system combined with limited time and resources I was of course not able to test every combination of filaments, printers, print-settings, room conditions (temperature, humidity) or to do extensive load-bearing tests.\n\nWhat I want to say:\nI feel like the model turned out to be really nice and versatile. That's why I shared it in the first place.\nBut since I do not have control over the manufacturing conditions of any consumer of this model, I cannot give any guarantees on how your specific print will turn out in the end. There are just too much variables which not even the best model design can compensate for. (Writing this feels a bit like an upfront apology... seems like I'm a people pleaser)\n\n## 🔬 How I tested\nMy setup is as follows:\n* a room temperature between 17 and 25°C\n* Humidity levels between 29% and 36% (depends on when I'm doing my laundry)\n* A BambuLab X1C printer\n* Exclusively BambuLab filament (haven't tried others yet)\n  * PLA Matte (I love the charcoal color. Looks so silky)\n  * PLA Basic\n  * ABS\n* mostly I used the Textured PEI plate. It just works (provided you regularly clean it using Isopropyl alcohol). For the rest of the time I tried out the Cold Plate Super Track (it's nice but very hard to get your prints off the plates when it cools)\n\nAll above's filament types can be be combined in any possible way (just make sure you do flow calibration before using new filaments. First ABS print turned out horribly just because I forgot to click the calibration checkbox).\nE.g.: you could print a connector in ABS, a support in PLA Matte and a Lock Pin in PLA and they will just fit when being assembled.\n\n\u003e 🛠️ **Btw:** I am not affiliated with Bambu in any way besides uploading my models to MakerWorld and occasionally making use of their Exclusive Model program. But they don't pay me for naming their products anywhere else (I wish 😉).\n\n# 🏷️ Logo\nThis logo will also be used as an overlay image for the thumbnails of all my 3D models that are compatible with HomeRacker.\nI encourage you to do the same if you create models for HomeRacker. That way, it’ll be immediately visible to users that a model is designed to be mounted on a HomeRacker system.\nI also svg'ed this logo [here](img/homeracker_logo.svg) and [here](img/homeracker_logo_single_color.svg).\n\n![HomeRacker Logo](./img/homeracker_logo.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkellerlabs%2Fhomeracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkellerlabs%2Fhomeracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkellerlabs%2Fhomeracker/lists"}