↓ Skip to main content

Home Server Learning Path: From a 2GB STB with CasaOS to Proxmox

Zarvelion Zynji
Author
Zarvelion Zynji
Tech enthusiasts (self-proclaimed). Gaming addict (diagnosed). Anime simp (no regrets). I turn my hyperfixations into content—welcome to the chaos.
Table of Contents

This is not a step-by-step tutorial — it’s my learning path: the story of teaching myself home servers and self-hosting from absolute zero. If you’re just getting started and wondering “what should I learn first?”, I hope this can be your roadmap. It’s just my opinion and personal experience, not gospel.

If you don’t even know what a home server is yet, read my previous article first so the context makes sense:


🖥️ Phase 0 — A 2GB STB with CasaOS: Getting Your Feet Wet
#

It all started with a used HG680P set-top box with only 2GB of RAM. I installed CasaOS on it and… honestly, I had no idea what I was doing. No idea what Docker was, no idea how file sharing (NAS) worked, nothing. I just clicked around the web dashboard installing apps.

Here’s the funny part: without realizing it, those apps were actually running inside Docker. I learned how to install apps through a UI without understanding what was happening under the hood. For storage, I had a 32GB flash drive — good enough for small files.

What I learned in this phase:

  • How a CasaOS-style app store works (turns out it’s a wrapper around Docker)
  • Basic storage concepts: plug in a drive, share it, use it
  • That even cheap hardware can become a server

💡 Phase 0 tips
#

  • Don’t wait for good hardware. A used STB or an old flash drive is enough to start. What matters is starting.
  • STBs running Armbian have plenty of fun stories: turn one into a printer server (CUPS) or set up automatic reboots to keep it from slowing down.
  • If the CasaOS-style UI feels heavy, there’s a minimal alternative: Portainer. It’s also a great bridge to the next phase.
This phase matters not because of the technology, but because it proves you can do it. Once you have a server running 24/7 at home, your motivation to learn goes up on its own.

💻 Phase 1 — A Potato Laptop Running Debian: The Real Learning Starts
#

Turns out there was an old Intel Celeron N4000 laptop with 4GB of RAM lying around. It’s a total potato, so I decided to install a very light, bloatware-free OS: Debian. This is where everything started to click.

In this phase I focused on the two pillars — Linux basics and Docker — because I believe these are the fundamentals of everything in home servers and self-hosting. Once these stick, everything else follows.

🐧 Linux Basics: The Foundation of Everything
#

This is the most important part. You don’t need to be an expert, just understand these things:

1. SSH — accessing the server without a GUI

A server has no screen, so you connect over the command line from your laptop:

sudo apt install openssh-server
sudo systemctl enable --now ssh

Then from your laptop: ssh youruser@server-ip. Once you can do this, a whole new world opens up. If you really can’t stand staring at a terminal, install Cockpit to get a GUI dashboard in your browser.

2. Users & permissions — who gets to do what

Linux is strict about this. Learn the basics:

  • adduser username — create a new user
  • usermod -aG sudo username — grant admin (sudo) access
  • ls -l — inspect file permissions (rwxr-xr-x, etc.)
  • chmod 755 file — change permissions
  • chown user:group file — change ownership
Don’t make a habit of logging in as root for everyday tasks. Use a normal user + sudo. This habit will save you later — on Proxmox, on production servers, everywhere.

3. Networking — making the server reachable

  • ip addr — check the server’s IP
  • ip link — list interfaces (eth0, wlan0, etc.)
  • Set a static IP so the server’s address never changes after a reboot (crucial if you plan remote access or a reverse proxy)
  • Want to measure your real LAN speed? Try iperf3

4. Storage — handling disks and fstab

5. File management — cd, ls, cp, mv, rm, and an editor: nano (most beginner-friendly) or vim (if you’re feeling brave).

💡 Linux basics tips
#

  • Get comfortable with man — man ls, man chmod, etc. The documentation lives right on your server.
  • Create aliases for frequent commands: alias up="sudo apt update && sudo apt upgrade".
  • Write down every change you make. Trust me, a month from now you won’t remember why your nginx.conf looks different from the default.

