top of page

Docker Home Server

I wanted to create a home server for my family to facilitate services such as file sharing, archiving shows, movies, and music. This endeavor provided me with the opportunity to learn about setup and management of a server. The process included researching home servers, troubleshooting issues, reviewing documentation, and watching videos on setting up a home server.

Dell_OptiPlex_3060_SFF_main.jpg

Step 1

Preparing a Computer for Use

I found a spare Dell Optiplex 3060 SFF in my basement that was not in use, and I decided repurpose it as a server. Initially running Windows 10, I opted to upgrade the operating system to Windows 11 to ensure it received the latest and security updates. This upgrade will enhance its performance and security as a server.

Step 2

Installing Docker

​There are various methods to configure a server, such as utilizing dedicated home server operating systems like Unraid. I opted to retain the existing operating system and installed Docker Desktop (container software) to create containers that deliver the required services.

Containers are software packages that facilitate the execution of applications. They are typically associated with a port number (identifies a service).

Docker Desktop is container software that enables the provisioning of these containers.

Docker-Symbol.png
dockge.jpg
uptimekuma.png

Step 3

Dockge and Uptime Kuma

The initial setup will involve configuring two containers: Dockge and Uptime Kuma. These containers provide enhanced monitoring capabilities for Docker environments.

Dockge is a web application designed to facilitate the creation, editing, and deletion of compose.yaml files, which serve as configuration templates for containers.

Uptime Kuma is an web application that effectively monitors the uptime of websites, Docker containers, etc.

Step 4

Cloudflare Tunnels

Accessing services on containers with web interfaces, such as Dockge and Uptime Kuma, can be cumbersome due to the need to enter the IP address and port number. To streamline this process, I registered a domain name with Cloudflare to host the home server's services online via Cloudflare tunnels. A dedicated Cloudflare container was created to facilitate connections to my Docker services.

Utilizing Cloudflare as a web hosting provider also enhances security by functioning as a reverse proxy, which conceals the home server while handling client requests.

Cloudflare-logo.png

Step 5

nextcloud-logo.jpeg

File Hosting

For file hosting capabilities, I installed the Nextcloud All-in-One (AIO) container. Nextcloud offers functionality comparable to Dropbox, Office 365, and Google Drive, allowing for the storage of documents, photos, and videos.

While there are various installation methods for Nextcloud, I selected the AIO version due to its simplicity in deployment and management.

Step 6

Multimedia Stack

In the event that me or my family wanted to archive music, movies, and TV shows, I created containers such as Plex, Sonarr, Radarr, and Lidarr.

Plex is a streaming media service which allows users to stream and organize personal media collections.

Sonarr, Radarr, and Lidarr are applications designed to automate the management of personal media collections. For instance, Sonarr can monitor and track any missing episodes within a collection.

sonarr.png
radarr.png
lidarr.png
plex.jpeg

Step 7

bookstack.png
SnipeIT.jpg
calibre-web.png
fireflyiii.jpeg

Misc. Containers

Great thing about containers is that there are many types of containers designed for specific use cases. I proceeded to install other containers that seemed interesting. Here are a few examples:

​In the future, I plan on adding and experimenting with more containers based on my needs.

Step 8

Backups & Updates

One of the key aspects of effective server maintenance is ensuring that the server is regularly updated and backed up. My home server setup incorporates multiple storage devices, allowing me to configure automatic backups to one of these devices. This approach facilitates data recovery in the of data loss.

Additionally, I have implemented a container named Watchtower, which automatically updates the containers running on the server. This automation guarantees the seamless operation of the services on my home server.

watchtower-logo.png
Image by Patrick Lindenberg

Image courtesy of Patrick Lindenberg on Unsplash
https://unsplash.com/@heapdump

Closing Remarks

Although there are additional factors to consider, such as implementing redundancy to ensure server uptime, I am pleased with the current configuration of my home server. Nonetheless, there is still much to learn about managing a server. A key takeaway from this project is the importance of thorough documentation, as it is easy to overlook details.

bottom of page