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:

Hardware Requirements:

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

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

Essential Nextcloud Apps

Productivity:

Media:

Utilities:

Nextcloud Performance Tips

  1. 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
  1. Use HTTPS with Let's Encrypt
  1. 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

Setting Up Plex

Hardware Requirements:

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:

  1. Go to plex.tv/claim
  2. Sign in and get your token
  3. Add it to the docker-compose.yml

Plex Server Optimization

1. Enable Hardware Transcoding

2. Optimize Library Scanning

3. Network Optimization

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:

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

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:

Choose Jellyfin if:


Securing Your Self-Hosted Services

Essential Security Measures

1. Use HTTPS Everywhere

2. Enable Two-Factor Authentication

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

5. Keep Software Updated

Accessing from Anywhere

Option 1: VPN

Option 2: Cloudflare Tunnel

Option 3: DDNS + Port Forwarding

Get NordVPN for Secure Remote Access → (affiliate)

Complete Self-Hosting Stack

Combine these services for a complete self-hosted environment:

Core Services:

Productivity:

Development:

Monitoring:

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

Problem: Cannot access from outside network

Problem: Metadata not downloading

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.