Files
homelab-optimized/docs/getting-started/prerequisites.md
Gitea Mirror Bot fb88e1b6d4
Some checks failed
Documentation / Build Docusaurus (push) Failing after 5m1s
Documentation / Deploy to GitHub Pages (push) Has been skipped
Sanitized mirror from private repository - 2026-03-27 11:43:05 UTC
2026-03-27 11:43:05 +00:00

12 KiB

📋 Prerequisites & Requirements

🟢 Beginner-Friendly Guide

Before diving into homelab services, let's make sure you have everything you need. This guide covers both the technical requirements and the knowledge you'll need to be successful.

🎯 Skill Level Assessment

🟢 Absolute Beginner ("What is a computer?")

What you need to know:

  • How to use a computer and web browser
  • Basic understanding that computers can run programs
  • Willingness to follow step-by-step instructions
  • Patience when things don't work the first time

Recommended starting point:

🟡 Intermediate (Some technical experience)

What you should know:

  • Basic command line usage (cd, ls, mkdir)
  • Understanding of files, directories, and permissions
  • Familiarity with web browsers and URLs
  • Basic networking concepts (IP addresses, ports)

Recommended starting point:

🔴 Advanced (IT professional/enthusiast)

What you should know:

  • Docker and REDACTED_APP_PASSWORD concepts
  • Linux system administration
  • Networking and security principles
  • Infrastructure as Code concepts

Recommended starting point:


💻 Hardware Requirements

🏠 Minimum Setup ($100-500)

Perfect for beginners and basic services.

Option 1: Raspberry Pi

  • Device: Raspberry Pi 4 (4GB RAM minimum)
  • Storage: 64GB microSD + 1TB USB SSD
  • Network: Ethernet connection
  • Power: Official Pi power supply
  • Services: 5-10 lightweight services

Option 2: Old Laptop/Desktop

  • CPU: Any dual-core processor from last 10 years
  • RAM: 4GB minimum, 8GB recommended
  • Storage: 100GB available space
  • Network: Ethernet or stable WiFi
  • OS: Ubuntu, Debian, or similar Linux

🏢 Intermediate Setup ($500-2000)

Good for most homelab enthusiasts.

Option 1: Mini PC (Intel NUC, etc.)

  • CPU: Intel i5 or AMD Ryzen 5
  • RAM: 16GB DDR4
  • Storage: 512GB NVMe SSD + 2TB HDD
  • Network: Gigabit Ethernet
  • Services: 20-50 services

Option 2: Synology NAS

  • Model: DS920+ or similar 4-bay
  • RAM: 8GB (upgraded from 4GB)
  • Storage: 4x 4TB WD Red drives
  • Network: Gigabit Ethernet
  • Services: 30-60 services

🏭 Advanced Setup ($2000+)

For serious homelabbers and learning environments.

Server Hardware

  • CPU: Intel Xeon or AMD EPYC
  • RAM: 32GB+ ECC memory
  • Storage: Multiple SSDs + HDDs in RAID
  • Network: 10 Gigabit Ethernet
  • Redundancy: UPS, multiple hosts
  • Services: 100+ services

🌐 Network Requirements

🔌 Basic Networking

Essential:

  • Internet connection: Stable broadband (25+ Mbps)
  • Router: Any modern router with Ethernet ports
  • Ethernet cable: Cat5e or Cat6 for server connection
  • Local network: 192.168.x.x or 10.x.x.x range

Recommended:

  • Gigabit network: For better performance
  • Static IP: For your server (or DHCP reservation)
  • Port forwarding: If you want external access

🛡️ Security Considerations

Firewall:

  • Router firewall enabled
  • Only open necessary ports
  • Use VPN for remote access

Network Segmentation:

  • Separate IoT devices if possible
  • Consider VLAN setup for advanced users
  • Monitor network traffic

🛠️ Software Requirements

🐧 Operating System

🟢 Recommended for Beginners:

  • Ubuntu Server 22.04 LTS: Most compatible, lots of documentation
  • Debian 12: Stable, lightweight, similar to Ubuntu
  • Raspberry Pi OS: If using Raspberry Pi

