[GH-ISSUE #1763] For all having issues with email signup. #509

Closed
opened 2026-02-26 18:47:21 +03:00 by kerem · 6 comments
Owner

Originally created by @Novapixel1010 on GitHub (Apr 27, 2025).
Original GitHub issue: https://github.com/documenso/documenso/issues/1763

Describe the improvement you are suggesting in detail

I would like to improve the docs. It took me 4+ hours 🤦 to fix this issue with the email signup. So I would like to share two ways of getting it done. If there is a github for the docs I would like to make a pull request.

issue

Signup email not sending

two solutions

  1. needs dns setup
  2. easier no dns setup

I have read these issues: #1307 and #1661 hoping to improve the docs to avoid the issue and have one place for people on github to look to helpful solve the problem.

Additional Information & Alternatives (optional)

1. I use this option because I use mailpit for more then one container and us it often for test. My setup example

I use coreDNS to point smtp.in.com to 192.168.1.213 where the mailpit container is. Then I open my smtp port 1030 via sudo ufw allow 1030

docker-compse

services:
  database:
    image: postgres:15
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER}']
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - database3:/var/lib/postgresql/data

  documenso:
    image: documenso/documenso:latest
    depends_on:
      database:
        condition: service_healthy
    environment:
      - NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
      - NEXT_PRIVATE_ENCRYPTION_KEY=${NEXT_PRIVATE_ENCRYPTION_KEY}
      - NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY}
      - NEXTAUTH_URL=${NEXTAUTH_URL}
      - NEXT_PUBLIC_WEBAPP_URL=${NEXT_PUBLIC_WEBAPP_URL}
      - NEXT_PRIVATE_INTERNAL_WEBAPP_URL=${NEXT_PRIVATE_INTERNAL_WEBAPP_URL}
      - NEXT_PRIVATE_DATABASE_URL=${NEXT_PRIVATE_DATABASE_URL}
      - NEXT_PRIVATE_DIRECT_DATABASE_URL=${NEXT_PRIVATE_DIRECT_DATABASE_URL}
      - NEXT_PUBLIC_UPLOAD_TRANSPORT=${NEXT_PUBLIC_UPLOAD_TRANSPORT}
      - NEXT_PRIVATE_UPLOAD_ENDPOINT=${NEXT_PRIVATE_UPLOAD_ENDPOINT}
      - NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE=${NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE}
      - NEXT_PRIVATE_UPLOAD_REGION=${NEXT_PRIVATE_UPLOAD_REGION}
      - NEXT_PRIVATE_UPLOAD_BUCKET=${NEXT_PRIVATE_UPLOAD_BUCKET}
      - NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID=${NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID}
      - NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY=${NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY}
      - NEXT_PRIVATE_SMTP_TRANSPORT=${NEXT_PRIVATE_SMTP_TRANSPORT}
      - NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST}
      - NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT}
      - NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME}
      - NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD}
      - NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS=${NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS}
      - NEXT_PRIVATE_SMTP_SECURE=${NEXT_PRIVATE_SMTP_SECURE}
      - NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME}
      - NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS}
      - NEXT_PRIVATE_SMTP_SERVICE=${NEXT_PRIVATE_SMTP_SERVICE}
      - NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT=${NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT}
      - NEXT_PUBLIC_DISABLE_SIGNUP=${NEXT_PUBLIC_DISABLE_SIGNUP}
      - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=${NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH}
      - NEXT_PRIVATE_SIGNING_PASSPHRASE=${NEXT_PRIVATE_SIGNING_PASSPHRASE}
    ports:
      - ${PORT:-3000}:3000
    volumes:
      - /opt/documenso/cert.p12:/opt/documenso/cert.p12

volumes:
  database3:

.env file

NEXTAUTH_SECRET=EMugJaJ+BKAYgMWJRYRbU8jtvljG89X3W8YhKL2Zcc0=
NEXT_PRIVATE_ENCRYPTION_KEY=EMugJaJ+BKAYgMWJRYRbU8jtvljG89X3W8YhKL2Zcc0=
NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=1SzLQ2NKYcmt3yXGo77KE26mdYjKmEjNyQCAlhCfNgA=
NEXT_PRIVATE_SIGNING_PASSPHRASE=novetechlab
NEXTAUTH_URL=https://signing.in.com
NEXT_PUBLIC_WEBAPP_URL=https://signing.in.com
NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://documenso:3000
NEXT_PRIVATE_DATABASE_URL=postgresql://documenso:changeme@database:5432/documenso
NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://documenso:changeme@database:5432/documenso
NEXT_PRIVATE_SMTP_TRANSPORT=smtp-auth
NEXT_PRIVATE_SMTP_HOST=smtp.in.com
NEXT_PRIVATE_SMTP_PORT=1030
NEXT_PRIVATE_SMTP_USERNAME=documenso@in.com
NEXT_PRIVATE_SMTP_PASSWORD=dummy
NEXT_PRIVATE_SMTP_SECURE=false
NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS=true
NEXT_PRIVATE_SMTP_FROM_NAME=Documenso
NEXT_PRIVATE_SMTP_FROM_ADDRESS=documenso@domain.com
NEXT_PUBLIC_UPLOAD_TRANSPORT=database
NEXT_PRIVATE_UPLOAD_ENDPOINT=
NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE=
NEXT_PRIVATE_UPLOAD_REGION=
NEXT_PRIVATE_UPLOAD_BUCKET=
NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID=
NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY=
POSTGRES_USER=documenso
POSTGRES_PASSWORD=changeme
POSTGRES_DB=documenso
PORT=3038
NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT=10485760
NEXT_PUBLIC_DISABLE_SIGNUP=
NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=

docker-compose for mailpit

services:
  mailpit:
    image: axllent/mailpit

    container_name: mailpit
    restart: unless-stopped
    volumes:
      - ./data:/data
    ports:
      - 8025:8025
      - 1030:1025
      - 1110:1110
    environment:
      MP_MAX_MESSAGES: 5000
      MP_DATABASE: /data/mailpit.db

2. use easier for people that don't want to setup dns do anything with the firewall.

If your sitting up only one account you can even delete mailpit after your done.

docker-compose file with mailpit

services:
  database:
    image: postgres:15
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER}']
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - database:/var/lib/postgresql/data

  documenso:
    image: documenso/documenso:latest
    depends_on:
      database:
        condition: service_healthy
    environment:
      - NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
      - NEXT_PRIVATE_ENCRYPTION_KEY=${NEXT_PRIVATE_ENCRYPTION_KEY}
      - NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY}
      - NEXTAUTH_URL=${NEXTAUTH_URL}
      - NEXT_PUBLIC_WEBAPP_URL=${NEXT_PUBLIC_WEBAPP_URL}
      - NEXT_PRIVATE_INTERNAL_WEBAPP_URL=${NEXT_PRIVATE_INTERNAL_WEBAPP_URL}
      - NEXT_PRIVATE_DATABASE_URL=${NEXT_PRIVATE_DATABASE_URL}
      - NEXT_PRIVATE_DIRECT_DATABASE_URL=${NEXT_PRIVATE_DIRECT_DATABASE_URL}
      - NEXT_PUBLIC_UPLOAD_TRANSPORT=${NEXT_PUBLIC_UPLOAD_TRANSPORT}
      - NEXT_PRIVATE_UPLOAD_ENDPOINT=${NEXT_PRIVATE_UPLOAD_ENDPOINT}
      - NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE=${NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE}
      - NEXT_PRIVATE_UPLOAD_REGION=${NEXT_PRIVATE_UPLOAD_REGION}
      - NEXT_PRIVATE_UPLOAD_BUCKET=${NEXT_PRIVATE_UPLOAD_BUCKET}
      - NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID=${NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID}
      - NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY=${NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY}
      - NEXT_PRIVATE_SMTP_TRANSPORT=${NEXT_PRIVATE_SMTP_TRANSPORT}
      - NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST}
      - NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT}
      - NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME}
      - NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD}
      - NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS=${NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS}
      - NEXT_PRIVATE_SMTP_SECURE=${NEXT_PRIVATE_SMTP_SECURE}
      - NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME}
      - NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS}
      - NEXT_PRIVATE_SMTP_SERVICE=${NEXT_PRIVATE_SMTP_SERVICE}
      - NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT=${NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT}
      - NEXT_PUBLIC_DISABLE_SIGNUP=${NEXT_PUBLIC_DISABLE_SIGNUP}
      - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=${NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH}
      - NEXT_PRIVATE_SIGNING_PASSPHRASE=${NEXT_PRIVATE_SIGNING_PASSPHRASE}
    ports:
      - ${PORT:-3000}:3000
    volumes:
      - /opt/documenso/cert.p12:/opt/documenso/cert.p12

  mailpit:
    image: axllent/mailpit
    container_name: mailpit
    restart: unless-stopped
    volumes:
      - ./data:/data
    ports:
      - 8025:8025
      - 1030:1025
      - 1110:1110
    environment:
      MP_MAX_MESSAGES: 5000
      MP_DATABASE: /data/mailpit.db
      MP_POP3_AUTH: "john:password-for-email1"

