Deploy Vane, a privacy-focused AI answering engine with bundled SearXNG, on Render as a single Docker web service with a persistent disk.
This repo packages Vane as a Render Blueprint (docker-fork): one Docker image runs Vane (Next.js) and SearXNG on localhost:8080, with SQLite and uploads on a disk.
| Piece | Role |
|---|---|
| Vane | Privacy-focused AI answering UI |
| SearXNG | Bundled search (inside the same container) |
| Render Web Service | Docker app on Standard |
| Render Disk | SQLite / config / uploads under /home/vane/data |
flowchart LR
browser["Browser"] --> vane["vane<br/>Docker Standard"]
vane --> searx["SearXNG<br/>localhost:8080"]
vane --> disk[("/home/vane/data")]
- Click Deploy to Render. Render forks this template and applies
render.yaml. - Render builds
./Dockerfile(Vane + SearXNG) on a Standard instance. - Open the
*.onrender.comURL and complete first-run setup in the UI. - Chat history and uploads persist on the disk across deploys.
- Configure LLM / providers in Vane's setup screens (not required at Apply).
| Resource | Type | Plan | Notes |
|---|---|---|---|
vane |
Web (runtime: docker) |
standard | Health /; Playwright + SearXNG need 2 GB |
vane-data |
Disk (1 GB) | Mounted at /home/vane/data |
Default region: oregon. Previews are off. Standard is the floor: Starter OOMs with Playwright/SearXNG ("No open ports detected").
Important: DATA_DIR must be /home/vane (app root), not the disk mount path. Vane derives data/db.sqlite under that root so paths land on the mounted disk correctly.
- A Render account
- An LLM provider configured in Vane after first boot
- Click Deploy to Render above and fork into your GitHub account.
- On Apply, confirm the
vaneStandard service and disk. - Wait until Live (~8–15 minutes first image build).
- Open the public URL and finish setup.
- Ask a question and confirm answers return with search.
Smoke test:
curl -sS -o /dev/null -w "%{http_code}\n" https://<your-vane>.onrender.com/| Feature | Description |
|---|---|
| Single container | Vane + SearXNG, no separate search service |
| Persistent SQLite | Disk at /home/vane/data |
| Docker fork | Builds from ./Dockerfile |
| One-click Blueprint | projects / environments |
| Standard by default | Sized for Playwright + SearXNG |
| Variable | Source | Description |
|---|---|---|
NODE_ENV |
Wired | production |
DATA_DIR |
Wired | /home/vane (do not set to the mount path) |
PORT |
Wired | 3000 |
LLM and other product settings are configured in the Vane UI after deploy.
| Resource | Approx. monthly |
|---|---|
| Web (Standard) | ~$25 |
| Disk (1 GB) | ~$0.25 |
| Total | ~$25 |
LLM usage is billed by your provider. Do not drop to Starter.
| Problem | Solution |
|---|---|
| Health check fails / no open ports | Keep Standard. Check build logs for OOM. |
| DB / migration errors on boot | Confirm DATA_DIR=/home/vane and disk mounted at /home/vane/data. |
| Search empty | SearXNG runs in-container on localhost:8080; check app logs. |
| Data lost after redeploy | Disk must remain attached. |
render.yaml Render Blueprint (Docker web + disk)
README.md This file
LICENSE MIT (template / upstream)
Dockerfile App + SearXNG image
src/ … Vane source (docker-fork)
assets/ Hero / screenshots
Render:
Vane:
MIT for this template package.
Upstream Vane is MIT. Star that repo if this helped.
