Biến môi trường
Cách thiết lập biến môi trường?
Cài đặt qua Git source code hoặc create-nocobase-app
Thiết lập biến môi trường trong file .env ở thư mục gốc của dự án, sau khi sửa biến môi trường cần kill tiến trình ứng dụng và khởi động lại.
Cài đặt qua Docker
Sửa cấu hình docker-compose.yml, thiết lập biến môi trường trong tham số enviroment. Ví dụ:
Cũng có thể dùng env_file, để thiết lập biến môi trường trong file .env. Ví dụ:
Sau khi sửa biến môi trường, cần build lại container app.
Biến môi trường toàn cục
TZ
Dùng để thiết lập múi giờ của ứng dụng, mặc định là múi giờ của hệ điều hành.
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Các thao tác liên quan đến thời gian sẽ xử lý dựa trên múi giờ này, sửa TZ có thể ảnh hưởng đến giá trị ngày tháng trong cơ sở dữ liệu, xem chi tiết tại "Tổng quan ngày & giờ"
APP_ENV
Môi trường ứng dụng, giá trị mặc định development, các tùy chọn bao gồm:
productionMôi trường productiondevelopmentMôi trường phát triển
APP_KEY
Khóa ứng dụng, dùng để sinh user token, v.v. Hãy đổi thành khóa ứng dụng riêng của bạn và đảm bảo không tiết lộ ra ngoài
Nếu APP_KEY bị thay đổi, các token cũ cũng sẽ mất hiệu lực
APP_PORT
Cổng ứng dụng, giá trị mặc định 13000
API_BASE_PATH
Tiền tố địa chỉ API NocoBase, giá trị mặc định /api/
API_BASE_URL
CLUSTER_MODE
v1.6.0+
Chế độ khởi động đa nhân (cluster), nếu cấu hình biến này, sẽ được truyền tới lệnh pm2 start làm tham số -i <instances>. Tùy chọn giống tham số -i của pm2 (tham khảo PM2: Cluster Mode), bao gồm:
max: dùng số lõi CPU tối đa-1: dùng số lõi CPU tối đa trừ 1<number>: chỉ định số lõi
Mặc định để trống, nghĩa là không bật.
Chế độ này cần kết hợp với các plugin liên quan đến chế độ cluster, nếu không các tính năng của ứng dụng có thể hoạt động bất thường.
Tham khảo thêm: Chế độ cluster.
PLUGIN_PACKAGE_PREFIX
Tiền tố tên package của Plugin, mặc định: @nocobase/plugin-,@nocobase/preset-.
Ví dụ, thêm Plugin hello vào dự án my-nocobase-app, tên package đầy đủ của Plugin sẽ là @my-nocobase-app/plugin-hello.
PLUGIN_PACKAGE_PREFIX có thể cấu hình thành:
Tương ứng tên Plugin và tên package như sau:
- Tên package của Plugin
userslà@nocobase/plugin-users - Tên package của Plugin
nocobaselà@nocobase/preset-nocobase - Tên package của Plugin
hellolà@my-nocobase-app/plugin-hello
DB_DIALECT
Loại cơ sở dữ liệu, các tùy chọn bao gồm:
mariadbmysqlpostgres
DB_HOST
Host cơ sở dữ liệu (cần cấu hình khi dùng MySQL hoặc PostgreSQL)
Giá trị mặc định localhost
DB_PORT
Cổng cơ sở dữ liệu (cần cấu hình khi dùng MySQL hoặc PostgreSQL)
- MySQL, MariaDB cổng mặc định 3306
- PostgreSQL cổng mặc định 5432
DB_DATABASE
Tên cơ sở dữ liệu (cần cấu hình khi dùng MySQL hoặc PostgreSQL)
DB_USER
Người dùng cơ sở dữ liệu (cần cấu hình khi dùng MySQL hoặc PostgreSQL)
DB_PASSWORD
Mật khẩu cơ sở dữ liệu (cần cấu hình khi dùng MySQL hoặc PostgreSQL)
DB_TABLE_PREFIX
Tiền tố bảng dữ liệu
DB_UNDERSCORED
Tên bảng và tên Field trong cơ sở dữ liệu có chuyển sang kiểu snake case không, mặc định là false. Nếu dùng MySQL (MariaDB), và lower_case_table_names=1, thì DB_UNDERSCORED bắt buộc phải là true
Khi DB_UNDERSCORED=true, tên bảng và tên Field thực tế trong cơ sở dữ liệu không trùng với những gì thấy trên giao diện, ví dụ orderDetails trong cơ sở dữ liệu sẽ là order_details
DB_LOGGING
Bật/tắt log cơ sở dữ liệu, giá trị mặc định off, các tùy chọn bao gồm:
onBậtoffTắt
DB_POOL_MAX
Số kết nối tối đa của connection pool cơ sở dữ liệu, giá trị mặc định 5.
DB_POOL_MIN
Số kết nối tối thiểu của connection pool cơ sở dữ liệu, giá trị mặc định 0.
DB_POOL_IDLE
Thời gian idle của connection pool cơ sở dữ liệu, giá trị mặc định 10000 (10 giây).
DB_POOL_ACQUIRE
Thời gian chờ tối đa khi lấy kết nối từ connection pool cơ sở dữ liệu, giá trị mặc định 60000 (60 giây).
DB_POOL_EVICT
Thời gian sống tối đa của kết nối trong connection pool cơ sở dữ liệu, giá trị mặc định 1000 (1 giây).
DB_POOL_MAX_USES
Số lần một kết nối có thể được sử dụng trước khi bị loại bỏ và thay thế, giá trị mặc định 0 (không giới hạn).
LOGGER_TRANSPORT
Cách xuất log, nhiều cái phân tách bằng ,. Môi trường phát triển mặc định là console, môi trường production mặc định là console,dailyRotateFile.
Các tùy chọn:
console-console.logfile-filedailyRotateFile-file rotate theo ngày
LOGGER_BASE_PATH
Đường dẫn lưu trữ log dựa trên file, mặc định là storage/logs.
LOGGER_LEVEL
Mức log xuất ra, môi trường phát triển mặc định là debug, môi trường production mặc định là info. Các tùy chọn:
errorwarninfodebugtrace
Mức xuất log cơ sở dữ liệu là debug, được kiểm soát bật/tắt bởi DB_LOGGING, không bị ảnh hưởng bởi LOGGER_LEVEL.
LOGGER_MAX_FILES
Số file log tối đa được giữ lại.
- Khi
LOGGER_TRANSPORTlàfile, giá trị mặc định là10. - Khi
LOGGER_TRANSPORTlàdailyRotateFile, dùng[n]dđể biểu thị số ngày. Giá trị mặc định là14d.
LOGGER_MAX_SIZE
Rotate log theo kích thước.
- Khi
LOGGER_TRANSPORTlàfile, đơn vị làbyte, giá trị mặc định là20971520 (20 * 1024 * 1024). - Khi
LOGGER_TRANSPORTlàdailyRotateFile, có thể dùng[n]k,[n]m,[n]g. Mặc định không cấu hình.
LOGGER_FORMAT
Format in log, môi trường phát triển mặc định console, môi trường production mặc định json. Các tùy chọn:
consolejsonlogfmtdelimiter
Tham khảo: Format log
CACHE_DEFAULT_STORE
Định danh duy nhất của cách dùng cache, chỉ định cách cache mặc định phía server, giá trị mặc định memory, các tùy chọn tích hợp sẵn:
memoryredis
CACHE_MEMORY_MAX
Số lượng item tối đa của memory cache, giá trị mặc định 2000.
CACHE_REDIS_URL
Kết nối Redis, tùy chọn. Ví dụ: redis://localhost:6379
TELEMETRY_ENABLED
Bật thu thập dữ liệu telemetry, mặc định là off.
TELEMETRY_METRIC_READER
Bộ thu thập metric đang bật, mặc định là console. Các giá trị khác cần tham khảo tên đăng ký của plugin thu thập tương ứng, ví dụ prometheus. Nhiều cái phân tách bằng ,.
TELEMETRY_TRACE_PROCESSOR
Bộ xử lý dữ liệu trace đang bật, mặc định là console. Các giá trị khác cần tham khảo tên đăng ký của plugin processor tương ứng. Nhiều cái phân tách bằng ,.
WORKER_MODE
Dùng để cấu hình chế độ làm việc của các node khác nhau khi tách dịch vụ trong chế độ cluster, xem chi tiết tại "Tách dịch vụ: Cách tách dịch vụ".
SERVER_REQUEST_WHITELIST
Whitelist mục tiêu cho các yêu cầu HTTP gửi ra ngoài từ server, dùng để chống tấn công SSRF (Server-Side Request Forgery). Phân tách bằng dấu phẩy, hỗ trợ IP chính xác, dải CIDR, tên miền chính xác và subdomain wildcard (một cấp).
Phạm vi áp dụng: Node "HTTP Request" của Workflow, "Custom Request" của nút Action tùy chỉnh. Đường dẫn tương đối (gọi API của chính NocoBase) không bị giới hạn này.
Khi không cấu hình: Tất cả yêu cầu http/https đều được cho qua (giữ hành vi cũ). Sau khi cấu hình: Chỉ cho phép các yêu cầu khớp với whitelist, các yêu cầu không khớp sẽ báo lỗi.
Các format được hỗ trợ:
Biến môi trường thử nghiệm
APPEND_PRESET_LOCAL_PLUGINS
Dùng để thêm các Plugin được preset chưa được kích hoạt, giá trị là tên package của Plugin (tham số name của package.json), nhiều Plugin phân tách bằng dấu phẩy tiếng Anh.
:::info
- Cần đảm bảo Plugin đã được tải về local, và có thể tìm thấy trong thư mục
node_modules, xem thêm tại Cách tổ chức Plugin. - Sau khi thêm biến môi trường, cần thực hiện cài đặt khởi tạo
nocobase installhoặc nâng cấpnocobase upgradethì mới hiển thị trên trang quản lý Plugin. :::
APPEND_PRESET_BUILT_IN_PLUGINS
Dùng để thêm các Plugin được preset và cài đặt mặc định, giá trị là tên package của Plugin (tham số name của package.json), nhiều Plugin phân tách bằng dấu phẩy tiếng Anh.
:::info
- Cần đảm bảo Plugin đã được tải về local, và có thể tìm thấy trong thư mục
node_modules, xem thêm tại Cách tổ chức Plugin. - Sau khi thêm biến môi trường, sẽ tự động cài đặt hoặc nâng cấp Plugin khi thực hiện cài đặt khởi tạo
nocobase installhoặc nâng cấpnocobase upgrade. :::
Biến môi trường tạm thời
Khi cài đặt NocoBase, có thể thiết lập biến môi trường tạm thời để hỗ trợ cài đặt, ví dụ:
INIT_APP_LANG
Ngôn ngữ khi cài đặt, giá trị mặc định en-US, các tùy chọn bao gồm:
en-USzh-CN
INIT_ROOT_EMAIL
Email Người dùng Root
INIT_ROOT_PASSWORD
Mật khẩu Người dùng Root
INIT_ROOT_NICKNAME
Biệt danh Người dùng Root
Biến môi trường do các Plugin khác cung cấp
WORKFLOW_SCRIPT_MODULES
Danh sách module có thể dùng cho node JavaScript của Workflow, xem chi tiết tại "Node JavaScript: Sử dụng module bên ngoài".
WORKFLOW_LOOP_LIMIT
Giới hạn số lần lặp tối đa của node loop trong Workflow, xem chi tiết tại "Node Loop".

