mirror of
https://github.com/eznix86/homelab.git
synced 2026-07-25 21:08:54 +00:00
No description
- Python 98.3%
- Dockerfile 1.7%
| caddy | ||
| filebrowser | ||
| pihole | ||
| vitodeploy | ||
| .gitignore | ||
| aria2.stack.yml | ||
| arr.stack.yml | ||
| caddy.stack.yml | ||
| docker_volumes.py | ||
| filebrowser.stack.yml | ||
| jellyfin.stack.yml | ||
| main.py | ||
| pihole.stack.yml | ||
| portainer.stack.yml | ||
| README.md | ||
| registry.stack.yml | ||
| vitodeploy.stack.yml | ||
Homelab
Right now it is just one raspberry pi with 1 SSD via USB.
Requirements
- Docker 26.1.4 (because docker 27 has a bug)
- Docker Swarm
- Python 3
- MicroCeph (Later) -- Storage
- Require 3 nodes
- https://canonical-microceph.readthedocs-hosted.com/en/latest/
- GlusterFS (Simpler) -- Storage
Docker Swarm Setup and Management Documentation
Table of Contents
-
- Node Management
- Network Management
- Service Management
- Stack Management
- System Information
- Remote Management
- Registry Management
Installation
Install Docker and initialize a Swarm cluster:
# Install Docker curl -fsSL https://get.docker.com -o install-docker.sh sudo sh install-docker.sh --version 26.1.4 # Initialize Docker Swarm docker swarm init --advertise-addr <advertising address> # Deploy common services python main.py deploy jellyfin arr filebrowser portainer registry caddy aria2 pihole vitodeployUninstallation
Follow these steps to completely remove Docker and all associated components:
# 1. Drain the node docker node update --availability drain raspberrypi # 2. Remove deployed services python main.py remove jellyfin arr filebrowser portainer registry caddy aria2 pihole vitodeploy # 3. Clean up containers and images docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) docker rmi $(docker images -a -q) docker network prune docker system prune -a # 4. Remove Docker packages sudo apt remove docker-* --auto-remove # 5. Remove Docker files and directories sudo rm -rf /var/lib/docker sudo groupdel docker sudo rm -rf /var/run/docker.sock sudo rm -rf /usr/local/bin/docker-compose sudo rm -rf /etc/docker sudo rm -rf ~/.dockerManagement Commands
Node Management
# Add label to node docker node update --label-add node=prime raspberrypiNetwork Management
# Create overlay network for reverse proxy docker network create reverse-proxy --scope swarm --driver overlay # Clear DNS cache (macOS) sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderService Management
# View service information docker service ps <stack>_<container> --no-trunc docker service logs -f <stack>_<container> docker service inspect <stack>_<container> --format pretty # Update service capabilities sudo docker service update --cap-add NET_ADMIN <stack>_<container>Stack Management
# List and remove stacks docker stack ls docker stack rm <stack_name> docker stack ps <stack_name> # List services docker services ls docker service psSystem Information
# View Docker system information docker info docker node ps --no-truncRemote Management
# Install rsync (macOS) brew install rsync # Sync configuration to remote node rsync -avPz -e ssh $PWD/./ <user>@<host>:<path> # Example: # rsync -avPz -e ssh $PWD/./ brunobernard@home.brunobernard.dev:/home/brunobernard/homelabRegistry Management
# Build and push to private registry docker build -t caddy-cloudflare-dns:latest caddy/ docker tag caddy-cloudflare-dns registry.home.brunobernard.dev/caddy-cloudflare-dns docker push brunobernard.dev/caddy-cloudflare-dns