{"id":15171451,"url":"https://github.com/paologaleotti/homeserver","last_synced_at":"2026-02-26T05:11:14.280Z","repository":{"id":250756891,"uuid":"835365588","full_name":"paologaleotti/homeserver","owner":"paologaleotti","description":"Personal declarative config for my home server","archived":false,"fork":false,"pushed_at":"2024-09-24T16:39:18.000Z","size":29,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-31T10:51:12.975Z","etag":null,"topics":["homeserver","nix","server"],"latest_commit_sha":null,"homepage":"","language":"Nix","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/paologaleotti.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,"publiccode":null,"codemeta":null}},"created_at":"2024-07-29T17:25:04.000Z","updated_at":"2024-09-28T14:54:52.000Z","dependencies_parsed_at":"2024-09-27T09:01:15.800Z","dependency_job_id":"dc8aa6c4-3e13-4e4d-8a94-9a0c68df3247","html_url":"https://github.com/paologaleotti/homeserver","commit_stats":{"total_commits":20,"total_committers":2,"mean_commits":10.0,"dds":0.25,"last_synced_commit":"7f5268fc2fa4af10636c0562cac321072cb3b2e8"},"previous_names":["paologaleotti/homeserver"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paologaleotti%2Fhomeserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paologaleotti%2Fhomeserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paologaleotti%2Fhomeserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paologaleotti%2Fhomeserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paologaleotti","download_url":"https://codeload.github.com/paologaleotti/homeserver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238212446,"owners_count":19434955,"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":["homeserver","nix","server"],"created_at":"2024-09-27T09:01:03.760Z","updated_at":"2025-10-03T21:54:51.950Z","avatar_url":"https://github.com/paologaleotti.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"# homeserver\n\n**work in progress!!**\n\nThis repository contains the (very simple) declarative configuration for my home server. The software stack is based on [NixOS](https://nixos.org/),\na Linux distribution that is configured declaratively using several configuration files.\n\nThe entire infrastructure uses containers and it is a single `docker-compose` file.\n\n## Architecture\n\n![Diagram](https://github.com/user-attachments/assets/3e03119c-e651-41d3-ae21-92e6a10c9cc5)\n\nI try to keep the setup as simple as possible, to avoid headache (and beacuse i don't want to spend a lot of time mantaning it).\nAll my services run as **Docker containers** in bridge mode, using Docker Compose.\n\nAll ports exposed by services are also exposed on the firewall config in NixOS, and they are always accessible inside the local network.\n\n## Remote access\n\nI do not have a public IP address and i'm also behind a very shitty double-NAT.\n\nIn order to access my services and home network from outside, i use [Tailscale VPN](https://tailscale.com/). This way, i don't have to worry about NAT and such because Tailscale\ndoes automatic NAT-traversal and, if the client is connected to the VPN, i can access my home network from everywhere.\n\nYes, i know it is possible to setup WireGuard to NAT-traverse using an online VPS, but i wanted to avoid having to also mantain that.\n\n## Services\n\n![dashboard](https://github.com/user-attachments/assets/50eaa6e6-9982-485f-ac47-e520742cc091)\n\n\nRunning on Docker containers:\n\n- [Homarr](https://homarr.dev/): Server dashboard\n- [AdGuard Home](https://github.com/AdguardTeam/AdGuardHome): Network level ad blocking DNS\n- [PhotoPrism](https://www.photoprism.app/): Self-hosted photo archive solution\n  - note: i will probably switch to [Immich](https://immich.app/) when it is more stable.\n- [Backrest](https://github.com/garethgeorge/backrest): Automatic data backup\n- [Prometheus](https://prometheus.io/): Metrics, alerts gathering\n- [Grafana](https://grafana.com/): Data visualization\n- *arr suite (Radarr, Sonarr, Prowlarr): Services for pirating movies and TV shows\n- [Jellyfin](https://jellyfin.org/): Media server\n- [qBittorrent NOX](https://hub.docker.com/r/qbittorrentofficial/qbittorrent-nox): Web UI for qbittorrent\n\nRunning on the host:\n\n- [Tailscale client](https://tailscale.com): VPN to access the network from remote\n- [Cockpit](https://cockpit-project.org/): Web-based system administration tool\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaologaleotti%2Fhomeserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaologaleotti%2Fhomeserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaologaleotti%2Fhomeserver/lists"}