Run the workspace on your infrastructure
This guide describes deployment and recovery requirements. Use the application revision and installation instructions supplied with your distribution. This page does not grant a software license.
What you will need
| Component | Current baseline |
|---|---|
| Host | Docker with Compose v2 and an HTTPS reverse proxy |
| Database | PostgreSQL 18.6, provided by the standalone Compose setup |
| Documents | A private external Cloudflare R2 or compatible S3 bucket |
| Authenticated SMTP with verified STARTTLS and a working sender | |
| AI | Your configured provider credentials; Mistral is supported |
| Access | A configured registration email allowlist |
The reverse proxy needs WebSocket support. The app port binds to host loopback; PostgreSQL does not publish a host port. The Compose setup does not include an object store or a mail service.
Installation shape
The application checkout includes compose.selfhost.yaml, .env.example and the full installation guide. The commands below apply inside that application checkout, not this website repository.
cp .env.example .env
chmod 600 .env
# Fill the required settings locally before continuing.
docker compose -f compose.selfhost.yaml --env-file .env config --quiet
docker compose -f compose.selfhost.yaml --env-file .env build --pull app
docker compose -f compose.selfhost.yaml --env-file .env up -d --wait
Keep secrets out of source control and support messages. Use the installation guide supplied with your application revision for exact settings, proxy configuration, storage CORS and recovery procedures.
External services remain external
- Browser uploads, the app and the selected AI provider must be able to reach signed object URLs. Buckets stay private.
- The current explicit-endpoint S3 adapter signs for
us-east-1; arbitrary S3 signing regions are not configurable in this setup. - Confirmation and login require delivered email. A local development mailbox is not available in production.
- Recognition and chat need a working selected AI provider. No AI credentials are required merely to start the app.
- Changing environment settings requires container recreation, not just a restart.
Before using real records
Use non-sensitive test documents first to check registration, email delivery, uploads, previews, recognition, transaction review and cited chat. Test restart persistence and restore procedures.
Backups and recovery
Original documents are held in private object storage; PostgreSQL holds structured records and history. A database backup alone does not preserve the original files. Configure scheduled backups of both, keep copies separate from the live installation and test restoring them together.
Back up the database, original bucket objects, private configuration and the stable SECRET_KEY_BASE. That key protects stored credentials; losing it can make a database backup insufficient. Keep backups private and verify recovery independently.
Backup scheduling, retention, monitoring and restore testing are the operator’s responsibility; they are not automatically configured by the application. Select a recovery point and recovery time appropriate to your business, then verify that your backup process meets them.
AI processing can transmit document content to your chosen provider. Check privacy, retention and region requirements before uploading real business records. Installation packaging is not a substitute for security review or operator acceptance.