Mini server update
It's been a while since I first introduced my mini Linux server on this site, and a lot has changed in the meantime. I switched to running my services in Docker containers a few months after the original post, then to LXC (Linux Containers) running on the hypervisor OS Proxmox from summer onwards, and more recently back to Docker with Arch as the host system.
I settled on Arch as I wanted a rolling release distribution that could be run headless, had low system requirements and strong community support. For production environments, a distribution with an emphasis on stability would make more sense, like Debian or OpenSUSE, but I've had no issues yet when upgrading packages and I find it more fun to be on the bleeding edge anyway since this server doesn't need to have flawless uptime.
Despite Arch's reputation, it was easy to install thanks to the excellent documentation available in the wiki. Once booted, I was impressed with the low memory usage even compared to Ubuntu Server 18.10, though I soon discovered that basic features like sudo and an SSH server would need to be installed and configured manually. However, the wiki made this fairly quick to deal with and I was up and running with Docker soon after.
Here's a list of what I'm currently running in Docker containers:
Containers are great because they have such little RAM overhead compared to VMs. Though 2GB of memory is a very small amount for a dedicated x64 server running multiple services, since each container is so lightweight it's only sitting at ~560MB usage at the time of writing this post. It would be impossible to replicate this setup on VMs using 2GB of RAM.
So, what's next for my setup? I've got a Digital TV USB dongle on order from China, which I'll be using to track nearby aircraft and upload the data to Flightaware/FlightRadar24 (you can get free membership to their sites by sharing flight information). I'll also keep tweaking my Home Assistant automation conditions to refine them further as I discover what works and what doesn't.
I settled on Arch as I wanted a rolling release distribution that could be run headless, had low system requirements and strong community support. For production environments, a distribution with an emphasis on stability would make more sense, like Debian or OpenSUSE, but I've had no issues yet when upgrading packages and I find it more fun to be on the bleeding edge anyway since this server doesn't need to have flawless uptime.
Despite Arch's reputation, it was easy to install thanks to the excellent documentation available in the wiki. Once booted, I was impressed with the low memory usage even compared to Ubuntu Server 18.10, though I soon discovered that basic features like sudo and an SSH server would need to be installed and configured manually. However, the wiki made this fairly quick to deal with and I was up and running with Docker soon after.
Here's a list of what I'm currently running in Docker containers:
- Watchtower -- Automatically pulls updated images for running containers when a new version is available, will stop and re-run containers with the same "docker run" command as was originally used. Doesn't have a web UI but doesn't need it anyway.
- Transmission -- Torrent client that I'm using to seed Linux ISOs (no, really).
- Pihole -- Ad blocking and caching DNS server. I would highly recommend using this even if you need to buy a Raspberry Pi for it.
- Nextcloud -- Google drive alternative. I'm using it for automated backups of important files to a SATA SSD connected to the server via USB, using the Nextcloud client from the Solus repo on my PCs. The Nextcloud app for Android has issues with automatic syncing of folders, so I'm using FolderSync for scheduled backups of specific folders. I'm using a couple of regular expressions to automatically tag certain files when they are uploaded so that they can be deleted after a set amount of time (after becoming outdated).
- Home Assistant -- Automates my single Xiaomi Yeelight bulb (a bit ridiculous but it's fun). I'm using the Flux component so that it transitions to orange to reduce eye strain and prevent sleeplessness. It's automated using time triggers as well as an Nmap scan on my desktop to determine if it is online.
- Bitwarden_RS -- Password manager which has replaced Lastpass for me. It obviously isn't available outside of the network but devices will store offline copies of the database and then sync with the server so this is not an issue.
- Playmaker -- This one is very niche. Since my phone is running Lineage OS without Google Play Services, I don't have access to the Play store. There are some alternatives which allow you to download and install apps from Google Play (Yalp, Aurora stores) but they don't have the features of Fdroid (namely the ability to operate in the background using a root addon). Playmaker can download apps and serve them to Fdroid using a private repository. This can definitely be accomplished 'manually' using gplaycli and fdroidserver (which is what the container uses) but Playmaker is much easier and has a web interface. It also has the added benefit of caching apps so they only need to be downloaded once, not on a per-device basis (just like a Steam cache).
Containers are great because they have such little RAM overhead compared to VMs. Though 2GB of memory is a very small amount for a dedicated x64 server running multiple services, since each container is so lightweight it's only sitting at ~560MB usage at the time of writing this post. It would be impossible to replicate this setup on VMs using 2GB of RAM.
So, what's next for my setup? I've got a Digital TV USB dongle on order from China, which I'll be using to track nearby aircraft and upload the data to Flightaware/FlightRadar24 (you can get free membership to their sites by sharing flight information). I'll also keep tweaking my Home Assistant automation conditions to refine them further as I discover what works and what doesn't.
Comments
Post a Comment