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)
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.
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.
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.
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 Download the Proxmox VE ISO from proxmox.com/downloads. Get the latest stable version (the big green download button).
- 2 Download Rufus (Windows) or Balena Etcher (Mac/Windows) to write the ISO to your USB drive. Both are free.
- 3 Open Rufus or Etcher, select the Proxmox ISO and your USB drive, and click Flash/Write. This takes a few minutes.
-
4
Plug the USB into your server machine and boot from it. You may need to press
F2,F12,Del, orEscduring startup to enter the boot menu — the key varies by motherboard, it'll usually show on screen briefly when the machine powers on. - 5 Select the USB drive from the boot menu and the Proxmox installer will start.
-
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 Click Install. The installer runs for a few minutes, then the machine reboots. Remove the USB drive when prompted.
-
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
Log in with username
rootand the password you set. You'll see a security warning about the SSL certificate — click through it, it's fine for a local server.
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 In the Proxmox web interface, click on your node name in the left sidebar (it's usually the name of your machine).
- 2 Click Shell to open a terminal. You'll run all the setup commands here.
-
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.zstWait for it to finish downloading.
-
4
Create the LXC container. Replace
YOUR_PASSWORDwith 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
Start the container:
pct start 100
-
6
Open the container's console. In the left sidebar, click 100 (docker), then click Console. Log in as
rootwith the password you set. -
7
Update the container's packages:
apt update && apt upgrade -y
--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.
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.
- 1 Download Docker Desktop from docker.com/products/docker-desktop and run the installer. Accept all defaults.
- 2 Restart your computer when prompted.
- 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 Open PowerShell (search for it in the Start menu, right-click and run as Administrator).
-
5
Verify Docker is working by running:
docker --versionYou should see something like
Docker version 24.x.x. If you get an error, make sure Docker Desktop is open and running.
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
Install prerequisites:
apt install -y ca-certificates curl gnupg lsb-release
-
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
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
Install Docker:
apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
-
5
Verify Docker installed correctly:
docker --versionYou should see a version number. If you get "command not found", something went wrong — paste the error into an AI chat.
-
6
Enable Docker to start automatically:
systemctl enable docker && systemctl start docker
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
Create a volume for Portainer's data:
docker volume create portainer_data
-
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
Wait 30 seconds for Portainer to start, then open it in your browser:
Proxmox users: go tohttps://[YOUR-CONTAINER-IP]:9443— find the IP by runningip addrin the container console and looking for the number afterineton theeth0line.
Windows users: go tohttps://localhost:9443 - 4 You'll see a security warning about the SSL certificate — click through it (Advanced → Proceed). This is normal for a local server.
- 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 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.
https://[your-ip]:9443 in your browser right now.
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.
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://nothttp://, 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=1then 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 psto 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 9443if 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.