How to Host Multiple Services on One Domain Using Reverse Proxies (2025 Guide for HomeLab & Self-Hosting)

Want to host multiple websites or web apps on your single home server, all using your one custom domain? Whether it’s running Jellyfin, Nextcloud, or a personal blog—all on the same server or VM—this guide will show you how to do it using reverse proxy setup with Apache or NGINX.

How to Host Multiple Services on One Domain Using Reverse Proxies (2025 Guide for HomeLab & Self-Hosting)

Let’s break it down step-by-step for U.S. home users looking to self-host multiple services securely and professionally.


🧠 What Is a Reverse Proxy?

A reverse proxy is a server that receives requests on behalf of another server. It forwards the request to the appropriate backend service based on the URL path or subdomain.

For example:

  • https://yourdomain.com → your main website (Apache/WordPress)
  • https://yourdomain.com/jellyfin → your Jellyfin media server
  • https://yourdomain.com/nextcloud → your private cloud

This keeps all services neat and accessible under one domain—without needing multiple IPs or ports.


🧰 What You’ll Need

  • A working domain name (e.g., from IONOS, Namecheap)
  • Ubuntu server or VM already configured
  • Apache or NGINX installed
  • SSL set up via Let’s Encrypt / Certbot
  • Multiple services (Jellyfin, Nextcloud, etc.) installed on different ports (e.g., 8096, 9000)

🌐 Method 1: Apache Reverse Proxy (Recommended for Simpler Setups)

✅ Step 1: Enable Apache Proxy Modules

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod rewrite
sudo systemctl restart apache2

✅ Step 2: Create a Virtual Host Config

Let’s assume:

  • Jellyfin runs at localhost:8096
  • Nextcloud runs at localhost:9000
sudo nano /etc/apache2/sites-available/000-default.conf

Inside the <VirtualHost *:80> or SSL-enabled block (<VirtualHost *:443>), add:

ProxyPreserveHost On

# Main site
ServerName yourdomain.com

# Jellyfin reverse proxy
ProxyPass "/jellyfin" "http://localhost:8096"
ProxyPassReverse "/jellyfin" "http://localhost:8096"

# Nextcloud reverse proxy
ProxyPass "/nextcloud" "http://localhost:9000"
ProxyPassReverse "/nextcloud" "http://localhost:9000"

✅ Step 3: Reload Apache

sudo systemctl reload apache2

Now when you visit:

  • https://yourdomain.com/jellyfin → Jellyfin interface
  • https://yourdomain.com/nextcloud → Nextcloud interface

🌐 Method 2: NGINX Reverse Proxy (More Flexible for Subdomains)

Great for when you want:

  • https://jellyfin.yourdomain.com
  • https://cloud.yourdomain.com

✅ Step 1: Install NGINX

sudo apt install nginx -y

✅ Step 2: Create Server Blocks for Each Subdomain

sudo nano /etc/nginx/sites-available/jellyfin
server {
    listen 80;
    server_name jellyfin.yourdomain.com;

    location / {
        proxy_pass http://localhost:8096;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Do the same for cloud.yourdomain.com and other apps.

✅ Step 3: Enable Site & Restart NGINX

sudo ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/
sudo systemctl restart nginx

✅ Step 4: Add DNS Subdomain Records

Go to your domain DNS settings:

  • Add A record for:
    • jellyfin.yourdomain.com → your public IP
    • cloud.yourdomain.com → same public IP

🔐 Optional: Add SSL for All Subdomains

Install Certbot for NGINX:

sudo apt install certbot python3-certbot-nginx -y

Then:

sudo certbot --nginx

Certbot will automatically configure SSL for all configured domains/subdomains.


🙋 FAQ: Hosting Multiple Services on One Domain

Q: Do I need multiple public IPs for this?
No, one public IP is enough. Reverse proxy handles all the routing internally.

Q: What if I want to host with ports (e.g., :8080)?
Using ports externally is not ideal. Reverse proxies allow everything on port 80/443 (HTTP/HTTPS).

Q: Should I use path-based or subdomain-based routing?
Use subdomains if:

  • Each app is large or needs separate configs
    Use paths if:
  • You want to keep everything under one domain (simpler DNS)

Q: Can I use Docker containers behind a reverse proxy?
Absolutely! Just make sure each container maps to a unique internal port.

Want to setup your own sever : How to Host Your Own Secure Website at Home in 2025 – Complete Step-by-Step Guide


📦 Tech I Use for Self-Hosting (Affiliate Links)


🏷️ Tags

reverse proxy setup, apache reverse proxy, nginx reverse proxy, host multiple apps on one domain, jellyfin nginx, self-hosted homelab, domain with multiple services, ssl multiple subdomains, homelab apache config


📣 Hashtags

#SelfHosted #ReverseProxy #NGINX #Apache #HomeLab #Jellyfin #Nextcloud #MultiAppHosting #DomainRouting #HomelabUSA


Visited 96 times, 2 visit(s) today

Arjun Nair

Arjun Nair

Arjun is a seasoned Linux enthusiast and open-source contributor. He has worked with multiple distributions including Debian, Fedora, and Arch-based systems, and regularly tests new desktop environments and community projects. With over a decade in IT system administration, Arjun brings practical, hands-on insights to Linux tutorials and reviews.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.