# 📋 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:** - Start with [What is a Homelab?](what-is-homelab.md) - Follow the [Quick Start Guide](quick-start.md) - Begin with 1-2 simple services ### 🟡 **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:** - Review [Architecture Overview](architecture.md) - Explore [Service Categories](../services/categories.md) - Try deploying 5-10 services ### 🔴 **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:** - Dive into [Deployment Guide](../admin/deployment.md) - Explore [Advanced Topics](../advanced/ansible.md) - Consider the full infrastructure --- ## 💻 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:** ```bash # 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:** ```bash # 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:** ```bash # 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:** ```bash # 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](quick-start.md)**: Deploy your first service 2. **[Architecture Overview](architecture.md)**: Understand the big picture 3. **[Service Categories](../services/categories.md)**: Explore available services ### 🎯 **If You Need More Preparation** 1. **[What is a Homelab?](what-is-homelab.md)**: 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 ### 📚 **Recommended Learning Resources** - **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!*