https://github.com/veerendra2/raspberrypi-homeserver
A collection of applications and tools to make awesome Raspberry Pi homerserver
https://github.com/veerendra2/raspberrypi-homeserver
ansible docker docker-compose docker-swarm docker-swarm-service filebrowser grafana homeserver jellyfin nextcloud pihole portainer prometheus qbittorrent raspberry-pi swarm traefik ufw-firewall vaultwarden wiregaurd
Last synced: 4 months ago
JSON representation
A collection of applications and tools to make awesome Raspberry Pi homerserver
- Host: GitHub
- URL: https://github.com/veerendra2/raspberrypi-homeserver
- Owner: veerendra2
- License: apache-2.0
- Archived: true
- Created: 2022-09-16T10:14:16.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-08T19:32:59.000Z (over 2 years ago)
- Last Synced: 2024-09-22T19:32:32.343Z (over 1 year ago)
- Topics: ansible, docker, docker-compose, docker-swarm, docker-swarm-service, filebrowser, grafana, homeserver, jellyfin, nextcloud, pihole, portainer, prometheus, qbittorrent, raspberry-pi, swarm, traefik, ufw-firewall, vaultwarden, wiregaurd
- Language: Shell
- Homepage: https://veerendra2.github.io/posts/home-server-setup/
- Size: 1.51 MB
- Stars: 67
- Watchers: 5
- Forks: 5
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- stars - raspberrypi-homeserver
README





# Raspberry Pi Homeserver
A collection of self-host docker swarm stacks
PiHole
Grafana
Prometheus
Portainer
Homer
ufw
Filebrowser
Jellyfin
Nextcloud
Traefik
Wireguard
qBittorrent
Radarr
Sonarr
Jackett
SearXNG
Vaultwarden
rest-server
(Restic)
IT-Tools

Docker Swarm
## Table of Contents
* [Features](https://github.com/veerendra2/raspberrypi-homeserver#features)
* [My Raspberry Pi Config](https://github.com/veerendra2/raspberrypi-homeserver#my-Raspberry-pi-config)
* [Architecture Diagram](https://github.com/veerendra2/raspberrypi-homeserver#architecture-diagram)
* [Getting Started](https://github.com/veerendra2/raspberrypi-homeserver#getting-started)
* [Related Blogs](https://github.com/veerendra2/raspberrypi-homeserver#related-blogs)
* [GitBook Docs](https://dust6765.gitbook.io/raspberrypi-home-server/)
* [Project Roadmap](https://github.com/veerendra2/raspberrypi-homeserver/projects)
* [Youtube Video](https://www.youtube.com/watch?v=lb4s4roM6zY)
## Features
* Automated with Ansible
* All services are deployable on docker swarm
* Traefik reverse proxy
* Grafana dashboards to view
* System metrics
* Internet speed everyone hour
* Uptime with blackbox exporter
* Docker container metrics
* Homer dashboard to view all services
* Uncomplicated firewall
* qBittorrent with Wireguard proxy and kill switch with `healthcheck`
## My Raspberry Pi Config
Model
Raspberry Pi 4 Model B Rev 1.4
CPU
BCM2835 (4) @ 1.800GHz
Memory
8 GB
OS
Ubuntu 22.04.2 LTS aarch64
Case
Geekworm NASPi Gemini 2.5 V2.0 Dual 2.5 Inch SATA HDD/SSD
Disks
- 1 TB Crucial SSD
- 1 TB Western Digital HDD
Docker Swarm Nodes
1 (Single node docker swarm cluster)
### Dashboard

## Architecture Diagram

## Getting Started
> Refer [Gitbook Docs](https://dust6765.gitbook.io/raspberrypi-home-server/) for more details and how to deploy manually
Ansible automation works well, if all services are intended to deploy on single box. Since I have only one machine, don't have to worry about the docker volumes, all of my docker volumes stored on single SSD mounted to host.
* Follow prerequisite [manual steps](https://dust6765.gitbook.io/raspberrypi-home-server/settings/manual-steps) to prepare Pi
* Browse [vars.yml](./vars.yml) to configuration
```bash
$ git clone https://github.com/veerendra2/raspberrypi-homeserver.git
$ cd raspberrypi-homeserver
# review vars.yml and inventory.yml and run
$ ansible-playbook main.yml
```
### NOTE
* This setup is created to deploy all services on single node docker swarm cluster. If you want to use this setup on multi node swarm cluster, there are some additional tweaks required like
* Change placement
```yaml
...
deploy:
replicas: 1
placement:
constraints: [node.role == manager]
...
```
* Currently I'm using duckdns sub-domain (Refer example -> [services/traefik/docker-stack.yml#32](./services/traefik/docker-stack.yml#32)). Refer my [blog post](https://veerendra2.medium.com/traefik-https-config-with-duckdns-for-local-homeserver-c55db9971683) to get more info.
* Update docker volume mount paths.
## Related Blogs
* [Portainer vs Yacht](https://veerendra2.medium.com/portainer-vs-yacht-316405b9e867)
* [Pi-hole with DHCP Relay in Docker](https://veerendra2.medium.com/pi-hole-with-dhcp-relay-in-docker-cef397922e5a)
* [Wireguard VPN and BitTorrent on Docker Swarm (Part 1)](https://veerendra2.medium.com/wireguard-vpn-and-bittorrent-on-docker-swarm-part-1-1100b4115cc0)
* [Wireguard VPN and BitTorrent on Docker Swarm (Part 2)](https://veerendra2.medium.com/wireguard-vpn-and-bittorrent-on-docker-swarm-part-2-b92a251ba873)
* [Traefik HTTPS Config with DuckDNS for Local Homeserver](https://veerendra2.medium.com/traefik-https-config-with-duckdns-for-local-homeserver-c55db9971683)
* [How to Deploy rest-server(Restic) on Docker Swarm Behind Traefik Reverse Proxy](https://dev.to/veerendra2/how-to-deploy-rest-serverrestic-on-docker-swarm-behind-traefik-reverse-proxy-4a8h)