Post

Self-Hosting Journey

A report of my long self-hosting journey

Diagram

Software

Currently, all clusters run Docker, with software orchestration handled via docker-compose. The source of truth is a private GitHub repository containing all configurations. To update any configuration or container, one simply commits the changes to GitHub, pulls the update on the machine, and restarts the container.

Future Work: The goal is to transition all machines in a cluster to Docker Swarm or Kubernetes, and enable automated configuration updates. This would involve implementing a service that pulls changes from GitHub and relaunches the services seamlessly. Another objective would be to host this website and my Links website locally as well but due to hardware limitations right now they are all on Vercel and linked to their GitHub repositories.

Hardware

Laptop magalhães :)

Specs:

  • CPU: Intel Atom N450 1,67 Ghz
  • RAM: 2 GB DDR3 RAM
  • DISK: 250GB HDD
  • GPU: WSVGA 1024x600, 32-bit
  • ETHERNET: 10/100 Mbit/s 802.11 b/g/n and RJ45 support
  • OS: debian

pfetch

Raspberry pi 3B

Specs:

  • CPU: Broadcom BCM2837, Quad-core Cortex-A53 @ 1.2 GHz
  • GPU: Broadcom VideoCore IV
  • RAM: 1GB LPDDR2
  • USB Ports: 4 × USB 2.0
  • Ethernet: 10/100 Mbps
  • Power: 5V/2.5A micro-USB
  • OS: DietPi

Raspberry pi 5

Specs:

  • CPU: Broadcom BCM2712, Quad-core Cortex-A76 @ 2.4 GHz
  • GPU: VideoCore VII
  • RAM: 16GB LPDDR4X
  • USB Ports: 2 × USB 3.0, 2 × USB 2.0
  • Ethernet: Gigabit Ethernet (1000 Mbps)
  • Power: 5V/5A USB-C
  • OS: Raspbian 64bit

Services:

Local

  • Motioneye
  • Portainer
  • Adguard Home
  • Homeassitant
  • Autoheal
  • Wireguard
  • Watchtower
  • Frigate
  • MQTT
  • Caddy

Motioneye

MotionEye is an online interface for the software motion, a video surveillance program with motion detection.

Portainer CE

Portainer Community Edition is a lightweight service delivery platform for containerized applications that can be used to manage Docker, Swarm, Kubernetes and ACI environments. It is designed to be as simple to deploy as it is to use. The application allows you to manage all your orchestrator resources (containers, images, volumes, networks and more) through a ‘smart’ GUI and/or an extensive API.

Portainer consists of a single container that can run on any cluster. It can be deployed as a Linux container or a Windows native container.

Adguard Home

AdGuard Home is a network-wide software for blocking ads and tracking. After you set it up, it’ll cover ALL your home devices, and you don’t need any client-side software for that.

It operates as a DNS server that re-routes tracking domains to a “black hole”, thus preventing your devices from connecting to those servers. It’s based on software we use for our public AdGuard DNS servers, and both share a lot of code.

Homeassitant

Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.

Autoheal

Monitor and auto restart unhealthy docker containers.

Wireguard

Vpn server that makes use of the UDP protocol make it have less overhead.

Watchtower

With watchtower you can update the running version of your containerized app simply by pushing a new image to the Docker Hub or your own image registry.

Watchtower will pull down your new image, gracefully shut down your existing container and restart it with the same options that were used when it was deployed initially.

Frigate

Frigate is an open source NVR built around real-time AI object detection. All processing is performed locally on your own hardware, and your camera feeds never leave your home.

Caddy

Reverse Proxy.

Cloud

  • Github
  • Vercel
  • Cloudflare
This post is licensed under CC BY 4.0 by the author.