{"id":40374856,"url":"https://github.com/bfritz/homelab-bootstrap","last_synced_at":"2026-01-20T11:34:28.390Z","repository":{"id":41936111,"uuid":"406064970","full_name":"bfritz/homelab-bootstrap","owner":"bfritz","description":"Scripts to generate Alpine Linux images for home network.","archived":false,"fork":false,"pushed_at":"2025-06-01T15:16:36.000Z","size":150,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T03:46:48.995Z","etag":null,"topics":["alpine-linux","homelab","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/bfritz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-13T17:19:49.000Z","updated_at":"2025-07-22T04:02:01.000Z","dependencies_parsed_at":"2025-02-23T15:27:30.750Z","dependency_job_id":"7ed002c7-931d-4c31-93f6-4b7299b27c41","html_url":"https://github.com/bfritz/homelab-bootstrap","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/bfritz/homelab-bootstrap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bfritz%2Fhomelab-bootstrap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bfritz%2Fhomelab-bootstrap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bfritz%2Fhomelab-bootstrap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bfritz%2Fhomelab-bootstrap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bfritz","download_url":"https://codeload.github.com/bfritz/homelab-bootstrap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bfritz%2Fhomelab-bootstrap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28602481,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T10:46:13.255Z","status":"ssl_error","status_checked_at":"2026-01-20T10:42:51.865Z","response_time":117,"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":["alpine-linux","homelab","raspberry-pi"],"created_at":"2026-01-20T11:34:28.119Z","updated_at":"2026-01-20T11:34:28.381Z","avatar_url":"https://github.com/bfritz.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bfritz homelab bootstrap scripts\n\n\u003c!-- badges --\u003e\n[![continuous integration status](https://github.com/bfritz/homelab-bootstrap/actions/workflows/ci.yaml/badge.svg)](https://github.com/bfritz/homelab-bootstrap/actions/workflows/ci.yaml)\n[![Bors enabled](https://bors.tech/images/badge_small.svg)](https://app.bors.tech/repositories/38911)\n\nBuild scripts that use [qemu] and [alpine-chroot-install] to create custom\nAlpine images that run from RAM.  Images include:\n\n* k0s-worker - `x86_64` image to run as [k0s] worker node\n* rpi-basic - `armhf` and `armv7` images for basic Raspberry Pi 0, 2, 3, or 4 host\n* rpi-firewall - `armv7` image to run [awall], [dnsmasq], and [wireguard] on Raspberry Pi 4 as home router\n* rpi-k0s-controller - `armv7` image to run as [k0s] controller node\n* rpi-ruuvi - `armhf` image to listen for [Ruuvi Tag] data on a Raspberry Pi Zero W\n* rpi-snapcast-client - `armhf` image to run [snapcast] on a Raspberry Pi Zero W\n\nThese [Alpine Linux] images run on my home network and are rather opinionated.\nNo image tarballs are published because it is unlikely they would be generally\nuseful.  However, the scripts that generate them might be interesting to others\nand are the main reason for publishing.\n\n\n## Image Details\n\n### All Images\n\nAll images run [chrony] for NTP time sync, sshd, and the Prometheus [node-exporter]\nto expose host metrics.\n\n### k0s-worker\n\nImage for x86_64 machines that will be provisioned to run the [k0s] distribution\nof Kubernetes.  Intended as the foundation for kubernetes worker nodes that will\nbe provisioned with [k0sctl].\n\n### rpi-basic\n\nImage for Raspberry Pi Zero, 2, 3, or 4 to act as a basic host.\nMostly used for adhoc testing.\n\nPulls dhcp lease on wired interface and runs openssh server. `root`\nuser does not have password and the only way to login with ssh is\nwith key-based authenticateion.  Set `HL_SSH_KEY_URL` to the URL of\na [ssh authorized_keys file] to pre-authorize one or more keys.\n\nRuns consoles on `tty1` and `ttyACM0`, the Pi's\n[built-in serial port].  Boot messages are logged to serial console.\n\n### rpi-firewall\n\nFirewall image intended for Raspberry Pi 4.  The iptables firewall rules, stored\nin a separate repo, are defined using [awall].   [VLANs] are used so the Pi, with\na single ethernet interface, can support multiple network zones.  Includes\n[wireguard] to create VPN tunnels.  Also runs chrony in ntp server mode.\n\nRuns consoles on `tty1` and `ttyACM0`, the Pi's [built-in serial port].  Boot\nmessages are logged to serial console.\n\nReplaces a similar setup with [Seagate DockStar] running [ArchLinux ARM] and\n[Shorewall] that served as my home router for many years.\n\n### rpi-k0s-controller\n\n[k0s] controller node for Raspberry Pi 4.  Intended as foundation for\ncontrollers that will be provisioned with [k0sctl].\n\n### rpi-snapcast-client\n\nMinimal image with the [snapcast] client software installed.  Intended\nto run on Raspberry Pi Zero W connected to amplifer for streaming audio.\nSet `HL_SNAPCAST_SERVER` to the hostname of the snapcast server the\nclient should connect to at boot.\n\n\n## Prior Art and Inspiration\n\n* [alpine-composer](https://github.com/ggpwnkthx/alpine-composer) by [Isaac Jessup](https://github.com/ggpwnkthx)\n* [knoopx/alpine-raspberry-pi](https://github.com/knoopx/alpine-raspberry-pi) by [Víctor Martínez](https://github.com/knoopx)\n\n\n[alpine-chroot-install]: https://github.com/alpinelinux/alpine-chroot-install\n[alpine linux]: https://alpinelinux.org/\n[archlinux arm]: https://archlinuxarm.org/platforms/armv5/seagate-dockstar\n[argocd]: https://argoproj.github.io/argo-cd/\n[awall]: https://git.alpinelinux.org/awall/about/\n[built-in serial port]: https://pinout.xyz/pinout/uart\n[chrony]: https://chrony.tuxfamily.org/\n[dnsmasq]: https://thekelleys.org.uk/dnsmasq/doc.html\n[k0s]: https://k0sproject.io/\n[k0sctl]: https://github.com/k0sproject/k0sctl\n[node-exporter]: https://prometheus.io/docs/guides/node-exporter/\n[ruuvi tag]: https://ruuvi.com/ruuvitag/\n[seagate dockstar]: https://www.seagate.com/support/external-hard-drives/network-storage/dockstar/\n[shorewall]: https://shorewall.org/\n[snapcast]: https://github.com/badaix/snapcast#readme\n[ssh authorized_keys file]: https://man.openbsd.org/sshd_config#AuthorizedKeysFile\n[qemu]: https://qemu.org/\n[vlans]: https://en.wikipedia.org/wiki/Virtual_LAN\n[wireguard]: https://www.wireguard.com/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbfritz%2Fhomelab-bootstrap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbfritz%2Fhomelab-bootstrap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbfritz%2Fhomelab-bootstrap/lists"}