NocoDB
Docs
Getting Started/Self Hosting/Installation

Nix/NixOS

Install NocoDB on NixOS.

On NixOS

Basic Setup

The NixOS module is the recommended method for installing and configuring NocoDB on NixOS. We advise using Flakes for this process. The NixOS module will install NocoDB and create a corresponding systemd service

{
  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

          {
            # Enable NocoDB
            services.nocodb.enable = true;
          }
        ];
      };
    };
  };
}

Secrets

We recommend using the services.nocodb.environmentFile option to securely pass secrets, such as NC_AUTH_JWT_SECRET, to the NixOS NocoDB instance. This approach prevents sensitive information from being committed to the NixOS repository. While it is not required, we strongly suggest using sops-nix for managing secrets in a more secure and structured manner.

Example configuration:

services.nocodb.environmentFile = "/var/lib/secrets/nocodb.env"

SSL

It is recommended to use the NixOS Nginx module with ACME for SSL certificate management. This approach ensures secure and automated handling of SSL certificates.

networking.firewall.allowedTCPPorts = [ 80 443 ];

services.nginx = {
    enable = true;

    recommendedTlsSettings = true;
    recommendedOptimisation = true;
    recommendedGzipSettings = true;
    recommendedProxySettings = true;
    recommendedBrotliSettings = true;

    virtualHosts."example.com" =  {
      enableACME = true;
      forceSSL = true;
      locations."/" = {
        proxyPass = "http://127.0.0.1:8080";
        proxyWebsockets = true;
      };
    };
};

PostgreSQL

For production use recommend PostgreSQL instead of SQLite

  services.nocodb.environments = {
    DB_URL="postgres:///nocodb?host=/run/postgresql";
  };

  services.postgresql = {
    enable = true;

    ensureDatabases = [ "nocodb" ];
    ensureUsers = [{
      name = "nocodb";
      ensureDBOwnership = true;
    }];

    package = with pkgs; postgresql_15;
    authentication = lib.mkForce ''
        #type database DBuser  origin-address auth-method
        # unix socket
        local all      all                    trust
        # ipv4
        host  all      all     127.0.0.1/32   trust
        # ipv6
        host  all      all     ::1/128        trust
    '';

    settings.log_timezone = config.time.timeZone;
  };

On Other GNU/Linux Distributions and MacOS

If Nix is not already installed on your system, we recommend using the Determinate Systems Nix installer to install Nix. If Nix is already installed, you can skip this step.

To install Nix, run the following command:

curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install

Once Nix is installed, you can run NocoDB using the following command:

nix run github:nocodb/nocodb

On this page