Skip to main content
Back to Category

What is Self-Hosting? What Can You Host on Your Own Server?

What is self-hosting, why do it, popular self-hosted apps (Nextcloud, Vaultwarden, Jellyfin, Gitea, n8n), Docker setup and comparison with cloud services.

Read time: 12 min Self-Hosting
self-hostingnextclouddockervaultwardenjellyfingiteaprivacy

Table of Contents

What is Self-Hosting? What Can You Host on Your Own Server?

Self-hosting means running applications on your own server that you normally use through cloud services (Google Drive, Dropbox, Netflix, GitHub, etc.). You have full control over your data, get rid of monthly subscription fees, and protect your privacy.

Why Should You Self-Host?

1. Privacy and Data Control

Cloud services analyze your data, create advertising profiles, and may share with third parties. With self-hosting, your data stays only on your server.

2. Cost Savings

In the long run, self-hosting can be much more economical than cloud subscriptions.

Monthly Cost Comparison (approximate):

Cloud Services:
- Google One 2TB:     ~$10/month
- Dropbox Plus:       ~$12/month
- Netflix Standard:   ~$15/month
- GitHub Pro:         ~$4/month
- Notion Plus:        ~$8/month
Total:                ~$49/month

Self-Hosted (REXE VDS):
- Server cost:        ~$15-30/month
- All services included
Savings:              ~$20-35/month

3. Customization and Control

Cloud services offer you limited customization options. With self-hosting, you can configure the application however you want.

4. Independence

Cloud services can shut down, raise prices, or remove features. With self-hosting, you're independent from these risks.

File Storage and Sync

Nextcloud — Google Drive Alternative

hljs bash
docker run -d \
  --name nextcloud \
  -p 8080:80 \
  -v nextcloud_data:/var/www/html \
  -e MYSQL_HOST=db \
  -e MYSQL_DATABASE=nextcloud \
  -e MYSQL_USER=nextcloud \
  -e MYSQL_PASSWORD=password \
  nextcloud:latest

Nextcloud features:

  • File storage and sync
  • Calendar and contacts (CalDAV/CardDAV)
  • Video conferencing (Talk)
  • Office document editing (Collabora/OnlyOffice)
  • Photo gallery

Password Manager

Vaultwarden — Bitwarden Alternative

hljs bash
docker run -d \
  --name vaultwarden \
  -p 8080:80 \
  -v vaultwarden_data:/data \
  -e DOMAIN=https://vault.example.com \
  -e SIGNUPS_ALLOWED=false \
  vaultwarden/server:latest

Vaultwarden features:

  • Password management
  • 2FA support
  • Secure note storage
  • Organization and sharing
  • Compatible with all Bitwarden clients

Media Server

Jellyfin — Netflix/Plex Alternative

hljs bash
docker run -d \
  --name jellyfin \
  -p 8096:8096 \
  -v /path/to/media:/media \
  -v jellyfin_config:/config \
  jellyfin/jellyfin:latest

Jellyfin features:

  • Movie and series streaming
  • Music library
  • Live TV and DVR
  • Multi-user support
  • Mobile and TV apps

Code Repository

Gitea/Forgejo — GitHub Alternative

hljs bash
docker run -d \
  --name gitea \
  -p 3000:3000 \
  -p 222:22 \
  -v gitea_data:/data \
  gitea/gitea:latest

Uptime Monitoring

Uptime Kuma — Uptime Robot Alternative

hljs bash
docker run -d \
  --name uptime-kuma \
  -p 3001:3001 \
  -v uptime_kuma_data:/app/data \
  louislam/uptime-kuma:latest

Automation

n8n — Zapier/Make Alternative

hljs bash
docker run -d \
  --name n8n \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  -e N8N_BASIC_AUTH_ACTIVE=true \
  -e N8N_BASIC_AUTH_USER=admin \
  -e N8N_BASIC_AUTH_PASSWORD=password \
  n8nio/n8n:latest

Blog/CMS

Ghost — Medium/WordPress Alternative

hljs bash
docker run -d \
  --name ghost \
  -p 2368:2368 \
  -v ghost_content:/var/lib/ghost/content \
  -e url=https://blog.example.com \
  ghost:latest

Full Self-Hosting Stack with Docker Compose

hljs yaml
version: '3.8'

services:
  nextcloud:
    image: nextcloud:latest
    ports:
      - "8080:80"
    volumes:
      - nextcloud_data:/var/www/html
    environment:
      - MYSQL_HOST=db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=${DB_PASSWORD}
    depends_on:
      - db

  vaultwarden:
    image: vaultwarden/server:latest
    ports:
      - "8081:80"
    volumes:
      - vaultwarden_data:/data
    environment:
      - DOMAIN=https://vault.example.com
      - SIGNUPS_ALLOWED=false

  jellyfin:
    image: jellyfin/jellyfin:latest
    ports:
      - "8096:8096"
    volumes:
      - /media:/media:ro
      - jellyfin_config:/config

  uptime-kuma:
    image: louislam/uptime-kuma:latest
    ports:
      - "3001:3001"
    volumes:
      - uptime_kuma_data:/app/data

  db:
    image: mariadb:latest
    volumes:
      - db_data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=${DB_PASSWORD}

volumes:
  nextcloud_data:
  vaultwarden_data:
  jellyfin_config:
  uptime_kuma_data:
  db_data:

Hardware Requirements

Use CaseCPURAMStorage
Basic (Vaultwarden + Uptime Kuma)1 vCPU1 GB10 GB
Medium (+ Nextcloud + Gitea)2 vCPU2-4 GB50+ GB
Full Stack (+ Jellyfin + n8n)4 vCPU4-8 GB100+ GB
Media-Heavy (4K streaming)4+ vCPU8+ GB500+ GB

REXE's VDS plans are ideal for getting started with self-hosting. With 2 vCPU and 4 GB RAM, you can comfortably run Nextcloud, Vaultwarden, Gitea, and Uptime Kuma.

Self-Hosting Pros and Cons

Pros

  • Full data control and privacy
  • Long-term cost savings
  • Unlimited customization
  • No dependency on cloud services
  • Learning opportunity

Cons

  • Requires technical knowledge
  • Maintenance and update responsibility
  • Initial setup time
  • Backup responsibility
  • No uptime guarantee (your responsibility)