Deploy it yourself (beginner)
This guide assumes no server experience. The website and installer downloads are free to host. The API server costs from $4/month (DigitalOcean's smallest Droplet, price checked on 13 Oct 2026 on digitalocean.com/pricing/droplets); we recommend the $6/month 1 GB size.
Part 1: Website on Cloudflare Pages (free)
- Sign in to the Cloudflare dashboard. Go to Workers & Pages → Create → Pages → Direct Upload and create a project named
blendbrowser. Your site will be athttps://blendbrowser.pages.dev. - Create an API token: My Profile → API Tokens → Create Token → Custom token with permission Account → Cloudflare Pages → Edit. Copy it.
- Copy your Account ID from the right sidebar of the Workers & Pages page.
- In GitHub, open the repository Settings → Secrets and variables → Actions:
- Secrets:
CLOUDFLARE_API_TOKENandCLOUDFLARE_ACCOUNT_ID. - Variables (optional):
SITE_URL(defaulthttps://blendbrowser.pages.dev) andAPI_URL(your API address from Part 3).
- Secrets:
- Go to Actions → Deploy website → Run workflow. Pushes to
maindeploy automatically.
Part 2: Installer downloads on Cloudflare R2 (free)
The code repository is private, so its GitHub release files can't be downloaded by the public. Installers go to a public R2 bucket instead (free tier: 10 GB storage, no egress fees).
- Cloudflare dashboard → R2 → Create bucket, e.g.
blend-downloads. - Bucket → Settings → Public access: enable the r2.dev subdomain (later: connect
downloads.blendbrowser.comas a custom domain). Copy the public URL, e.g.https://pub-xxxx.r2.dev. - Bucket → Settings → CORS policy, so the website can read the manifest:
[{ "AllowedOrigins": ["https://blendbrowser.pages.dev", "https://blendbrowser.com"], "AllowedMethods": ["GET", "HEAD"], "AllowedHeaders": ["*"], "MaxAgeSeconds": 3600 }] - R2 → Manage R2 API tokens → Create API token with Object Read & Write on that bucket only. Copy the Access Key ID and Secret.
- GitHub repository secrets:
R2_ACCESS_KEY_ID,R2_SECRET_ACCESS_KEY,R2_BUCKET(blend-downloads),R2_PUBLIC_URL(the URL from step 2).CLOUDFLARE_ACCOUNT_IDfrom Part 1 is reused for the R2 endpoint. - Publish a version: push a tag such as
v0.7.0(or run Actions → Release → Run workflow). The workflow builds the installer and uploadswin/<installer>.exe,win/latest.yml(auto-update feed) andwin/latest.json(download page), plus a copy underwin/<version>/. - Re-run Deploy website so the download page uses
R2_PUBLIC_URL.
Fallback without R2: create a separate public repository nomanasgharcodes/blend-browser-releases that holds no code, only releases. Create a release there and attach the .exe and latest.yml from the Release workflow artifact. The download page automatically falls back to that repo's latest release.
Part 3: API on a DigitalOcean Droplet
- In DigitalOcean click Create → Droplets. Choose Ubuntu 24.04, Basic → Regular, and $6/mo.
- Under Authentication add an SSH key (DigitalOcean shows how to create one).
- Under Advanced options → Add initialization scripts, paste the contents of
deploy/digitalocean/cloud-init.yml. It installs Docker, a firewall and swap. - Create the Droplet and wait about 3 minutes. Copy its IP address.
- On Windows, open PowerShell and run
ssh root@YOUR_IP. - Follow
deploy/digitalocean/README.md: clone the repo, copy.env.prod.exampleto.env.prod, and fill it in. Until you own a domain, useAPI_DOMAIN=YOUR_IP.sslip.io, which gives you free HTTPS. - Start everything with
docker compose -f docker-compose.prod.yml --env-file .env.prod up -d --build, then openhttps://YOUR_IP.sslip.io/health. It should sayok: true. - Set the GitHub variable
API_URL=https://YOUR_IP.sslip.ioand run Deploy website again.
Part 4: Your own domain (later)
- Buy the domain and add it to Cloudflare (free plan).
- In Pages → blendbrowser → Custom domains, add
blendbrowser.com. Cloudflare creates the DNS record. - Optional: in R2, connect the custom domain
downloads.blendbrowser.comand updateR2_PUBLIC_URL. - Add a DNS record
A api → YOUR_IPwith the proxy off (grey cloud). - Update the GitHub variables
SITE_URL=https://blendbrowser.comandAPI_URL=https://api.blendbrowser.com, and on the server.env.prod:API_DOMAIN,API_URL,APP_URL,CORS_ORIGINS. Re-deploy both.
Costs
| Item | Cost |
|---|---|
| Cloudflare Pages, DNS, SSL | $0 |
| Cloudflare R2 downloads (≤10 GB, no egress fees) | $0 |
| DigitalOcean Droplet | $4–6/mo |
Backups (backup.sh, local) |
$0 (DO backups +20%) |
| Domain | about $10/yr when bought |