Home labs are systems or dedicated deployments made to learn and improve skills, such as being a sysadmin, running various services to improve your Linux skills, or just tinkering around and discovering new things (this is my reason). Whatever your reason may be, this topic is very intriguing and can help you learn a lot. In this blog, I will share what I did and what I learned from this.
\ For this implementation I don't want an overkill enterprise-grade implementation that no one can replicate, what I want is a simple implementation that can be copied and used for simple tasks. I am doing this to learn about the different tech involved for a better and more powerful future build for my localized AI training and research use case.
\ In this implementation, I want to:
\
\ As you can see I only have 2 backup options which are SMB and PhotoPrism, I know there are several great backup options for me to deploy but as of now these 2 are more than enough and I have other ways of automating my backup tasks.
What I am using?I am using an HP EliteDesk 800 G2 DM 35W with Intel Core I5 6500T and 16GB of RAM with a Geekbench single-core score of 1083 and multi-core score of 2898. It's not that powerful but powerful enough for my current goals. I bought this refurbished so I was able to get this for dirt cheap.
The Initial setupFor this implementation I used the Ubuntu server 24.04 LTS image, you can use the Windows server image or Red Hat instead. If you have never installed a Ubuntu server instance before you can check this great setup guild link. Once you have installed Ubuntu the next step will be installing docker, make sure you do NOT install docker from snap and instead install docker from the official docker repo, as Portainer has issues with the snap docker (no clue why).
Installing DockerI don't have any specific reason to run even the docker installation on my own there are specialized OS for such deployments such as Unraid, truenas, etc. But all I want to do is test, I don't even have a raid setup in this system as this is probably an extra just-in-case copy of my data.
\ If you are replicating this then it would be wise to have 3 storage drives installed and have at least a RAID 1 configuration for the least possible guarantee of data security.
\ Docker install steps:
sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update\ After the above command is completed execution you can run this command to install docker:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\
Installing PortainerPortainer will be our interface for managing docker deployments and also make it easy and intuitive for deploying new stacks of services.
9443 and 8000 both can be used to interface locally with Portainer it won’t matter much as we will be using tunneling for the final public interfacing.
Creating an SMB shareSMB is for my large file backup storage, I will be accessing this only on my local network and not allowing it to be accessed publicly over the internet.
\
Cloudflare zerotrust is a great way of running private services to the public internet without any issues or hassles with port-forwarding unless you running SMB or a VPN client which I was not able to get to work, regardless this system can allow you to route all your traffic in a very easy way. I won’t go into much detail about the initial setup and all for zero-trust you can check NetworkChuck’s videos for that: Link I installed the Cloudflare tunneling software via the dpkg package instead of a docker instance as it did not work with a docker instance (have no clue why? it’s probably me). The command I used:
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && sudo dpkg -i cloudflared.deb && sudo cloudflared service install <All Rights Reserved. Copyright , Central Coast Communications, Inc.