tatertastic.org
Light
Guide 05

Build Your Own Server

A complete beginner's guide to setting up a self-hosted media server from scratch. You'll end up with Proxmox (or Docker on Windows), a Linux container, and Portainer — the foundation that everything else in Guide 06 gets built on top of. When you get stuck on any step, paste your error into an AI chat and ask for help. That's not cheating — that's how this stuff gets done.

2 paths — Proxmox (dedicated machine) or Windows 2–4 hours No Linux experience required
Use AI as your co-pilot. Every step in this guide has been written as clearly as possible, but self-hosting inevitably involves moments where something unexpected happens. When that happens: copy the exact error message, paste it into Claude or ChatGPT, and describe what you were doing. AI is genuinely good at debugging these issues. You don't need to understand everything — you just need to know how to ask for help.

STEP 01

Choose your hardware

You need a machine to run your server on. It can be an old PC, a mini PC, a NAS, or even a spare laptop. Here's what matters and what doesn't.

Absolute minimum specs (it'll work, but barely)

CPU
Dual-core, 64-bit
Any Intel Core i3/i5 from ~2012+ or AMD equivalent
RAM
8GB
Enough for Jellyfin + a few arr containers
Storage (OS)
120GB SSD
For the OS, Docker, and app configs
Storage (Media)
1TB+
Movies and shows add up fast — bigger is better
Network
Wired Ethernet
Wi-Fi works but wired is more reliable for streaming

A basic arr stack doesn't need much. But once you have a server running, you'll almost certainly want to add more to it over time. Here's what starts to demand more resources:

  • Jellyfin transcoding: If you're streaming to devices that can't play files natively (older TVs, web browsers), Jellyfin has to transcode in real-time. This is CPU-intensive. A modern CPU or a GPU with hardware transcoding support (Intel QuickSync, Nvidia NVENC) makes a huge difference.
  • Multiple simultaneous streams: Each stream adds CPU load. With 8GB RAM and a weak CPU you might max out at 1-2 streams without transcoding.
  • AI/ML containers: Things like Whisper (transcription), Immich (photo AI), or BirdNET (audio detection) need real CPU or GPU power.
  • More containers: Each container takes a bit of RAM. Once you have 15-20 containers running, 8GB starts to feel tight. 16-32GB is much more comfortable.
  • Recommended sweet spot: An Intel i5/i7 from ~2015+ with 16GB RAM, a 256GB+ SSD for apps, and a large HDD or NAS for media. This covers almost everything you'd want to run.
Best value option: A used mini PC (Beelink, Intel NUC, HP EliteDesk) from eBay or Facebook Marketplace. You can often get a capable machine with 16GB RAM and a 256GB SSD for $80–$150. Search for "mini PC i5" or "SFF PC i7" and filter by your budget.
STEP 02

Choose your path

There are two ways to get to the same destination. Both end with Docker and Portainer running and ready for Guide 06.

A
Proxmox on a dedicated machine
Recommended. Install a proper hypervisor on a dedicated PC, create a Linux container, and run Docker inside it. More powerful, more flexible, better long-term. Requires a spare machine.
B
Docker Desktop on Windows
Simpler to start. Install Docker Desktop on your existing Windows PC and run Portainer inside it. Works fine for getting started, but shares resources with your desktop and isn't ideal for always-on use.
Not sure which to pick? If you have a spare machine (old laptop, desktop, mini PC), go with Path A. If you only have one computer and want to try this out before committing, go with Path B.
PATH A — STEP 1

Install Proxmox

Proxmox is a free, open-source hypervisor — software that lets you run multiple virtual machines and containers on one physical machine. Think of it as the operating system for your server.

This will erase the machine. Installing Proxmox wipes the target drive completely. Make sure there's nothing on the machine you need to keep.

What you'll need

  • A USB drive (8GB or larger) — this becomes the installer
  • A second computer to download the ISO and write it to the USB
  • A monitor and keyboard connected to the server machine (just for the install)
  • An ethernet cable connecting the server to your router
  1. 1 Download the Proxmox VE ISO from proxmox.com/downloads. Get the latest stable version (the big green download button).
  2. 2 Download Rufus (Windows) or Balena Etcher (Mac/Windows) to write the ISO to your USB drive. Both are free.
  3. 3 Open Rufus or Etcher, select the Proxmox ISO and your USB drive, and click Flash/Write. This takes a few minutes.
  4. 4 Plug the USB into your server machine and boot from it. You may need to press F2, F12, Del, or Esc during startup to enter the boot menu — the key varies by motherboard, it'll usually show on screen briefly when the machine powers on.
  5. 5 Select the USB drive from the boot menu and the Proxmox installer will start.
  6. 6 Follow the installer. Key settings:
    Target harddisk: select your SSD (this is where Proxmox itself installs)
    Country/Timezone: set yours
    Password: set a strong password and write it down — this is your root password
    Email: any email address
    Network: leave the defaults, it will auto-detect your IP address
  7. 7 Click Install. The installer runs for a few minutes, then the machine reboots. Remove the USB drive when prompted.
  8. 8 When the machine boots up, it will show a message like: https://192.168.1.X:8006 — write down that IP address and port. That's your Proxmox web interface. Open it in a browser on another computer on the same network.
  9. 9 Log in with username root and the password you set. You'll see a security warning about the SSL certificate — click through it, it's fine for a local server.
Proxmox subscription nag: You'll see a popup saying you don't have a valid subscription. Click OK to dismiss it — Proxmox is completely free to use without a subscription. The paid subscription just gives you access to enterprise update repositories which you don't need.
PATH A — STEP 2

Create a Linux container (LXC)

Instead of running Docker directly on Proxmox, you'll create a lightweight Linux container inside Proxmox and run Docker there. This keeps things organized and lets you add more containers for other projects later.

  1. 1 In the Proxmox web interface, click on your node name in the left sidebar (it's usually the name of your machine).
  2. 2 Click Shell to open a terminal. You'll run all the setup commands here.
  3. 3 First, download a container template. Run this command to get the Debian 12 template:
    pveam update && pveam download local debian-12-standard_12.7-1_amd64.tar.zst
    Wait for it to finish downloading.
  4. 4 Create the LXC container. Replace YOUR_PASSWORD with a password you'll use to log into the container:
    pct create 100 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \ --hostname docker \ --password YOUR_PASSWORD \ --cores 4 \ --memory 8192 \ --swap 2048 \ --rootfs local-lvm:32 \ --net0 name=eth0,bridge=vmbr0,ip=dhcp \ --unprivileged 1 \ --features nesting=1
  5. 5 Start the container:
    pct start 100
  6. 6 Open the container's console. In the left sidebar, click 100 (docker), then click Console. Log in as root with the password you set.
  7. 7 Update the container's packages:
    apt update && apt upgrade -y
What are those numbers? The container is assigned ID 100 — that's just its name within Proxmox. --cores 4 and --memory 8192 give it 4 CPU cores and 8GB RAM. Adjust these based on what your machine has available. --rootfs local-lvm:32 gives it a 32GB virtual disk for the OS and app configs.
PATH B

Docker Desktop on Windows

If you're going the Windows route, you'll install Docker Desktop which gives you a full Docker environment running on your existing PC. You skip the Proxmox and LXC steps entirely and go straight to Portainer.

Windows 10 or 11 required. Docker Desktop requires Windows 10 Home/Pro (build 19041 or later) or Windows 11. It also requires virtualization to be enabled in your BIOS — most modern machines have this on by default, but if Docker fails to start, search for "enable virtualization [your PC model]" for instructions.
  1. 1 Download Docker Desktop from docker.com/products/docker-desktop and run the installer. Accept all defaults.
  2. 2 Restart your computer when prompted.
  3. 3 Open Docker Desktop. Wait for it to finish starting up — the whale icon in your taskbar should stop animating when it's ready.
  4. 4 Open PowerShell (search for it in the Start menu, right-click and run as Administrator).
  5. 5 Verify Docker is working by running:
    docker --version
    You should see something like Docker version 24.x.x. If you get an error, make sure Docker Desktop is open and running.
Skip to Portainer. Windows users skip the "Install Docker" section below and go straight to Step 04 — Install Portainer. Docker is already installed via Docker Desktop.
STEP 03 — PROXMOX PATH ONLY

Install Docker inside the container

Windows users skip this — Docker Desktop already did this for you. Proxmox users: run these commands inside your LXC container console.

  1. 1 Install prerequisites:
    apt install -y ca-certificates curl gnupg lsb-release
  2. 2 Add Docker's official GPG key:
    install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg chmod a+r /etc/apt/keyrings/docker.gpg
  3. 3 Add the Docker repository:
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
  4. 4 Install Docker:
    apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  5. 5 Verify Docker installed correctly:
    docker --version
    You should see a version number. If you get "command not found", something went wrong — paste the error into an AI chat.
  6. 6 Enable Docker to start automatically:
    systemctl enable docker && systemctl start docker
STEP 04

Install Portainer

Portainer is a web-based UI for managing Docker. Instead of typing commands every time you want to deploy or update a container, you do it through a clean web interface. This is where you'll spend most of your time when setting up Guide 06.

Proxmox users: run these in the LXC console. Windows users: run these in PowerShell (as Administrator).

  1. 1 Create a volume for Portainer's data:
    docker volume create portainer_data
  2. 2 Install and start Portainer:
    docker run -d \ -p 8000:8000 \ -p 9443:9443 \ --name portainer \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest
  3. 3 Wait 30 seconds for Portainer to start, then open it in your browser:

    Proxmox users: go to https://[YOUR-CONTAINER-IP]:9443 — find the IP by running ip addr in the container console and looking for the number after inet on the eth0 line.

    Windows users: go to https://localhost:9443
  4. 4 You'll see a security warning about the SSL certificate — click through it (Advanced → Proceed). This is normal for a local server.
  5. 5 Portainer will ask you to create an admin account. Set a username and a strong password. Write these down — you'll need them every time you log in.
  6. 6 On the next screen, click Get Started and then click on the local environment. You're now inside Portainer and can see your Docker environment.
Bookmark Portainer. You'll be opening it constantly. Bookmark https://[your-ip]:9443 in your browser right now.
DONE ✓

You're ready for Guide 06

You now have a working Docker environment managed by Portainer. The server is running but doesn't do anything useful yet — that changes in Guide 06, where you'll deploy the actual media stack on top of this foundation.

What you have so far

  • Proxmox (Path A) or Docker Desktop (Path B) — the foundation layer
  • Docker — the container runtime that runs everything
  • Portainer — your web interface for managing containers

Before you move on — write these down

  • Your server's IP address (the one you used to access Portainer)
  • Your Portainer admin username and password
  • Your Proxmox root password (Path A only)
  • Your LXC container password (Path A only)

Head to Guide 06 — Setting Up the Arr Stack to continue.


TROUBLESHOOTING

Common issues

Proxmox

  • ?Can't boot from USB: Make sure secure boot is disabled in BIOS. Search for "disable secure boot [your motherboard model]" for instructions.
  • ?Proxmox installer can't find a drive: The drive might not be AHCI mode. Go into BIOS and look for storage settings — switch from RAID or IDE mode to AHCI.
  • ?Can't access Proxmox web UI: Make sure you're using https:// not http://, and that you're on the same network as the server. Try pinging the IP first.
  • ?LXC container won't start: Check that virtualization/nesting is enabled. In Proxmox shell run pct set 100 --features nesting=1 then try starting again.

Docker / Portainer

  • ?Docker command not found after install: Try which docker — if it returns nothing, the install may have failed. Re-run the install commands from Step 03.
  • ?Portainer won't start / port in use: Something else is using port 9443. Run docker ps to see what's running, or try port 9444 instead.
  • ?Can't access Portainer from another device: Make sure your firewall isn't blocking the port. On Debian run ufw allow 9443 if you have UFW installed.
  • ?Windows Docker Desktop won't start: Virtualization may be disabled in BIOS. Search for "enable Intel VT-x" or "enable AMD-V" for your PC model.
  • ?Something else: Copy the exact error message and paste it into Claude or ChatGPT. Describe what step you were on. This genuinely works.