Files
homelab-optimized/docs/services/popular.md
Gitea Mirror Bot 6b5bdf7b8d
Some checks failed
Documentation / Build Docusaurus (push) Failing after 17m30s
Documentation / Deploy to GitHub Pages (push) Has been skipped
Sanitized mirror from private repository - 2026-04-04 03:48:45 UTC
2026-04-04 03:48:45 +00:00

678 lines
19 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ⭐ Popular Services Guide
**🟡 Intermediate Guide**
This guide covers the most popular and useful services in the homelab, with detailed setup instructions and real-world usage examples. These services provide the most value and are great starting points for any homelab.
## 🎯 Top 10 Must-Have Services
| Rank | Service | Category | Difficulty | Why It's Essential |
|------|---------|----------|------------|-------------------|
| 1 | **Uptime Kuma** | Monitoring | 🟢 | Know when services go down |
| 2 | **Plex/Jellyfin** | Media | 🟢 | Your personal Netflix |
| 3 | **Vaultwarden** | Security | 🟡 | Secure password management |
| 4 | **Pi-hole** | Security | 🟡 | Block ads network-wide |
| 5 | **Portainer** | Management | 🟡 | Manage Docker containers easily |
| 6 | **Immich** | Media | 🟡 | Your personal Google Photos |
| 7 | **Nginx Proxy Manager** | Infrastructure | 🟡 | Manage web services with SSL |
| 8 | **Paperless-NGX** | Productivity | 🟡 | Go completely paperless |
| 9 | **Grafana + Prometheus** | Monitoring | 🔴 | Advanced system monitoring |
| 10 | **Syncthing** | Storage | 🟡 | Sync files without cloud |
---
## 1⃣ Uptime Kuma - Service Monitoring
**🟢 Beginner-Friendly | Essential for Everyone**
### 🎯 **What It Does**
- Monitors all your services 24/7
- Sends alerts when services go down
- Beautiful dashboard showing service status
- Tracks uptime statistics and response times
### 🚀 **Quick Setup**
```yaml
version: '3.9'
services:
uptime-kuma:
image: louislam/uptime-kuma:latest
container_name: Uptime-Kuma
ports:
- "3001:3001"
volumes:
- ./data:/app/data
environment:
- TZ=America/Los_Angeles
restart: on-failure:5
```
### 🔧 **Configuration Tips**
- **First setup**: Create admin account immediately
- **Monitor types**: HTTP, TCP, Ping, DNS, Docker containers
- **Notifications**: Set up email, Discord, Slack alerts
- **Status pages**: Create public status pages for users
### 💡 **Pro Tips**
- Monitor your router/modem for internet connectivity
- Set up keyword monitoring for login pages
- Use different check intervals (60s for critical, 300s for others)
- Create notification groups to avoid spam
---
## 2⃣ Plex - Media Streaming Server
**🟢 Beginner-Friendly | Entertainment Essential**
### 🎯 **What It Does**
- Stream movies, TV shows, music to any device
- Automatic metadata and artwork fetching
- User management with sharing capabilities
- Mobile apps for iOS/Android
### 🚀 **Quick Setup**
```yaml
version: '3.9'
services:
plex:
image: plexinc/pms-docker:latest
container_name: Plex
hostname: plex-server
ports:
- "32400:32400"
environment:
- TZ=America/Los_Angeles
- PLEX_CLAIM=claim-xxxxxxxxxxxx # Get from plex.tv/claim
- PLEX_UID=1026
- PLEX_GID=100
volumes:
- ./config:/config
- /volume1/media/movies:/movies:ro
- /volume1/media/tv:/tv:ro
- /volume1/media/music:/music:ro
restart: on-failure:5
```
### 📁 **Media Organization**
```
/volume1/media/
├── movies/
│ ├── Avatar (2009)/
│ │ └── Avatar (2009).mkv
│ └── Inception (2010)/
│ └── Inception (2010).mkv
├── tv/
│ ├── Breaking Bad/
│ │ ├── Season 01/
│ │ └── Season 02/
│ └── The Office/
└── music/
├── Artist Name/
│ └── Album Name/
└── Various Artists/
```
### 🔧 **Essential Settings**
- **Remote Access**: Enable for mobile access
- **Hardware Transcoding**: Enable if you have Intel/NVIDIA GPU
- **Libraries**: Separate libraries for Movies, TV, Music
- **Users**: Create accounts for family members
### 💡 **Pro Tips**
- Use Plex naming conventions for best metadata
- Enable "Empty trash automatically"
- Set up Tautulli for usage statistics
- Consider Plex Pass for premium features
---
## 3⃣ Vaultwarden - Password Manager
**🟡 Intermediate | Security Essential**
### 🎯 **What It Does**
- Stores all passwords securely encrypted
- Generates strong passwords automatically
- Syncs across all devices (phone, computer, browser)
- Compatible with Bitwarden apps
### 🚀 **Quick Setup**
```yaml
version: '3.9'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: Vaultwarden
ports:
- "8012:80"
volumes:
- ./data:/data
environment:
- WEBSOCKET_ENABLED=true
- SIGNUPS_ALLOWED=true # Disable after creating accounts
- ADMIN_TOKEN=REDACTED_TOKEN
- DOMAIN=https://vault.yourdomain.com
restart: on-failure:5
```
### 🔐 **Security Setup**
1. **Create admin token**: `openssl rand -base64 48`
2. **Disable signups** after creating accounts
3. **Enable 2FA** for all accounts
4. **Set up HTTPS** with reverse proxy
5. **Regular backups** of `/data` directory
### 📱 **Client Setup**
- **Browser**: Install Bitwarden extension
- **Mobile**: Download Bitwarden app
- **Desktop**: Bitwarden desktop application
- **Server URL**: Point to your Vaultwarden instance
### 💡 **Pro Tips**
- Use organization vaults for shared passwords
- Set up emergency access for family
- Enable breach monitoring if available
- Regular password audits for weak/reused passwords
---
## 4⃣ Pi-hole - Network Ad Blocker
**🟡 Intermediate | Network Essential**
### 🎯 **What It Does**
- Blocks ads and trackers for entire network
- Speeds up web browsing significantly
- Provides DNS filtering and monitoring
- Works on all devices automatically
### 🚀 **Quick Setup**
```yaml
version: '3.9'
services:
pihole:
image: pihole/pihole:latest
container_name: Pi-hole
hostname: pihole
ports:
- "53:53/tcp"
- "53:53/udp"
- "9000:80" # Web interface
environment:
- TZ=America/Los_Angeles
- WEBPASSWORD="REDACTED_PASSWORD"
- FTLCONF_LOCAL_IPV4=192.168.1.100 # Your server IP
- DNSMASQ_LISTENING=local
volumes:
- ./etc-pihole:/etc/pihole
- ./etc-dnsmasq.d:/etc/dnsmasq.d
dns:
- 127.0.0.1
- 1.1.1.1
restart: on-failure:5
```
### 🌐 **Network Configuration**
1. **Router DNS**: Set Pi-hole IP as primary DNS
2. **Backup DNS**: Set secondary DNS (1.1.1.1 or 8.8.8.8)
3. **DHCP**: Optionally let Pi-hole handle DHCP
4. **Static IP**: Ensure Pi-hole has static IP address
### 📋 **Recommended Blocklists**
- **StevenBlack**: Comprehensive host file
- **EasyList**: Standard ad blocking
- **Malware domains**: Security protection
- **Social media**: Block social tracking (optional)
### 💡 **Pro Tips**
- Whitelist false positives immediately
- Use groups for different device policies
- Monitor query logs for troubleshooting
- Set up conditional forwarding for local domains
---
## 5⃣ Portainer - Docker Management
**🟡 Intermediate | Management Essential**
### 🎯 **What It Does**
- Web-based Docker container management
- Visual interface for Docker operations
- Template library for easy deployments
- Multi-host management capabilities
### 🚀 **Quick Setup**
```yaml
version: '3.9'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: Portainer
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/data
restart: on-failure:5
```
### 🔧 **Initial Configuration**
1. **Admin account**: Create on first visit
2. **Environment**: Connect to local Docker
3. **Templates**: Enable app template library
4. **Users**: Create accounts for team members
### 📊 **Key Features**
- **Container management**: Start, stop, restart containers
- **Image management**: Pull, build, remove images
- **Volume management**: Create and manage volumes
- **Network management**: Create custom networks
- **Stack deployment**: Deploy multi-container applications
### 💡 **Pro Tips**
- Use stacks instead of individual containers
- Set up webhooks for automated deployments
- Monitor resource usage through dashboard
- Use templates for common applications
---
## 6⃣ Immich - Photo Management
**🟡 Intermediate | Media Essential**
### 🎯 **What It Does**
- Self-hosted Google Photos alternative
- AI-powered face recognition and object detection
- Mobile apps for automatic photo backup
- Advanced search and organization features
### 🚀 **Quick Setup**
```yaml
version: '3.9'
services:
immich-server:
image: ghcr.io/immich-app/immich-server:release
container_name: Immich-Server
ports:
- "8212:3001"
volumes:
- ./upload:/usr/src/app/upload
- /volume1/photos:/usr/src/app/external:ro
env_file:
- .env
depends_on:
- redis
- database
restart: on-failure:5
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:release
container_name: Immich-ML
volumes:
- ./model-cache:/cache
env_file:
- .env
restart: on-failure:5
redis:
image: redis:6.2-alpine
container_name: Immich-Redis
restart: on-failure:5
database:
image: tensorchord/pgvecto-rs:pg14-v0.2.0
container_name: Immich-DB
environment:
- POSTGRES_PASSWORD="REDACTED_PASSWORD"
- POSTGRES_USER=postgres
- POSTGRES_DB=immich
volumes:
- ./postgres:/var/lib/postgresql/data
restart: on-failure:5
```
### 📱 **Mobile Setup**
1. **Download app**: Immich mobile app (iOS/Android)
2. **Server URL**: Enter your Immich server address
3. **Account**: Create user account in web interface
4. **Auto-backup**: Enable automatic photo backup
### 🤖 **AI Features**
- **Face recognition**: Automatically group photos by people
- **Object detection**: Search for "car", "dog", "beach", etc.
- **Smart search**: Natural language photo search
- **Duplicate detection**: Find and remove duplicate photos
### 💡 **Pro Tips**
- Use external library for existing photos
- Set up regular database backups
- Monitor storage usage and set quotas
- Use reverse proxy for HTTPS access
---
## 7⃣ Nginx Proxy Manager - Reverse Proxy
**🟡 Intermediate | Infrastructure Essential**
### 🎯 **What It Does**
- Manages reverse proxy configurations easily
- Automatic SSL certificate generation (Let's Encrypt)
- Custom domains for all your services
- Access control and authentication
### 🚀 **Quick Setup**
```yaml
version: '3.9'
services:
nginx-proxy-manager:
image: jc21/nginx-proxy-manager:latest
container_name: Nginx-Proxy-Manager
ports:
- "80:80"
- "443:443"
- "81:81" # Admin interface
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
environment:
- DB_SQLITE_FILE=/data/database.sqlite
restart: on-failure:5
```
### 🌐 **Domain Setup**
1. **DNS records**: Point domains to your public IP
2. **Port forwarding**: Forward ports 80 and 443
3. **Proxy hosts**: Create entries for each service
4. **SSL certificates**: Enable Let's Encrypt for HTTPS
### 🔧 **Common Configurations**
```
# Example proxy host configurations
plex.yourdomain.com → 192.168.1.100:32400
vault.yourdomain.com → 192.168.1.100:8012
photos.yourdomain.com → 192.168.1.100:8212
```
### 💡 **Pro Tips**
- Use wildcard certificates for subdomains
- Set up access lists for sensitive services
- Enable HTTP/2 for better performance
- Monitor certificate expiration dates
---
## 8⃣ Paperless-NGX - Document Management
**🟡 Intermediate | Productivity Essential**
### 🎯 **What It Does**
- Scans and digitizes all your documents
- OCR text recognition for searchability
- Automatic tagging and organization
- Mobile app for document scanning
### 🚀 **Quick Setup**
```yaml
version: '3.9'
services:
paperless-ngx:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: Paperless-NGX
ports:
- "8010:8000"
volumes:
- ./data:/usr/src/paperless/data
- ./media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
environment:
- PAPERLESS_REDIS=redis://redis:6379
- PAPERLESS_DBHOST=db
- PAPERLESS_DBNAME=paperless
- PAPERLESS_DBUSER=paperless
- PAPERLESS_DBPASS=paperless
- PAPERLESS_SECRET_KEY=your-secret-key
- PAPERLESS_URL=https://docs.yourdomain.com
- PAPERLESS_OCR_LANGUAGE=eng
depends_on:
- db
- redis
restart: on-failure:5
db:
image: postgres:15
container_name: Paperless-DB
volumes:
- ./pgdata:/var/lib/postgresql/data
environment:
- POSTGRES_DB=paperless
- POSTGRES_USER=paperless
- POSTGRES_PASSWORD="REDACTED_PASSWORD"
restart: on-failure:5
redis:
image: redis:7
container_name: Paperless-Redis
restart: on-failure:5
```
### 📄 **Document Workflow**
1. **Scan documents**: Use mobile app or scanner
2. **Drop in consume folder**: Auto-processing begins
3. **OCR processing**: Text extraction and indexing
4. **Auto-tagging**: Based on content and rules
5. **Search and organize**: Find documents instantly
### 🏷️ **Organization Tips**
- **Tags**: Create tags for categories (tax, medical, etc.)
- **Document types**: Set up types (invoice, receipt, etc.)
- **Correspondents**: Track who sent documents
- **Custom fields**: Add metadata for better organization
### 💡 **Pro Tips**
- Set up email consumption for digital documents
- Create consumption rules for automatic processing
- Use date parsing for automatic date detection
- Regular backups of database and media files
---
## 9⃣ Grafana + Prometheus - Advanced Monitoring
**🔴 Advanced | Monitoring Essential**
### 🎯 **What It Does**
- Collects detailed metrics from all systems
- Creates beautiful dashboards and visualizations
- Sets up alerting for system issues
- Tracks performance trends over time
### 🚀 **Quick Setup**
```yaml
version: '3.9'
services:
prometheus:
image: prom/prometheus:latest
container_name: Prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=60d'
restart: on-failure:5
grafana:
image: grafana/grafana:latest
container_name: Grafana
ports:
- "7099:3000"
volumes:
- ./grafana-data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD="REDACTED_PASSWORD"
- GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
restart: on-failure:5
node-exporter:
image: prom/node-exporter:latest
container_name: Node-Exporter
ports:
- "9100:9100"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
restart: on-failure:5
```
### 📊 **Essential Dashboards**
- **Node Exporter Full**: System metrics (CPU, RAM, disk)
- **Docker Container Metrics**: Container resource usage
- **Network Overview**: Network traffic and connectivity
- **Service Uptime**: Service availability tracking
### 🚨 **Alerting Setup**
- **High CPU usage**: > 80% for 5 minutes
- **Low disk space**: < 10% remaining
- **Service down**: Failed health checks
- **High memory usage**: > 90% for 5 minutes
### 💡 **Pro Tips**
- Start with pre-built dashboards from grafana.com
- Set up notification channels (email, Slack, Discord)
- Use variables in dashboards for flexibility
- Regular Prometheus data retention cleanup
---
## 🔟 Syncthing - File Synchronization
**🟡 Intermediate | Storage Essential**
### 🎯 **What It Does**
- Syncs files between devices without cloud
- Peer-to-peer synchronization (no central server)
- Version history and conflict resolution
- Works across Windows, Mac, Linux, Android
### 🚀 **Quick Setup**
```yaml
version: '3.9'
services:
syncthing:
image: syncthing/syncthing:latest
container_name: Syncthing
hostname: syncthing-server
ports:
- "8384:8384" # Web UI
- "22000:22000/tcp" # File transfers
- "22000:22000/udp" # File transfers
- "21027:21027/udp" # Discovery
volumes:
- ./config:/var/syncthing/config
- ./data:/var/syncthing/data
environment:
- PUID=1026
- PGID=100
restart: on-failure:5
```
### 🔗 **Device Setup**
1. **Install Syncthing**: On all devices you want to sync
2. **Device IDs**: Exchange device IDs between devices
3. **Folders**: Create shared folders on each device
4. **Permissions**: Set read-only or read-write access
### 📁 **Common Sync Scenarios**
- **Documents**: Sync work documents across computers
- **Photos**: Backup phone photos to server
- **Music**: Sync music library to mobile devices
- **Backups**: Sync important files for redundancy
### 💡 **Pro Tips**
- Use ignore patterns for temporary files
- Set up versioning for important folders
- Monitor sync status regularly
- Use relay servers for devices behind NAT
---
## 🚀 Getting Started Recommendations
### 🎯 **Week 1: Foundation**
1. **Uptime Kuma**: Monitor your services
2. **Portainer**: Manage Docker containers
3. **Nginx Proxy Manager**: Set up reverse proxy
### 🎯 **Week 2: Core Services**
4. **Vaultwarden**: Secure password management
5. **Pi-hole**: Block ads network-wide
6. **Plex/Jellyfin**: Start your media server
### 🎯 **Week 3: Productivity**
7. **Immich**: Photo management
8. **Paperless-NGX**: Document digitization
9. **Syncthing**: File synchronization
### 🎯 **Week 4: Advanced**
10. **Grafana + Prometheus**: Advanced monitoring
## 📊 Service Comparison
### 🎬 **Media Servers**
| Feature | Plex | Jellyfin | Emby |
|---------|------|----------|------|
| **Cost** | Free/Premium | Free | Free/Premium |
| **Ease of Use** | Excellent | Good | Good |
| **Mobile Apps** | Excellent | Good | Good |
| **Hardware Transcoding** | Premium | Free | Premium |
| **Plugins** | Limited | Extensive | Moderate |
### 🔐 **Password Managers**
| Feature | Vaultwarden | Bitwarden | 1Password |
|---------|-------------|-----------|-----------|
| **Self-hosted** | Yes | No | No |
| **Cost** | Free | Free/Premium | Premium |
| **Features** | Full | Limited/Full | Full |
| **Mobile Apps** | Yes | Yes | Yes |
| **Browser Extensions** | Yes | Yes | Yes |
### 📊 **Monitoring Solutions**
| Feature | Uptime Kuma | Grafana | Zabbix |
|---------|-------------|---------|--------|
| **Complexity** | Low | Medium | High |
| **Features** | Basic | Advanced | Enterprise |
| **Setup Time** | 10 minutes | 2 hours | 8+ hours |
| **Resource Usage** | Low | Medium | High |
---
## 📋 Next Steps
### 🎯 **After Popular Services**
- **[Service Categories](categories.md)**: Explore more specialized services
- **[Service Index](index.md)**: Complete list of all available services
- **[Deployment Guide](../admin/deployment.md)**: Learn advanced deployment patterns
- **[Advanced Topics](../advanced/ansible.md)**: Automation and scaling
### 🎯 **Community Resources**
- **r/homelab**: Reddit community for homelab enthusiasts
- **r/selfhosted**: Self-hosting community and discussions
- **Discord servers**: Real-time chat with other homelabbers
- **YouTube channels**: TechnoTim, NetworkChuck, Craft Computing
---
*These popular services form the backbone of most successful homelabs. Start with the ones that solve your immediate needs, then gradually expand your infrastructure as you become more comfortable with the technology.*