🟡 Intermediate Options:

  • CentOS Stream/Rocky Linux: Enterprise-focused
  • Proxmox VE: For virtualization
  • Synology DSM: If using Synology NAS

🔴 Advanced Options:

  • Arch Linux: Cutting-edge, requires expertise
  • FreeBSD: Different approach, advanced users only
  • Kubernetes: Container orchestration platform

🐳 Docker & Container Runtime

Required Software:

# Docker Engine (container runtime)
sudo apt install docker.io

# Docker Compose (multi-container applications)
sudo apt install docker-compose

# Optional: Portainer (web-based Docker management)
# We'll install this as a service

Version Requirements:

  • Docker: 20.10+ (latest stable recommended)
  • Docker Compose: 2.0+ (v2 syntax)
  • Python: 3.8+ (for Ansible automation)

📝 Text Editor

You'll need to edit configuration files:

🟢 Beginner-friendly:

  • nano: Simple, built into most Linux systems
  • VS Code: If you prefer graphical editors

🟡 Intermediate:

  • vim: Powerful but has learning curve
  • emacs: Alternative to vim

🧠 Knowledge Requirements

📚 Essential Concepts

🟢 Must Know:

  • Files and directories: How to navigate file systems
  • Text editing: How to edit configuration files
  • Copy and paste: How to copy commands and configurations
  • Web browsers: How to access web interfaces

🟡 Should Know:

  • Command line basics: cd, ls, mkdir, cp, mv, rm
  • File permissions: chmod, chown concepts
  • Process management: How to start/stop services
  • Basic networking: IP addresses, ports, DNS

🔴 Advanced:

  • Docker concepts: Images, containers, volumes, networks
  • Linux administration: Users, groups, systemd, logs
  • Networking: VLANs, firewalls, reverse proxies
  • Security: SSL/TLS, authentication, authorization

🔧 Command Line Comfort Level

🟢 Beginner Commands:

# Navigate directories
cd /home/user
ls -la
pwd

# Create and edit files
mkdir my-folder
nano config.txt
cp file1.txt file2.txt

# View file contents
cat file.txt
less file.txt

🟡 Intermediate Commands:

# File permissions
chmod 755 script.sh
chown user:group file.txt

# Process management
ps aux | grep docker
sudo systemctl status docker

# Network troubleshooting
ping google.com
curl http://localhost:8080

🔴 Advanced Commands:

# Docker management
docker ps -a
docker logs container-name
docker exec -it container /bin/bash

# System monitoring
htop
df -h
netstat -tulpn

🔐 Security Knowledge

🛡️ Basic Security Concepts

🟢 Essential:

  • Strong passwords: Use unique, complex passwords
  • Software updates: Keep systems updated
  • Firewall basics: Block unnecessary ports
  • Backup importance: Regular data backups

🟡 Intermediate:

  • SSH keys: Public/private key authentication
  • SSL/TLS: HTTPS and certificate management
  • VPN usage: Secure remote access
  • Network segmentation: Isolate services

🔴 Advanced:

  • Container security: User namespaces, capabilities
  • Network security: IDS/IPS, monitoring
  • Compliance: GDPR, data protection
  • Incident response: Handling security breaches

🛠️ Tools You'll Need

💻 On Your Computer

🟢 Essential:

  • SSH client: PuTTY (Windows) or built-in (Mac/Linux)
  • Text editor: VS Code, Notepad++, or similar
  • Web browser: Chrome, Firefox, or similar
  • File transfer: SCP, SFTP, or WinSCP

🟡 Helpful:

  • Git client: For version control
  • Network scanner: Nmap, Advanced IP Scanner
  • Terminal emulator: Windows Terminal, iTerm2
  • Documentation: Obsidian, Notion, or similar

📱 Mobile Apps (Optional)

  • SSH client: Termius, JuiceSSH
  • Network scanner: Fing, Network Analyzer
  • Password manager: Bitwarden, 1Password
  • Monitoring: Uptime Kuma mobile, Grafana mobile

💰 Cost Breakdown

💵 Initial Investment

