# 📋 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!*