A bunch a docker-compose's that make up sections of my infrastructure. Using renovate bot to keep containers UTD
.forgejo/workflows | ||
.github | ||
ag-backup | ||
ag-main | ||
AI | ||
arm | ||
arrs | ||
authentik | ||
cf | ||
downloaders | ||
jellyfin | ||
kasm | ||
netboot | ||
nexus | ||
pages | ||
portainer | ||
scripts | ||
twingate | ||
whisper | ||
.gitignore | ||
README.md |
Auto-Homelab
Homelab docker-compose environment defined in code. Using Forgejo Actions and Renovate bot for CI, AWX Tower and Forgejo Actions for CD. This is how I keep my Homelab UTD
Wiki | How to Setup | Blog | Inspiration | Infrastructure
Apps in Repo:
Logo | Name | Description |
---|---|---|
AdGuard Home | Network Wide DNS adblock as well as my DNS server (2/2) | |
AdGuard Home Sync | Syncs my instances of Adguard | |
authentik | Open Source Identity Provider | |
Bazarr | Downloads subtitles for Radarr/Sonarr | |
Cloudflare Tunnels | How I expose some of these services | |
Codeberg Pages | Github Pages for Gitea installs. hosts https://mafyuh.co | |
Doplarr | Allows my users to request content through Discord if they choose | |
FlareSolverr | Proxy server to bypass Cloudflare and DDoS-GUARD protection | |
Forgejo | This site | |
Forgejo Runner | Runs CI/CD tasks Yamllint and Renovatebot and CD through AWX | |
Gotfiy | Self hosted notification service | |
Homarr | Homelab dashboard that integrates with the arr's so I see data in 1 place | |
Jellyfin | Open Source Streaming Service for home media like Plex | |
Jellyseerr | Request platform for my Jellyfin user's to request content | |
jfa-go | Used for some PPV/Live TV automations to create users for certain periods of time | |
Kasm | Docker container streaming platform for browser-based access to desktops, applications, and web services | |
Lidarr | Music Collection Manager | |
LinkStack | Creating a static links page for my Jellyfin users | |
MakeMKV | Used to rip Bluray's with my LG BU40N drive | |
mindsdb | Connects Ollama models to 100+ different databases, easy to use. | |
Netboot.xyz | Network boot instead of using my ventoy USB | |
Nginx Proxy Manager | Reverse Proxy used for its simplicity (1/3) | |
n8n | Self hosted automation platform, Zapier alternative, switched from ActivePieces | |
Ollama | Easiest way to run LLM's on your own hardware | |
open-webui | Creates a ChatGPT like web interface for talking to Ollama models | |
Portainer | Web-based management for Docker containers | |
Prowlarr | Searches indexers for Radarr/Sonarr | |
qBittorrent VPN | Modified qBittorrent with VPN killswitch enabled | |
Radarr | Movie Collection Manager | |
Sabnzbd | Usenet downloader to download content | |
Sonarr | Radarr, but for TV Shows | |
Sonatype Nexus | Self-hosted Docker registry to help lower Docker pulls | |
Syncthing | How I backup all config files, following 3-2-1 backup procedure | |
Twingate Connectors | Main VPN between homelab and cloud VPS's | |
Uptime Kuma | Self hosted service uptime tracker | |
Whisper | AI Model that I use to generate subtitles for Bazarr when they can't be found |
Apps not yet in repo:
Logo | Name | Description |
---|---|---|
AWX (Ansible Tower) | Used to easily run Ansible playbooks on all my VM's, and now CD for this repo, installed on K3s | |
Grafana | Monitoring for various services | |
Wordpress | WooCommerce store setup for JF PPV access | |
Guacamole | Remote access in browser via SSH, RDP, VNC, etc | |
Home Assistant | Slowly migrating over to Home Assistant from Google Home | |
Plausible | Analytics tracker for certain websites (Blog) | |
wazuh | Security platform monitoring everything with agents installed on all VM's |
Full Workflow Chart
graph TD
A1((Renovate Bot Scans for Updates)) --> A2{Updates Found?}
A2 -- Yes --> B[Make PR]
A2 -- No --> C(End)
B --> D{PR Merged?}
D -- No --> E(End)
subgraph Handle Merged PR
D -- Yes --> F[Extract App Name]
F --> G[SSH to Host Machine]
G --> H[Git Pull & Docker Compose Up]
H --> I{Error?}
I -- Yes --> J[Send Gotify Notification]
J --> K(End)
I -- No --> L[Extract PR Number]
L --> M[Add PR Number to Forgejo API URL]
M --> N[Send Review with Logs]
N --> O(End)
end
subgraph Notification on PR Creation
B --> P[Notify via Gotify]
end
subgraph Release Notes Handling
Q((PR Webhook Received)) --> R{PR Open?}
R -- No --> S(End)
R -- Yes --> T[Hit GitHub API for Release Notes]
T --> U[Extract PR Number from webhook]
U --> V[API Call to Foregjo]
V --> W[Leave Release Notes as Comment]
W --> S
end
P --> Q