{"id":34966706,"url":"https://github.com/florianajir/pi-web","last_synced_at":"2026-04-09T16:41:42.443Z","repository":{"id":304892592,"uuid":"998582135","full_name":"florianajir/pi-web","owner":"florianajir","description":"Raspberry pi web services stack (proxy, monitoring, n8n)","archived":false,"fork":false,"pushed_at":"2025-09-28T13:58:56.000Z","size":259,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-28T15:53:10.848Z","etag":null,"topics":["arm64","docker-compose","grafana","monitoring","n8n","proxy-server","raspberry-pi","traefik"],"latest_commit_sha":null,"homepage":"","language":"Makefile","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/florianajir.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-08T23:02:36.000Z","updated_at":"2025-06-11T16:40:21.000Z","dependencies_parsed_at":"2025-07-17T04:09:43.396Z","dependency_job_id":"93c17a88-6849-4c5d-863d-c2b3357f9468","html_url":"https://github.com/florianajir/pi-web","commit_stats":null,"previous_names":["florianajir/pi-web"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/florianajir/pi-web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianajir%2Fpi-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianajir%2Fpi-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianajir%2Fpi-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianajir%2Fpi-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/florianajir","download_url":"https://codeload.github.com/florianajir/pi-web/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianajir%2Fpi-web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28064129,"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","status":"online","status_checked_at":"2025-12-26T02:00:06.189Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["arm64","docker-compose","grafana","monitoring","n8n","proxy-server","raspberry-pi","traefik"],"created_at":"2025-12-26T23:12:05.809Z","updated_at":"2026-04-09T16:41:42.431Z","avatar_url":"https://github.com/florianajir.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pi-web\n\n[![Docker](https://img.shields.io/badge/Docker-Compose-blue.svg)](https://docker.com/)\n[![Raspberry Pi](https://img.shields.io/badge/Raspberry%20Pi-Compatible-red.svg)](https://www.raspberrypi.org/)\n\nA production-ready, privacy-focused web stack for Raspberry Pi—from DNS filtering to personal cloud—deployed in minutes.\n\npi-web bundles the hard parts (HTTPS, SSO, private DNS, VPN, backups, and monitoring) into a clean Docker Compose setup you can audit, customize, and run on standard Linux.\n\n## Why pi-web?\n\nIf you're deciding between approaches, here's the short version:\n\n- **Vs installing apps manually:** pi-web saves days of integration work by shipping a pre-wired stack (Traefik, Authelia, LLDAP, Postgres, Redis, backups, and monitoring) that works together out of the box.\n- **Vs Umbrel or CasaOS:** pi-web is **lightweight and transparent**—no proprietary host OS, no app-store lock-in, just pure Docker Compose and readable config files.\n- **For long-term ownership:** everything is Git-friendly and scriptable, so installs, updates, and recovery stay repeatable.\n\n## Stack Overview\n\n| Category | Services |\n|----------|----------|\n| **Cloud \u0026 Storage** | Nextcloud, Immich, n8n, Ntfy |\n| **Network \u0026 Security** | Traefik (reverse proxy), Tailscale/Headscale (VPN), Authelia (SSO), LLDAP (user directory) |\n| **DNS \u0026 Filtering** | Pi-hole (ad-blocking), Unbound (recursive DNS) |\n| **Download** | qBittorrent (torrent client), Gluetun (VPN kill-switch gateway) |\n| **Monitoring \u0026 Backup** | Beszel (monitoring), Backrest (restic backups), Dockhand (container management) |\n| **Infrastructure** | PostgreSQL, Redis, ddns-updater |\n\n## Requirements\n\n**Hardware:**\n- Raspberry Pi 5 (8GB RAM minimum, **16GB RAM recommended** for the full stack)\n- Storage: NVMe SSD HAT recommended (MicroSD cards degrade quickly under continuous I/O)\n- S3-compatible bucket (or equivalent) recommended for off-site Backrest backups\n\n**Prerequisites:**\n- Domain name + Cloudflare account (free tier OK)\n- Cloudflare API token with DNS edit permissions\n- Docker \u0026 Docker Compose installed\n\n**Router port forwarding:**\n\n| Port | Protocol | Service | Purpose |\n|------|----------|---------|---------|\n| `443` | TCP | Traefik | HTTPS access to web services |\n| `41641` | UDP | Tailscale/Headscale | WireGuard VPN tunnel |\n| `3478` | UDP | Tailscale/Headscale | STUN — peer-to-peer traversal |\n\n\u003e Only `443` is required for basic HTTPS access. `41641` and `3478` are needed for direct VPN connections via Headscale.\n\n## Quick Start\n\n```bash\ngit clone https://github.com/florianajir/pi-web.git\ncd pi-web\ncp .env.dist .env                   # Edit with your values\nmake preflight                      # Verify prerequisites\nmake install                        # Deploy stack\nmake logs                           # Follow startup logs\n```\n\nAfter first start, visit `https://auth.\u003cYOUR_DOMAIN\u003e` to create your first user in LLDAP, then log in to services with SSO.\n\n## Usage\n\n| Task | Command |\n|------|---------|\n| Start/stop stack | `make start` / `make stop` |\n| View logs | `make logs` |\n| Stack status | `make status` |\n| Register Tailscale device | `make headscale-register \u003ckey\u003e` |\n| Full command reference | See [docs/COMMANDS.md](docs/COMMANDS.md) |\n\n## Documentation\n\n- **[Installation Guide](docs/INSTALLATION.md)** — Detailed setup, hardware requirements, and prerequisites\n- **[Architecture](docs/ARCHITECTURE.md)** — System design, service interactions, networking diagrams\n- **[Security \u0026 Authentication](docs/SECURITY.md)** — Authentication flows, OIDC, access control, encryption\n- **[Configuration](docs/CONFIGURATION.md)** — All environment variables, secrets, and customization options\n- **[Monitoring \u0026 Alerts](docs/MONITORING.md)** — Beszel setup, alerts, and backup strategy\n- **[Email \u0026 Notifications](docs/EMAIL.md)** — SMTP configuration, Ntfy push notifications\n- **[Networking](docs/NETWORKING.md)** — DNS architecture, Tailscale/Headscale, network segmentation\n- **[Tailscale Setup](docs/TAILSCALE.md)** — Connecting devices, MagicDNS, split DNS configuration\n- **[Development](AGENTS.md)** — Guidelines for contributing\n\n## License\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorianajir%2Fpi-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflorianajir%2Fpi-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorianajir%2Fpi-web/lists"}