# 🏠 Complete Beginner's Guide to Building Your Own Homelab

**🟢 Beginner Guide - No Prior Experience Required**

This guide is designed for colleagues, friends, or anyone who wants to build their own homelab but has little to no experience with servers, networking, or self-hosting. We'll start from the absolute basics and build up to a fully functional homelab.

## 🤔 What is a Homelab?

### **Simple Definition**
A homelab is like having your own personal cloud at home. Instead of relying on Google Drive, Netflix, or other online services, you run your own versions on your own hardware that you control completely.

### **Real-World Examples**
- **Instead of Google Photos**: Run Immich to store and organize your photos
- **Instead of Netflix**: Run Plex to stream your own movie collection
- **Instead of Google Drive**: Run Nextcloud for file storage and sharing
- **Instead of LastPass**: Run Vaultwarden for password management
- **Instead of Gmail**: Run your own email server (advanced)

### **Why Build a Homelab?**
- **Privacy**: Your data stays on your hardware
- **Learning**: Gain valuable IT skills
- **Cost**: No monthly subscription fees
- **Control**: Customize everything to your needs
- **Fun**: It's genuinely enjoyable to build and maintain

---

## 💰 Budget Planning

### **Starter Budget: $500-800**
Perfect for beginners who want to try homelabbing:
- **NAS**: Synology DS220+ (~$300)
- **Drives**: 2x 4TB WD Red (~$200)
- **Network**: Basic router upgrade (~$100-200)
- **Accessories**: Cables, UPS (~$100)

### **Intermediate Budget: $1,500-2,500**
For those ready to commit to a serious homelab:
- **NAS**: Synology DS723+ or DS920+ (~$500-600)
- **Drives**: 4x 8TB drives (~$800)
- **Network**: 10GbE switch and cards (~$300)
- **Compute**: Intel NUC or mini PC (~$400-600)
- **UPS**: Proper backup power (~$200)

### **Advanced Budget: $3,000-5,000+**
For enthusiasts who want enterprise-level features:
- **NAS**: Synology DS1823xs+ (~$1,200)
- **Drives**: 8x 16TB enterprise drives (~$2,000)
- **Network**: Full 10GbE infrastructure (~$500)
- **Compute**: Multiple servers/workstations (~$1,000+)
- **Rack**: Server rack and professional equipment (~$500)

---

## 🛒 Shopping List for Beginners

### **Essential Hardware (Start Here)**

#### **1. Network Attached Storage (NAS)**
**Recommended**: Synology DS220+ or DS723+

**Why Synology?**
- Beginner-friendly web interface
- Excellent documentation and community
- Reliable hardware with good warranty
- Easy software installation (Package Center)

**What to Look For:**
- At least 2 drive bays (for redundancy)
- Gigabit Ethernet (minimum)
- ARM or x86 processor (x86 preferred for Docker)
- Expandable RAM (if possible)

#### **2. Hard Drives**
**Recommended**: WD Red or Seagate IronWolf (NAS-specific drives)

**Beginner Setup:**
- 2x 4TB drives in RAID 1 (mirrored) = 4TB usable space
- 2x 8TB drives in RAID 1 (mirrored) = 8TB usable space

**Why NAS Drives?**
- Designed for 24/7 operation
- Better vibration resistance
- Longer warranty (3-5 years)
- Optimized for RAID configurations

#### **3. Network Equipment**
**Router**: TP-Link Archer AX73 or similar WiFi 6 router
**Switch**: TP-Link TL-SG108 (8-port Gigabit switch)
**Cables**: Cat6 Ethernet cables

#### **4. Power Protection**
**UPS**: APC Back-UPS 1500VA
- Protects against power outages
- Allows graceful shutdown
- Prevents data corruption

### **Optional but Recommended**

#### **5. Mini PC for Additional Services**
**Options:**
- Intel NUC (compact, efficient)
- Beelink Mini PC (budget-friendly)
- Raspberry Pi 4 (very budget-friendly)

