Why a Used RTX 3090 Beats Faster Clocks in an Always-On Ollama Homelab Server A homelab build guide recommends a used Nvidia RTX 3090 with 24GB of GDDR6X and 936 GB/s of memory bandwidth over newer cards with faster clocks for an always-on Ollama server, citing Compute Market's build guide, which lists the card at $699-$999. The guide argues LLM decoding is memory-bound, so it ranks GPUs by capacity and bandwidth first, and notes a 70B model quantized to 4-bit needs roughly 40GB, requiring two 24GB cards. The baseline parts list pairs the GPU with an AMD Ryzen 7 7700, 64GB of DDR5, a 2TB NVMe SSD, a 1000W 80+ Gold PSU and Ubuntu Server 24.04 LTS, with MyAIHardware's 2026 guide splitting builds into three tiers from $1.5k to $18k. The fan noise is the first thing you notice. Not loud. A low, steady push of air from a case that never gets turned off. That’s the point of a homelab AI server. It’s always there. Compute Market’s build guide frames it well https://www.compute-market.com/blog/home-ai-server-build-guide-2026 . Run Ollama on your desktop and the model dies when you shut the lid. A dedicated box serves every device on your network, around the clock. Laptop, phone, tablet, agents. That’s the build. Here’s how we’d think about it, and then how we’d put it together. Pick the tier before the parts MyAIHardware’s 2026 guide splits builds into three tiers, from $1.5k to $18k https://www.myaihardware.com/ai-homelab/ . Their own caveat is worth repeating: it’s a planning guide, with no whole-system test behind it. Treat every price list that way, ours included. The tier question is really a workload question. What do you run? - Chat and light coding help? A single mid-range card. - Coding agents plus RAG running in parallel? More VRAM. - Serving a 70B-class model for real application work? A different sizing problem entirely. Our target reader is the builder who already owns an ASUS ROG Astral RTX 5090 and runs Docker. That’s who we write for. Local execution of models that would cost too much through an API at scale is the whole argument for the hardware. Buy bandwidth, not clocks LLM decoding is memory-bound. So we rank GPUs by memory capacity and bandwidth first, and by raw clock speed a distant second. Compute Market’s top pick makes the case for used hardware https://www.compute-market.com/blog/home-ai-server-build-guide-2026 . The RTX 3090 lists at $699-$999 with 24GB of GDDR6X and 936 GB/s of bandwidth. That’s an old card. It’s still a sane buy, because the spec that matters hasn’t aged as fast as the rest of it. A single card goes a long way. The hardware can sit unchanged for months while the software around it turns over: more capable models, a leaner monitoring stack, self-hosted apps, coding agents driven from a phone. The lesson: the box is stable, and the stack on top of it is what churns. Budget for that. The parts list This is the build we’d start from. It’s our own baseline, not a tested reference system, so check prices and compatibility before you buy. | Part | What we’d pick | Why | |---|---|---| | GPU | Used RTX 3090 24GB or the RTX 5090 you already own | Capacity and bandwidth. The 3090 is 24GB at 936 GB/s. | | CPU | AMD Ryzen 7 7700 | The GPU does the work. You need enough cores for Docker, Postgres, and prompt handling. | | Motherboard | AM5 ATX board with a full x16 PCIe slot and room for a second card | Leaves a path to two GPUs. | | RAM | 64GB DDR5 2×32GB | Headroom for Postgres, containers, and CPU offload. | | Storage | 2TB NVMe SSD | Model weights are large and you’ll keep several. Fast loads matter. | | PSU | 1000W 80+ Gold | A 3090 spikes hard. Size for a second card, not just the first. | | Case and cooling | Airflow-first ATX case with three or more intake and exhaust fans | This box runs 24/7. Thermals decide its lifespan. | | OS | Ubuntu Server 24.04 LTS | Stable, well supported by NVIDIA and Docker. | A note on VRAM: a single 24GB card comfortably runs models in the 7B-14B class, or quantized models up to roughly that range. A 70B model quantized to 4-bit needs on the order of 40GB, so plan for two 24GB cards 48GB total if 70B is your goal. If you’re budgeting, buy the PSU, board, and case for two cards now and add the second GPU later. Assemble and first boot The order matters less than checking each stage before the next. 1. Prep the board outside the case. Install the CPU, RAM in the slots your manual specifies for dual-channel, and the NVMe drive. Mount the CPU cooler. 2. Mount the board and PSU. Fit the I/O shield, standoffs, and board. Route the 24-pin and CPU power cables before the GPU goes in, because it blocks access. 3. Seat the GPU. Use the top x16 slot. Connect each PCIe power cable from its own PSU cable run. Don’t daisy-chain a 3090’s connectors. 4. Set up airflow. Front and bottom fans in, rear and top fans out. Aim for slight positive pressure. 5. Enter BIOS. Update firmware, enable XMP/EXPO for the RAM, and turn on Above 4G Decoding and Resizable BAR. Set the machine to power on after AC loss, since this box should come back by itself. 6. Install Ubuntu Server 24.04 LTS from a USB stick. Enable OpenSSH during setup and give the machine a static IP or a DHCP reservation on your router. 7. Install the NVIDIA driver and verify. sudo apt update && sudo apt install -y ubuntu-drivers-common sudo ubuntu-drivers install sudo reboot nvidia-smi If nvidia-smi lists your card with its full memory, the hardware side is done. 1. Install Docker and the NVIDIA Container Toolkit. Follow the official Docker apt repository instructions for Docker Engine and Compose, then install nvidia-container-toolkit and register it: sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi If that last command prints the same table as the host, containers can see the GPU. 1. Write one compose file. This starts vLLM and a Postgres instance with pgvector : services: vllm: image: vllm/vllm-openai:latest command: --model Qwen/Qwen2.5-14B-Instruct-AWQ --max-model-len 8192 ports: - "8000:8000" volumes: - ./hf-cache:/root/.cache/huggingface ipc: host restart: unless-stopped deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: gpu postgres: image: pgvector/pgvector:pg16 environment: POSTGRES PASSWORD: change-me volumes: - ./pgdata:/var/lib/postgresql/data ports: - "5432:5432" restart: unless-stopped 1. Bring it up and test from another machine. docker compose up -d curl http://