volumes:
  database:

env file

NEXTAUTH_SECRET=EMugJaJ+BKAYgMWJRYRbU8jtvljG89X3W8YhKL2Zcc0=
NEXT_PRIVATE_ENCRYPTION_KEY=EMugJaJ+BKAYgMWJRYRbU8jtvljG89X3W8YhKL2Zcc0=
NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=1SzLQ2NKYcmt3yXGo77KE26mdYjKmEjNyQCAlhCfNgA=
NEXT_PRIVATE_SIGNING_PASSPHRASE=novetechlab
NEXTAUTH_URL=https://signing.in.com
NEXT_PUBLIC_WEBAPP_URL=https://signing.in.com
NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://documenso:3000
NEXT_PRIVATE_DATABASE_URL=postgresql://documenso:changeme@database:5432/documenso
NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://documenso:changeme@database:5432/documenso
NEXT_PRIVATE_SMTP_TRANSPORT=smtp-auth
NEXT_PRIVATE_SMTP_HOST=mailpit
NEXT_PRIVATE_SMTP_PORT=1025
NEXT_PRIVATE_SMTP_USERNAME=documenso@in.com
NEXT_PRIVATE_SMTP_PASSWORD=dummy
NEXT_PRIVATE_SMTP_SECURE=false
NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS=true
NEXT_PRIVATE_SMTP_FROM_NAME=Documenso
NEXT_PRIVATE_SMTP_FROM_ADDRESS=documenso@domain.com
NEXT_PUBLIC_UPLOAD_TRANSPORT=database
NEXT_PRIVATE_UPLOAD_ENDPOINT=
NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE=
NEXT_PRIVATE_UPLOAD_REGION=
NEXT_PRIVATE_UPLOAD_BUCKET=
NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID=
NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY=
POSTGRES_USER=documenso
POSTGRES_PASSWORD=changeme
POSTGRES_DB=documenso
PORT=3038
NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT=10485760
NEXT_PUBLIC_DISABLE_SIGNUP=
NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=

Do you want to work on this improvement?

Yes

Please check the boxes that apply to this improvement suggestion.

  • I have searched the existing issues and improvement suggestions to avoid duplication.
  • I have provided a clear description of the improvement being suggested.
  • I have explained the rationale behind this improvement.
  • I have included any relevant technical details or design suggestions.
  • I understand that this is a suggestion and that there is no guarantee of implementation.
Originally created by @Novapixel1010 on GitHub (Apr 27, 2025). Original GitHub issue: https://github.com/documenso/documenso/issues/1763 ### Describe the improvement you are suggesting in detail I would like to improve the docs. It took me 4+ hours 🤦 to fix this issue with the email signup. So I would like to share two ways of getting it done. If there is a github for the docs I would like to make a pull request. # issue Signup email not sending # two solutions 1. needs dns setup 2. easier no dns setup I have read these issues: #1307 and #1661 hoping to improve the docs to avoid the issue and have one place for people on github to look to helpful solve the problem. ### Additional Information & Alternatives (optional) # 1. I use this option because I use mailpit for more then one container and us it often for test. My setup example I use coreDNS to point `smtp.in.com` to `192.168.1.213` where the mailpit container is. Then I open my smtp port `1030` via `sudo ufw allow 1030` ## docker-compse ```yaml services: database: image: postgres:15 environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} healthcheck: test: ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER}'] interval: 10s timeout: 5s retries: 5 volumes: - database3:/var/lib/postgresql/data documenso: image: documenso/documenso:latest depends_on: database: condition: service_healthy environment: - NEXTAUTH_SECRET=${NEXTAUTH_SECRET} - NEXT_PRIVATE_ENCRYPTION_KEY=${NEXT_PRIVATE_ENCRYPTION_KEY} - NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY} - NEXTAUTH_URL=${NEXTAUTH_URL} - NEXT_PUBLIC_WEBAPP_URL=${NEXT_PUBLIC_WEBAPP_URL} - NEXT_PRIVATE_INTERNAL_WEBAPP_URL=${NEXT_PRIVATE_INTERNAL_WEBAPP_URL} - NEXT_PRIVATE_DATABASE_URL=${NEXT_PRIVATE_DATABASE_URL} - NEXT_PRIVATE_DIRECT_DATABASE_URL=${NEXT_PRIVATE_DIRECT_DATABASE_URL} - NEXT_PUBLIC_UPLOAD_TRANSPORT=${NEXT_PUBLIC_UPLOAD_TRANSPORT} - NEXT_PRIVATE_UPLOAD_ENDPOINT=${NEXT_PRIVATE_UPLOAD_ENDPOINT} - NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE=${NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE} - NEXT_PRIVATE_UPLOAD_REGION=${NEXT_PRIVATE_UPLOAD_REGION} - NEXT_PRIVATE_UPLOAD_BUCKET=${NEXT_PRIVATE_UPLOAD_BUCKET} - NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID=${NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID} - NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY=${NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY} - NEXT_PRIVATE_SMTP_TRANSPORT=${NEXT_PRIVATE_SMTP_TRANSPORT} - NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST} - NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT} - NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME} - NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD} - NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS=${NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS} - NEXT_PRIVATE_SMTP_SECURE=${NEXT_PRIVATE_SMTP_SECURE} - NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME} - NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS} - NEXT_PRIVATE_SMTP_SERVICE=${NEXT_PRIVATE_SMTP_SERVICE} - NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT=${NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT} - NEXT_PUBLIC_DISABLE_SIGNUP=${NEXT_PUBLIC_DISABLE_SIGNUP} - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=${NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH} - NEXT_PRIVATE_SIGNING_PASSPHRASE=${NEXT_PRIVATE_SIGNING_PASSPHRASE} ports: - ${PORT:-3000}:3000 volumes: - /opt/documenso/cert.p12:/opt/documenso/cert.p12 volumes: database3: ``` ## .env file ```env NEXTAUTH_SECRET=EMugJaJ+BKAYgMWJRYRbU8jtvljG89X3W8YhKL2Zcc0= NEXT_PRIVATE_ENCRYPTION_KEY=EMugJaJ+BKAYgMWJRYRbU8jtvljG89X3W8YhKL2Zcc0= NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=1SzLQ2NKYcmt3yXGo77KE26mdYjKmEjNyQCAlhCfNgA= NEXT_PRIVATE_SIGNING_PASSPHRASE=novetechlab NEXTAUTH_URL=https://signing.in.com NEXT_PUBLIC_WEBAPP_URL=https://signing.in.com NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://documenso:3000 NEXT_PRIVATE_DATABASE_URL=postgresql://documenso:changeme@database:5432/documenso NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://documenso:changeme@database:5432/documenso NEXT_PRIVATE_SMTP_TRANSPORT=smtp-auth NEXT_PRIVATE_SMTP_HOST=smtp.in.com NEXT_PRIVATE_SMTP_PORT=1030 NEXT_PRIVATE_SMTP_USERNAME=documenso@in.com NEXT_PRIVATE_SMTP_PASSWORD=dummy NEXT_PRIVATE_SMTP_SECURE=false NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS=true NEXT_PRIVATE_SMTP_FROM_NAME=Documenso NEXT_PRIVATE_SMTP_FROM_ADDRESS=documenso@domain.com NEXT_PUBLIC_UPLOAD_TRANSPORT=database NEXT_PRIVATE_UPLOAD_ENDPOINT= NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE= NEXT_PRIVATE_UPLOAD_REGION= NEXT_PRIVATE_UPLOAD_BUCKET= NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID= NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY= POSTGRES_USER=documenso POSTGRES_PASSWORD=changeme POSTGRES_DB=documenso PORT=3038 NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT=10485760 NEXT_PUBLIC_DISABLE_SIGNUP= NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH= ``` ## docker-compose for mailpit ```yaml services: mailpit: image: axllent/mailpit container_name: mailpit restart: unless-stopped volumes: - ./data:/data ports: - 8025:8025 - 1030:1025 - 1110:1110 environment: MP_MAX_MESSAGES: 5000 MP_DATABASE: /data/mailpit.db ``` # 2. use easier for people that don't want to setup dns do anything with the firewall. If your sitting up only one account you can even delete mailpit after your done. ## docker-compose file with mailpit ```yaml services: database: image: postgres:15 environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} healthcheck: test: ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER}'] interval: 10s timeout: 5s retries: 5 volumes: - database:/var/lib/postgresql/data documenso: image: documenso/documenso:latest depends_on: database: condition: service_healthy environment: - NEXTAUTH_SECRET=${NEXTAUTH_SECRET} - NEXT_PRIVATE_ENCRYPTION_KEY=${NEXT_PRIVATE_ENCRYPTION_KEY} - NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY} - NEXTAUTH_URL=${NEXTAUTH_URL} - NEXT_PUBLIC_WEBAPP_URL=${NEXT_PUBLIC_WEBAPP_URL} - NEXT_PRIVATE_INTERNAL_WEBAPP_URL=${NEXT_PRIVATE_INTERNAL_WEBAPP_URL} - NEXT_PRIVATE_DATABASE_URL=${NEXT_PRIVATE_DATABASE_URL} - NEXT_PRIVATE_DIRECT_DATABASE_URL=${NEXT_PRIVATE_DIRECT_DATABASE_URL} - NEXT_PUBLIC_UPLOAD_TRANSPORT=${NEXT_PUBLIC_UPLOAD_TRANSPORT} - NEXT_PRIVATE_UPLOAD_ENDPOINT=${NEXT_PRIVATE_UPLOAD_ENDPOINT} - NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE=${NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE} - NEXT_PRIVATE_UPLOAD_REGION=${NEXT_PRIVATE_UPLOAD_REGION} - NEXT_PRIVATE_UPLOAD_BUCKET=${NEXT_PRIVATE_UPLOAD_BUCKET} - NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID=${NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID} - NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY=${NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY} - NEXT_PRIVATE_SMTP_TRANSPORT=${NEXT_PRIVATE_SMTP_TRANSPORT} - NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST} - NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT} - NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME} - NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD} - NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS=${NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS} - NEXT_PRIVATE_SMTP_SECURE=${NEXT_PRIVATE_SMTP_SECURE} - NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME} - NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS} - NEXT_PRIVATE_SMTP_SERVICE=${NEXT_PRIVATE_SMTP_SERVICE} - NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT=${NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT} - NEXT_PUBLIC_DISABLE_SIGNUP=${NEXT_PUBLIC_DISABLE_SIGNUP} - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=${NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH} - NEXT_PRIVATE_SIGNING_PASSPHRASE=${NEXT_PRIVATE_SIGNING_PASSPHRASE} ports: - ${PORT:-3000}:3000 volumes: - /opt/documenso/cert.p12:/opt/documenso/cert.p12 mailpit: image: axllent/mailpit container_name: mailpit restart: unless-stopped volumes: - ./data:/data ports: - 8025:8025 - 1030:1025 - 1110:1110 environment: MP_MAX_MESSAGES: 5000 MP_DATABASE: /data/mailpit.db MP_POP3_AUTH: "john:password-for-email1" volumes: database: ``` ## env file ```env NEXTAUTH_SECRET=EMugJaJ+BKAYgMWJRYRbU8jtvljG89X3W8YhKL2Zcc0= NEXT_PRIVATE_ENCRYPTION_KEY=EMugJaJ+BKAYgMWJRYRbU8jtvljG89X3W8YhKL2Zcc0= NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=1SzLQ2NKYcmt3yXGo77KE26mdYjKmEjNyQCAlhCfNgA= NEXT_PRIVATE_SIGNING_PASSPHRASE=novetechlab NEXTAUTH_URL=https://signing.in.com NEXT_PUBLIC_WEBAPP_URL=https://signing.in.com NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://documenso:3000 NEXT_PRIVATE_DATABASE_URL=postgresql://documenso:changeme@database:5432/documenso NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://documenso:changeme@database:5432/documenso NEXT_PRIVATE_SMTP_TRANSPORT=smtp-auth NEXT_PRIVATE_SMTP_HOST=mailpit NEXT_PRIVATE_SMTP_PORT=1025 NEXT_PRIVATE_SMTP_USERNAME=documenso@in.com NEXT_PRIVATE_SMTP_PASSWORD=dummy NEXT_PRIVATE_SMTP_SECURE=false NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS=true NEXT_PRIVATE_SMTP_FROM_NAME=Documenso NEXT_PRIVATE_SMTP_FROM_ADDRESS=documenso@domain.com NEXT_PUBLIC_UPLOAD_TRANSPORT=database NEXT_PRIVATE_UPLOAD_ENDPOINT= NEXT_PRIVATE_UPLOAD_FORCE_PATH_STYLE= NEXT_PRIVATE_UPLOAD_REGION= NEXT_PRIVATE_UPLOAD_BUCKET= NEXT_PRIVATE_UPLOAD_ACCESS_KEY_ID= NEXT_PRIVATE_UPLOAD_SECRET_ACCESS_KEY= POSTGRES_USER=documenso POSTGRES_PASSWORD=changeme POSTGRES_DB=documenso PORT=3038 NEXT_PUBLIC_DOCUMENT_SIZE_UPLOAD_LIMIT=10485760 NEXT_PUBLIC_DISABLE_SIGNUP= NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH= ``` ### Do you want to work on this improvement? Yes ### Please check the boxes that apply to this improvement suggestion. - [x] I have searched the existing issues and improvement suggestions to avoid duplication. - [x] I have provided a clear description of the improvement being suggested. - [x] I have explained the rationale behind this improvement. - [x] I have included any relevant technical details or design suggestions. - [x] I understand that this is a suggestion and that there is no guarantee of implementation.
kerem 2026-02-26 18:47:21 +03:00
Author
Owner

@github-actions[bot] commented on GitHub (Apr 27, 2025):

Thank you for opening your first issue and for being a part of the open signing revolution!

One of our team members will review it and get back to you as soon as it possible 💚

Meanwhile, please feel free to hop into our community in Discord

<!-- gh-comment-id:2833181770 --> @github-actions[bot] commented on GitHub (Apr 27, 2025): Thank you for opening your first issue and for being a part of the open signing revolution! <br /> One of our team members will review it and get back to you as soon as it possible 💚 <br /> Meanwhile, please feel free to hop into our community in [Discord](https://documen.so/discord)
Author
Owner

@Novapixel1010 commented on GitHub (Apr 27, 2025):

If you are using forwardemail you are most likely going to need a use a catch all password. here is and example .env


NEXT_PRIVATE_SMTP_TRANSPORT=smtp-auth
NEXT_PRIVATE_SMTP_HOST=smtp.forwardemail.net
NEXT_PRIVATE_SMTP_PORT=465
NEXT_PRIVATE_SMTP_USERNAME=no-reply@YOURDOMAIN.com
NEXT_PRIVATE_SMTP_PASSWORD=catch-all-password-REPLACE
NEXT_PRIVATE_SMTP_SECURE=true
NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS=false
NEXT_PRIVATE_SMTP_FROM_NAME=company name
NEXT_PRIVATE_SMTP_FROM_ADDRESS=no-reply@YOURDOMAIN.com
<!-- gh-comment-id:2833647794 --> @Novapixel1010 commented on GitHub (Apr 27, 2025): If you are using forwardemail you are most likely going to need a use a catch all password. here is and example .env ```env NEXT_PRIVATE_SMTP_TRANSPORT=smtp-auth NEXT_PRIVATE_SMTP_HOST=smtp.forwardemail.net NEXT_PRIVATE_SMTP_PORT=465 NEXT_PRIVATE_SMTP_USERNAME=no-reply@YOURDOMAIN.com NEXT_PRIVATE_SMTP_PASSWORD=catch-all-password-REPLACE NEXT_PRIVATE_SMTP_SECURE=true NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS=false NEXT_PRIVATE_SMTP_FROM_NAME=company name NEXT_PRIVATE_SMTP_FROM_ADDRESS=no-reply@YOURDOMAIN.com ```
Author
Owner

@colocated commented on GitHub (May 3, 2025):

This is very environment based; so probably best not having an active issue for it as issues are mainly for issues that exist in the codebase, rather than environment-specific resolution steps.

You've also included many secrets in your comments, which'd be beneficial to change as per internet best practice. Never share your passwords, especially not on a public thread!

You can always contribute to the Documenso Docs for environment-specific issues.

<!-- gh-comment-id:2848687355 --> @colocated commented on GitHub (May 3, 2025): This is very environment based; so probably best not having an active issue for it as issues are mainly for issues that exist in the codebase, rather than environment-specific resolution steps. You've also included many secrets in your comments, which'd be beneficial to change as per internet best practice. Never share your passwords, especially not on a public thread! You can always contribute to the Documenso Docs for environment-specific issues.
Author
Owner

@Novapixel1010 commented on GitHub (May 8, 2025):

I did not know that I could contribute to the docs. Also the secrets are not reused but I kept them for people to compare to what an actual secret looks like. The url is only for local stuff.

<!-- gh-comment-id:2864324798 --> @Novapixel1010 commented on GitHub (May 8, 2025): I did not know that I could contribute to the docs. Also the secrets are not reused but I kept them for people to compare to what an actual secret looks like. The url is only for local stuff.
Author
Owner

@dadastory commented on GitHub (Jun 13, 2025):

thanks , the method is very helpful and it works, the official don't have any default admin user , it made me take a lot of detours

<!-- gh-comment-id:2968688271 --> @dadastory commented on GitHub (Jun 13, 2025): thanks , the method is very helpful and it works, the official don't have any default admin user , it made me take a lot of detours
Author
Owner

@racso-dev commented on GitHub (Jul 3, 2025):

@Novapixel1010 Thanks for you time, hope you rotated those credentials ;)

<!-- gh-comment-id:3032084518 --> @racso-dev commented on GitHub (Jul 3, 2025): @Novapixel1010 Thanks for you time, hope you rotated those credentials ;)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/documenso#509
No description provided.