mzrimsek / server-config

A repo of files to set up my local server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

server-config

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.

Services

  • Portainer - Docker Container and Kubernetes Cluster Management and Orchestration
  • Traefik - Container-focused Reverse Proxy
  • Jenkins - Customizable Build Server
  • Postgres - SQL based Database
  • 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
  • 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
  • CloudBeaver - A web-based database management tool
  • Games
    • Factorio
    • Minecraft
    • Valheim
    • Terraria
    • Project Zomboid
    • The Forest
    • Skyrim Together Reborn
    • Palworld

Stacks

These are more fully designed solutions rather than a service with a container or two.

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

Notes

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.

  1. Set up the Docker container on a host machine accessible by the cluster
  2. 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

About

A repo of files to set up my local server

License:MIT License


Languages

Language:Shell 53.5%Language:Dockerfile 43.0%Language:Vim Script 3.5%