> ## Documentation Index
> Fetch the complete documentation index at: https://docs.levelrail.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Self-host FerretDB with Docker

> A MongoDB compatible database that stores documents in PostgreSQL. Runs FerretDB with a bundled PostgreSQL that has the DocumentDB extension, a persistent volume and a generated password. It is not published on the host, so reach it from other services in this project at ferretdb:27017.

A MongoDB compatible database that stores documents in PostgreSQL. Runs FerretDB with a bundled PostgreSQL that has the DocumentDB extension, a persistent volume and a generated password. It is not published on the host, so reach it from other services in this project at ferretdb:27017.

This page describes the Levelrail template for FerretDB (Database Tools). It deploys the services below as one Docker Compose app on your own server. Project site: [https://docs.ferretdb.io/](https://docs.ferretdb.io/).

Recommended memory: about 512 MiB.

## Services, ports and volumes

| Service | Image | Container ports | Volumes |
| - | - | - | - |
| `ferretdb` | `ghcr.io/ferretdb/ferretdb:2.7.0` | 27017 | none |
| `postgres` | `ghcr.io/ferretdb/postgres-documentdb:17-0.107.0-ferretdb-2.7.0` | none | `pgdata -&#62; /var/lib/postgresql/data` |

## Environment variables

| Service | Variable | Value |
| - | - | - |
| `ferretdb` | `FERRETDB_POSTGRESQL_URL` | Generated at deploy |
| `ferretdb` | `FERRETDB_TELEMETRY` | Preset in the template |
| `postgres` | `POSTGRES_DB` | Preset in the template |
| `postgres` | `POSTGRES_PASSWORD` | Generated at deploy |
| `postgres` | `POSTGRES_USER` | Preset in the template |

Passwords and keys marked as generated are created for you when the app is deployed and stored as secrets. Values are not shown here.

## Security and requirements

Level: **Standard**.

What this template needs:

* Passwords and keys are generated at deploy time (`ferretdb`, `postgres`): FERRETDB\_POSTGRESQL\_URL, POSTGRES\_PASSWORD.
* No health check, so a deploy is judged by the process starting (`ferretdb`).
* Stores data in named volumes (`postgres`): pgdata.

What Levelrail adds around it:

* Automatic HTTPS and an ingress shield in front of every domain.
* Secrets are generated, stored encrypted and masked in logs and the UI.
* Named volumes can be backed up and restored.
* Deploys are gated on the health check before traffic switches.
* One-step rollback to the previous revision.
* Exposure report shows what is reachable from outside.
* Host firewall rules managed for published ports.

## Deploy FerretDB with Levelrail

In the dashboard, open **Apps**, choose **New app**, then **Browse templates**, and select FerretDB. Review the Compose body and deploy.

With the CLI:

```bash theme={"dark"}
levelrail-cli templates deploy ferretdb --name my-ferretdb
```

See the [service template catalog](https://docs.levelrail.com/templates-and-registry.md) for how templates work, and [Getting started](https://docs.levelrail.com/getting-started.md) if you have not installed Levelrail yet.

## More Database Tools templates

* [Adminer](https://docs.levelrail.com/self-host/adminer.md)
* [Baserow](https://docs.levelrail.com/self-host/baserow.md)
* [Bytebase](https://docs.levelrail.com/self-host/bytebase.md)
* [Chroma](https://docs.levelrail.com/self-host/chroma.md)
* [ClickHouse](https://docs.levelrail.com/self-host/clickhouse.md)

All templates are listed in the [self-host gallery](https://docs.levelrail.com/self-host.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.