Self-host DocuSeal
A self-hosted document filling and signing platform: turn PDFs into fillable forms with a WYSIWYG field builder, send them to one or more signers, and get back automatically signed PDFs with an audit log.
Key facts
Pick DocuSeal when you want document signing running in minutes. Upstream's Docker Compose file starts the Rails app, PostgreSQL and Caddy with automatic HTTPS for the `HOST` you pass. The first-run `/setup` page creates the admin and generates the signing certificate. A single `docker run` on SQLite also works, and MySQL is supported. The free AGPL-3.0 edition has a WYSIWYG PDF field builder with 12 field types, multiple signers, SMTP email, disk or S3/GCS/Azure storage, an audit log, webhooks and a basic API. Reminders, SSO, bulk send, conditional fields, white-labelling and embedding are in the paid Pro licence. Upstream publishes no RAM figure; our 1 GB floor is an estimate. If you need embedding or reminders without per-seat pricing, Documenso is the catalog's other e-signature tool.
What you need
- Any VPS with at least 1024 MB of RAM
- A domain you control — most self-hosted setups need HTTPS in front of them
- Under an hour if you've used Docker before
Paid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# DocuSeal — upstream's Docker Compose (app + PostgreSQL + Caddy with automatic HTTPS), per docuseal.com/install
curl https://raw.githubusercontent.com/docusealco/docuseal/3.2.6/docker-compose.yml > docker-compose.yml
sed -i 's|docuseal/docuseal:latest|docuseal/docuseal:3.2.6|' docker-compose.yml
# point your domain's DNS at this server first — Caddy requests the TLS certificate on start
sudo HOST=sign.example.com docker compose up -d
# open https://sign.example.com — the first visit runs /setup, which creates the admin and generates the signing certificate
# single container instead (SQLite): docker run --name docuseal -p 3000:3000 -v.:/data docuseal/docuseal:3.2.6What you take on
DocuSeal's Compose file and pricing page leave a few things to check before real contracts go through it: