mirror of
https://github.com/documenso/documenso.git
synced 2025-11-14 00:32:43 +10:00
178 lines
11 KiB
Plaintext
178 lines
11 KiB
Plaintext
---
|
|
title: Docker Development
|
|
description: Set up Documenso using Docker for local development.
|
|
---
|
|
|
|
import { Callout, Steps } from 'nextra/components';
|
|
|
|
# Docker
|
|
|
|
The following guide will walk you through setting up Documenso using Docker. You can choose between a Docker Compose production setup or a standalone container.
|
|
|
|
We provide a Docker container for Documenso, which is published on both DockerHub and GitHub Container Registry.
|
|
|
|
- DockerHub: [https://hub.docker.com/r/documenso/documenso](https://hub.docker.com/r/documenso/documenso)
|
|
- GitHub Container Registry: [https://ghcr.io/documenso/documenso](https://ghcr.io/documenso/documenso)
|
|
|
|
You can pull the Docker image from either of these registries and run it with your preferred container hosting provider.
|
|
|
|
Please note that you will need to provide environment variables for connecting to the database, mail server, and other services.
|
|
|
|
## Prerequisites
|
|
|
|
Before you begin, ensure that you have the following installed:
|
|
|
|
- Docker
|
|
- Docker Compose (if using the Docker Compose setup)
|
|
|
|
## Option 1: Production Docker Compose Setup
|
|
|
|
This setup includes a PostgreSQL database and the Documenso application. You will need to provide your own SMTP details using environment variables.
|
|
|
|
<Steps>
|
|
|
|
### Download the Docker Compose File
|
|
|
|
Download the Docker Compose file from the Documenso repository - [compose.yml](https://raw.githubusercontent.com/documenso/documenso/release/docker/production/compose.yml).
|
|
|
|
### Navigate to the `compose.yml` File
|
|
|
|
Once downloaded, navigate to the directory containing the `compose.yml` file.
|
|
|
|
### Set Up Environment Variables
|
|
|
|
Create a `.env` file in the same directory as the `compose.yml` file.
|
|
|
|
Then add your SMTP details as well as the following environment variables:
|
|
|
|
```bash
|
|
NEXTAUTH_SECRET="<your-secret>"
|
|
NEXT_PRIVATE_ENCRYPTION_KEY="<your-key>"
|
|
NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY="<your-secondary-key>"
|
|
NEXT_PUBLIC_WEBAPP_URL="<your-url>"
|
|
NEXT_PRIVATE_SMTP_TRANSPORT="smtp-auth"
|
|
NEXT_PRIVATE_SMTP_HOST="<your-host>"
|
|
NEXT_PRIVATE_SMTP_PORT=<your-port>
|
|
NEXT_PRIVATE_SMTP_USERNAME="<your-username>"
|
|
NEXT_PRIVATE_SMTP_PASSWORD="<your-password>"
|
|
```
|
|
|
|
### Update the Volume Binding
|
|
|
|
The `cert.p12` file is required to sign and encrypt documents, so you must provide your key file. Update the volume binding in the `compose.yml` file to point to your key file:
|
|
|
|
```yaml
|
|
volumes:
|
|
- /path/to/your/keyfile.p12:/opt/documenso/cert.p12
|
|
```
|
|
|
|
After updating the volume binding, save the `compose.yml` file and run the following command to start the containers:
|
|
|
|
```bash
|
|
docker-compose --env-file ./.env -d up
|
|
```
|
|
|
|
The command will start the PostgreSQL database and the Documenso application containers.
|
|
|
|
### Access the Application
|
|
|
|
Access the Documenso application by visiting `http://localhost:3000` in your web browser.
|
|
|
|
</Steps>
|
|
|
|
## Option 2: Standalone Docker Container
|
|
|
|
If you prefer to host the Documenso application on a specific container provider, you can use the pre-built Docker image from DockerHub or GitHub's Package Registry. Note that you will need to provide your own database and SMTP host.
|
|
|
|
<Steps>
|
|
|
|
### Pull the Docker Image
|
|
|
|
Pull the Documenso Docker image from DockerHub:
|
|
|
|
```bash
|
|
docker pull documenso/documenso
|
|
```
|
|
|
|
Or, pull the image from GitHub Container Registry:
|
|
|
|
```bash
|
|
docker pull ghcr.io/documenso/documenso
|
|
```
|
|
|
|
### Run the Docker Container
|
|
|
|
Run the Docker container with the required environment variables:
|
|
|
|
```bash
|
|
docker run -d \
|
|
-p 3000:3000 \
|
|
-e NEXTAUTH_URL="<your-nextauth-url>"
|
|
-e NEXTAUTH_SECRET="<your-nextauth-secret>"
|
|
-e NEXT_PRIVATE_ENCRYPTION_KEY="<your-next-private-encryption-key>"
|
|
-e NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY="<your-next-private-encryption-secondary-key>"
|
|
-e NEXT_PUBLIC_WEBAPP_URL="<your-next-public-webapp-url>"
|
|
-e NEXT_PRIVATE_DATABASE_URL="<your-next-private-database-url>"
|
|
-e NEXT_PRIVATE_DIRECT_DATABASE_URL="<your-next-private-database-url>"
|
|
-e NEXT_PRIVATE_SMTP_TRANSPORT="<your-next-private-smtp-transport>"
|
|
-e NEXT_PRIVATE_SMTP_FROM_NAME="<your-next-private-smtp-from-name>"
|
|
-e NEXT_PRIVATE_SMTP_FROM_ADDRESS="<your-next-private-smtp-from-address>"
|
|
-v /path/to/your/keyfile.p12:/opt/documenso/cert.p12
|
|
documenso/documenso
|
|
```
|
|
|
|
Replace the placeholders with the actual values.
|
|
|
|
### Access the Application
|
|
|
|
Access the Documenso application by visiting the URL you provided for the `NEXT_PUBLIC_WEBAPP_URL` environment variable in your web browser.
|
|
|
|
</Steps>
|
|
|
|
## Advanced Configuration
|
|
|
|
The environment variables listed above are a subset of those available for configuring Documenso. The table below provides a complete list of environment variables and their descriptions.
|
|
|
|
| Variable | Description |
|
|
| -------------------------------------------- | --------------------------------------------------------------------------------------------------- |
|
|
| `PORT` | The port on which the Documenso application runs. It defaults to `3000`. |
|
|
| `NEXTAUTH_URL` | The URL for the NextAuth.js authentication service. |
|
|
| `NEXTAUTH_SECRET` | The secret key used by NextAuth.js for encryption and signing. |
|
|
| `NEXT_PRIVATE_ENCRYPTION_KEY` | The primary encryption key for symmetric encryption and decryption (at least 32 characters). |
|
|
| `NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY` | The secondary encryption key for symmetric encryption and decryption (at least 32 characters). |
|
|
| `NEXT_PRIVATE_GOOGLE_CLIENT_ID` | The Google client ID for Google authentication (optional). |
|
|
| `NEXT_PRIVATE_GOOGLE_CLIENT_SECRET` | The Google client secret for Google authentication (optional). |
|
|
| `NEXT_PUBLIC_WEBAPP_URL` | The URL for the web application. |
|
|
| `NEXT_PRIVATE_DATABASE_URL` | The URL for the primary database connection (with connection pooling). |
|
|
| `NEXT_PRIVATE_DIRECT_DATABASE_URL` | The URL for the direct database connection (without connection pooling). |
|
|
| `NEXT_PRIVATE_SIGNING_TRANSPORT` | The signing transport to use. Available options: local (default) |
|
|
| `NEXT_PRIVATE_SIGNING_PASSPHRASE` | The passphrase for the key file. |
|
|
| `NEXT_PRIVATE_SIGNING_LOCAL_FILE_CONTENTS` | The base64-encoded contents of the key file will be used instead of the file path. |
|
|
| `NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH` | The path to the key file, default `/opt/documenso/cert.p12`. |
|
|
| `NEXT_PUBLIC_UPLOAD_TRANSPORT` | The transport for file uploads (database or s3). |
|
|
| `NEXT_PRIVATE_UPLOAD_ENDPOINT` | The endpoint for the S3 storage transport (for third-party S3-compatible providers). |
|
|
| `NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE` | Whether to force path-style URLs for the S3 storage transport. |
|
|
| `NEXT_PRIVATE_UPLOAD_REGION` | The region for the S3 storage transport (defaults to us-east-1). |
|
|
| `NEXT_PRIVATE_UPLOAD_BUCKET` | The bucket to use for the S3 storage transport. |
|
|
| `NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID` | The access key ID for the S3 storage transport. |
|
|
| `NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY` | The secret access key for the S3 storage transport. |
|
|
| `NEXT_PRIVATE_SMTP_TRANSPORT` | The transport to send emails (smtp-auth, smtp-api, resend, or mailchannels). |
|
|
| `NEXT_PRIVATE_SMTP_HOST` | The host for the SMTP server for SMTP transports. |
|
|
| `NEXT_PRIVATE_SMTP_PORT` | The port for the SMTP server for SMTP transports. |
|
|
| `NEXT_PRIVATE_SMTP_USERNAME` | The username for the SMTP server for the `smtp-auth` transport. |
|
|
| `NEXT_PRIVATE_SMTP_PASSWORD` | The password for the SMTP server for the `smtp-auth` transport. |
|
|
| `NEXT_PRIVATE_SMTP_APIKEY_USER` | The API key user for the SMTP server for the `smtp-api` transport. |
|
|
| `NEXT_PRIVATE_SMTP_APIKEY` | The API key for the SMTP server for the `smtp-api` transport. |
|
|
| `NEXT_PRIVATE_SMTP_SECURE` | Whether to force the use of TLS for the SMTP server for SMTP transports. |
|
|
| `NEXT_PRIVATE_SMTP_FROM_ADDRESS` | The email address for the "from" address. |
|
|
| `NEXT_PRIVATE_SMTP_FROM_NAME` | The sender name for the "from" address. |
|
|
| `NEXT_PRIVATE_RESEND_API_KEY` | The API key for Resend.com for the `resend` transport. |
|
|
| `NEXT_PRIVATE_MAILCHANNELS_API_KEY` | The optional API key for MailChannels (if using a proxy) for the `mailchannels` transport. |
|
|
| `NEXT_PRIVATE_MAILCHANNELS_ENDPOINT` | The optional endpoint for the MailChannels API (if using a proxy) for the `mailchannels` transport. |
|
|
| `NEXT_PRIVATE_MAILCHANNELS_DKIM_DOMAIN` | The domain for DKIM signing with MailChannels for the `mailchannels` transport. |
|
|
| `NEXT_PRIVATE_MAILCHANNELS_DKIM_SELECTOR` | The selector for DKIM signing with MailChannels for the `mailchannels` transport. |
|
|
| `NEXT_PRIVATE_MAILCHANNELS_DKIM_PRIVATE_KEY` | The private key for DKIM signing with MailChannels for the `mailchannels` transport. |
|
|
| `NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT` | The maximum document upload limit displayed to the user (in MB). |
|
|
| `NEXT_PUBLIC_POSTHOG_KEY` | The optional PostHog key for analytics and feature flags. |
|
|
| `NEXT_PUBLIC_DISABLE_SIGNUP` | Whether to disable user signups through the /signup page. |
|