Early Bird $20

Remote Hosting Server: Serve Files Publicly

This setup publishes your installers and release files so customers can download from your domain. Example target: Ubuntu 22.04+ VPS.

1) Provision Server + DNS

Server

  • Create VPS (2 vCPU, 2-4GB RAM)
  • Open ports 80/443 in firewall
  • SSH hardening (keys only)

DNS

  • Create A record: downloads.your-domain.com
  • Point to VPS public IP
  • Set TTL 300 while testing

2) Upload Release Files

ssh ubuntu@your-server-ip
sudo mkdir -p /var/www/contextproxy/releases
sudo chown -R $USER:$USER /var/www/contextproxy

# from local machine
scp ContextProxy-windows.zip ubuntu@your-server-ip:/var/www/contextproxy/releases/
scp ContextProxy-macos.dmg ubuntu@your-server-ip:/var/www/contextproxy/releases/
scp ContextProxy-linux.tar.gz ubuntu@your-server-ip:/var/www/contextproxy/releases/

3) Nginx Static File Host

sudo apt update
sudo apt install -y nginx

sudo tee /etc/nginx/sites-available/contextproxy-downloads >/dev/null <<'NGINX'
server {
  listen 80;
  server_name downloads.your-domain.com;

  root /var/www/contextproxy;
  autoindex off;

  location / {
    try_files $uri $uri/ =404;
  }
}
NGINX

sudo ln -s /etc/nginx/sites-available/contextproxy-downloads /etc/nginx/sites-enabled/contextproxy-downloads
sudo nginx -t
sudo systemctl reload nginx

4) Add HTTPS (Let's Encrypt)

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d downloads.your-domain.com

# verify auto-renew
sudo systemctl status certbot.timer

5) Optional: Caddy (Simpler TLS)

downloads.your-domain.com {
  root * /var/www/contextproxy
  file_server
}

6) Security + Delivery Basics

Checksums

sha256sum /var/www/contextproxy/releases/*

Rate Limits

Apply Nginx rate limiting to mitigate abuse and scraping.

CDN

Put Cloudflare in front for global caching and DDoS filtering.

Serving the Proxy App Remotely

If you also want to host the API itself, run UPtrim headless behind Nginx reverse proxy and expose only HTTPS.

python3 main.py --headless --host 127.0.0.1 --port 9099 --workers 2

7) Run 24/7 with systemd + Reverse Proxy

sudo tee /etc/systemd/system/contextproxy.service >/dev/null <<'SERVICE'
[Unit]
Description=UPtrim API
After=network.target

[Service]
User=ubuntu
WorkingDirectory=/opt/contextproxy
ExecStart=/opt/contextproxy/.venv/bin/python /opt/contextproxy/main.py --headless --host 127.0.0.1 --port 9099 --workers 2
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
SERVICE

sudo systemctl daemon-reload
sudo systemctl enable --now contextproxy
sudo systemctl status contextproxy
sudo tee /etc/nginx/sites-available/contextproxy-api >/dev/null <<'NGINX'
server {
  listen 443 ssl;
  server_name api.your-domain.com;

  location / {
    proxy_pass http://127.0.0.1:9099;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}
NGINX