{"id":148762,"date":"2026-05-19T17:37:15","date_gmt":"2026-05-19T17:37:15","guid":{"rendered":"\/tutorials\/?p=148762"},"modified":"2026-05-19T17:37:17","modified_gmt":"2026-05-19T17:37:17","slug":"how-to-install-nocodb-docker","status":"publish","type":"post","link":"\/tutorials\/how-to-install-nocodb-docker","title":{"rendered":"How to install NocoDB with Docker and build a no-code database app"},"content":{"rendered":"<p>To install NocoDB with Docker and build a no-code database app, run the official NocoDB container, connect it to SQLite or PostgreSQL, and open the dashboard through your server&rsquo;s browser URL. Once deployed, NocoDB turns database tables into spreadsheet-style workspaces where you can edit records, create views, invite users, and manage data without building a custom admin panel.<\/p><p>The process has five main parts:<\/p><ol class=\"wp-block-list\">\n<li>Prepare Docker, server access, storage, and a database option.<\/li>\n\n\n\n<li>Run NocoDB with SQLite for testing or PostgreSQL for production.<\/li>\n\n\n\n<li>Open the NocoDB dashboard and create your first workspace.<\/li>\n\n\n\n<li>Turn database tables into grid, form, kanban, gallery, or calendar views.<\/li>\n\n\n\n<li>Manage the container with logs, updates, backups, firewall rules, and user permissions.<\/li>\n<\/ol><p>For a faster setup, Hostinger&rsquo;s Docker template deploys NocoDB on a VPS without manually pulling the image or configuring the container from the command line.<\/p><h2 class=\"wp-block-heading\" id=\"h-what-do-you-need-before-installing-nocodb-with-docker\">What do you need before installing NocoDB with Docker?<\/h2><p>Before installing NocoDB with Docker, prepare a server environment, a database option, and access details for the web dashboard. These requirements make sure the container runs correctly and keeps your NocoDB data available after restarts or updates.<\/p><p>You need:<\/p><ol class=\"wp-block-list\">\n<li><strong>A VPS or local machine<\/strong> &ndash; use a <a href=\"\/tutorials\/what-is-vps-hosting\">VPS<\/a> for a self-hosted NocoDB app that your team can access online, or a local machine for testing.<\/li>\n\n\n\n<li><strong>Docker installed<\/strong> &ndash; NocoDB runs from the official Docker image, so <a href=\"\/tutorials\/how-to-install-docker-on-ubuntu\">Docker must be installed<\/a> before you start the container.<\/li>\n\n\n\n<li><strong>Terminal access<\/strong> &ndash; <a href=\"\/tutorials\/how-to-use-putty-ssh\">use SSH<\/a> or a local terminal to run Docker commands.<\/li>\n\n\n\n<li><strong>An available port<\/strong> &ndash; NocoDB uses port 8080 by default. Make sure this port is not already used by another service.<\/li>\n\n\n\n<li><strong>Persistent storage<\/strong> &ndash; map a Docker volume or local folder to the container so NocoDB data stays available after restarts.<\/li>\n\n\n\n<li><strong>A database option<\/strong> &ndash; use SQLite for a simple test setup or PostgreSQL for a production-ready deployment.<\/li>\n\n\n\n<li><strong>A secure JWT secret<\/strong> &ndash; set a long, unique NC_AUTH_JWT_SECRET value if you connect NocoDB to an external database.<\/li>\n\n\n\n<li><strong>Firewall access<\/strong> &ndash; allow traffic to the port where NocoDB runs, especially when deploying it on a VPS.<\/li>\n<\/ol><p>For a quick test, SQLite is enough because it stores data in the mapped NocoDB data directory. For a team workspace or production app, use <a href=\"\/tutorials\/what-is-postgresql\">PostgreSQL<\/a> because it separates the application container from the database and handles larger, multi-user workloads more reliably.<\/p><h2 class=\"wp-block-heading\" id=\"h-how-to-install-nocodb-with-docker\">How to install NocoDB with Docker<\/h2><p>You can install NocoDB with Docker by running the official nocodb\/nocodb image as a container and exposing its web interface on port 8080. For a quick test setup, use SQLite. For a production setup or a multi-user database app, connect NocoDB to PostgreSQL or another external database.<\/p><p>Before starting, make sure Docker is installed on your server and that port 8080 is available.<\/p><h3 class=\"wp-block-heading\">1. Run NocoDB with SQLite<\/h3><p>SQLite is the simplest way to get started with NocoDB because it doesn&rsquo;t require a separate database server. Run this command from the directory where you want to store NocoDB data:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run -d --name nocodb\n-v \"$(pwd)\"\/nocodb:\/usr\/app\/data\/\n-p 8080:8080\nnocodb\/nocodb:latest<\/pre><p>This command does four things:<\/p><ul class=\"wp-block-list\">\n<li>&ndash;name nocodb creates a container named nocodb.<\/li>\n\n\n\n<li>-v &ldquo;$(pwd)&rdquo;\/nocodb:\/usr\/app\/data\/ stores NocoDB data in a persistent local folder.<\/li>\n\n\n\n<li>-p 8080:8080 maps the container&rsquo;s web interface to port 8080 on your server.<\/li>\n\n\n\n<li>nocodb\/nocodb:latest downloads and runs the latest official NocoDB Docker image.<\/li>\n<\/ul><p>The volume mapping is important. Without it, your NocoDB data may be lost when the container is removed.<\/p><h3 class=\"wp-block-heading\">2. Run NocoDB with PostgreSQL<\/h3><p>PostgreSQL is better for production projects because it separates the NocoDB application from the database layer. Use this setup if you plan to manage larger datasets, invite multiple users, or connect NocoDB to an existing database.<\/p><p>Replace the database host, username, password, database name, and JWT secret before running the command:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run -d --name nocodb\n-v \"$(pwd)\"\/nocodb:\/usr\/app\/data\/\n-p 8080:8080\n-e NC_DB=\"pg:\/\/your-database-host:5432?u=your-username&amp;p=your-password&amp;d=your-database-name\"\n-e NC_AUTH_JWT_SECRET=\"replace-this-with-a-secure-random-secret\"\nnocodb\/nocodb:latest<\/pre><p>In this command:<\/p><ul class=\"wp-block-list\">\n<li>NC_DB tells NocoDB how to connect to PostgreSQL.<\/li>\n\n\n\n<li>NC_AUTH_JWT_SECRET sets the secret key used for authentication.<\/li>\n\n\n\n<li>your-database-host should point to your PostgreSQL server.<\/li>\n\n\n\n<li>your-username, your-password, and your-database-name should match your PostgreSQL credentials.<\/li>\n<\/ul><p>Use a long, unique value for NC_AUTH_JWT_SECRET. Do not reuse the example value in a live deployment.<\/p><h3 class=\"wp-block-heading\">3. Open the NocoDB dashboard<\/h3><p>After the container starts, open NocoDB in your browser:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">http:\/\/localhost:8080<\/pre><p>If NocoDB is running on a VPS, replace localhost with your server IP address:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">http:\/\/your-server-ip:8080<\/pre><p>From there, create your admin account and start building your no-code database interface. You can create a new base, connect an existing database, or import data into a spreadsheet-style workspace.<\/p><h3 class=\"wp-block-heading\">4. Check whether the container is running<\/h3><p>Use this command to confirm that the NocoDB container is active:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker ps<\/pre><p>If the container is running, you should see nocodb\/nocodb:latest in the image column and 0.0.0.0:8080-&gt;8080\/tcp in the ports column.<\/p><p>If NocoDB doesn&rsquo;t open in your browser, check the container logs:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker logs nocodb<\/pre><p>The logs help identify common issues, such as port conflicts, incorrect database credentials, or failed container startup.<\/p><h2 class=\"wp-block-heading\" id=\"h-how-to-deploy-nocodb-with-hostingers-docker-template\">How to deploy NocoDB with Hostinger&rsquo;s Docker template<\/h2><p>Hostinger&rsquo;s <a href=\"\/vps\/docker\">Docker catalog<\/a> lets you deploy NocoDB without manually pulling the Docker image, configuring the container, or mapping ports through the command line. The template creates a <a href=\"\/vps\/docker\/nocodb\">ready-to-use NocoDB instance<\/a> on your VPS, so you can move straight to setting up your no-code database interface.<\/p><p>Here&rsquo;s how to deploy it:<\/p><ol class=\"wp-block-list\">\n<li>Log in to hPanel.<\/li>\n\n\n\n<li>Go to <strong>VPS<\/strong> and choose your server.<\/li>\n\n\n\n<li>Open <strong>OS &amp; Panel<\/strong>.<\/li>\n\n\n\n<li>Select <strong>Docker templates<\/strong>.<\/li>\n\n\n\n<li>Choose <strong>NocoDB<\/strong> from the application catalog.<\/li>\n\n\n\n<li>Click <strong>Install<\/strong> and wait for the deployment to finish.<\/li>\n\n\n\n<li>Open the provided URL or use your VPS IP address to access the NocoDB dashboard.<\/li>\n\n\n\n<li>Create your admin account and start configuring your workspace.<\/li>\n<\/ol><p>After deployment, NocoDB runs as a Docker container on your VPS. You can manage it from Hostinger&rsquo;s Docker manager instead of using only terminal commands. This is useful for checking container status, viewing logs, restarting the application, or updating the container when a new version is available.<\/p><p>Hostinger&rsquo;s template is best suited for users who want the benefits of self-hosting without having to manually complete every Docker setup step. You still control the VPS environment, database app, users, and stored data, but the initial deployment process is faster than running NocoDB from scratch.<\/p><p>Once NocoDB is running, connect your database or create a new base. Then, use grid, form, kanban, gallery, or calendar views to turn your data into a spreadsheet-style app for your team.<\/p><h2 class=\"wp-block-heading\" id=\"h-how-to-turn-a-database-into-a-spreadsheet-style-app-with-nocodb\">How to turn a database into a spreadsheet-style app with NocoDB<\/h2><p>NocoDB turns a database into a spreadsheet-style app by converting database tables into visual workspaces. Instead of writing SQL queries or building a custom admin panel, you can manage records through editable rows, fields, filters, views, forms, and permissions.<\/p><p>After installing NocoDB, open the dashboard and follow these steps:<\/p><ol class=\"wp-block-list\">\n<li><strong>Create a workspace<\/strong> &ndash; use a workspace to group related databases, tables, and team members.<\/li>\n\n\n\n<li><strong>Create or connect a base<\/strong> &ndash; start with a new base or connect NocoDB to an existing database.<\/li>\n\n\n\n<li><strong>Add database tables<\/strong> &ndash; create tables for the data you want to manage, such as customers, orders, projects, leads, or inventory.<\/li>\n\n\n\n<li><strong>Customize fields<\/strong> &ndash; define field types like text, number, date, checkbox, attachment, single select, formula, lookup, or linked record.<\/li>\n\n\n\n<li><strong>Choose a view<\/strong> &ndash; use grid view for spreadsheet-style editing, then add kanban, gallery, calendar, or form views for different workflows.<\/li>\n\n\n\n<li><strong>Set user permissions<\/strong> &ndash; invite team members and decide who can view, edit, create, or manage records.<\/li>\n\n\n\n<li><strong>Use APIs or webhooks<\/strong> &ndash; connect NocoDB to other tools through generated APIs or automation workflows.<\/li>\n<\/ol><p>For example, a sales team can connect a customer database to NocoDB and manage it as a CRM. The grid view can show every lead as a spreadsheet row, the kanban view can group leads by pipeline stage, and the form view can collect new inquiries from a website.<\/p><p>The main benefit is that NocoDB keeps the database structure in place while making the data easier to use. Developers can still work with the underlying database, while non-technical users can update records, filter information, and collaborate through a visual interface.<\/p><h2 class=\"wp-block-heading\" id=\"h-how-to-manage-nocodb-after-installation\">How to manage NocoDB after installation<\/h2><p>NocoDB needs regular container checks, updates, backups, and access controls after installation. These tasks keep the app available for users and protect the database records behind your spreadsheet-style interface.<\/p><h3 class=\"wp-block-heading\">Check the NocoDB container status<\/h3><p>Start by checking whether the NocoDB container is running:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker ps<\/pre><p>If the container is active, the output should show the nocodb\/nocodb:latest image and port 8080 mapped to your server.<\/p><p>If NocoDB doesn&rsquo;t open in your browser, check the container logs:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker logs nocodb<\/pre><p>The logs help identify startup errors, port conflicts, database connection issues, or missing environment variables.<\/p><h3 class=\"wp-block-heading\">Restart or stop the NocoDB container<\/h3><p>Restart NocoDB when the container is running but the dashboard is not responding:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker restart nocodb<\/pre><p>To stop and remove the container, use:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker stop nocodb\ndocker rm nocodb<\/pre><p>Only remove the container after confirming that your data is stored in a persistent volume or external database. The Docker volume keeps NocoDB data outside the container, so it remains available after restarts or updates.<\/p><h3 class=\"wp-block-heading\">Update NocoDB safely<\/h3><p>Update NocoDB by pulling the latest Docker image and recreating the container with the same volume and environment variables:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker pull nocodb\/nocodb:latest<\/pre><p>Before updating, create a backup of your database and NocoDB data directory. This is especially important for production setups that use PostgreSQL or contain team workspaces, forms, API tokens, and permission settings.<\/p><h3 class=\"wp-block-heading\">Secure your NocoDB deployment<\/h3><p>Secure NocoDB by limiting access to the server, protecting database credentials, and assigning users only the permissions they need.<\/p><p>Follow these practices:<\/p><ol class=\"wp-block-list\">\n<li><strong>Use a strong JWT secret<\/strong> &ndash; set a long, unique NC_AUTH_JWT_SECRET value instead of reusing examples from documentation.<\/li>\n\n\n\n<li><strong>Protect database credentials<\/strong> &ndash; avoid sharing Docker commands that expose usernames, passwords, or connection strings.<\/li>\n\n\n\n<li><strong>Limit open ports<\/strong> &ndash; expose only the ports required for NocoDB and block unused ports with a firewall.<\/li>\n\n\n\n<li><strong>Use HTTPS<\/strong> &ndash; connect a domain and add an SSL certificate before using NocoDB for real business data.<\/li>\n\n\n\n<li><strong>Create role-based access<\/strong> &ndash; invite users with the minimum permissions they need to view, edit, or manage records.<\/li>\n\n\n\n<li><strong>Back up regularly<\/strong> &ndash; back up both the connected database and the NocoDB data directory.<\/li>\n\n\n\n<li><strong>Update the container<\/strong> &ndash; keep the NocoDB image current to receive bug fixes and security improvements.<\/li>\n<\/ol><h2 class=\"wp-block-heading\" id=\"h-next-steps-for-building-a-no-code-database-app\">Next steps for building a no-code database app<\/h2><p>Once NocoDB is running, start with a small database workflow before adding more users, views, and automations. This helps you validate the structure of your no-code app before relying on it for production data.<\/p><p>First, decide what your app should manage. NocoDB works well for internal tools like CRMs, inventory trackers, project dashboards, content calendars, applicant trackers, and customer support databases. Each workflow should have a clear main table, such as customers, products, tasks, articles, applicants, or tickets.<\/p><p>Next, create the views your team needs. Use grid view for spreadsheet-style editing, form view for collecting new records, kanban view for pipeline stages, calendar view for date-based work, and gallery view for visual records. Keep the first setup simple, then add more fields and views when users need them.<\/p><p>Once the basic app structure is in place, invite team members and assign permissions. Give each user only the access they need. For example, sales reps may need permission to update leads, while managers may need access to pipeline reports and workspace settings.<\/p><p>Finally, connect NocoDB to the rest of your workflow. Use APIs, webhooks, or external automation tools to send data between NocoDB and your website, forms, analytics tools, or internal systems. If your app will handle business-critical data, use a production database like PostgreSQL, enable HTTPS, and schedule regular backups before expanding usage.<\/p><p>With Docker, NocoDB gives you a self-hosted way to turn database records into a collaborative spreadsheet-style app. With Hostinger&rsquo;s Docker template, you can skip most of the manual setup and focus on building the database interface your team actually needs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To install NocoDB with Docker and build a no-code database app, run the official NocoDB container, connect it to SQLite [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/tutorials\/how-to-install-nocodb-docker\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":342,"featured_media":147640,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"How to install NocoDB with Docker","rank_math_description":"Learn how to install NocoDB with Docker, deploy it on Hostinger VPS, and turn your database into a spreadsheet-style no-code app.","rank_math_focus_keyword":"nocodb docker","footnotes":""},"categories":[22646,22644],"tags":[],"class_list":["post-148762","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pre-installed-applications","category-vps"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/how-to-install-nocodb-docker\/","default":1},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/how-to-install-nocodb-docker\/","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/how-to-install-nocodb-docker\/","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/how-to-install-nocodb-docker\/","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/how-to-install-nocodb-docker\/","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/how-to-install-nocodb-docker\/","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/how-to-install-nocodb-docker\/","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/how-to-install-nocodb-docker\/","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/posts\/148762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/users\/342"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/comments?post=148762"}],"version-history":[{"count":3,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/posts\/148762\/revisions"}],"predecessor-version":[{"id":148916,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/posts\/148762\/revisions\/148916"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/media\/147640"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/media?parent=148762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/categories?post=148762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/tutorials\/wp-json\/wp\/v2\/tags?post=148762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}