**Use Cases:**
- Home Assistant (smart home automation)
- Pi-hole (network-wide ad blocking)
- Additional Docker containers

#### **6. Cables and Accessories**
- HDMI cable (for initial setup)
- USB drive (for OS installation)
- Cable management (velcro ties, cable clips)
- Labels (for organization)

---

## 📋 Step-by-Step Setup Guide

### **Phase 1: Planning and Preparation (Day 1)**

#### **Step 1: Choose Your Location**
```bash
# Ideal homelab location checklist:
☐ Good ventilation (equipment generates heat)
☐ Stable power supply
☐ Ethernet connection to router
☐ Away from high-traffic areas (noise)
☐ Accessible for maintenance
☐ Secure from pets/children
```

#### **Step 2: Network Planning**
```bash
# Basic network setup:
Internet → Modem → Router → Switch → NAS/Devices

# IP Address planning:
Router: 192.168.1.1
NAS: 192.168.1.100
Mini PC: 192.168.1.101
Your computer: 192.168.1.50 (example)
```

#### **Step 3: Create Accounts**
```bash
# Create these accounts before starting:
☐ Synology account (for NAS setup)
☐ Docker Hub account (for containers)
☐ Tailscale account (for VPN access)
☐ Domain registrar account (optional, for external access)
```

### **Phase 2: Hardware Setup (Day 1-2)**

#### **Step 1: NAS Assembly**
```bash
# Synology NAS setup:
1. Unbox NAS and drives carefully
2. Install drives in drive bays (follow manual)
3. Connect power adapter (don't power on yet)
4. Connect Ethernet cable to router
5. Power on NAS (listen for beep sequence)
```

#### **Step 2: Initial Network Setup**
```bash
# Find your NAS on the network:
1. Download Synology Assistant from synology.com
2. Run Synology Assistant to find your NAS
3. Or browse to http://find.synology.com
4. Click on your NAS to begin setup
```

#### **Step 3: DSM Installation**
```bash
# DiskStation Manager (DSM) setup:
1. Download latest DSM for your model
2. Upload .pat file during setup wizard
3. Create admin account (use strong password!)
4. Set up storage pool (choose SHR for beginners)
5. Create Volume 1 with Btrfs file system
```

### **Phase 3: Basic Configuration (Day 2-3)**

#### **Step 1: Essential Settings**
```bash
# Control Panel configurations:
1. Network → Set static IP address
2. Regional Options → Set timezone
3. Notification → Configure email alerts
4. Security → Enable 2FA, disable default accounts
5. File Services → Enable SMB, disable unnecessary services
```

#### **Step 2: Create Shared Folders**
```bash
# Essential shared folders:
☐ homes (user directories)
☐ media (movies, TV shows, music)
☐ documents (important files)
☐ photos (photo library)
☐ backups (backup storage)
☐ docker (container data)
```

#### **Step 3: User Management**
```bash
# Create users:
1. Control Panel → User & Group
2. Create user accounts for family members
3. Set appropriate permissions for shared folders
4. Enable home folders for each user
```

### **Phase 4: First Applications (Day 3-4)**

#### **Step 1: Install Docker**
```bash
# Docker installation:
1. Package Center → Search "Docker"
2. Install Docker package
3. Open Docker app
4. Familiarize yourself with the interface
```

#### **Step 2: Install Plex Media Server**
```bash
# Plex setup (easiest first application):
1. Package Center → Search "Plex Media Server"
2. Install Plex Media Server
3. Open Plex and create account
4. Add media libraries:
   - Movies: /volume1/media/movies
   - TV Shows: /volume1/media/tv
   - Music: /volume1/media/music
5. Upload some media files to test
```

