Self-host VisiConvert
A self-hosted install is one workspace. Docker runs the Rust API, the web app and a dedicated PostgreSQL database. You do not need a hosted subscription or a Twilio account to install it and try form leads and bookings.
Requirements
Section titled “Requirements”- Linux or macOS with Docker and the Docker Compose plugin.
- Bash and Python 3.11 or newer. Rust, Node and PostgreSQL run inside Docker.
- About 4 GiB of free RAM and 20 GiB of disk for the first build.
- A free host port. The default is
3100, bound to loopback only.
Install
Section titled “Install”Download the source from GitHub, then from the source directory:
bash scripts/self-host.sh initbash scripts/self-host.sh upOpen http://127.0.0.1:3100. The login key is VISICONVERT_API_KEY in .local/self-host/config.env. The installer never prints it.
init generates the database password, workspace key and encryption key, and writes them to a mode-600 file. up builds the image, backs up the database, runs migrations, starts the app and checks it.
To use a different port or a public domain, pass them to the first init:
bash scripts/self-host.sh init --port 43110 --origin https://leads.example.comMake it reachable
Section titled “Make it reachable”Twilio has to reach your server over HTTPS. Point a reverse proxy or a Cloudflare Tunnel at http://127.0.0.1:3100 and set PUBLIC_URL in config.env to the HTTPS origin, then run up again. The installer does not manage DNS, TLS or firewalls.
For first access to a remote server, an SSH tunnel is enough:
ssh -N -L 3100:127.0.0.1:3100 user@your-serverEveryday commands
Section titled “Everyday commands”bash scripts/self-host.sh statusbash scripts/self-host.sh verifybash scripts/self-host.sh logsbash scripts/self-host.sh backupbash scripts/self-host.sh stopUpgrade
Section titled “Upgrade”Copy in the new source without deleting .local/self-host/, then run bash scripts/self-host.sh up. It backs up the database before migrating, and only restarts the app after migrations succeed.
Back up
Section titled “Back up”Backups go to .local/self-host/backups/<timestamp>/. Each has the database dump, a copy of the configuration and a checksum manifest.
Restores only go into an empty installation, so they can never overwrite live data. The full procedure, along with rollback and troubleshooting, is in the self-hosting guide on GitHub.