📁 SMB — Home-Grown NAS
#

Once I could SSH and understand files, the next step was SMB for file sharing/NAS. Why SMB? It’s lightweight, native on Windows, and accessible from smartphones too. No need to pay for Google Drive when your data lives at home.

There’s a great post that fits this phase perfectly — a budget NAS approach:

Short version: sometimes the simplest solution outlasts the feature-packed one.

🐳 Docker & Docker Compose — The Game Changer
#

This made life dramatically easier. The concept: apps are packaged into containers that include everything they need (the app plus its dependencies), so you just run them — no more installing dependencies one by one on the host.

Essential commands to memorize:

docker ps                    # list running containers
docker ps -a                 # list all containers, including stopped ones
docker stop containername    # stop a container
docker start containername   # start it again
docker logs -f containername # view logs (a lifesaver)
docker exec -it containername bash  # get a shell inside the container

But the real game changer is Docker Compose: all configuration goes into a single docker-compose.yml file, and docker compose up -d brings the app up. Moving servers? Just copy the file. This is what made me confident enough to run a dozen apps.

Some apps I’ve written about using Compose + Portainer: JDownloader2 and FileFlows.

💡 Docker tips
#

  • Always name your containers (--name or container_name:) so they’re easy to manage.
  • Use volumes for data — never store data inside the container. Containers are “temporary”; volumes are “permanent”.
  • Set a restart policy: restart: unless-stopped so apps come back up automatically after a server reboot.
  • Never expose docker.sock to a container you don’t trust 100%. That’s equivalent to giving it root access to your server.

🌐 VPN — Access From Outside Your Network
#

Interesting part of my journey: my ISP uses CGNAT and blocks Tailscale. WireGuard was out of the question too, since I don’t have a public IP. My solution? Netbird — free, plenty of features, and it punches through CGNAT smoothly.

If your ISP gives you a public IP, Tailscale or WireGuard are great options. The point is: don’t open ports to the internet before you understand the risks. VPN first; port forwarding later (if ever).

🌐 Phase 2 — Reverse Proxy: Traefik
#

As the number of apps grew, access got messy: every app on a different port, no SSL, separate logins for every dashboard. The fix is a reverse proxy — one entry point, routing by subdomain, plus automatic SSL.

I use Traefik, and I wrote about it in detail here:

What this phase gave me:

  • Free SSL (Let’s Encrypt) that renews automatically — even without opening port 80 (Cloudflare DNS-01) — perfect for CGNAT users like me
  • One entry point: app1.yourdomain.com, app2.yourdomain.com, etc. — no more memorizing ports
  • A cool bonus: scale-to-zero with Sablier + Traefik to automatically stop rarely-used containers and save RAM

🧩 Phase 3 — Hardware Upgrade & the Move to Proxmox
#

After almost a year, the apps kept piling up and the old hardware (4GB RAM) was struggling. Time to upgrade: a new machine with an Intel Core i3-6100 and 16GB of RAM. Still only 2 cores, but plenty capable for many apps.

At the same time, I migrated both machines to Proxmox VE. Why? Two main reasons:

  1. Community scripts — installing apps/LXCs/VMs became much easier: grab a script from community-scripts.org, run it, done.
  2. Proxmox Backup Server (PBS) — backups became much easier and centralized.

Because I’d already learned Debian (CLI, users, networking, fstab) and Docker (containerization concepts), Proxmox — which has a GUI and helper scripts — felt much easier. I just had to learn the new settings and terminology.

🧠 Key concepts to understand in Proxmox
#

Concept Short explanation
VM (Virtual Machine) Full virtualization — its own kernel. Heavier, but strongest isolation.
LXC (Container) Like Docker, shares the host kernel. Lightweight, great for homelab apps.
Storage pool Where disks/ISOs live (local, local-lvm, NFS, etc.).
Template/ISO Base images for creating new VMs/LXCs.
Snapshot A point-in-time photo of a VM/LXC — roll back if something breaks.
Backup (PBS) Scheduled backups to a separate backup server.

