I have been tinkering around networking stuff lately for the purpose of learning and to have my own private server at home since all of the big techs are taking away our privacy especially now with the rise of AI. While doing this, I thought of publishing my setup for future reference and to share it to the community as well.
Inspired by https://github.com/mischavandenburg/homelab, this repo contains all of the configuration and documentation of my homelab.
For the past three years, I've been utilising my Synology NAS as a reliable home server. It efficiently manages and stores all my files and apps, allowing me remote access and share files with family and friends via the internet.
- DS420+ with 2.0 GHz CPU, 2GB RAM
- 10TB Seagate SATA Main drive
- 10TB Seagate SATA Backup drive
I have also setup some docker containers for some of the apps that I think would require more RAM than my NAS (ie. ollama LLMs)
- Apple M3 Pro
- 32GB RAM
- 500GB HD
End User Applications
| Logo | Name | Description |
|---|---|---|
| Homepage | Dashboard interface as the entrypoint of all the apps and services | |
| Openweb UI | AI chat interface for Ollama/HF LLMs | |
| Obsidian | Note-taking app with self-hosted data | |
| Plex | Self-hosted media player similar to netflix. Installed through Synology's package center. |
Everything needed to run and deploy my applications
| Logo | Name | Description |
|---|---|---|
| Synology Container Manager | Synology's lightweight virtualization application for running docker containers | |
| Twingate | Zero-trust remote access to a network resource |
Monitor the health of the systems.
| Logo | Name | Description |
|---|---|---|
| Uptime Kuma | Uptime monitoring tool | |
| Glances | System monitoring tool to monitor CPU, memory, disk, network, etc. | |
| Grafana | The open observability platform. |
Other utility tools
| Logo | Name | Description |
|---|---|---|
| Pihole | Network-wide Ad blocker |
This is a very simple setup, no kubernetes or any load balancer of some sort as this is just a personal setup and will be accessed by a few people. Getting access is through Twingate and users are assigned a specific a network and ports for security.
Create a .env file for your environment variables and update the docker-compose files accordingly