What to run on your own server

It’s now about a year and a half since I bought a small, cheap Intel N100-equipped mini PC for use as home server. I’m happy to report that so far it has been running flawlessly, consuming just a few watts while doing so and being much faster than a Raspberry Pi. I’ve slowly added services, with most of them running as Docker container:

  • The network controller for my Omada network setup. This just works, so I only log into the web interface once in a while to check for new firmware, or when I need to assign a static IP address to a new device or change a port’s VLAN assignment. Overall I’m very happy with this setup and updates are straightforward.
  • Pi-Hole as ad-blocker. I don’t use the DHCP functionality as this is provided by the Omada router. Pi-Hole is doing a great job of blocking a lot of banner ads on all devices. It’s quite shocking to see how many DNS requests are ad-related – depending upon what is going on, 25 to 40% of all DNS requests get blocked. Pi-Hole is really thought through with a single command for updating and a clear web interface for administration and configuration.
  • Home Assistant. This ties together devices from various ecosystems (Ikea, Sonos, Siemens, Somfy), monitors energy production and consumption, and provides a single dashboard that I can control from all my devices instead of requiring a multitude of apps. It also shows weather and public transport information. Since it runs in a Docker container, upgrading requires just two commands. To me, Home Assistant is a really nice example of what open source software can accomplish, and I very much recommend it to anyone interested in home automation.
  • Frigate. We have a video doorbell and I use Frigate as NVR software. It connects to Home Assistant very well and is also run as Docker container. With just one camera and GPU acceleration, the CPU load is just a few percent and power consumption stays low. A Python script running as service automatically copies every clip to a backup location.
  • Portainer. This is a recent addition. Portainer provides a web interface for configuring and monitoring Docker containers. I intend to use it mostly for container health monitoring. I like that one instance can connect to agents on other systems, resulting in a single interface for monitoring containers on multiple systems.
  • Tailormap and Geoserver. Another recent addition. Tailormap is a Web GIS frontend that can connect to WMS, WFS, and tile servers. Don’t worry about dealing with OpenLayers or the limitations of Leaflet. Tailormap does it all, with an easy to use web interface for administration and a great viewer that includes stuff like measuring and opening Google Streetview. Geoserver is used for serving geographic data as WFS and WMS services. Both, including their respective PostgreSQL databases, are run as Docker containers. I use this mostly as a test environment and for always having a map of the Dutch railway network at hand without the need to have QGIS running.
  • A test environment with QuestDB and Grafana.

My home server is not accessible from outside the house, unless a Wireguard VPN connection is made. For services that I want to have accessible from the Internet, I use a virtual machine rented from a hosting provider. On this I run the following services:

  • A webserver. I’m old-school so it is Apache, not NGINX. Used mostly for serving Potree web viewers, but it can also provide downloads via HTTP and serve as reverse proxy.
  • An FTP server. Since I have to exchange a lot of data with customers, it’s often much easier to use FTP rather than some file-sharing website. Having your own FTP server with a couple of hundred GB of storage is really nice fot those cases. I use vFTPd, adding new users is quite simple even though it requires the command line.
  • Gitlab. Github is fine for public repositories, but I really wanted to self-host my versioning system. I don’t use any of the fancy stuff like bug tracking or actions, but it’s good to know that there’s always a backup and the possibility to go back in versions. Setup was a bit tricky because I wanted to use my existing Apache installation, but it has worked fine ever since and updates through apt.
  • ProjectSend. Most people here use Wetransfer, but I got annoyed by the (understandably) limited file size for the free plan. After looking around I settled upon ProjectSend. It’s not perfect, but it’s Ok when you are fine with first ZIPping multiple files into one.
  • My hour tracking and invoicing system. This is a must-have for a freelancer. I use Kimai and have been very happy with it. Self-hosting this saves me a lot of money over a commercial solution like Exact Online.
  • Vikunja. I’ve tried so many To-Do list and Kanban services: Evernote (a long time ago) Trello, Asana, Google Keep, Microsoft Teams, VTiger as CRM, and various Obsidian plugins. All of them had some limitations, especially when trying to stick to a free plan. Obsidian is great and I use it for most of my note-taking, but it left something to be desired when it comes to to-do lists and Kanban boards. Vikunja has filled this gap for me. I have a main Kanban board for to-dos, separate ones for larger projects, and another one that serves as CRM of sorts for tracking leads and such. It can even do Gantt charts, but I used GanttProject the last time I really needed a project management tool (which wasn’t even work related, but for remodeling a house). Vikunja runs as Docker container.
  • Tailormap and Geoserver. These are the production instances that, unlike my testing environment mentioned above, are accessible from everywhere. These also run in Docker containers, with Apache providing reverse proxy services for https access.
  • The Portainer Agent for providing data to the Portainer instance running on my local server.
  • A small Python script that monitors a Grafana instance on another server.
  • Nextcloud for file synchronization, so I no longer depend onto Google Drive and OneDrive.
  • A Minecraft server for my son. This is a toy project of ours and also runs as Docker container.
  • A MegaMek server, another Docker container.

So, as you can see, there are plenty of reasons to run your own server, whether it is a physical computer in your home or a virtual machine somewhere in the cloud. And you can save money this way, too – many of the services here are available in the cloud, but each of them comes with a subscription fee. Self-hosting them can be cheaper, while also giving you full control over your data and letting you learn about services, containerization and virtualization in the process.

Een reactie plaatsen

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *