documenso

documenso

Official

Docker app from Eurotimmy's Repository

Overview

Documenso — open-source e-signature platform (self-hosted DocuSign alternative). Exposes a web UI on the configured port (default 3000). Requires PostgreSQL and SMTP settings. If you use a reverse proxy, set NEXT_PUBLIC_WEBAPP_URL and NEXTAUTH_URL to your public HTTPS URL (no trailing slash).
Documenso Logo

The Open Source DocuSign Alternative.
Learn more »

Discord · Website · Documentation · Issues · Upcoming Releases · Roadmap

Join Documenso on Discord Github Stars License Commits-per-month open in devcontainer Contributor Covenant

About Documenso

Signing documents digitally should be fast and easy and should be the best practice for every document signed worldwide. This is technically quite easy today, but it also introduces a new party to every signature: The signing tool providers. While this is not a problem in itself, it should make us think about how we want these providers of trust to work. Documenso aims to be the world's most trusted document-signing tool. This trust is built by empowering you to self-host Documenso and review how it works under the hood.

Join us in creating the next generation of open trust infrastructure.

Recognition

Documenso - The open source DocuSign alternative | Product Hunt Documenso - The Open Source DocuSign Alternative. | Product Hunt

Community and Next Steps 🎯

  • Try Documenso by self-hosting it or signing up at documenso.com.
  • Tell us what you think in the Discussions.
  • Join the Discord server for any questions and getting to know other community members.
  • ⭐ the repository to help us raise awareness.
  • Open detailed issues to report bugs or propose features.

Contributing

Note: We no longer accept external pull requests, aside from a small group of trusted contributors we reach out to directly. The best way to contribute is through detailed issues. Read Why We're Pausing External Pull Requests for the reasoning.

  • Documenso stays open source. You can read, audit, run, and fork the code.
  • To report issues or propose changes, see our contribution guide.

Contact us

Contact us if you are interested in our Enterprise plan for large organizations that need extra flexibility and control.

Book us with Cal.com

Tech Stack

TypeScript Made with Prisma Tailwind CSS

Local Development

Requirements

To run Documenso locally, you will need

  • Node.js (v22 or above)
  • Postgres SQL Database
  • Docker (optional)

Developer Quickstart

Note: This is a quickstart for developers. It assumes that you have both docker and docker-compose installed on your machine.

Want to get up and running quickly? Follow these steps:

  1. Fork this repository to your GitHub account.

After forking the repository, clone it to your local device by using the following command:

git clone https://github.com/<your-username>/documenso
  1. Set up your .env file using the recommendations in the .env.example file. Alternatively, just run cp .env.example .env to get started with our handpicked defaults.

  2. Run npm run dx in the root directory

    • This will spin up a postgres database and inbucket mailserver in a docker container.
  3. Run npm run dev in the root directory

  4. Want it even faster? Just use

npm run d

Access Points for Your Application

  1. App - http://localhost:3000

  2. Incoming Mail Access - http://localhost:9000

  3. Database Connection Details

    • Port: 54320
    • Connection: Use your favorite database client to connect using the provided port.
  4. S3 Storage Dashboard - http://localhost:9001

Developer Setup

Manual Setup

Follow the manual setup guide to configure Documenso on your local machine.

Run in Gitpod

  • Click below to launch a ready-to-use Gitpod workspace in your browser.

Open in Gitpod

Run in DevContainer

We support DevContainers for VSCode. Click here to get started.

Video walkthrough

If you're a visual learner and prefer to watch a video walkthrough of setting up Documenso locally, check out this video:

Watch the video

Docker

We provide official Docker images on DockerHub and GitHub Container Registry.

For setup instructions, see the Docker Deployment and Docker Compose guides.

Self Hosting

We support a variety of deployment methods including Docker, Docker Compose, Railway, Kubernetes, and manual deployment.

For full instructions, requirements, and configuration details, see the Self Hosting documentation.

One-Click Deploys

Railway

Deploy on Railway

Render

Deploy to Render

Koyeb

Deploy to Koyeb

Elestio

Deploy on Elestio

Security

If you believe you have found a security vulnerability in Documenso, please report it through our Security Policy. We prioritize private reports via GitHub Security Advisories. See SECURITY.md for scope and details.

Troubleshooting

For troubleshooting self-hosted deployments, see the Troubleshooting guide and Tips & Common Pitfalls.

I'm not receiving any emails when using the developer quickstart.

When using the developer quickstart, an Inbucket server will be spun up in a docker container that will store all outgoing emails locally for you to view.

The Web UI can be found at http://localhost:9000, while the SMTP port will be on localhost:2500.

I can't see environment variables in my package scripts.

Wrap your package script with the with:env script like such:

npm run with:env -- npm run myscript

The same can be done when using npx for one of the bin scripts:

