Sanitized mirror from private repository - 2026-03-14 10:23:53 UTC
This commit is contained in:
420
docs/getting-started/prerequisites.md
Normal file
420
docs/getting-started/prerequisites.md
Normal file
@@ -0,0 +1,420 @@
|
||||
# 📋 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!*
|
||||
Reference in New Issue
Block a user