Current Status: Production Ready ✅
- ✅ All 22 production-grade Quadlets created
- ✅ Go installer implementation complete (5.9 MB binary)
- ✅ Interactive TUI with cleanup & Pi-hole integration
- ✅ Rootful/rootless deployment support
- ✅ Template-First approach implemented
- ✅ Tested on Podman Machine
Remaining: Pi-hole testing on real hardware
- Converted all podman-compose files to Quadlets
- Created 22 quadlet files with production best practices
- Added health checks, auto-updates, resource limits
- See
quadlets/directory
- Go implementation: Working, 700 LoC
- Rust implementation: Requires Rust 1.56+
- Both project structures complete
- Template-First approach implemented in Go
- Interactive TUI with configuration wizard
- Pre-deployment cleanup system
- Pi-hole rootful deployment support
- Password manager integration
- System configuration automation
Successfully tested services:
- ✅ Caddy (reverse proxy)
- ✅ Home Assistant (with DHCP disabled for VM)
- ✅ MQTT
- ✅ ESPHome
- ✅ Whisper, Piper, OpenWakeWord
- ✅ Node-RED (pre-configured with HA integration)
Known VM Limitations:
- Home Assistant DHCP discovery disabled (needs elevated privileges)
- Health checks simplified (curl not always available)
- Pi-hole requires real hardware (host networking needed)
implementations/
├── go-installer/ # Main implementation (production-ready)
│ ├── cmd/
│ │ ├── ham-installer-interactive/ # Full TUI installer
│ │ └── ham-deploy-test/ # Testing/deployment tool
│ ├── internal/
│ │ ├── approaches/ # Template-First, Dynamic, Hybrid
│ │ ├── cleanup/ # Pre-deployment cleanup
│ │ ├── config/ # Configuration handling
│ │ ├── installer/ # Deployment logic
│ │ ├── secrets/ # Password manager integration
│ │ ├── system/ # System configuration (Pi-hole)
│ │ ├── template/ # Template rendering
│ │ └── tui/ # Interactive prompts
│ └── templates/ # Go templates for quadlets
└── rust-installer/ # Rust implementation (requires 1.56+)
- Rootless (default): Caddy, Home Assistant, all optional services
- Rootful (sudo): Pi-hole only (requires host networking & DNS)
- TUI builds
config.toml - Template renderer generates quadlets from config
- Deployer handles rootful/rootless separately
- systemd manages service lifecycle
- Uses Go's
text/templatewith Sprig functions - Templates embedded in binary via
embed - Supports both
.containerand.networkquadlets - Config files (Caddyfile, settings.js, etc.) included
Problem: Container restarting every 15 seconds Causes:
- DHCP discovery requiring elevated privileges
- Health check using unavailable
curlcommand - Auto-restart on health check failure
Solutions:
- Disabled DHCP in configuration.yaml
- Simplified health check to use
wget - Removed health check entirely for VM testing
- Increased RestartSec to 30 seconds
Result: Stable operation, no crashes
Feature: Pre-configured integration Implementation:
- Auto-installs
node-red-contrib-home-assistant-websocket - Pre-configured settings.js with HA server URL
- Welcome flow with setup instructions
- User only needs to add access token
cd implementations/go-installer
# Full interactive installer
go build -o ham-installer ./cmd/ham-installer-interactive
# Testing/deployment tool
go build -o ham-deploy-test ./cmd/ham-deploy-test./ham-installer
# Follow TUI prompts# Create test machine
podman machine init testing
podman machine start testing
# Deploy
./ham-installer
# Choose option 2: Deploy to Podman Machine
# Access services via port forwarding
podman machine ssh testing -L 8123:localhost:8123 -L 9080:localhost:8080Pi-hole and full feature testing requires:
- Physical machine or proper VM with host networking
- Fedora Silverblue (recommended) or similar
- Sudo access for rootful services
README.md- Project overview & quick linksMASTER_PLAN.md- Comprehensive plan & architectureQUICK_START.md- User quick start guideINSTALL_SILVERBLUE.md- Detailed installation guideTECHNICAL_REFERENCE.md- Implementation detailsQUADLET_BEST_PRACTICES.md- Quadlet reference
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Test thoroughly: Especially on Podman Machine
- Update documentation: Keep docs in sync with code
- Submit a pull request
- Follow standard Go conventions
- Use
gofmtfor formatting - Add godoc comments for exported functions
- Use logrus for logging
- Use descriptive variable names
- Comment complex logic
- Test with various configurations
- Handle missing values gracefully
- Pi-hole testing on real hardware
- Complete TUI integration for all services
- Add Traefik support (alongside Caddy)
- WireGuard VPN implementation
- Bitwarden/Vaultwarden integration
- Backup automation
- Service health monitoring
- Auto-rollback on failure
- Extended service catalog (120+ services)
- Service bundles/presets
- Cost calculator
- Migration from Docker Compose
- Check
MASTER_PLAN.mdfor architecture - See
TECHNICAL_REFERENCE.mdfor implementation details - Review closed issues for similar problems
- Open a new issue with your question
See LICENSE file for details.