# NocoDB

Transforma banco de dados relacional em uma interface de planilha inteligente e moderna

# Instalação e Configuração NocoDB

Procedimentos de instalação e configuração NocoDB

# Instalação NocoDB

Link: [https://hub.docker.com/r/nocodb/nocodb](https://hub.docker.com/r/nocodb/nocodb)  
[https://github.com/nocodb/nocodb](https://github.com/nocodb/nocodb) git clone [https://github.com/nocodb/nocodb.git](https://github.com/nocodb/nocodb.git)

<div dir="auto" id="bkmrk-" style="text-align: justify;">[![](https://github.com/nocodb/nocodb/raw/develop/packages/nc-gui/assets/img/brand/nocodb-full.png)  ](https://www.nocodb.com/)  
</div><div class="markdown-heading" dir="auto" id="bkmrk--1" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" data-component="Octicon" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/nocodb/nocodb#--------------------------------------------------------)</div>NocoDB is the fastest and easiest way to build databases online.

[**Website**](http://www.nocodb.com/) • [**Discord**](https://discord.gg/c7GEYrvFtT) • [**Community**](https://community.nocodb.com/) • [**Twitter**](https://twitter.com/nocodb) • [**Reddit**](https://www.reddit.com/r/NocoDB/) • [**Documentation**](https://docs.nocodb.com/)

[**See other languages »**](https://github.com/nocodb/nocodb/blob/develop/markdown/readme/languages/README.md)

[![image.png](https://capacita.multiautomacoes.com.br/uploads/images/gallery/2026-11/scaled-1680-/image.png)](https://capacita.multiautomacoes.com.br/uploads/images/gallery/2026-11/image.png)

[![](https://camo.githubusercontent.com/d4b0c1dc6ab6221beeefa45693dea409f6c3156283334b42c50053ea3f7e82d1/68747470733a2f2f7374617469632e73636172662e73682f612e706e673f782d707869643d63313261373763632d383535652d343630322d386130662d363134623264306461353661)](https://camo.githubusercontent.com/d4b0c1dc6ab6221beeefa45693dea409f6c3156283334b42c50053ea3f7e82d1/68747470733a2f2f7374617469632e73636172662e73682f612e706e673f782d707869643d63313261373763632d383535652d343630322d386130662d363134623264306461353661)

# Join Our Community

<div class="markdown-heading" dir="auto" id="bkmrk--5" style="text-align: justify;">[<svg aria-hidden="true" class="octicon octicon-link" data-component="Octicon" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/nocodb/nocodb#join-our-community)</div>[![](https://camo.githubusercontent.com/2016788104963fdc93d8f26743d3f68b4bcb5a4c221e327293f006ca4108232e/68747470733a2f2f646973636f72646170702e636f6d2f6170692f6775696c64732f3636313930353435353839343838383439302f7769646765742e706e673f7374796c653d62616e6e657233)](https://discord.gg/c7GEYrvFtT)

### Installation

#### Docker with SQLite

```bash
docker run -d \
  --name noco \
  -v "$(pwd)"/nocodb:/usr/app/data/ \
  -p 8080:8080 \
  nocodb/nocodb:latest

```

#### Docker with PG

```bash
docker run -d \
  --name noco \
  -v "$(pwd)"/nocodb:/usr/app/data/ \
  -p 8080:8080 \
  -e NC_DB="pg://host.docker.internal:5432?u=root&p=password&d=d1" \
  -e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
  nocodb/nocodb:latest

```

#### Nix

```bash
nix run github:nocodb/nocodb

```

#### NixOS

To use NocoDB as a NixOS module, a flake.nix would be as follows:

```bash
{
  description = "Bane's NixOS configuration";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    nocodb.url = "github:nocodb/nocodb";
  };

  outputs = inputs@{ nixpkgs, nocodb, ... }: {
    nixosConfigurations = {
      hostname = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        modules = [
          ./configuration.nix
          nocodb.nixosModules.nocodb

          {
            services.nocodb.enable = true;
          }
        ];
      };
    };
  };
}

```

#### Auto-upstall

Auto-upstall is a single command that sets up NocoDB on a server for production usage. Behind the scenes it auto-generates docker-compose for you.

```bash
bash <(curl -sSL http://install.nocodb.com/noco.sh) <(mktemp)

```

Auto-upstall does the following: 🕊

- 🐳 Automatically installs all pre-requisites like docker, docker-compose
- 🚀 Automatically installs NocoDB with PostgreSQL, Redis, Minio, Traefik gateway using Docker Compose. 🐘 🗄️ 🌐
- 🔄 Automatically upgrades NocoDB to the latest version when you run the command again.
- 🔒 Automatically setups SSL and also renews it. Needs a domain or subdomain as input while installation.

> install.nocodb.com/noco.sh script can be found [here in our github](https://raw.githubusercontent.com/nocodb/nocodb/develop/docker-compose/1_Auto_Upstall/noco.sh)

#### Other Methods

> Binaries are only for quick testing locally.

<div class="MuiTableContainer-root css-x0c05s" id="bkmrk-install-method-comma" style="text-align: justify;"><table class="MuiTable-root css-r2l3fl"><thead class="MuiTableHead-root css-s4zxv0"><tr class="MuiTableRow-root MuiTableRow-head css-lh0r68"><th class="MuiTableCell-root MuiTableCell-head MuiTableCell-sizeMedium css-1tewmor" scope="col">Install Method</th><th class="MuiTableCell-root MuiTableCell-head MuiTableCell-sizeMedium css-1tewmor" scope="col">Command to install</th></tr></thead><tbody class="MuiTableBody-root css-y6j1my"><tr class="MuiTableRow-root css-lh0r68"><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-y06eww">🍏 MacOS arm64  
(Binary)</td><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-y06eww">`curl http://get.nocodb.com/macos-arm64 -o nocodb -L && chmod +x nocodb && ./nocodb`</td></tr><tr class="MuiTableRow-root css-lh0r68"><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-y06eww">🍏 MacOS x64  
(Binary)</td><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-y06eww">`curl http://get.nocodb.com/macos-x64 -o nocodb -L && chmod +x nocodb && ./nocodb`</td></tr><tr class="MuiTableRow-root css-lh0r68"><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-y06eww">🐧 Linux arm64  
(Binary)</td><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-y06eww">`curl http://get.nocodb.com/linux-arm64 -o nocodb -L && chmod +x nocodb && ./nocodb`</td></tr><tr class="MuiTableRow-root css-lh0r68"><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-y06eww">🐧 Linux x64  
(Binary)</td><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-y06eww">`curl http://get.nocodb.com/linux-x64 -o nocodb -L && chmod +x nocodb && ./nocodb`</td></tr><tr class="MuiTableRow-root css-lh0r68"><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-y06eww">🪟 Windows arm64  
(Binary)</td><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-y06eww">`iwr http://get.nocodb.com/win-arm64.exe -OutFile Noco-win-arm64.exe && .\Noco-win-arm64.exe`</td></tr><tr class="MuiTableRow-root css-lh0r68"><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-y06eww">🪟 Windows x64  
(Binary)</td><td class="MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium css-y06eww">`iwr http://get.nocodb.com/win-x64.exe -OutFile Noco-win-x64.exe && .\Noco-win-x64.exe`</td></tr></tbody></table>

</div>> When running locally access nocodb by visiting: [http://localhost:8080/dashboard](http://localhost:8080/dashboard)

For more installation methods, please refer to [our docs](https://docs.nocodb.com/category/installation)

### Screenshots

![2](https://github.com/nocodb/nocodb/assets/86527202/a127c05e-2121-4af2-a342-128e0e2d0291)![3](https://github.com/nocodb/nocodb/assets/86527202/674da952-8a06-4848-a0e8-a7b02d5f5c88)![4](https://github.com/nocodb/nocodb/assets/86527202/cbc5152a-9caf-4f77-a8f7-92a9d06d025b)![5](https://github.com/nocodb/nocodb/assets/86527202/dc75dfdc-c486-4f5a-a853-2a8f9e6b569a)

![5](https://user-images.githubusercontent.com/35857179/194844886-a17006e0-979d-493f-83c4-0e72f5a9b716.png)![7](https://github.com/nocodb/nocodb/assets/86527202/be64e619-7295-43e2-aa95-cace4462b17f)![8](https://github.com/nocodb/nocodb/assets/86527202/4538bf5a-371f-4ec1-a867-8197e5824286)

![8](https://user-images.githubusercontent.com/35857179/194844893-82d5e21b-ae61-41bd-9990-31ad659bf490.png)![9](https://user-images.githubusercontent.com/35857179/194844897-cfd79946-e413-4c97-b16d-eb4d7678bb79.png)![10](https://user-images.githubusercontent.com/35857179/194844902-c0122570-0dd5-41cf-a26f-6f8d71fefc99.png)![11](https://user-images.githubusercontent.com/35857179/194844903-c1e47f40-e782-4f5d-8dce-6449cc70b181.png)![12](https://user-images.githubusercontent.com/35857179/194844907-09277d3e-cbbf-465c-9165-6afc4161e279.png)

### Features

##### Rich Spreadsheet Interface

- ⚡ Basic Operations: Create, Read, Update and Delete Tables, Columns, and Rows
- ⚡ Fields Operations: Sort, Filter, Group, Hide / Unhide Columns
- ⚡ Multiple Views Types: Grid (By default), Gallery, Form, Kanban and Calendar View
- ⚡ View Permissions Types: Collaborative Views, &amp; Locked Views
- ⚡ Share Bases / Views: either Public or Private (with Password Protected)
- ⚡ Variant Cell Types: ID, Links, Lookup, Rollup, SingleLineText, Attachment, Currency, Formula, User, etc
- ⚡ Access Control with Roles: Fine-grained Access Control at different levels
- ⚡ and more ...

##### App Store for Workflow Automations

We provide different integrations in three main categories. See [App Store](https://docs.nocodb.com/account-settings/oss-specific-details/#app-store) for details.

- ⚡ Chat: Slack, Discord, Mattermost, and etc
- ⚡ Email: AWS SES, SMTP, MailerSend, and etc
- ⚡ Storage: AWS S3, Google Cloud Storage, Minio, and etc

##### Programmatic Access

We provide the following ways to let users programmatically invoke actions. You can use a token (either JWT or Social Auth) to sign your requests for authorization to NocoDB.

- ⚡ REST APIs
- ⚡ NocoDB SDK

### Contributing

Please refer to [Contribution Guide](https://github.com/nocodb/nocodb/blob/master/.github/CONTRIBUTING.md).

### Why are we building this?

Most internet businesses equip themselves with either spreadsheet or a database to solve their business needs. Spreadsheets are used by Billion+ humans collaboratively every single day. However, we are way off working at similar speeds on databases which are way more powerful tools when it comes to computing. Attempts to solve this with SaaS offerings have meant horrible access controls, vendor lock-in, data lock-in, abrupt price changes &amp; most importantly a glass ceiling on what's possible in the future.

### Our Mission

ur mission is to provide the most powerful no-code interface for databases, accessible to every internet business across the world. By making this capability broadly available under a fair and sustainable model, we aim to democratise access to powerful computing tools and enable a billion-plus people to develop radical tinkering and building abilities on the internet.

### License

This project is licensed under [Sustainable Use License](https://github.com/nocodb/nocodb/blob/develop/LICENSE.md).

### Contributors

Thank you for your contributions! We appreciate all the contributions from the community.

# Instalação customizada NocoDB

Link: [https://nocodb.com/docs/self-hosting/installation/custom-infrastructure](https://nocodb.com/docs/self-hosting/installation/custom-infrastructure)

### Custom Infrastructure

Use this page for NocoDB deployments that the single-server installation wizard does not cover. These include managed databases, custom SSL certificates, private CAs, your own reverse proxy, multi-replica setups and Kubernetes.

### [Before you begin](https://nocodb.com/docs/self-hosting/installation/custom-infrastructure#before-you-begin)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

NocoDB works with all actively maintained PostgreSQL releases (12 and later). Use the version that your managed provider offers. We recommend a current major version.

### [When to use this page](https://nocodb.com/docs/self-hosting/installation/custom-infrastructure#when-to-use-this-page)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

Use this page if one of these is true:

<div class="prose flex-1" id="bkmrk-you-use-a-managed-po" style="text-align: justify;">- You use a managed Postgres (RDS, Azure, Cloud SQL) with public CA SSL.
- You use a self-managed Postgres with a private or internal CA.
- You already have a TLS certificate and want to pin it through Traefik.
- You have nginx, Caddy or a load balancer in front, and want NocoDB on port 8080.
- You deploy to Kubernetes and want a reference compose file to translate.

</div>### [Option A: Clone the repo and run the wizard interactively](https://nocodb.com/docs/self-hosting/installation/custom-infrastructure#option-a-clone-the-repo-and-run-the-wizard-interactively)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

<div class="prose flex-1" id="bkmrk-git-clone-https%3A%2F%2Fgi" style="text-align: justify;"><figure class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" dir="ltr" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button aria-label="Copy Text" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring p-1 [&_svg]:size-4 hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground" type="button"><svg class="lucide" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><rect height="4" rx="1" ry="1" width="8" x="8" y="2"></rect><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path></svg></button></div>```
git clone https://github.com/nocodb/nocodb.git
cd nocodb/docker-compose
./setup.sh
```

</figure></div>`setup.sh` runs the same installation wizard as the [Single-server install](https://nocodb.com/docs/self-hosting/installation/single-server) one-liner. It writes its output into the current working directory. Use this option to edit the generated files before you start the stack.

### [Option B: Copy a pre-built example](https://nocodb.com/docs/self-hosting/installation/custom-infrastructure#option-b-copy-a-pre-built-example)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

The [`docker-compose/examples/`](https://github.com/nocodb/nocodb/tree/develop/docker-compose/examples) directory contains a set of selected configurations.

<div class="prose flex-1" id="bkmrk-example-postgres-red" style="text-align: justify;"><div class="relative overflow-auto prose-no-margin my-6"><table style="width: 100%;"><thead><tr><th style="width: 29.4392%;">Example</th><th style="width: 21.4625%;">Postgres</th><th style="width: 9.41741%;">Redis</th><th style="width: 15.9738%;">Proxy</th><th style="width: 23.7223%;">Best for</th></tr></thead><tbody><tr><td style="width: 29.4392%;">[`quickstart-demo`](https://github.com/nocodb/nocodb/tree/develop/docker-compose/examples/quickstart-demo)</td><td style="width: 21.4625%;">Bundled</td><td style="width: 9.41741%;">Bundled</td><td style="width: 15.9738%;">None (port 8080)</td><td style="width: 23.7223%;">Local eval / "show me NocoDB"</td></tr><tr><td style="width: 29.4392%;">[`managed-postgres`](https://github.com/nocodb/nocodb/tree/develop/docker-compose/examples/managed-postgres)</td><td style="width: 21.4625%;">External managed (RDS/Azure/Cloud SQL)</td><td style="width: 9.41741%;">External</td><td style="width: 15.9738%;">None (port 8080)</td><td style="width: 23.7223%;">Production behind your own LB</td></tr><tr><td style="width: 29.4392%;">[`external-postgres-and-redis`](https://github.com/nocodb/nocodb/tree/develop/docker-compose/examples/external-postgres-and-redis)</td><td style="width: 21.4625%;">External self-managed</td><td style="width: 9.41741%;">External</td><td style="width: 15.9738%;">None (port 8080)</td><td style="width: 23.7223%;">Minimal Docker footprint</td></tr><tr><td style="width: 29.4392%;">[`traefik-custom-ssl`](https://github.com/nocodb/nocodb/tree/develop/docker-compose/examples/traefik-custom-ssl)</td><td style="width: 21.4625%;">External managed</td><td style="width: 9.41741%;">External</td><td style="width: 15.9738%;">Traefik + custom TLS cert</td><td style="width: 23.7223%;">Production with your own SSL cert</td></tr><tr><td style="width: 29.4392%;">[`postgres-private-ca`](https://github.com/nocodb/nocodb/tree/develop/docker-compose/examples/postgres-private-ca)</td><td style="width: 21.4625%;">External (private CA)</td><td style="width: 9.41741%;">External</td><td style="width: 15.9738%;">Traefik + Let's Encrypt</td><td style="width: 23.7223%;">On-prem / private cloud DB</td></tr></tbody></table>

</div></div>To start quickly with an example:

git clone --depth 1 https://github.com/nocodb/nocodb.git  
cp -r nocodb/docker-compose/examples/managed-postgres ./my-deployment  
cd my-deployment  
\# Edit docker-compose.yml, docker.env, and nocodb/db.json: replace placeholders  
docker compose up -d

```
git clone --depth 1 https://github.com/nocodb/nocodb.git 
cp -r nocodb/docker-compose/examples/managed-postgres ./my-deployment
cd my-deployment
# Edit docker-compose.yml, docker.env, and nocodb/db.json: replace placeholders
docker compose up -d
```

<div class="prose flex-1" id="bkmrk-" style="text-align: justify;"><figure class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" dir="ltr" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button aria-label="Copy Text" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring p-1 [&_svg]:size-4 hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground" type="button"><svg class="lucide" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><rect height="4" rx="1" ry="1" width="8" x="8" y="2"></rect><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path></svg></button></div></figure></div>## [Configuring SSL for an external Postgres with a private CA](https://nocodb.com/docs/self-hosting/installation/custom-infrastructure#configuring-ssl-for-an-external-postgres-with-a-private-ca)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

SSL for an external Postgres with a private CA is the most complex external database setup. NocoDB reads its database connection from `nocodb/db.json` (knex format). In this file, you can put a CA certificate inline:

<div class="prose flex-1" id="bkmrk-%7B-%22client%22%3A-%22pg%22%2C-%22c" style="text-align: justify;"><figure class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" dir="ltr" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button aria-label="Copy Text" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring p-1 [&_svg]:size-4 hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground" type="button"><svg class="lucide" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><rect height="4" rx="1" ry="1" width="8" x="8" y="2"></rect><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path></svg></button></div>```
{  "client": "pg",  
"connection": {    
    "host": "your-private-db-host.internal",    
    "port": "5432",    
    "user": "nocodb",    
    "password": "your-password",    
    "database": "nocodb",    
    "ssl": {      
        "rejectUnauthorized": true,      
        "ca": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----"    
        }  
      }
    }
```

</figure></div>The CA must be one string, with newlines escaped as `\n`. The `postgres-private-ca` example shows the full layout, with a Traefik proxy.

To change a multi-line PEM into the single-line JSON form, run:

<div class="prose flex-1" id="bkmrk-awk-%27nf-%7Bsub%28%2F%5Cr%2F%2C-%22" style="text-align: justify;"><figure class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" dir="ltr" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button aria-label="Copy Text" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring p-1 [&_svg]:size-4 hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground" type="button"><svg class="lucide" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><rect height="4" rx="1" ry="1" width="8" x="8" y="2"></rect><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path></svg></button></div>```
awk 'NF {sub(/\r/, ""); printf "%s\\n", $0}' your-ca.pem
```

</figure></div>## [Multi-replica / scaling](https://nocodb.com/docs/self-hosting/installation/custom-infrastructure#multi-replica--scaling)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

NocoDB scales horizontally when you configure Redis. Redis is necessary for distributed coordination:

<div class="prose flex-1" id="bkmrk-%23-in-docker-compose." style="text-align: justify;"><figure class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" dir="ltr" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button aria-label="Copy Text" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring p-1 [&_svg]:size-4 hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground" type="button"><svg class="lucide" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><rect height="4" rx="1" ry="1" width="8" x="8" y="2"></rect><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path></svg></button></div>```
# In docker-compose.yml
nocodb:  
  deploy:
    mode: replicated    
    replicas: 3
```

</figure></div>For more than a few replicas, run NocoDB in Kubernetes. Translate one of the examples into a Deployment + Service + Ingress. Point the same env vars at managed Postgres and Redis.

## [Bringing your own reverse proxy](https://nocodb.com/docs/self-hosting/installation/custom-infrastructure#bringing-your-own-reverse-proxy)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

The `managed-postgres` and `external-postgres-and-redis` examples expose NocoDB on host port 8080, without Traefik.

<div class="prose flex-1" id="bkmrk-put-your-own-nginx%2C-" style="text-align: justify;">1. Put your own nginx, Caddy or load balancer in front.
2. Forward HTTP traffic to port 8080.
3. Forward the `X-Forwarded-Proto` and `Host` headers. NocoDB needs them to make correct callback URLs.

</div>## [Related](https://nocodb.com/docs/self-hosting/installation/custom-infrastructure#related)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

<div class="prose flex-1" id="bkmrk-single-server-instal" style="text-align: justify;">- [Single-Server Install](https://nocodb.com/docs/self-hosting/installation/single-server)

</div>Last updated on <time datetime="2026-10-03T10:48:45.000Z">October 3, 2026</time>

<div class="mt-10 flex flex-col gap-2.5 text-nc-content-grey-subtle-2 text-sm" id="bkmrk-latest-product-updat"><div class="flex flex-wrap items-center gap-x-2 gap-y-1" style="text-align: justify;"><span class="shrink-0"><svg aria-hidden="true" class="lucide lucide-flask-conical size-3.5" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2"></path><path d="M6.453 15h11.094"></path><path d="M8.5 2h7"></path></svg></span>Latest product updates?[See Changelog](https://nocodb.com/docs/changelog)</div></div>

# Quickstart NocoDB

Link: [https://nocodb.com/docs/self-hosting/installation/quickstart](https://nocodb.com/docs/self-hosting/installation/quickstart)

The Quickstart is the fastest way to try NocoDB locally. One command downloads the installer and makes a Compose stack (NocoDB, a worker, Postgres and Redis). Then it starts the stack on [http://localhost:8080](http://localhost:8080/). It works on Mac, Windows and Linux.

## [Before you begin](https://nocodb.com/docs/self-hosting/installation/quickstart#before-you-begin)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

You need Docker Desktop (Mac/Windows) or Docker Engine (Linux). Install it from [docker.com](https://www.docker.com/products/docker-desktop/) before you run the command below.

## [1. Run](https://nocodb.com/docs/self-hosting/installation/quickstart#1-run)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

<div class="prose flex-1" id="bkmrk-curl--fssl-https%3A%2F%2Fi" style="text-align: justify;"><figure class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" dir="ltr" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button aria-label="Copy Text" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring p-1 [&_svg]:size-4 hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground" type="button"><svg class="lucide" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><rect height="4" rx="1" ry="1" width="8" x="8" y="2"></rect><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path></svg></button></div>```
curl -fsSL https://install.nocodb.com/noco.sh | bash -s -- --quick
```

</figure></div>This command writes a ready-to-run stack into `nocodb/` and starts it. The first run pulls the images, so it can take a few minutes.

## [2. Open NocoDB](https://nocodb.com/docs/self-hosting/installation/quickstart#2-open-nocodb)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

<div class="prose flex-1" id="bkmrk-open-http%3A%2F%2Flocalhos" style="text-align: justify;">1. Open [http://localhost:8080](http://localhost:8080/).
2. Sign up with an email and password. The first user becomes super admin.

</div>## [What this runs](https://nocodb.com/docs/self-hosting/installation/quickstart#what-this-runs)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

<div class="prose flex-1" id="bkmrk-container-image-purp" style="text-align: justify;"><div class="relative overflow-auto prose-no-margin my-6"><table><thead><tr><th>Container</th><th>Image</th><th>Purpose</th></tr></thead><tbody><tr><td>`nocodb`</td><td>`nocodb/nocodb:latest`</td><td>The web app and API</td></tr><tr><td>`worker`</td><td>`nocodb/nocodb:latest`</td><td>Background jobs (imports, exports, automations)</td></tr><tr><td>`db`</td><td>`PostgreSQL`</td><td>Stores metadata and your data</td></tr><tr><td>`redis`</td><td>`Redis`</td><td>Caching and job queue</td></tr></tbody></table>

</div></div>Docker keeps the data in **named volumes** (`postgres_data`, `redis_data`, `nocodb_data`). The data stays after restarts and after `docker compose down`. To list the volumes, run `docker volume ls`.

## [Common operations](https://nocodb.com/docs/self-hosting/installation/quickstart#common-operations)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

The installer writes all files into `nocodb/`. Run these commands from that directory:

<div class="prose flex-1" id="bkmrk-cd-nocodb%23-tail-logs" style="text-align: justify;"><figure class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" dir="ltr" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button aria-label="Copy Text" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring p-1 [&_svg]:size-4 hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground" type="button"><svg class="lucide" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><rect height="4" rx="1" ry="1" width="8" x="8" y="2"></rect><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path></svg></button></div>```
cd nocodb# 
Tail logs
docker compose logs -f nocodb
# Stop everything (keeps your data)
docker compose down
# Start again
docker compose up -d
# Update to the latest version
docker compose pull && docker compose up -d
```

</figure></div>## [Prefer not to run a script?](https://nocodb.com/docs/self-hosting/installation/quickstart#prefer-not-to-run-a-script)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

Get the same four-container stack from the [`quickstart-demo` example](https://github.com/nocodb/nocodb/tree/develop/docker-compose/examples/quickstart-demo) on GitHub. It is a plain Compose file that you can read before you run it.

<div class="prose flex-1" id="bkmrk-copy-its-docker-comp" style="text-align: justify;">1. Copy its `docker-compose.yml` into an empty directory.
2. Start it:

<figure class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" dir="ltr" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button aria-label="Copy Text" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring p-1 [&_svg]:size-4 hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground" type="button"><svg class="lucide" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><rect height="4" rx="1" ry="1" width="8" x="8" y="2"></rect><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path></svg></button></div>```
docker compose up -d
```

</figure></div>It is the same stack, without the installer. Run the operations above from that directory.

## [Next steps](https://nocodb.com/docs/self-hosting/installation/quickstart#next-steps)<svg aria-hidden="true" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

<div class="prose flex-1" id="bkmrk-deploying-to-a-serve" style="text-align: justify;">- **Deploying to a server?** Refer to [Single-server install](https://nocodb.com/docs/self-hosting/installation/single-server). It uses the same single command, and adds automatic Traefik + Let's Encrypt SSL.
- **Need managed Postgres, custom SSL, or your own infrastructure?** For example configurations, refer to [Custom infrastructure](https://nocodb.com/docs/self-hosting/installation/custom-infrastructure).
- **Want enterprise features?** [Purchase a license](https://nocodb.com/docs/self-hosting/purchase-license), then [activate it](https://nocodb.com/docs/self-hosting/license-activation).
- **Something not working?** For startup, network, SSL and attachment problems, refer to [Troubleshooting](https://nocodb.com/docs/self-hosting/troubleshooting).

</div>Last updated on <time datetime="2026-10-03T10:48:45.000Z">October 3, 2026</time>