{"id":15641763,"url":"https://github.com/agneevx/homelab","last_synced_at":"2025-04-30T09:14:37.753Z","repository":{"id":45770248,"uuid":"290774260","full_name":"agneevX/homelab","owner":"agneevX","description":"My Homelab setup","archived":false,"fork":false,"pushed_at":"2023-07-10T18:39:13.000Z","size":2095,"stargazers_count":69,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-10-04T11:45:09.845Z","etag":null,"topics":["homelab","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agneevX.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2020-08-27T12:51:32.000Z","updated_at":"2023-12-13T04:03:31.000Z","dependencies_parsed_at":"2024-04-16T07:47:35.240Z","dependency_job_id":"734e3a60-d306-4908-96ac-1aa6b8818482","html_url":"https://github.com/agneevX/homelab","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agneevX%2Fhomelab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agneevX%2Fhomelab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agneevX%2Fhomelab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agneevX%2Fhomelab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agneevX","download_url":"https://codeload.github.com/agneevX/homelab/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221102035,"owners_count":16756438,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["homelab","raspberry-pi"],"created_at":"2024-10-03T11:45:00.950Z","updated_at":"2024-10-22T13:20:33.300Z","avatar_url":"https://github.com/agneevX.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable MD033 --\u003e\n# Homelab Setup\n\nMy servers setup at home\n\n- [Homelab Setup](#homelab-setup)\n  - [Hardware](#hardware)\n    - [NAS/media server](#nasmedia-server)\n    - [DNS/proxy server](#dnsproxy-server)\n    - [Cloud VMs](#cloud-vms)\n  - [Unified access](#unified-access)\n  - [File management](#file-management)\n    - [Cloud storage](#cloud-storage)\n    - [Local storage](#local-storage)\n\n## Hardware\n\nI run two Raspberry Pi 4Bs as servers currently.\n\n### NAS/media server\n\n\u003cimg src=\"https://user-images.githubusercontent.com/19761269/99898364-ea3dd680-2cc6-11eb-9216-89c2240ed0af.png\" width=\"300\"\u003e\n\n`falcon`\n\n- ⚡ Raspberry Pi 4B (8GB model)\n  - Ubuntu Server 22.04 LTS\n  - Overclocked to 2.0GHz\n- 🔌 Powered USB 3.0 hub\n  - TP-Link TL-UH700\n- 📼 Primary storage\n  - Sandisk Ultra microSD card (8GB, boot)\n  - Crucial BX500 SSD (480GB, root FS)\n- 📀 Secondary storage\n  - Crucial BX500 SSD (480GB)\n  - Seagate Barracuda 2.5\" 1TB\n  - Seagate Expansion 4TB\n  - WD My Passport 1TB\n  - Sony HD-B1 1TB\n- 🌐 Gigabit ethernet\n  - TP-Link TL-SG1008D\n- 🔊 3.5mm out...\n  - Fenda E200 Plus\n\nMain server that runs the majority of my self-hosted apps, runs the media stack, functions as a NAS and audio server using the likes of `librespot`, `shairport-sync`, and `mpv`.\n\nRuns in Docker containers:\n\n[🔗 **Docker Compose**](./docker-compose/falcon.yml)\n\n- 💡 [Home Assistant](https://github.com/agneevx/my-ha-setup)\n- �📽 Plex Media Server\n- 📺 Servarr media stack\n- 🧲 qBittorrent\n\n### DNS/proxy server\n\n\u003cimg src=\"https://www.raspberrypi.com/app/uploads/2021/04/raspberrypi4-hero2-1536x1021.png\" width=\"300\"\u003e\n\n`always-on`\n\n- ⚡ Raspberry Pi 4 (4GB model)\n  - Ubuntu Server 22.04 LTS\n- 📼 32GB microSD card\n- 🌐 Gigabit ethernet\n\n[DNS/DHCP server](#dns), monitors network latency and speed using tools like Smokeping and Speedtest-tracker, handles the Traefik network proxy over Tailscale. Also runs Portainer, which is used to monitor Docker hosts across all machines, cloud or local.\n\nSince this server runs on a SD card, `log2ram` is used to store system logs in memory to reduce writes to disk.\n\nRuns in Docker containers:\n\n[🔗 **Docker Compose**](./docker-compose/always-on.yml)\n\n### Cloud VMs\n\n- Oracle Cloud\n- Google Cloud Platform (`e2-micro`)\n- Digital Ocean Droplets\n\n[🔗 **Docker Compose**](./docker-compose/oracle1.yml)\n\n---\n\n### DNS\n\n[AdGuard Home](https://github.com/AdguardTeam/AdGuardHome) blocks ads and trackers, manages DNS and DHCP in the local network.\n\nFor DNS resolution, I use Cloudflare Zero Trust over DoH3, which is similar to 1.1.1.1 but supports EDNS Client Subnet, which enables devices to connect to servers located closer to me and thus makes stuff load faster.\n\nAdGuard has optimistic caching enabled which accelerates web page loading due to low latency lookups.\n\n\u003c!-- ![feb-2022-archive](https://user-images.githubusercontent.com/19761269/155761364-908e0759-6703-449c-8ca7-54a9c92b9478.png) --\u003e\n\n\u003c!-- ![It's always DNS](https://user-images.githubusercontent.com/19761269/159464106-aac45518-26ef-4fe5-8bc3-865cb35e8868.png) --\u003e\n\n![Cloudflare Gateway DNS](https://user-images.githubusercontent.com/19761269/187674721-02be2231-9b3d-4eef-b3d7-08de09b8794e.png)\n\n## Unified access\n\nI use Tailscale to access devices and services. Cloud VMs have their storages securely mounted locally over NFS or FTP.\n\nSome apps are hosted in cloud to balance system resources. I use Traefik to access them as if they're hosted locally, using the format `http://\u003capp\u003e.\u003cmachine\u003e.nt`.\n\nThis requires Traefik and containers on all VMs, with Traefik routers created locally (for each VM) that proxy requests to remote Traefik instances.\n\n## File management\n\nFiles are stored both in the cloud and locally.\n\n### Media storage\n\nmergerfs is used to pool together local drive mounts so they appear as a single mount that can be bind-mounted to Docker containers.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagneevx%2Fhomelab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagneevx%2Fhomelab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagneevx%2Fhomelab/lists"}