#Instalasi Docker
Prasyarat
- Sudah menginstal Docker dan Docker Compose
- Pastikan layanan Docker sedang berjalan
#1. Buat docker-compose.yml Baru
# Buat folder bernama my-project (bisa nama lain) untuk menyimpan file sistem yang dibuat NocoBase
mkdir my-project && cd my-project
# Buat file docker-compose.yml kosong
vi docker-compose.yml#2. Konfigurasi docker-compose.yml
Pilih versi NocoBase (Perbandingan Versi) dan tipe database, salin konfigurasi yang sesuai ke docker-compose.yml.
Penjelasan Konfigurasi
- Pemilihan Image:
latestlatest-fullbetabeta-fullalphaalpha-full1.7.141.7.14-full- Untuk lingkungan produksi disarankan menggunakan versi numerik tetap untuk menghindari upgrade otomatis yang tidak disengaja. Lihat semua versi
- Image Aliyun:
registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:latest-full - Image Docker Hub:
nocobase/nocobase:latest-full - Image full mencakup PostgreSQL 16/17 client, MySQL 8.0 client, Oracle 19.25 client yang dibutuhkan Plugin manajemen backup dan migrasi, serta LibreOffice yang dibutuhkan untuk template printing (PDF)
- Jika ingin membangun image sendiri, dapat merujuk ke Dockerfile (versi ringan) dan Dockerfile-full (versi lengkap) resmi
- Modifikasi
APP_KEY: Gantiyour-secret-keydengan string acak, digunakan untuk mengenkripsi Token pengguna dan informasi sensitif lainnya - Menggunakan Database yang Sudah Ada: Jika sudah memiliki layanan database, modifikasi
DB_HOSTke alamat server database, dan hapus atau komentari konfigurasi layanan database (seperti layananpostgres,mysql,mariadb) - Pemetaan Port: Default memetakan port 80 container ke port 13000 host, dapat dimodifikasi sesuai kebutuhan
Versi Latest
Versi Beta
Versi Alpha
PostgreSQL
MySQL
MariaDB
networks:
nocobase:
driver: bridge
services:
app:
image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:latest-full
restart: always
networks:
- nocobase
depends_on:
- postgres
environment:
# Kunci aplikasi, digunakan untuk menghasilkan Token pengguna, dll.
# Jika APP_KEY dimodifikasi, Token lama akan menjadi tidak valid
# Bisa berupa string acak apa saja, dan pastikan tidak bocor ke pihak luar
- APP_KEY=your-secret-key
# Tipe database, mendukung postgres, mysql, mariadb
- DB_DIALECT=postgres
# Host database, dapat diganti dengan IP server database yang sudah ada
- DB_HOST=postgres
# Database port
- DB_PORT=5432
# Nama database
- DB_DATABASE=nocobase
# Pengguna database
- DB_USER=nocobase
# Password database
- DB_PASSWORD=nocobase
# Zona waktu
- TZ=Asia/Shanghai
volumes:
- ./storage:/app/nocobase/storage
ports:
- '13000:80'
# init: true
# Jika menggunakan layanan database yang sudah ada, postgres tidak perlu dijalankan
postgres:
image: registry.cn-shanghai.aliyuncs.com/nocobase/postgres:16
restart: always
command: postgres -c wal_level=logical
environment:
POSTGRES_USER: nocobase
POSTGRES_DB: nocobase
POSTGRES_PASSWORD: nocobase
volumes:
- ./storage/db/postgres:/var/lib/postgresql/data
networks:
- nocobasenetworks:
nocobase:
driver: bridge
services:
app:
image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:latest-full
restart: always
networks:
- nocobase
depends_on:
- mysql
environment:
# Kunci aplikasi, digunakan untuk menghasilkan Token pengguna, dll.
# Jika APP_KEY dimodifikasi, Token lama akan menjadi tidak valid
# Bisa berupa string acak apa saja, dan pastikan tidak bocor ke pihak luar
- APP_KEY=your-secret-key
# Tipe database, mendukung postgres, mysql, mariadb
- DB_DIALECT=mysql
# Host database, dapat diganti dengan IP server database yang sudah ada
- DB_HOST=mysql
# Database port
- DB_PORT=3306
# Nama database
- DB_DATABASE=nocobase
# Pengguna database
- DB_USER=root
# Password database
- DB_PASSWORD=nocobase
# Apakah nama tabel dan field database dikonversi ke gaya snake case
- DB_UNDERSCORED=true
# Zona waktu
- TZ=Asia/Shanghai
volumes:
- ./storage:/app/nocobase/storage
ports:
- '13000:80'
# init: true
# Jika menggunakan layanan database yang sudah ada, mysql tidak perlu dijalankan
mysql:
image: registry.cn-shanghai.aliyuncs.com/nocobase/mysql:8
environment:
MYSQL_DATABASE: nocobase
MYSQL_USER: nocobase
MYSQL_PASSWORD: nocobase
MYSQL_ROOT_PASSWORD: nocobase
restart: always
volumes:
- ./storage/db/mysql:/var/lib/mysql
networks:
- nocobasenetworks:
nocobase:
driver: bridge
services:
app:
image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:latest-full
restart: always
networks:
- nocobase
depends_on:
- mariadb
environment:
# Kunci aplikasi, digunakan untuk menghasilkan Token pengguna, dll.
# Jika APP_KEY dimodifikasi, Token lama akan menjadi tidak valid
# Bisa berupa string acak apa saja, dan pastikan tidak bocor ke pihak luar
- APP_KEY=your-secret-key
# Tipe database, mendukung postgres, mysql, mariadb
- DB_DIALECT=mariadb
# Host database, dapat diganti dengan IP server database yang sudah ada
- DB_HOST=mariadb
# Database port
- DB_PORT=3306
# Nama database
- DB_DATABASE=nocobase
# Pengguna database
- DB_USER=root
# Password database
- DB_PASSWORD=nocobase
# Apakah nama tabel dan field database dikonversi ke gaya snake case
- DB_UNDERSCORED=true
# Zona waktu
- TZ=Asia/Shanghai
volumes:
- ./storage:/app/nocobase/storage
ports:
- '13000:80'
# init: true
# Jika menggunakan layanan database yang sudah ada, mariadb tidak perlu dijalankan
mariadb:
image: registry.cn-shanghai.aliyuncs.com/nocobase/mariadb:11
environment:
MYSQL_DATABASE: nocobase
MYSQL_USER: nocobase
MYSQL_PASSWORD: nocobase
MYSQL_ROOT_PASSWORD: nocobase
restart: always
volumes:
- ./storage/db/mariadb:/var/lib/mysql
networks:
- nocobasePostgreSQL
MySQL
MariaDB
networks:
nocobase:
driver: bridge
services:
app:
image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:beta-full
restart: always
networks:
- nocobase
depends_on:
- postgres
environment:
# Kunci aplikasi, digunakan untuk menghasilkan Token pengguna, dll.
# Jika APP_KEY dimodifikasi, Token lama akan menjadi tidak valid
# Bisa berupa string acak apa saja, dan pastikan tidak bocor ke pihak luar
- APP_KEY=your-secret-key
# Tipe database, mendukung postgres, mysql, mariadb
- DB_DIALECT=postgres
# Host database, dapat diganti dengan IP server database yang sudah ada
- DB_HOST=postgres
# Database port
- DB_PORT=5432
# Nama database
- DB_DATABASE=nocobase
# Pengguna database
- DB_USER=nocobase
# Password database
- DB_PASSWORD=nocobase
# Zona waktu
- TZ=Asia/Shanghai
volumes:
- ./storage:/app/nocobase/storage
ports:
- '13000:80'
# init: true
# Jika menggunakan layanan database yang sudah ada, postgres tidak perlu dijalankan
postgres:
image: registry.cn-shanghai.aliyuncs.com/nocobase/postgres:16
restart: always
command: postgres -c wal_level=logical
environment:
POSTGRES_USER: nocobase
POSTGRES_DB: nocobase
POSTGRES_PASSWORD: nocobase
volumes:
- ./storage/db/postgres:/var/lib/postgresql/data
networks:
- nocobasenetworks:
nocobase:
driver: bridge
services:
app:
image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:beta-full
restart: always
networks:
- nocobase
depends_on:
- mysql
environment:
# Kunci aplikasi, digunakan untuk menghasilkan Token pengguna, dll.
# Jika APP_KEY dimodifikasi, Token lama akan menjadi tidak valid
# Bisa berupa string acak apa saja, dan pastikan tidak bocor ke pihak luar
- APP_KEY=your-secret-key
# Tipe database, mendukung postgres, mysql, mariadb
- DB_DIALECT=mysql
# Host database, dapat diganti dengan IP server database yang sudah ada
- DB_HOST=mysql
# Database port
- DB_PORT=3306
# Nama database
- DB_DATABASE=nocobase
# Pengguna database
- DB_USER=root
# Password database
- DB_PASSWORD=nocobase
# Apakah nama tabel dan field database dikonversi ke gaya snake case
- DB_UNDERSCORED=true
# Zona waktu
- TZ=Asia/Shanghai
volumes:
- ./storage:/app/nocobase/storage
ports:
- '13000:80'
# init: true
# Jika menggunakan layanan database yang sudah ada, mysql tidak perlu dijalankan
mysql:
image: registry.cn-shanghai.aliyuncs.com/nocobase/mysql:8
environment:
MYSQL_DATABASE: nocobase
MYSQL_USER: nocobase
MYSQL_PASSWORD: nocobase
MYSQL_ROOT_PASSWORD: nocobase
restart: always
volumes:
- ./storage/db/mysql:/var/lib/mysql
networks:
- nocobasenetworks:
nocobase:
driver: bridge
services:
app:
image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:beta-full
restart: always
networks:
- nocobase
depends_on:
- mariadb
environment:
# Kunci aplikasi, digunakan untuk menghasilkan Token pengguna, dll.
# Jika APP_KEY dimodifikasi, Token lama akan menjadi tidak valid
# Bisa berupa string acak apa saja, dan pastikan tidak bocor ke pihak luar
- APP_KEY=your-secret-key
# Tipe database, mendukung postgres, mysql, mariadb
- DB_DIALECT=mariadb
# Host database, dapat diganti dengan IP server database yang sudah ada
- DB_HOST=mariadb
# Database port
- DB_PORT=3306
# Nama database
- DB_DATABASE=nocobase
# Pengguna database
- DB_USER=root
# Password database
- DB_PASSWORD=nocobase
# Apakah nama tabel dan field database dikonversi ke gaya snake case
- DB_UNDERSCORED=true
# Zona waktu
- TZ=Asia/Shanghai
volumes:
- ./storage:/app/nocobase/storage
ports:
- '13000:80'
# init: true
# Jika menggunakan layanan database yang sudah ada, mariadb tidak perlu dijalankan
mariadb:
image: registry.cn-shanghai.aliyuncs.com/nocobase/mariadb:11
environment:
MYSQL_DATABASE: nocobase
MYSQL_USER: nocobase
MYSQL_PASSWORD: nocobase
MYSQL_ROOT_PASSWORD: nocobase
restart: always
volumes:
- ./storage/db/mariadb:/var/lib/mysql
networks:
- nocobasePostgreSQL
MySQL
MariaDB
networks:
nocobase:
driver: bridge
services:
app:
image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:alpha-full
restart: always
networks:
- nocobase
depends_on:
- postgres
environment:
# Kunci aplikasi, digunakan untuk menghasilkan Token pengguna, dll.
# Jika APP_KEY dimodifikasi, Token lama akan menjadi tidak valid
# Bisa berupa string acak apa saja, dan pastikan tidak bocor ke pihak luar
- APP_KEY=your-secret-key
# Tipe database, mendukung postgres, mysql, mariadb
- DB_DIALECT=postgres
# Host database, dapat diganti dengan IP server database yang sudah ada
- DB_HOST=postgres
# Database port
- DB_PORT=5432
# Nama database
- DB_DATABASE=nocobase
# Pengguna database
- DB_USER=nocobase
# Password database
- DB_PASSWORD=nocobase
# Zona waktu
- TZ=Asia/Shanghai
volumes:
- ./storage:/app/nocobase/storage
ports:
- '13000:80'
# init: true
# Jika menggunakan layanan database yang sudah ada, postgres tidak perlu dijalankan
postgres:
image: registry.cn-shanghai.aliyuncs.com/nocobase/postgres:16
restart: always
command: postgres -c wal_level=logical
environment:
POSTGRES_USER: nocobase
POSTGRES_DB: nocobase
POSTGRES_PASSWORD: nocobase
volumes:
- ./storage/db/postgres:/var/lib/postgresql/data
networks:
- nocobasenetworks:
nocobase:
driver: bridge
services:
app:
image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:alpha-full
restart: always
networks:
- nocobase
depends_on:
- mysql
environment:
# Kunci aplikasi, digunakan untuk menghasilkan Token pengguna, dll.
# Jika APP_KEY dimodifikasi, Token lama akan menjadi tidak valid
# Bisa berupa string acak apa saja, dan pastikan tidak bocor ke pihak luar
- APP_KEY=your-secret-key
# Tipe database, mendukung postgres, mysql, mariadb
- DB_DIALECT=mysql
# Host database, dapat diganti dengan IP server database yang sudah ada
- DB_HOST=mysql
# Database port
- DB_PORT=3306
# Nama database
- DB_DATABASE=nocobase
# Pengguna database
- DB_USER=root
# Password database
- DB_PASSWORD=nocobase
# Apakah nama tabel dan field database dikonversi ke gaya snake case
- DB_UNDERSCORED=true
# Zona waktu
- TZ=Asia/Shanghai
volumes:
- ./storage:/app/nocobase/storage
ports:
- '13000:80'
# init: true
# Jika menggunakan layanan database yang sudah ada, mysql tidak perlu dijalankan
mysql:
image: registry.cn-shanghai.aliyuncs.com/nocobase/mysql:8
environment:
MYSQL_DATABASE: nocobase
MYSQL_USER: nocobase
MYSQL_PASSWORD: nocobase
MYSQL_ROOT_PASSWORD: nocobase
restart: always
volumes:
- ./storage/db/mysql:/var/lib/mysql
networks:
- nocobasenetworks:
nocobase:
driver: bridge
services:
app:
image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:alpha-full
restart: always
networks:
- nocobase
depends_on:
- mariadb
environment:
# Kunci aplikasi, digunakan untuk menghasilkan Token pengguna, dll.
# Jika APP_KEY dimodifikasi, Token lama akan menjadi tidak valid
# Bisa berupa string acak apa saja, dan pastikan tidak bocor ke pihak luar
- APP_KEY=your-secret-key
# Tipe database, mendukung postgres, mysql, mariadb
- DB_DIALECT=mariadb
# Host database, dapat diganti dengan IP server database yang sudah ada
- DB_HOST=mariadb
# Database port
- DB_PORT=3306
# Nama database
- DB_DATABASE=nocobase
# Pengguna database
- DB_USER=root
# Password database
- DB_PASSWORD=nocobase
# Apakah nama tabel dan field database dikonversi ke gaya snake case
- DB_UNDERSCORED=true
# Zona waktu
- TZ=Asia/Shanghai
volumes:
- ./storage:/app/nocobase/storage
ports:
- '13000:80'
# init: true
# Jika menggunakan layanan database yang sudah ada, mariadb tidak perlu dijalankan
mariadb:
image: registry.cn-shanghai.aliyuncs.com/nocobase/mariadb:11
environment:
MYSQL_DATABASE: nocobase
MYSQL_USER: nocobase
MYSQL_PASSWORD: nocobase
MYSQL_ROOT_PASSWORD: nocobase
restart: always
volumes:
- ./storage/db/mariadb:/var/lib/mysql
networks:
- nocobase#3. Instal dan Jalankan NocoBase
# Tarik image terbaru
docker compose pull
# Jalankan di background (saat pertama kali dijalankan, instalasi akan dilakukan otomatis)
docker compose up -d
# Lihat log instalasi dan runtime
docker compose logs -f app
app-postgres-app-1 | nginx started
app-postgres-app-1 | yarn run v1.22.15
app-postgres-app-1 | $ cross-env DOTENV_CONFIG_PATH=.env node -r dotenv/config packages/app/server/lib/index.js install -s
app-postgres-app-1 | Done in 2.72s.
app-postgres-app-1 | yarn run v1.22.15
app-postgres-app-1 | $ pm2-runtime start --node-args="-r dotenv/config" packages/app/server/lib/index.js -- start
app-postgres-app-1 | 2022-04-28T15:45:38: PM2 log: Launching in no daemon mode
app-postgres-app-1 | 2022-04-28T15:45:38: PM2 log: App [index:0] starting in -fork mode-
app-postgres-app-1 | 2022-04-28T15:45:38: PM2 log: App [index:0] online
app-postgres-app-1 | 🚀 NocoBase server running at: http://localhost:13000/#4. Login ke NocoBase
Buka http://localhost:13000 di browser, akun dan password awal adalah admin@nocobase.com dan admin123.
Tips Keamanan Akun
Setelah login pertama kali, segera ubah password default untuk memastikan keamanan sistem.

