---
title: Quick Start
description: Get Documenso running locally in minutes with Docker Compose.
---

import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
import { Callout } from 'fumadocs-ui/components/callout';
import { Step, Steps } from 'fumadocs-ui/components/steps';

## Limitations

This quick start setup is for local development and testing only:

- No HTTPS (not suitable for production)
- No email delivery (emails are logged to console)
- Uses a local PostgreSQL database
- No signing certificate configured (documents will be signed with a generated certificate)
- Single-node setup (no high availability)

For production deployments, see [Docker Compose Deployment](/docs/self-hosting/deployment/docker-compose).

## Prerequisites

- [Docker](https://docs.docker.com/get-docker/) installed and running
- [Docker Compose](https://docs.docker.com/compose/install/) v2.0 or later
- At least 2GB of available RAM

Verify your installation:

```bash
docker --version
docker compose version
```

## Quick Start

{/* prettier-ignore */}
<Steps>
<Step>
### Clone the repository

```bash
git clone https://github.com/documenso/documenso.git
cd documenso
```

</Step>

<Step>
### Create the environment file

Copy the example environment file:

```bash
cp .env.example .env
```

The default values work for local development. No changes are required.

</Step>

<Step>
### Start Documenso

```bash
docker compose -f docker/development/compose.yml up -d
```

This pulls the required images and starts the containers. The first run takes a few minutes.

</Step>

<Step>
### Access the application

Open [http://localhost:3000](http://localhost:3000) in your browser.

</Step>
</Steps>

## Create Your First Account

{/* prettier-ignore */}
<Steps>
<Step>

### Sign up

Click **Sign Up** on the login page and enter your email address and password.

</Step>
<Step>

### Verify your email

In development mode, emails are logged to the console instead of being sent. Check the Docker logs for the verification link:

```bash
docker compose -f docker/development/compose.yml logs -f
```

Copy the verification link from the logs and open it in your browser.

</Step>
<Step>

### Log in

Log in with your credentials.

</Step>
</Steps>

### Granting Admin Access

All accounts created through signup are regular user accounts. To grant admin access, update the user's role directly in the database:

```bash
docker compose -f docker/development/compose.yml exec database \
  psql -U documenso -d documenso -c "UPDATE \"User\" SET roles = '{ADMIN}' WHERE email = 'your@email.com';"
```

## What's Included

The quick start setup runs the following containers:

| Container   | Purpose                              | Port                          |
| ----------- | ------------------------------------ | ----------------------------- |
| `documenso` | Main application                     | 3000                          |
| `database`  | PostgreSQL database                  | 54320                         |
| `inbucket`  | Local email testing server           | 9000 (web UI), 2500 (SMTP)    |
| `redis`     | Cache and background job queue       | 63790                         |
| `minio`     | S3-compatible storage                | 9002 (API), 9001 (console)    |
| `gotenberg` | Document conversion (optional)       | 3005                          |

The local email server is [Inbucket](https://www.inbucket.org/). Open its web UI at [http://localhost:9000](http://localhost:9000) to view emails Documenso sends during development. For your own deployment you can use any SMTP-compatible mailserver, such as Inbucket, [Mailpit](https://github.com/axllent/mailpit), or [Mailhog](https://github.com/mailhog/MailHog).

## Useful Commands

**View logs:**

```bash
docker compose -f docker/development/compose.yml logs -f
```

**Stop containers:**

```bash
docker compose -f docker/development/compose.yml down
```

**Stop and remove all data:**

```bash
docker compose -f docker/development/compose.yml down -v
```

**Rebuild after changes:**

```bash
docker compose -f docker/development/compose.yml up -d --build
```

## Troubleshooting

<Accordions type="multiple">
  <Accordion title="Port 3000 already in use">
    Another application is using port 3000. Either stop that application or change the port in your
    `.env` file: `PORT=3001`. Then restart the containers.
  </Accordion>
  <Accordion title="Container fails to start">
    Check the logs: `docker compose -f docker/development/compose.yml logs documenso`. Common
    issues: insufficient memory (ensure Docker has at least 2GB RAM allocated), database connection
    (wait for the database container to be healthy before the app starts).
  </Accordion>
  <Accordion title="Cannot access localhost:3000">
    Verify containers are running: `docker compose -f docker/development/compose.yml ps`. Check if
    the app container is healthy. On Linux, ensure Docker is not running in rootless mode with
    network restrictions.
  </Accordion>
</Accordions>

---

## See Also

- [Docker Compose Deployment](/docs/self-hosting/deployment/docker-compose) - Production setup with PostgreSQL and email
- [Environment Variables](/docs/self-hosting/configuration/environment) - Configure all available options
- [Signing Certificate](/docs/self-hosting/configuration/signing-certificate) - Set up document signing
- [Email Configuration](/docs/self-hosting/configuration/email) - Configure SMTP for production