🟢 Budget Setup ($100-300):

  • Raspberry Pi 4 (8GB): $75
  • MicroSD card (64GB): $15
  • USB SSD (1TB): $80
  • Power supply & case: $30
  • Total: ~$200

🟡 Intermediate Setup ($500-1500):

  • Mini PC (Intel NUC): $400-800
  • RAM upgrade (16GB): $100
  • Storage (SSD + HDD): $200-400
  • Network equipment: $100-200
  • Total: ~$800-1500

🔴 Advanced Setup ($2000+):

  • Server hardware: $1000-3000
  • Storage array: $500-2000
  • Network equipment: $300-1000
  • UPS and accessories: $200-500
  • Total: $2000-6500+

💡 Ongoing Costs

  • Electricity: $50-200/year depending on hardware
  • Internet: Existing broadband (no additional cost)
  • Domain names: $10-50/year (optional)
  • Cloud backup: $5-50/month (optional)
  • Hardware replacement: Budget 10-20% annually

Time Investment

🕐 Learning Phase (1-3 months)

  • Week 1-2: Basic concepts, first service deployment
  • Week 3-4: Understanding Docker, networking basics
  • Month 2: Deploy 5-10 services, learn troubleshooting
  • Month 3: Advanced services, automation basics

🕑 Ongoing Maintenance

  • Daily: 5-10 minutes checking alerts/status
  • Weekly: 30-60 minutes reviewing logs, updates
  • Monthly: 2-4 hours major updates, new services
  • Quarterly: Half day for major maintenance

🕒 Project Time Estimates

  • First service: 2-4 hours
  • Basic monitoring setup: 4-8 hours
  • Media server (Plex/Jellyfin): 6-12 hours
  • Full homelab (20+ services): 40-80 hours
  • Advanced automation: 20-40 hours

Readiness Checklist

🎯 Before Starting

  • Hardware selected and purchased
  • Operating system installed and updated
  • Network connectivity verified
  • Basic command line comfort achieved
  • Docker and Docker Compose installed
  • SSH access configured
  • Backup strategy planned
  • Time allocated for learning

🎯 Knowledge Check

  • Can navigate command line (cd, ls, mkdir)
  • Can edit text files (nano, vim, or GUI editor)
  • Understand basic networking (IP, ports, DNS)
  • Know how to copy/paste commands
  • Comfortable with web browsers and URLs
  • Understand importance of backups
  • Have patience for troubleshooting

🎯 Environment Check

  • Server/computer ready and accessible
  • Network connection stable
  • Firewall configured appropriately
  • Storage space available (100GB+ recommended)
  • Power supply reliable (UPS recommended)
  • Documentation method chosen (notes, wiki, etc.)

🚀 Next Steps

🎯 If You're Ready

  1. Quick Start Guide: Deploy your first service
  2. Architecture Overview: Understand the big picture
  3. Service Categories: Explore available services

🎯 If You Need More Preparation

  1. What is a Homelab?: Understand the concepts
  2. Linux tutorials: Learn command line basics
  3. Docker tutorials: Understand REDACTED_APP_PASSWORD
  4. Networking basics: Learn about IP addresses and ports
  • Linux: "Linux Command Line for Beginners"
  • Docker: Official Docker documentation and tutorials
  • Networking: "Networking for Dummies" or similar
  • YouTube: Channels like TechnoTim, NetworkChuck, Craft Computing

💡 Final Tips

Success Strategies

  • Start small: Begin with 1-2 simple services
  • Document everything: Keep notes on what you do
  • Join communities: Reddit r/homelab, Discord servers
  • Be patient: Learning takes time, mistakes are normal
  • Have fun: This should be enjoyable, not stressful

⚠️ Common Pitfalls to Avoid

  • Over-engineering: Don't build enterprise solutions for home use
  • Scope creep: Resist adding "just one more service"
  • Neglecting backups: Always have a backup strategy
  • Ignoring security: Don't expose services without proper security
  • Perfectionism: Good enough is often good enough

Remember: Everyone starts somewhere. The most important prerequisite is curiosity and willingness to learn. You don't need to know everything before you start - you'll learn as you go!