docs/docs/en/get-started/deployment/intranet/create-nocobase-app.mdx
Intranet environments cannot directly access the npm registry. You need to create the project and install dependencies in an internet-connected environment, then package the complete project and migrate it to the intranet server for deployment.
Overall flow: Create project on internet → Install dependencies and package → Copy to intranet → Extract, configure, and start
:::tip Prerequisites
node_modules may be incompatible/app/my-nocobase-app), otherwise it will not run after migration:::
Create the project and install dependencies in an internet-connected environment.
Run the following on a machine with npm access. Important: First switch to the target parent directory (e.g., cd /app) so the project path is /app/my-nocobase-app, matching the intranet deployment path.
yarn create nocobase-app my-nocobase-app -d postgres \
--skip-dev-dependencies \
-e APP_ENV=production \
-e DB_HOST=localhost \
-e DB_PORT=5432 \
-e DB_DATABASE=nocobase \
-e DB_USER=nocobase \
-e DB_PASSWORD=nocobase \
-e TZ=Asia/Shanghai
yarn create nocobase-app my-nocobase-app -d mysql \
--skip-dev-dependencies \
-e APP_ENV=production \
-e DB_HOST=localhost \
-e DB_PORT=3306 \
-e DB_DATABASE=nocobase \
-e DB_USER=nocobase \
-e DB_PASSWORD=nocobase \
-e TZ=Asia/Shanghai
yarn create nocobase-app my-nocobase-app -d mariadb \
--skip-dev-dependencies \
-e APP_ENV=production \
-e DB_HOST=localhost \
-e DB_PORT=3306 \
-e DB_DATABASE=nocobase \
-e DB_USER=nocobase \
-e DB_PASSWORD=nocobase \
-e TZ=Asia/Shanghai
npx create-nocobase-app@beta my-nocobase-app -d postgres \
--skip-dev-dependencies \
-e APP_ENV=production \
-e DB_HOST=localhost \
-e DB_PORT=5432 \
-e DB_DATABASE=nocobase \
-e DB_USER=nocobase \
-e DB_PASSWORD=nocobase \
-e TZ=Asia/Shanghai
npx create-nocobase-app@beta my-nocobase-app -d mysql \
--skip-dev-dependencies \
-e APP_ENV=production \
-e DB_HOST=localhost \
-e DB_PORT=3306 \
-e DB_DATABASE=nocobase \
-e DB_USER=nocobase \
-e DB_PASSWORD=nocobase \
-e TZ=Asia/Shanghai
npx create-nocobase-app@beta my-nocobase-app -d mariadb \
--skip-dev-dependencies \
-e APP_ENV=production \
-e DB_HOST=localhost \
-e DB_PORT=3306 \
-e DB_DATABASE=nocobase \
-e DB_USER=nocobase \
-e DB_PASSWORD=nocobase \
-e TZ=Asia/Shanghai
npx create-nocobase-app@alpha my-nocobase-app -d postgres \
--skip-dev-dependencies \
-e APP_ENV=production \
-e DB_HOST=localhost \
-e DB_PORT=5432 \
-e DB_DATABASE=nocobase \
-e DB_USER=nocobase \
-e DB_PASSWORD=nocobase \
-e TZ=Asia/Shanghai
npx create-nocobase-app@alpha my-nocobase-app -d mysql \
--skip-dev-dependencies \
-e APP_ENV=production \
-e DB_HOST=localhost \
-e DB_PORT=3306 \
-e DB_DATABASE=nocobase \
-e DB_USER=nocobase \
-e DB_PASSWORD=nocobase \
-e TZ=Asia/Shanghai
npx create-nocobase-app@alpha my-nocobase-app -d mariadb \
--skip-dev-dependencies \
-e APP_ENV=production \
-e DB_HOST=localhost \
-e DB_PORT=3306 \
-e DB_DATABASE=nocobase \
-e DB_USER=nocobase \
-e DB_PASSWORD=nocobase \
-e TZ=Asia/Shanghai
:::warning Parameter notes
--skip-dev-dependencies skips dev dependencies (for production deployment to reduce size)APP_ENV=production sets the app to production modeTZ sets the application timezone (defaults to system timezone)DB_* are database settings; update them to match your database:::
cd my-nocobase-app
yarn install
:::tip Commercial Plugins (Optional)
Steps 4–7 below are only for downloading commercial plugins. If you only use the open-source version, skip steps 4–7 and go directly to step 8 to package.
:::
yarn nocobase install
yarn start
Visit:
http://<internet-server-ip>:13000/admin/settings/license-settings
yarn nocobase pkg download-pro
# Run from inside my-nocobase-app; the archive is created in the parent directory
# Excludes .env (sensitive); only packages storage/plugins (commercial plugins, etc.)
tar -czf ../nocobase-app.tar.gz \
--exclude='./.env' \
--exclude='./storage' \
. \
./storage/plugins
yarn nocobase upgrade
tar -czf ../nocobase-app.tar.gz \
--exclude='./.env' \
--exclude='./storage' \
. \
./storage/plugins
Migrate the packaged project to the intranet server.
Copy nocobase-app.tar.gz to the intranet server (e.g., via USB or file share), then extract (use the full path if the tar.gz is not in the current directory):
mkdir -p /app/my-nocobase-app
tar -xzf nocobase-app.tar.gz -C /app/my-nocobase-app
cd /app/my-nocobase-app
Create a .env file in the project root. Refer to the internet environment config and update these:
DB_HOST: Change to the intranet database address (if the database is on another intranet server)DB_PORT, DB_DATABASE, DB_USER, DB_PASSWORD: Match the actual intranet database configurationAPP_KEY: Keep the same as the internet environment if possible; otherwise existing tokens will be invalidatedYou can run cat .env in the internet project root to view the full config, then copy and adjust for the intranet.
yarn nocobase install
yarn start -d
Visit http://<intranet-server-ip>:13000 and log in with the initial account.
Commercial users need to enter the License Key. Visit:
http://<intranet-server-ip>:13000/admin/settings/license-settings
cd /app/my-nocobase-app
yarn nocobase pm2-stop
Copy nocobase-app.tar.gz to the intranet server, then extract:
tar -xzf nocobase-app.tar.gz -C /app/my-nocobase-app
cd /app/my-nocobase-app
yarn nocobase upgrade --skip-code-update
yarn start -d
If the License authorization has changed, enter it again. Visit:
http://<intranet-server-ip>:13000/admin/settings/license-settings
Q: Intranet startup fails with "module or binary not found"?
A: Ensure Node.js version and OS architecture match between internet and intranet (e.g., both Linux x64, Node 20.x). If they differ, run yarn install again in the same environment and repackage.
Q: Path-related errors after extraction?
A: Ensure the intranet extraction path matches the internet creation path (e.g., both /app/my-nocobase-app). Use the -C option with tar -xzf to specify the same path.
Q: Database connection failed?
A: Confirm DB_HOST in .env points to a database address reachable from the intranet, and that the port and firewall rules are correct.