Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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: about 1 month ago
JSON representation

A collection of applications and tools to make awesome Raspberry Pi homerserver

Awesome Lists containing this project

README

        

![GitHub](https://img.shields.io/github/license/veerendra2/raspberrypi-homeserver)
![GitHub Repo stars](https://img.shields.io/github/stars/veerendra2/raspberrypi-homeserver?style=plastic)
![GitHub forks](https://img.shields.io/github/forks/veerendra2/raspberrypi-homeserver?style=plastic)
![GitHub issues](https://img.shields.io/github/issues/veerendra2/raspberrypi-homeserver?style=plastic)
![GitHub release (release name instead of tag name)](https://img.shields.io/github/v/release/veerendra2/raspberrypi-homeserver?include_prereleases&style=plastic)
# Raspberry Pi Homeserver


A collection of self-host docker swarm stacks



PiHole
PiHole




Grafana
Grafana




Prometheus
Prometheus




Portainer
Portainer




Homer
Homer



ufw
ufw




Filebrowser
Filebrowser




Jellyfin
Jellyfin




Nextcloud
Nextcloud




Traefik
Traefik



Wireguard
Wireguard




qBittorrent
qBittorrent




Radarr
Radarr




Sonarr
Sonarr




Jackett
Jackett



SearXNG
SearXNG




Vaultwarden
Vaultwarden




rest-server
rest-server
(Restic)




IT-Tools
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



PiHole




Grafana

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
![image](https://user-images.githubusercontent.com/8393701/229379261-2bed7cf0-6117-4edd-b391-a31969915c40.png)

## Architecture Diagram
![Architecture](https://user-images.githubusercontent.com/8393701/235324714-75620112-a89b-4d10-ab9d-2e44de75d36b.jpg)

## 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)