Self-Hosting Arivu
Install Arivu on a Linux VPS with the first-party installer, shared-proxy planning, SQLite backups, health-checked restore, and transactional upgrades.
Arivu’s core runs as one Go application with an embedded browser UI, API, workers, CLI commands, and SQLite database. The first-party installer is the recommended production path and can additionally manage the isolated native runtime for complete browser capture.
One-Command Install
curl -fsSL https://install.arivu.app | sudo bash
The bootstrap downloads arivu-installer, verifies it against release checksums, installs it under /usr/local/bin, and starts interactive setup. It does not require the GitHub CLI or a GitHub login.
Pin a release when you need reproducibility:
curl -fsSL https://install.arivu.app | sudo ARIVU_VERSION=v1.2.3 bash
The installer asks for the domain, first admin, TLS email, proxy mode, signup policy, backup policy, and complete browser-capture choice. Fresh supported installs enable complete capture by default after showing the plan. Configure optional model, email, and X providers later from Admin settings.
Preview Host Changes
arivu-installer plan \
--domain arivu.example.com \
--admin-email admin@example.com
Preflight detects ports, common reverse proxies, firewall tools, existing Arivu files, and domain conflicts before applying changes.
Proxy Modes
| Mode | Use it when |
|---|---|
auto |
Let the installer select the safest mode from host state |
managed-caddy |
Arivu can own a Caddy site block on a clean host |
existing-proxy |
Caddy, Nginx, or Apache already owns public traffic |
app-only |
You want only the loopback service and example proxy snippets |
The installer does not replace global proxy configuration, stop unrelated services, or silently open firewall ports. DNS mismatch warnings include next steps but do not claim that public HTTPS is already working.
Non-Interactive Install
sudo arivu-installer install \
--non-interactive \
--domain arivu.example.com \
--admin-email admin@example.com \
--admin-password-file /root/arivu-admin-password \
--tls-email ops@example.com \
--proxy-mode auto \
--version latest
Add --browser-capture=false for a core-only installation. Complete capture is supported on Ubuntu 22.04+ and Debian 12+ on AMD64 and ARM64. It remains headless and separate from the core app, and the installer manages its verified runtime without requiring operator-managed Docker or npm tooling.
Installed Files
/usr/local/bin/arivu/usr/local/bin/arivu-installer/usr/local/lib/arivu-capture/when complete capture is enabled/etc/arivu/arivu.env/var/lib/arivu/arivu.sqlite3/var/lib/arivu/arivu.sqlite3.assets/when retained artifacts exist/var/backups/arivu/- Arivu-owned systemd service, optional capture service, and optional backup timer
Keep the generated environment file small. Use Admin settings for routine provider and instance changes.
Operations
arivu-installer status --domain arivu.example.com
arivu --version
arivu-installer --version
sudo arivu-installer backup
sudo arivu-installer restore --backup /var/backups/arivu/20260708T010203Z
sudo arivu-installer upgrade
sudo arivu-installer reconfigure
sudo arivu-installer uninstall
Use sudo arivu-installer reconfigure --browser-capture=true or --browser-capture=false to change the capture choice. Disabling the runtime preserves existing reader content and saved artifacts. Direct HTTP capture continues independently.
Backup uses a SQLite-consistent snapshot, copies the adjacent asset store except staging data, and writes a versioned size/hash manifest. Restore verifies a present manifest, activates the database and assets as a pair, stops only Arivu-managed units, repairs ownership, restarts Arivu, and checks local health. Upgrade verifies matching app, installer, and enabled capture-runtime artifacts, activates them transactionally, and rolls the release back if activation fails.
Upgrades are additive-safe, retain executable permissions under restrictive host defaults, and report useful activation diagnostics without exposing secrets. Before quality repair, sync X if configured, create and verify a backup, run arivu quality audit --db arivu.sqlite3 --format json, and review a user-scoped dry run with arivu reprocess --db arivu.sqlite3 --stale-version --dry-run --user-id USER_ID. Check an accepted run with arivu reprocess --db arivu.sqlite3 --status RUN_ID.
Local Development
go run ./cmd/arivu serve --addr 127.0.0.1:8080 --db arivu.sqlite3
Open http://127.0.0.1:8080/auth. Stop and restart after changing Go or embedded frontend source because go run does not hot reload a running binary.
Production Checklist
- Use HTTPS and
COOKIE_SECURE=true. - Generate a unique
SECRET_KEY. - Disable public signups after initial setup unless you intend to keep them open.
- Bind to loopback when an existing reverse proxy owns public traffic.
- Run backups and test a restore before relying on the instance for important knowledge.
- Review installer status and local health after upgrades.
- Choose core-only capture when the host does not meet the native runtime baseline or you do not want the additional browser runtime.