A repo of files to set up my local server running Ubuntu 20.04 Server.
To achieve a similar set up you must have Docker installed, with Docker Compose recommended. Script included here but it may not run all the way through - each command run separately should do the trick though. Hopefully this will be improved in the future. As an aside, installations on Raspberry Pis seem to be hit or miss, especially with older models - this article got Docker up and running on an older Pi that was a little more resistant installing with the commands in the included script.
Portainer is highly recommended as an easy-to-use interface to manage your containers. By and large, each docker-compose.yml
is deployed as a stack to take advantage of environment variable substitution and to allow control of the configurations through the Portainer interface.
After getting Portainer running, getting Traefik running next is probably the most sensible route to go. Optionally, allowing ssh access makes orchestrating this all remotely much easier. Many of the included docker-compose.yml
files assume the networking stack is set up and have additional configurations with that mind.
As a side note, many of these setups also include Kubernetes configurations. If that is of interest, there is a corresponding folder that details how a cluster can be created. Due to Portainer's ability to manage Kubernetes clusters, it's likely still useful to have Portainer up and running, if only to add the cluster as an agent endpoint.
- Portainer - Docker Container and Kubernetes Cluster Management and Orchestration
- Traefik - Container-focused Reverse Proxy
- Jenkins - Customizable Build Server
- MQTT - MQTT Servers for Cross-Server Communication
- RabbitMQ
- Mosquitto
- Home Assistant - Home Automation Platform
- Homepage - Simple and Customizable Dashboard for your Services
- Vikunja - Task Management Platform
- Trilium - OneNote-like Wiki and Notes Platform
- Firefly III - Budgeting and Transaction Tracking
- Muse - A Discord music bot
- n8n - An automation platform similar to
- PiHole - Network-wide Adblocking and DNS Management
- Jellyfin - Media organization and viewing
- Includes Jellyseerr
- Jellyfin Auto Collections - Automatically create collections in Jellyfin based on configurable lists
- Transmission - Torrenting download client
- Duplicati - File backup
- OpenLDAP - User credential backend
- Wireguard - VPN tunnel
- Authelia (part of stacks) - Reverse proxy forward auth middleware and SSO provider
- Grafana - Data visualization
- Speedtest Tracker - Continuous Network Speedtests
- Uptime Kama - Continuous uptime monitoring for websites, ports, and various other services
- KASM Workspaces - Container Streaming Platform
- Grocy - Groceries and household management
- KitchenOwl - Grocery and Recipe management
- Ntfy - Simple notification service
- Cloudflared - Cloudflare's Zero Trust tunnels
- Linkding - Bookmark management
- Wizarr - User management and onboarding for Jellyfin
- Jellystat - A page to get stats on your Jellyfin server usage
- Metube - A service to assist in downloading youtube videos
- Dozzle - A light weight service to view logs from docker containers
- Traggo - A simple time tracking service
- Ghost - A simple blogging platform
- Paperless-NGX - A PDF processing and management server
- IT-Tools - A collection of tools for Developers and IT professionals
- BookBounty - An application to extend Radarr to allow for automatic querying from Library Genesis
- Komf - A metadata service for Kavita
- LinkStack - A simple LinkTree like service for simple link sharing
- Pydio Cells - A simple file sync platform
- Baikal - A CalDAV and CardDAV server
- Vaultwarden - A password manager
- Stirling PDF - A collection of tools for working with PDFs
- ConvertX - A collection of tools for converting files
- Web-Check - A service to check the status of web services
- My-IP - A service to check the IP of the client and related information
- Databases
- CloudBeaver - A web-based database management tool
- SQLite-Browser - A GUI for SQLite databases
- MySQL - SQL based Database
- Postgres - SQL based Database
- Games
- Factorio
- Minecraft
- Valheim
- Terraria
- Project Zomboid
- The Forest
- Skyrim Together Reborn
- Palworld
These are more fully designed solutions rather than a service with a container or two.
- Media Consumption - A paired down media consumption stack
- System Monitoring - Exposes a Prometheus service pulling host machine and container stats
Core stacks that reflect my main service setups
- Infrastructure - Mostly services that support other services, like network infrastructure, databases, and media aquisition
- Main - Mostly daily driver services
Eventually, to simplify maintenance after playing with the cluster, I moved back to just hosting everything in Docker on my server or NAS based on the type of service it was (more critical stuff stayed on the NAS because it has data redundancy and it's less likely to get rebooted over the server)
Setting up an app in Docker that is proxied by Traefik in the cluster (yes this is kind of a weird hybrid set up for a service but we are self-hosting stuff here) requires two steps.
- Set up the Docker container on a host machine accessible by the cluster
- Use the provided
nonHostedTraefikRoute.yaml
k3s deployment to create a service that routes traffic to the container
I use unRAID for my NAS OS and adjusted the web UI port to live on 55080 instead of 80 so Traefik could bind to and control port 80 on that machine
If your Ubuntu install doesn't take up your whole drive for whatever reason try this
Eventually, I wanted to try Proxmox out...so I migrated all my Docker services to my NAS and turned the other server into a Proxmox host