#### **Step 3: Install File Station and Photo Station**
```bash
# Built-in Synology apps:
1. File Station: Web-based file manager
2. Moments or Synology Photos: Photo management
3. Audio Station: Music streaming
4. Video Station: Video streaming (alternative to Plex)
```

### **Phase 5: Advanced Services (Day 4-7)**

#### **Step 1: Password Manager (Vaultwarden)**
```bash
# Deploy Vaultwarden via Docker:
1. Docker → Registry → Search "vaultwarden/server"
2. Download image
3. Create container with these settings:
   - Port: 8080:80
   - Volume: /volume1/docker/vaultwarden:/data
   - Environment: DOMAIN=http://your-nas-ip:8080
4. Access via http://your-nas-ip:8080
5. Create first user account
```

#### **Step 2: Ad Blocking (Pi-hole)**
```bash
# Pi-hole setup:
1. Docker → Registry → Search "pihole/pihole"
2. Create container with network mode: host
3. Set environment variables:
   - WEBPASSWORD="REDACTED_PASSWORD"
   - TZ=your-timezone
4. Configure router to use NAS IP as DNS server
5. Access web interface at http://your-nas-ip/admin
```

#### **Step 3: Monitoring (Uptime Kuma)**
```bash
# Service monitoring:
1. Docker → Registry → Search "louislam/uptime-kuma"
2. Create container:
   - Port: 3001:3001
   - Volume: /volume1/docker/uptime-kuma:/app/data
3. Access via http://your-nas-ip:3001
4. Add monitors for your services
5. Configure notifications (email, Discord, etc.)
```

---

## 🔧 Common Beginner Mistakes (And How to Avoid Them)

### **1. Not Planning Storage Properly**
**Mistake**: Buying drives that are too small or not NAS-rated
**Solution**: Always buy NAS-specific drives (WD Red, Seagate IronWolf)
**Tip**: Start with 2x drives in RAID 1, expand later