npm run with:env -- npx myscript

This will load environment variables from your .env and .env.local files.

Repo Activity

Repository Activity

Install Documenso on Unraid in a few clicks.

Find Documenso in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Documenso Review the template variables and paths Click Install

Categories

Download Statistics

493,305
Total Downloads
55,772
This Month
36,622
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/documenso/documenso:latest
Last Updated2026-06-28
First Seen2025-10-02

Runtime arguments

Web UI
http://[IP]:[PORT:3000]/
Network
bridge
Shell
sh
Privileged
false
Extra Params
--restart unless-stopped

Template configuration

HTTP PortPorttcp

Web UI / API port (container 3000 → host)

Target
3000
Default
3000
Value
3000
NEXT_PUBLIC_WEBAPP_URLVariable

Public base URL used in links/emails (no trailing slash)

Default
https://documenso.example.com
NEXTAUTH_URLVariable

Canonical public URL for Auth.js/NextAuth (no trailing slash)

AUTH_TRUST_HOSTVariable

Trust reverse proxy headers for Auth.js (true when behind NPM)

Default
true
Value
true
NEXT_PUBLIC_DISABLE_SIGNUPVariable

Disable self-service /signup (true = staff invite/guest signing only)

Default
true
Value
false
NEXTAUTH_SECRETVariable

Long random secret for Auth.js/NextAuth (≥32 chars)

NEXT_PRIVATE_ENCRYPTION_KEYVariable

Primary encryption key for stored secrets (≥32 chars)

NEXT_PRIVATE_DATABASE_URLVariable

Primary DB URL (with pooling)

Default
postgresql://user:pass@host:5432/db?sslmode=prefer
Value
postgresql://user:pass@host:5432/db?sslmode=prefer
NEXT_PRIVATE_DIRECT_DATABASE_URLVariable

Direct DB URL (no pooling; migrations/long queries)

Default
postgresql://user:pass@host:5432/db?sslmode=prefer
Value
postgresql://user:pass@host:5432/db?sslmode=prefer
NEXT_PRIVATE_SMTP_TRANSPORTVariable

Email transport (smtp-auth | smtp-api | resend | mailchannels)

Default
smtp-auth
Value
smtp-auth
NEXT_PRIVATE_SMTP_HOSTVariable

SMTP host (smtp-auth)

Default
smtp.example.com
Value
smtp.example.com
NEXT_PRIVATE_SMTP_PORTVariable

SMTP port (smtp-auth; 587 STARTTLS or 465 SSL/TLS)

Default
587
Value
587
NEXT_PRIVATE_SMTP_USERNAMEVariable

SMTP username (smtp-auth)

NEXT_PRIVATE_SMTP_PASSWORDVariable

SMTP password/app password (smtp-auth)

NEXT_PRIVATE_SMTP_FROM_NAMEVariable

Email 'From' display name

Default
Documenso
Value
Documenso
NEXT_PRIVATE_SMTP_FROM_ADDRESSVariable

Email 'From' address

Default
no-reply@example.com
Value
no-reply@example.com
Signing Cert (.p12) PathPathro

Host path to PKCS#12 certificate

Target
/opt/documenso/signing
Default
/mnt/user/appdata/documenso/cert.p12
Value
/mnt/user/appdata/documenso/cert.p12
NEXT_PRIVATE_SIGNING_TRANSPORTVariable

Signing transport (local or cloud provider)

Default
local
Value
local
NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEYVariable

Secondary encryption key (for key rotation; optional)

NEXT_PRIVATE_SMTP_SECUREVariable

true = SSL/TLS (465), false = STARTTLS (587)

Default
false
Value
false
NEXT_PRIVATE_SIGNING_PASSPHRASEVariable

Passphrase for the .p12 signing certificate (if set)

NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATHVariable

Override signing cert path inside container (default /opt/documenso/cert.p12)

Default
/opt/documenso/cert.p12
NEXT_PUBLIC_UPLOAD_TRANSPORTVariable

Upload backend: database or s3

Default
database
Value
database
NEXT_PRIVATE_UPLOAD_ENDPOINTVariable

S3 endpoint URL (if using S3/compatible)

NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLEVariable

Force path-style S3 URLs (true/false)

Default
false
Value
false
NEXT_PRIVATE_UPLOAD_REGIONVariable

S3 region

Default
us-east-1
Value
us-east-1
NEXT_PRIVATE_UPLOAD_BUCKETVariable

S3 bucket name

NEXT_PRIVATE_UPLOAD_ACCESS_KEY_IDVariable

S3 access key ID

NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEYVariable

S3 secret access key

PORTVariable

Internal listening port (normally 3000; don’t change)

Default
3000
Value
3000
NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMITVariable

Max document upload size shown in UI (MB)

Default
25
Value
25