Ultimate Self-Hosted Services Guide: Nextcloud, Plex & Jellyfin
Published: March 2026 | Reading Time: 18 minutes
Self-hosting your own services gives you complete control over your data, privacy, and digital life. No more monthly subscriptions, no more data mining, and no more relying on third-party services that could shut down or change policies overnight.
In this comprehensive guide, I'll walk you through setting up the three most essential self-hosted services: Nextcloud for productivity, Plex for media streaming, and Jellyfin as a free Plex alternative.
Why Self-Host Your Services?
Benefits:
- ✅ Privacy: Your data stays on your hardware
- ✅ Cost savings: No recurring subscription fees
- ✅ Control: Complete ownership of your services
- ✅ Reliability: No service downtime or shutdowns
- ✅ Customization: Configure exactly how you want
- ✅ Offline access: Works even without internet
Hardware Requirements:
- NAS with Docker support (see best NAS recommendations)
- 8GB+ RAM recommended for running multiple services
- SSD cache for better performance
- Stable internet connection for remote access
Get a NAS Ready for Self-Hosting → (affiliate)
1. Nextcloud: Your Private Google Drive Alternative
Nextcloud is a powerful suite of self-hosted productivity apps that replaces Google Drive, Google Docs, Google Photos, and more. It's completely free and gives you full control over your files.
Key Features
- File Storage & Sync: Access files from any device
- Collaboration: Real-time document editing (Collabora)
- Photo Management: Automatic upload and organization
- Calendar & Contacts: Sync across all devices
- Notes: Secure note-taking app
- Talk: Encrypted video calls and messaging
- Hundreds of Apps: Extend functionality with plugins
Setting Up Nextcloud
Method 1: Using Docker Compose (Recommended)
version: '3'
services:
nextcloud:
image: nextcloud:latest
container_name: nextcloud
ports:
- "8080:80"
volumes:
- ./nextcloud-data:/var/www/html
- ./nextcloud-config:/var/www/html/config
environment:
- MYSQL_HOST=nextcloud-db
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=your-secure-password
- MYSQL_DATABASE=nextcloud
depends_on:
- nextcloud-db
restart: unless-stopped
nextcloud-db:
image: mariadb:latest
container_name: nextcloud-db
volumes:
- ./nextcloud-db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root-password
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=your-secure-password
- MYSQL_DATABASE=nextcloud
restart: unless-stopped
Method 2: NAS Native Installation
- Synology: Install from Package Center
- QNAP: Install from App Center
- Asustor: Install from App Central
Essential Nextcloud Apps
Productivity:
- Collabora Online: Google Docs alternative
- OnlyOffice: Another document editing suite
- Calendar: Sync with mobile devices
- Contacts: Address book management
Media:
- Gallery: Photo management
- Music: Audio streaming
- Video: Video playback
Utilities:
- Preview: File previews
- PDF Viewer: In-browser PDF viewing
- Text Editor: Simple text editing
Nextcloud Performance Tips
- Enable Caching
sudo -u www-data php occ config:system:set memcache.local --value "\OC\Memcache\Redis"
sudo -u www-data php occ config:system:set redis host --value 127.0.0.1
- Use HTTPS with Let's Encrypt
- Install Certbot on your server
- Configure reverse proxy (Nginx or Apache)
- Auto-renew certificates
- Optimize Database
sudo -u www-data php occ db:add-missing-indices
sudo -u www-data php occ db:convert-filecache-bigint
2. Plex: The Ultimate Media Server
Plex is the gold standard for media servers. It organizes your media library, streams to any device, and provides beautiful metadata and artwork automatically.
Key Features
- Universal Streaming: Watch on any device (TV, phone, tablet, browser)
- Beautiful Metadata: Automatic artwork, descriptions, and ratings
- Mobile Sync: Download content for offline viewing
- Live TV & DVR: Watch and record over-the-air TV
- Music Streaming: Stream your music library
- Remote Access: Watch from anywhere
- Photo Sharing: Share photos with family
Setting Up Plex
Hardware Requirements:
- For direct play: Any modern CPU
- For transcoding: Intel Celeron J4125 or better
- RAM: 4GB minimum, 8GB recommended
- Storage: SSD for cache, HDD for media
Installation via Docker:
version: '3'
services:
plex:
image: plexinc/pms-docker:latest
container_name: plex
ports:
- "32400:32400"
- "3005:3005/tcp"
- "8324:8324/tcp"
- "32469:32469/tcp"
- "1900:1900/udp"
- "32410:32410/udp"
- "32412:32412/udp"
- "32413:32413/udp"
- "32414:32414/udp"
volumes:
- ./plex-config:/config
- ./plex-transcode:/transcode
- /path/to/media:/media
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
- PLEX_CLAIM=your-claim-token
restart: unless-stopped
Get Your Claim Token:
- Go to plex.tv/claim
- Sign in and get your token
- Add it to the docker-compose.yml
Plex Server Optimization
1. Enable Hardware Transcoding
- Go to Settings → Transcoder
- Enable "Use hardware acceleration when available"
- Choose your GPU (Intel Quick Sync, NVIDIA, AMD)
2. Optimize Library Scanning
- Set scheduled library scans for off-peak hours
- Enable "Generate video preview thumbnails" only for new media
- Use agent exclusions for folders that don't need metadata
3. Network Optimization
- Enable "List of IP addresses and networks that are allowed without auth" for your home network
- Set remote bandwidth limits if you have data caps
- Configure port forwarding for remote access
Best Practices
File Organization:
/Media
/Movies
/Movie Name (Year)
Movie Name (Year).mkv
/TV Shows
/Show Name
/Season 1
Show Name - S01E01 - Episode Name.mkv
/Music
/Artist Name
/Album Name
01 - Song Name.mp3
Naming Conventions:
- Movies:
Movie Title (Year).ext - TV:
Show Name - SXXEXX - Episode Title.ext - Use The Movie Database naming guidelines
Recommended NAS for Plex → (affiliate)
3. Jellyfin: Free Open-Source Plex Alternative
Jellyfin is a completely free and open-source media server. It's a community fork of Emby and offers similar functionality to Plex without the paid features or data collection.
Key Features
- 100% Free: No paid tier or subscriptions
- Open Source: Transparent development
- No Data Collection: Your data stays yours
- Wide Device Support: Works on most platforms
- Similar Features: Streaming, transcoding, metadata
- Active Development: Regular updates and improvements
Setting Up Jellyfin
Docker Compose:
version: '3'
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
ports:
- "8096:8096"
volumes:
- ./jellyfin-config:/config
- ./jellyfin-cache:/cache
- /path/to/media:/media
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
restart: unless-stopped
Jellyfin vs Plex Comparison
| Feature | Plex | Jellyfin |
|---|---|---|
| Cost | Free with paid features | Completely free |
| Transcoding | Excellent | Good, improving |
| Mobile Apps | $5 one-time | Free |
| Remote Access | Built-in | Requires setup |
| Metadata | Superior | Good |
| Community | Large | Growing |
| Data Collection | Yes | No |
Choose Plex if:
- You want the best mobile app experience
- You need superior transcoding performance
- You want easy remote access setup
- You don't mind paying for premium features
Choose Jellyfin if:
- You want 100% free software
- You prioritize privacy over convenience
- You're comfortable with more manual setup
- You want to support open-source software
Securing Your Self-Hosted Services
Essential Security Measures
1. Use HTTPS Everywhere
- Install SSL certificates via Let's Encrypt
- Configure reverse proxy (Nginx/Caddy)
- Enforce HTTPS redirects
2. Enable Two-Factor Authentication
- Nextcloud: Use TOTP or hardware keys
- Plex: Enable in account settings
- Jellyfin: Use reverse proxy auth
3. Firewall Configuration
# Allow SSH, HTTP, HTTPS only
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
4. Regular Backups
- Nextcloud: Enable built-in backups
- Plex: Backup library database
- Jellyfin: Export library settings
5. Keep Software Updated
- Enable automatic updates
- Subscribe to security advisories
- Test updates on staging first
Accessing from Anywhere
Option 1: VPN
- Set up NordVPN on your server (affiliate)
- Connect clients to VPN to access services
- Most secure option
Option 2: Cloudflare Tunnel
- Free with Cloudflare account
- No port forwarding needed
- Automatic SSL
Option 3: DDNS + Port Forwarding
- Use dynamic DNS service
- Forward ports through router
- Less secure, use only with VPN
Get NordVPN for Secure Remote Access → (affiliate)
Complete Self-Hosting Stack
Combine these services for a complete self-hosted environment:
Core Services:
- Nextcloud - File storage and collaboration
- Plex/Jellyfin - Media streaming
- Home Assistant - Smart home automation
Productivity:
- Bookstack - Wiki/documentation
- Paperless-ngx - Document management
- Vaultwarden - Password manager
Development:
- Gitea - Git hosting
- VS Code Server - Remote development
- Jupyter - Data science notebooks
Monitoring:
- Grafana - Dashboards and monitoring
- Prometheus - Metrics collection
- Portainer - Docker management
See my Docker Compose Templates guide for ready-to-use configurations.
Cost Comparison: Self-Hosting vs Cloud Services
| Service | Cloud Cost (Annual) | Self-Hosting Cost (One-Time) | 5-Year Savings |
|---|---|---|---|
| Google Drive (2TB) | $120 | $0 (hardware already) | $600 |
| Google Photos | $24 | $0 | $120 |
| Office 365 | $100 | $0 | $500 |
| Plex Pass | $40 | $0 | $200 |
| Password Manager | $36 | $0 | $180 |
| Cloud Backup | $60 | $0 | $300 |
| Total | $380 | $0 (NAS already) | $1,900 |
After purchasing a NAS (~$500-800), you save $1,900+ over 5 years.
Get Started with a NAS → (affiliate)
Troubleshooting Common Issues
Problem: Slow performance
- Enable SSD cache for frequently accessed files
- Check network bandwidth (upgrade to 2.5GbE)
- Reduce simultaneous transcoding streams
Problem: Cannot access from outside network
- Verify port forwarding is correct
- Check firewall settings
- Ensure DDNS is updating correctly
- Test with VPN tunnel as alternative
Problem: Metadata not downloading
- Verify internet connectivity
- Check Plex/Jellyfin agent settings
- Refresh library manually
- Check for rate limiting from metadata sources
Frequently Asked Questions
Q: Can I run multiple services on one NAS?
A: Absolutely! Docker makes it easy to run Nextcloud, Plex, and more simultaneously.
Q: What happens if my NAS fails?
A: That's why RAID and backups are essential. Use RAID for hardware redundancy and cloud/offsite backups for disaster recovery.
Q: Do I need a fast internet connection?
A: For local streaming: No. For remote access: Yes, at least 5 Mbps upload per stream.
Q: Is self-hosting legal?
A: Yes, hosting your own content is completely legal. Streaming content you don't own is not.
Disclosure: This post contains affiliate links. If you purchase through these links, I may earn a commission at no extra cost to you. This helps support the blog and allows me to continue creating content.