### **2. Ignoring Backups**
**Mistake**: Thinking RAID is a backup (it's not!)
**Solution**: Follow 3-2-1 backup rule:
- 3 copies of important data
- 2 different storage types
- 1 offsite backup

### **3. Poor Network Planning**
**Mistake**: Not setting static IP addresses
**Solution**: Use DHCP reservations or static IPs for all servers

### **4. Security Oversights**
**Mistake**: Using default passwords, no 2FA
**Solution**: 
- Change ALL default passwords
- Enable 2FA everywhere possible
- Use a password manager
- Keep software updated

### **5. REDACTED_APP_PASSWORD Initially**
**Mistake**: Trying to set up everything at once
**Solution**: Start simple, add services gradually

---

## 📚 Learning Resources for Beginners

### **YouTube Channels**
- **SpaceInvaderOne**: Excellent Docker tutorials
- **TechnoTim**: Homelab and self-hosting guides
- **NetworkChuck**: Networking and IT fundamentals
- **Lawrence Systems**: Business IT and homelab content
- **Craft Computing**: Hardware reviews and tutorials

### **Websites and Forums**
- **r/homelab**: Reddit community with great advice
- **r/synology**: Synology-specific help and tips
- **Synology Community**: Official forums
- **Self-Hosted Podcast**: Great for staying current
- **Awesome-Selfhosted**: Comprehensive list of applications

### **Documentation**
- **Synology Knowledge Base**: Official documentation
- **Docker Documentation**: Learn REDACTED_APP_PASSWORD
- **LinuxServer.io**: Pre-built Docker images with great docs

---

## 🛡️ Security Best Practices for Beginners

### **Network Security**
```bash
# Essential security steps:
☐ Change default router password
☐ Disable WPS on router
☐ Enable WPA3 WiFi security
☐ Disable unnecessary router services
☐ Set up guest WiFi network
☐ Enable router firewall
```

### **NAS Security**
```bash
# Synology security checklist:
☐ Change admin password (use password manager)
☐ Enable 2FA for admin account
☐ Disable default accounts (guest, etc.)
☐ Enable auto-block for failed logins
☐ Keep DSM updated
☐ Enable firewall
☐ Disable unnecessary services
☐ Use HTTPS for web access
```

### **Application Security**
```bash
# Docker container security:
☐ Only use trusted images
☐ Keep containers updated
☐ Use non-root users when possible
☐ Limit container permissions
☐ Use secrets for passwords
☐ Enable container logging
```

---

## 🔄 Maintenance Schedule for Beginners

### **Daily (Automated)**
- System health checks
- Backup verification
- Security updates
- Service monitoring

### **Weekly (5 minutes)**
```bash
☐ Check system notifications
☐ Review service status
☐ Check available storage space
☐ Review security logs
```

### **Monthly (30 minutes)**
```bash
☐ Update all applications
☐ Review backup integrity
☐ Check hardware health (SMART status)
☐ Clean up old files and logs
☐ Review user access permissions
```

### **Quarterly (2 hours)**
```bash
☐ Full system backup
☐ Test disaster recovery procedures
☐ Review and update documentation
☐ Plan capacity upgrades
☐ Security audit and password changes
```

---

## 🚀 Next Steps After Basic Setup

### **Intermediate Projects**
1. **Home Automation**: Set up Home Assistant
2. **Media Automation**: Configure Sonarr/Radarr for automatic downloads
3. **Remote Access**: Set up VPN (Tailscale or WireGuard)
4. **Monitoring**: Advanced monitoring with Grafana/Prometheus
5. **Backup Automation**: Automated offsite backups

### **Advanced Projects**
1. **Kubernetes**: Container orchestration
2. **CI/CD Pipeline**: GitLab or Jenkins
3. **Network Segmentation**: VLANs and advanced networking
4. **High Availability**: Clustering and failover
5. **Custom Applications**: Develop your own services

---

## 💡 Tips for Success

### **Start Small**
- Begin with one or two services
- Master the basics before adding complexity
- Document everything you do

### **Join the Community**
- Ask questions on Reddit r/homelab
- Share your setup and get feedback
- Help others when you can

### **Be Patient**
- Learning takes time
- Expect things to break (it's part of learning)
- Keep backups of working configurations

### **Have Fun**
- Experiment with new services
- Customize to your needs
- Enjoy the learning process

---

## 🆘 Getting Help

### **When Things Go Wrong**
1. **Check the logs**: Most problems are logged somewhere
2. **Search the error**: Google/Reddit search exact error messages
3. **Ask for help**: Include relevant details (hardware, software versions, error messages)
4. **Document the solution**: Help others and your future self

### **Where to Get Help**
- **Reddit**: r/homelab, r/synology, r/selfhosted
- **Discord**: Various homelab Discord servers
- **Forums**: Synology Community, LinuxServer.io forums
- **Documentation**: Always check official docs first

---

## 🎯 Your First 30 Days

### **Week 1: Foundation**
- Set up NAS and basic storage
- Install first application (Plex)
- Configure basic security
- Create backup strategy

### **Week 2: Core Services**
- Add password manager (Vaultwarden)
- Set up network-wide ad blocking (Pi-hole)
- Configure monitoring (Uptime Kuma)
- Implement proper backup routine

### **Week 3: Expansion**
- Add file synchronization (Syncthing)
- Set up photo management (Immich)
- Configure remote access (Tailscale)
- Optimize performance

### **Week 4: Mastery**
- Document your setup
- Plan next additions
- Help others in community
- Celebrate your success!

---

**🎉 Congratulations!** You're now ready to start your homelab journey. Remember, everyone started as a beginner, and the homelab community is incredibly helpful and welcoming. Don't be afraid to ask questions, make mistakes, and most importantly, have fun learning!

**📞 Need Help?** Feel free to reach out to the homelab community or reference the comprehensive documentation in this repository for more advanced configurations and troubleshooting.