Deploy the platform on a fresh Ubuntu or Debian VPS. Setup time depends on your server, DNS, and certificate issuance.
Step 1: Configure DNS Records
Configure your DNS records at your domain registrar (Cloudflare, Namecheap, Route53, etc.) pointing to your VPS IP:
Topology A: Single Unified Domain (Recommended)
| Record Type | Host | Target / Value | Purpose |
|---|---|---|---|
A / AAAA | media | <YOUR_VPS_IP> | Serves both React Dashboard UI and Rust Media APIs |
CNAME | status | statuspage.betteruptime.com | Dedicated out-of-band Better Stack status page |
Topology B: Split 2-Domain Architecture
| Record Type | Host | Target / Value | Purpose |
|---|---|---|---|
A / AAAA | media | <YOUR_VPS_IP> | Dedicated React Dashboard UI |
A / AAAA | api | <YOUR_VPS_IP> | Dedicated Rust Axum API and media streaming |
CNAME | status | statuspage.betteruptime.com | Dedicated out-of-band Better Stack status page |
Step 2: 1-Line Server Deployment
SSH into your fresh Ubuntu or Debian VPS and execute the automated installer bot:
Run as root:
bash <(curl -fsSL https://raw.githubusercontent.com/nourddinak/OwnMediaHost/main/scripts/deploy.sh)Run with sudo (standard user):
curl -fsSL https://raw.githubusercontent.com/nourddinak/OwnMediaHost/main/scripts/deploy.sh -o /tmp/deploy.sh && sudo bash /tmp/deploy.shThe installer provisions Caddy reverse proxy, downloads pre-compiled release binaries , initializes SQLite WAL mode, configures systemd services, and secures automatic Let's Encrypt SSL.
Step 3: Connect 24/7 Status Page (Optional)
If you want automated public uptime monitoring, incident history and uptime tracking, OwnMediaHost integrates with Better Stack via a standalone companion repository: OwnMediaHost-status.
Once your monitor is set up, connect it to your server in 1 click:
sudo bash /opt/ownmediahost/scripts/connect-status.sh "https://status.yourdomain.com"This step is optional. OwnMediaHost operates completely independently without an external status page. If connected, the status dot in your dashboard sidebar will link directly to your public status page. For the complete step-by-step setup guide, DNS CNAME configuration, and template files, visit the standalone repository: nourddinak/OwnMediaHost-status (or see status/README.md).
Always monitor/health(https://media.yourdomain.com/health) in Better Stack! Do not monitor the root domain (/). In a single unified domain setup, Caddy serves the static frontend HTML directly. Probing/returns HTTP 200 even if the backend service is down. Probing/healthaccurately triggers anHTTP 502 Bad Gatewayincident when the backend is down but Caddy remains reachable.