This repository has been archived on 2024-07-30. You can view files and clone it, but cannot push or open issues or pull requests.
Auto-Homelab/README.md
2024-05-27 06:29:04 +00:00

308 lines
No EOL
16 KiB
Markdown

[![Build Status](https://drone.mafyuh.dev/api/badges/renovatebot/renovate-config/status.svg)](https://drone.mafyuh.dev/mafyuh/Auto-Homelab)
[![Pulls](https://git.mafyuh.dev/mafyuh/Auto-Homelab/badges/pulls.svg)](https://git.mafyuh.dev/mafyuh/Auto-Homelab/pulls)
<div align="center">
# Auto-Homelab
Homelab docker-compose environment defined in code. Using Drone and Renovate bot for CI along with n8n automation for CD.
</div>
<p align="center">
<a href="https://git.mafyuh.dev/mafyuh/Auto-Homelab/wiki/?action=_pages">Wiki</a> |
<a href="https://loganmarchione.com/2022/10/how-to-run-renovate-on-a-self-hosted-gitea-and-drone-instance/">How to Setup</a> |
<a href="https://mafyuh.com">Blog</a> |
<a href="https://www.youtube.com/watch?v=5CkCr9U_Q1Y">Inspiration</a>
</p>
<div align="center">
| Hypervisor | OS | Tools | VPS (arm) | Firewall |
|---|---|---|---|---|
| [![Proxmox](https://img.shields.io/badge/-Proxmox-%23c9d1d9?logo=Proxmox)](https://www.proxmox.com) | [![Ubuntu](https://img.shields.io/badge/Ubuntu_22.04-%23c9d1d9?&logo=ubuntu&logoColor=red)](https://releases.ubuntu.com/jammy/) [![Ubuntu](https://img.shields.io/badge/Ubuntu_24-%23c9d1d9?&logo=ubuntu&logoColor=red)](https://releases.ubuntu.com/noble/) | [![Forgejo](https://img.shields.io/badge/-Forgejo-%23c9d1d9?logo=forgejo&logoColor=orange)](https://forgejo.org/) [![Drone](https://img.shields.io/badge/-Drone-%23c9d1d9?logo=drone&logoColor=black)](https://www.drone.io/) [![Docker](https://img.shields.io/badge/-Docker-%23c9d1d9?logo=docker)](https://www.docker.com/) | [![Oracle](https://img.shields.io/badge/-Oracle_Cloud-%23c9d1d9?logo=oracle&logoColor=red)](https://www.oracle.com/cloud/) | [![pfSense](https://img.shields.io/badge/-pfSense-%23c9d1d9?logo=pfsense&logoColor=blue)](https://www.pfsense.org/) |
</div>
<div align="center">
## Apps in Repo:
<table>
<tr>
<th>Logo</th>
<th>Name</th>
<th>Description</th>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/adguardhome.svg"></td>
<td><a href="https://adguard.com/en/adguard-home/overview.html">AdGuard Home</a></td>
<td>Network Wide DNS adblock as well as my DNS server (2/2)</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/adguardhomesync-icon.png"></td>
<td><a href="https://docs.linuxserver.io/images/docker-adguardhome-sync/">AdGuard Home Sync</a></td>
<td>Syncs my instances of Adguard</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/authentik.svg"></td>
<td><a href="https://goauthentik.io/">authentik</a></td>
<td>Open Source Identity Provider </td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/bazarr.svg"></td>
<td><a href="https://www.bazarr.media/">Bazarr</a></td>
<td>Downloads subtitles for Radarr/Sonarr</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/cloudflare.svg"></td>
<td><a href="https://www.cloudflare.com/products/tunnel/">Cloudflare Tunnels</a></td>
<td>How I expose some of these services</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/kiranshila/Doplarr/main/logos/logo.svg"></td>
<td><a href="https://github.com/kiranshila/Doplarr">Doplarr</a></td>
<td>Allows my users to request content through Discord if they choose</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/droneci.svg"></td>
<td><a href="https://www.drone.io/">Drone</a></td>
<td>Selfhosted CI/CD pipeline manager</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/FlareSolverr/FlareSolverr/master/resources/flaresolverr_logo.svg"></td>
<td><a href="https://github.com/FlareSolverr/FlareSolverr">FlareSolverr</a></td>
<td>Proxy server to bypass Cloudflare and DDoS-GUARD protection</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/forgejo.svg"></td>
<td><a href="https://forgejo.org/">Forgejo</a></td>
<td>This site</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/gotify.svg"></td>
<td><a href="https://gotify.net/">Gotfiy</a></td>
<td>Self hosted notification service</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/homarr.svg"></td>
<td><a href="https://homarr.dev/docs/getting-started/installation/">Homarr</a></td>
<td>Homelab dashboard that integrates with the arr's so I see data in 1 place</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/jellyfin.svg"></td>
<td><a href="https://github.com/jellyfin/jellyfin">Jellyfin</a></td>
<td>Open Source Streaming Service for home media like Plex</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/jellyseerr.svg"></td>
<td><a href="https://github.com/Fallenbagel/jellyseerr">Jellyseerr</a></td>
<td>Request platform for my Jellyfin user's to request content</a></td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/docker.svg"></td>
<td><a href="https://github.com/hrfee/jfa-go">jfa-go</a></td>
<td>Used for some PPV/Live TV automations to create users for certain periods of time</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/kasm.svg"></td>
<td><a href="https://docs.linuxserver.io/images/docker-kasm/">Kasm</a></td>
<td>Docker container streaming platform for browser-based access to desktops, applications, and web services</a></td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/lidarr.svg"></td>
<td><a href="https://wiki.servarr.com/en/lidarr">Lidarr</a></td>
<td>Music Collection Manager</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/LinkStackOrg/branding/main/logo/svg/logo_animated.svg"></td>
<td><a href="https://github.com/LinkStackOrg/linkstack-docker">LinkStack</a></td>
<td>Creating a static links page for my Jellyfin users</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,w_60,h_60/https://dashboard.snapcraft.io/site_media/appmedia/2020/03/makemkv.png"></td>
<td><a href="https://github.com/jlesage/docker-makemkv">MakeMKV</a></td>
<td>Used to rip Bluray's with my LG BU40N drive </td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://avatars.githubusercontent.com/u/31035808?s=200&v=4"></td>
<td><a href="https://docs.mindsdb.com/what-is-mindsdb">mindsdb</a></td>
<td>Connects Ollama models to 100+ different databases, easy to use.</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/nbxyz-logo.svg"></td>
<td><a href="https://netboot.xyz/">Netboot.xyz</a></td>
<td>Network boot instead of using my ventoy USB</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/nginxproxymanager.svg"></td>
<td><a href="https://nginxproxymanager.com/">Nginx Proxy Manager</a></td>
<td>Reverse Proxy used for its simplicity (1/3)</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/n8n.svg"></td>
<td><a href="https://n8n.io">n8n</a></td>
<td>Switching from ActivePieces to n8n, more robust</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://ollama.com/public/ollama.png"></td>
<td><a href="https://ollama.com/">Ollama</a></td>
<td>Easiest way to run LLM's on your own hardware</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://github.com/open-webui/open-webui/blob/main/static/favicon.png?raw=true"></td>
<td><a href="https://github.com/open-webui/open-webui">open-webui</a></td>
<td>Creates a ChatGPT like web interface for talking to Ollama models</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/portainer.svg"></td>
<td><a href="https://github.com/portainer/portainer">Portainer</a></td>
<td>Web-based management for Docker containers</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/prowlarr.svg"></td>
<td><a href="https://prowlarr.com/">Prowlarr</a></td>
<td>Searches indexers for Radarr/Sonarr</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/qbittorrent.svg"></td>
<td><a href="https://github.com/binhex/arch-qbittorrentvpn">qBittorrent VPN</a></td>
<td>Modified qBittorrent with VPN killswitch enabled</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/radarr.svg"></td>
<td><a href="https://radarr.video/">Radarr</a></td>
<td>Movie Collection Manager</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/sabnzbd.svg"></td>
<td><a href="https://sabnzbd.org/">Sabnzbd</a></td>
<td>Usenet downloader to download content</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/sonarr.svg"></td>
<td><a href="https://wiki.servarr.com/sonarr">Sonarr</a></td>
<td>Radarr, but for TV Shows</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://www.gravatar.com/avatar/614e0f6491dbb293e540190b02b3024e?s=120&r=g&d=404"></td>
<td><a href="https://hub.docker.com/r/sonatype/nexus3/">Sonatype Nexus</a></td>
<td>Self-hosted Docker registry to help lower Docker pulls</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/syncthing.svg"></td>
<td><a href="https://syncthing.net/">Syncthing</a></td>
<td>How I backup all config files, following 3-2-1 backup procedure</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://play-lh.googleusercontent.com/GBhNhKgjfy6i6Ucc0hyB-79WmcV7LvKSfGSy8iStFdZSaLioKQp5rPWjqsh2YFRRZsE1"></td>
<td><a href="https://twingate.com">Twingate Connectors</a></td>
<td>Main VPN between homelab and cloud VPS's</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/uptimekuma.svg"></td>
<td><a href="https://github.com/louislam/uptime-kuma">Uptime Kuma</a></td>
<td>Self hosted service uptime tracker</td>
</tr>
</table>
</div>
<div align="center">
## Apps not yet in repo:
<table>
<tr>
<th>Logo</th>
<th>Name</th>
<th>Description</th>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/ansible-black.svg"></td>
<td><a href="https://github.com/ansible/awx">AWX (Ansible Tower)</a></td>
<td>Used to easily run Ansible playbooks on all my VM's, installed on Minikube</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/grafana.svg"></td>
<td><a href="https://hub.docker.com/r/grafana/grafana-oss">Grafana</a></td>
<td>Monitoring for various services</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/wordpress.svg"></td>
<td><a href="https://wordpress.org/">Wordpress</a></td>
<td>WooCommerce store setup for JF PPV access</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://upload.wikimedia.org/wikipedia/commons/3/31/Apache_Guacamole_logo.png"></td>
<td><a href="https://guacamole.apache.org/">Guacamole</a></td>
<td>Remote access in browser via SSH, RDP, VNC, etc</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/homeassistant.svg"></td>
<td><a href="https://www.home-assistant.io/">Home Assistant</a></td>
<td>Slowly migrating over to Home Assistant from Google Home</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/plausible.svg"></td>
<td><a href="https://plausible.io/">Plausible</a></td>
<td>Analytics tracker for certain websites (Blog)</td>
</tr>
<tr>
<td><img vertical-align=baseline width="32" src="https://raw.githubusercontent.com/Mafyuh/homelab-svg-assets/main/assets/wazuh.svg"></td>
<td><a href="https://wazuh.com/">wazuh</a></td>
<td>Security platform monitoring everything with agents installed on all VM's</td>
</tr>
</table>
</div>
<div align="center">
## Full Workflow Chart
</div>
```mermaid
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
```
## To-Do
- [ ] Get all dependencies configured to pull changelogs on PR
- [x] CI Passing Badge in README https://git.mafyuh.dev/mafyuh/Auto-Homelab/commit/cb514e2b09ff5fe55502b92815ed34b7bdacfd0c
- [ ] Add README to each directory
- [x] Get upstream release notes for linuxserver containers https://git.mafyuh.dev/mafyuh/Auto-Homelab/pulls/207#issuecomment-1697
- [ ] Harden all VM's to be CIS compliant