💡 Proxmox tips
#

  • Don’t jump straight to Proxmox without learning Linux first. Many people tell beginners to go straight to Proxmox, but in my experience that just confuses you — you’d be learning two things at once (virtualization + Linux). Take it one at a time.
  • Put PBS on separate hardware if you can. A backup stored on the same server is only half a backup.
  • Use snapshots before updates — if an update breaks something, roll back in seconds.
  • Set up a clean naming convention for your VMs/LXCs (lxc-arr, vm-gaming, etc.) before the numbers grow.

💡 General Tips for Learning Self-Taught
#

These are the most valuable takeaways from all the phases above:

  1. Learn by building. Don’t just read docs — install, break, fix. Errors are the best teachers.
  2. Document everything. Keep notes on configs, commands you used, and decisions you made. This blog was born from that habit.
  3. Back up configs before tinkering. Config files are small but precious. cp file file.bak is enough to start.
  4. A 24/7 server shows up on your power bill. To save power, check out PowerTOP & hd-idle.
  5. Don’t expose everything to the internet. VPN for personal access, reverse proxy + SSL for what really needs to be public.
  6. Use .env files for secrets (API keys, passwords) — never hardcode them in compose files or configs.
  7. One problem, one search. Getting confused while learning self-taught is normal, but don’t give up at the first error — check the logs first (docker logs, journalctl -xe), then search.

❓ FAQ
#

Do I need to learn Linux before Proxmox? Not strictly, but it helps a lot. In my experience, because I already understood the CLI, users/permissions, and container concepts from Docker, learning Proxmox was much faster. Starting Proxmox from zero means learning two things at once, and that’s heavy.

What’s the minimum hardware to start? A used 2GB STB is enough to start (see Phase 0 😄). Prefer something roomier? An old 4GB laptop with Debian is already very capable. Don’t buy an expensive server before you need one.

My ISP uses CGNAT. How do I access my server from outside? Use a mesh VPN like Netbird or Tailscale, or Cloudflare Tunnel. Avoid direct port forwarding — it won’t punch through CGNAT and is a security risk anyway.

What’s the difference between Docker, LXC, and a VM? Docker = application containers (lightest, runs on top of an OS). LXC = system containers (own user-space, shares the host kernel). VM = full virtualization (own kernel, heaviest but most isolated). Use what fits the need.

When should I upgrade to Proxmox? When your hardware starts feeling full, you have more than one server, or you need proper isolation and organized backups. If you have one happy server, there’s no obligation to move.

Where do I start as a self-taught learner? Start with what you use daily: build a NAS first, install your favorite apps, then branch out. Official docs (Debian, Docker, the Proxmox wiki) plus YouTube and blogs like this one are enough to get you going.


🛠️ Quick Troubleshooting
#

Symptom Likely cause Fix
SSH connection refused sshd not running or a different port sudo systemctl status ssh, check ss -tlnp
Permission denied when accessing files Wrong permissions/ownership ls -l, then fix with chmod/chown
Mount disappears after reboot Not in fstab Add an entry to /etc/fstab, test with mount -a
Container keeps restarting Bad config (port, env, image) docker logs containername, read the error
Can’t reach the server from outside CGNAT / bad port forwarding Use a mesh VPN (Netbird/Tailscale) or Cloudflare Tunnel
VM/LXC fails to start on Proxmox Storage full / not enough resources pvesm status, check disks, prune old snapshots
Traefik 502 Bad Gateway Containers on different Docker networks Put the app and Traefik on the same Docker network

Wrapping Up
#

To summarize, my learning path looks like this: CasaOS on an STB (getting started) → Debian on a potato laptop (Linux basics + SMB + Docker + VPN) → Traefik (reverse proxy & SSL) → Proxmox (virtualization & backups). Each phase builds on the one before it.

What matters most isn’t the hardware — it’s consistently learning by building. No need to rush, no need to buy expensive gear, and no need to be embarrassed about starting small. Your first server doesn’t have to be perfect — it just has to exist.

Got your own experiences, questions, or a different learning path? Drop them in the comments. Who knows, it might become the next article 🚀

Happy homelabbing!

Related


Load Comments