Skip to content

gliu20/homelab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Homelab Infrastructure as Code

A declarative Fedora CoreOS homelab configuration managed with Butane and Podman.

What’s Implemented Today

  • Base FCOS provisioning with Butane:
    • central.bu.yml defines hostname, zram, Zincati update window, and merges per-service Ignition snippets.
  • Services (declarative, per-service directories):
  • Build flow:
    • just build transpiles each .bu.yml into build/.../.ign using the Butane container.
    • central.bu.yml references those generated .ign via ignition.config.merge.
  • Utilities:
    • justfile with tasks to build, format, serve artifacts, and test in QEMU.

Architecture Overview

graph TD
    FCOS[Fedora CoreOS] --> Butane
    Butane --> Ignition
    Ignition -->|Provision| Podman_Containers
    Podman_Containers -->|Systemd Units| CoreOS
    Cockpit -->|Management| CoreOS
    Tailscale -->|Secure Networking| All_Services
Loading

Post-install

  • rpm-ostree install --apply-live -y python
  • sudo podman exec -it tailscale sh --> tailscale up --> configure to add to tailscale

Core Components

  • Fedora CoreOS (Immutable OS with automated updates)
  • Butane configurations for declarative provisioning
  • Podman containers with systemd integration
  • Cockpit web console for management
  • Tailscale mesh VPN for secure access

Networking & Security

  • Tailscale mesh VPN for secure service exposure
  • Vaultwarden (Bitwarden-compatible password manager)
  • SOPS + Age for secrets management

Service Catalog

Note: The services listed below are candidates for inclusion and are not all implemented yet.

Knowledge Management

Web & Bookmarks

  • Ideally would be able to archive pages for offline reading, keep list of links, maintain metadata about a link, screenshot/preview, shorten links
  • Shiori - Bookmarks
  • Grimoire - Bookmarks
  • Servas - Bookmarks

Security

Micro-apps

DX

Productivity

Getting Started

Prerequisites

  • Fedora CoreOS target (bare metal, VM, or cloud)
  • Podman and just on your workstation
  • Tailscale account/network if enabling Tailscale

Build

  • Transpile all Butane configs to Ignition:
    • just build
  • The outputs are written as:
    • build/services//.ign (per service)
    • build/central.ign (when you run the explicit step below)

To explicitly generate the final Ignition for the host:

  • just build-central

Alternatively, directly:

  • just transpile_ign central.bu.yml build/central.ign

Deploy

  • Using coreos-installer (e.g., to a disk /dev/sdX):

    • just coreos_installer 'install --ignition-file build/central.ign /dev/sdX'
  • Quick QEMU smoke test:

    • just download_fcos
    • just deploy_fcos_qemu

Management

  • Validate all Butane configs strictly:

    • just validate-configs
  • List services discovered in services/* and referenced by central.bu.yml:

    • just list-services
  • Format YAML and justfile:

    • just format
  • Serve build artifacts locally (http://localhost:8000):

    • just serve
  • Clean all build artifacts:

    • just clean

Operations

  • Immutable Infrastructure: Fedora CoreOS + declarative Butane configs
  • GitOps: All changes via this repository; rebuild Ignition and reprovision as needed
  • Backups: TODO — choose and document (e.g., restic or borg)
  • Monitoring: TODO — basic node metrics and service health
  • Secrets: TODO — integrate SOPS + age and document the build-time decryption step

Current Gaps / TODO

  • Define secrets workflow (keys, encryption, decryption in build)
  • Document ports, volumes, and environment for each service
  • Add CI to validate Butane and optionally boot a VM for smoke testing
  • Add backup plan and simple monitoring/alerts

References

About

Declarative Fedora CoreOS homelab setup

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages