Interactive setup (recommended)
Before you run the setup script, make sure you are logged in as a non-root user withsudo access. The script is designed for that flow and will stop if you run it as root.
If you’re on Ubuntu 22.04 / 24.04, the setup script handles everything for the app deployment path — dependencies, repo clone, .env config, Docker image pull, nginx, SSL, and firewall — in one session:
root, create a non-root sudo user first, then reconnect as that user before running the setup script:
Your domain for the app, enter the hostname you want to serve OneGlanse on, such as app.yourdomain.com. The script configures nginx and requests the TLS certificate for that exact domain.
Or clone first and run locally:
curl ... | bash here. Because the setup flow is interactive, piping the script body into bash steals stdin from the prompts. bash <(...) keeps stdin attached to your terminal, so the prompts work correctly.
The VPS flow is intentionally simple:
- it pulls the published Docker images
- it does not build the app on your server by default
git pullupdates the deployment files, and the next bootstrap pulls the latest published app images
Manual setup
This guide deploys OneGlanse on a fresh Ubuntu 22.04 / 24.04 VPS. At the end you’ll have:- OneGlanse running behind nginx with HTTPS
- Postgres, ClickHouse, and Redis running in Docker
- Provider sessions uploaded from your local machine
- The landing site is deployed separately on Vercel
- The docs are deployed separately on Mintlify
- OneGlanse collects responses from real provider UIs, not official model APIs
- provider auth is captured locally with
pnpm auth - VPS browser traffic needs a residential proxy because datacenter IPs are often blocked by provider websites
1. Provision the VPS
Any provider works (Hetzner, DigitalOcean, Vultr, etc.). Minimum spec:| Minimum | Recommended | |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 GB | 8 GB |
| Disk | 40 GB SSD | 80 GB SSD |
| OS | Ubuntu 22.04 | Ubuntu 24.04 |
YOUR_VPS_IP.nip.io or YOUR_VPS_IP.sslip.io also works.
2. Install dependencies
SSH into your VPS as your non-root sudo user and run:3. Clone and configure
.env and fill in the required values:
BETTER_AUTH_SECRET or INTERNAL_CRON_SECRET are still unset or left as replace-me, node scripts/run-compose.mjs bootstrap generates them automatically before Docker starts.
Why the proxy is mandatory on VPS:
- VPS traffic usually originates from datacenter IP ranges
- provider websites frequently challenge or block those IPs
- OneGlanse collects from authenticated web UIs, so network reputation matters
4. Start the stack
- Web app on 127.0.0.1:3000 (loopback only, for nginx)
- Agent worker (internal)
- Postgres on port 5432 (internal)
- ClickHouse on port 8123 (internal)
- Redis on port 6379 (internal)
web, agent-worker, postgres, clickhouse, and redis.
5. Configure nginx
Create the nginx site config:app.yourdomain.com with your domain:
6. Enable HTTPS with Let’s Encrypt
- Obtain a certificate
- Automatically update the nginx config to redirect HTTP → HTTPS
- Set up auto-renewal via a systemd timer
7. Upload provider auth sessions
Provider auth must be captured on your local machine (it needs a real browser). Once captured, upload the sessions to the VPS. OneGlanse uses Camoufox, an anti-fingerprint Firefox-based browser, for this flow. That is intentional: plain Chrome / Chromium automation is more likely to trigger login loops, verification challenges, or unstable sessions on provider websites. Camoufox is a better fit for authenticated scraping against anti-bot-protected chat interfaces. On your local machine — set these in your local.env:
pnpm auth will ask whether to upload to the VPS — answer y. Sessions are transferred and the VPS agent picks them up immediately.
When a session expires later and you want to re-upload without going through the sign-in flow again:
8. Open the app
Navigate tohttps://app.yourdomain.com, create your account, and start adding prompts.
Before you run prompts from the VPS, make sure THORDATA_PROXY_API_URL in /home/$USER/oneglanse/.env points to your real residential proxy endpoint. If you deployed with a placeholder or later changed the proxy configuration, update that value and rerun:
Updates
Pull and redeploy without downtime:Firewall
Allow only the ports nginx needs. For auth uploads, port3333 is needed only for the agent upload API:
3333/tcp only from that source:
3333/tcp broadly instead and rely on AGENT_AUTH_UPLOAD_TOKEN for authentication:
3333 is only for pnpm upload:vps, which sends provider sessions to http://YOUR_VPS_IP:3333/auth/sessions. On self-hosted deployments, the web app’s provider management endpoints stay behind app authentication, while the upload API on 3333 is protected by the bearer token in AGENT_AUTH_UPLOAD_TOKEN.
Troubleshooting
502 Bad Gateway — the web container isn’t running yet. Check:/opt/oneglanse/storage). If they expire, re-run pnpm upload:vps from your local machine.
VPS ran out of disk — ClickHouse data grows over time. Check usage: