---
title: "Hướng dẫn triển khai NocoBase trên Cloud Server từ A-Z"
description: "Hướng dẫn triển khai NocoBase trên Cloud Server bằng Docker từ A-Z: chuẩn bị máy chủ, cài đặt NocoBase, cấu hình domain, HTTPS và bảo mật."
url: https://cloudfly.vn/docs/huong-dan-trien-khai-nocobase-tren-cloud-server-tu-a-z
image: https://media.cloudfly.vn/posts/800x550---thumbnail_7dCZU7P.png
---

# Hướng dẫn triển khai NocoBase trên Cloud Server từ A-Z

![description image](https://media.cloudfly.vn/posts/800x550---thumbnail_7dCZU7P.png)
## NocoBase là gì?

NocoBase là nền tảng **no-code/low-code mã nguồn mở**, cho phép xây dựng các ứng dụng quản lý và hệ thống nội bộ mà không cần phát triển toàn bộ từ đầu.

Một ưu điểm của NocoBase là khả năng **self-host**. Doanh nghiệp có thể triển khai NocoBase trên máy chủ riêng thay vì phụ thuộc hoàn toàn vào một nền tảng SaaS.

Trong bài viết này, CloudFly sẽ hướng dẫn **cách triển khai NocoBase trên Cloud Server bằng Docker**, từ bước chuẩn bị máy chủ đến cấu hình domain, HTTPS và một số lưu ý khi vận hành thực tế.

## Hướng dẫn triển khai NocoBase trên Cloud Server

## Phần 1: Chuẩn bị Cloud Server

### Bước 1: Chuẩn bị Cloud Server

[Cloud Server](https://) cần:

- Hệ điều hành Linux 64-bit (khuyến nghị Ubuntu LTS hoặc Debian)
- Quyền `root` hoặc `sudo`
- Public IPv4
- Có thể mở port `13000` trong giai đoạn kiểm tra

Cấu hình phần cứng theo khuyến nghị của NocoBase (chỉ tính riêng ứng dụng NocoBase):

| Mức | CPU | RAM | Phù hợp |
| --- | --- | --- | --- |
| Tối thiểu | 1 core | 2 GB | Dùng thử, POC, môi trường test |
| Khuyến nghị | 2 core | ≥ 4 GB | Production quy mô nhỏ và vừa |


Trong bài này, PostgreSQL chạy chung trên cùng Cloud Server với NocoBase, vì vậy nên chọn cấu hình **cao hơn mức khuyến nghị** (ví dụ 2 core / 4–8 GB RAM) để hệ thống vận hành ổn định.

### Bước 2: SSH vào Cloud Server

```bash
ssh root@YOUR_SERVER_IP
```

Kiểm tra user:

```bash
whoami
```

Kết quả mong đợi:

```text
root
```

Kiểm tra CPU:

```bash
nproc
```

Kiểm tra RAM:

```bash
free -h
```

Kiểm tra disk:

```bash
df -h
```

Nếu thông tin trả về đúng với cấu hình đã chọn, chuyển sang bước tiếp theo.

## Phần 2: Cài Docker và chuẩn bị NocoBase

### Bước 3: Cài Docker

Cập nhật hệ thống:

```bash
apt update && apt upgrade -y
```

Cài Docker Engine và Docker Compose plugin bằng script chính thức của Docker:

```bash
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
```

> Nếu muốn kiểm soát chi tiết hơn, bạn có thể cài theo hướng dẫn cài qua kho apt chính thức của Docker tại docs.docker.com, tương ứng với phiên bản Ubuntu/Debian đang chạy.

Sau khi cài xong, kiểm tra:

```bash
docker --version
```

```bash
docker compose version
```

Kiểm tra trạng thái Docker:

```bash
systemctl status docker
```

Nếu Docker chưa chạy, khởi động và bật tự chạy cùng hệ thống:

```bash
systemctl enable --now docker
```

### Bước 4: Tạo thư mục NocoBase

```bash
mkdir -p /opt/nocobase
cd /opt/nocobase
```

Kiểm tra:

```bash
pwd
```

Kết quả:

```text
/opt/nocobase
```

### Bước 5: Tạo file `docker-compose.yml`

Tạo file:

```bash
nano docker-compose.yml
```

Sử dụng cấu hình Docker Compose với NocoBase và PostgreSQL:

```yaml
networks:
  nocobase:
    driver: bridge

services:
  app:
    image: nocobase/nocobase:latest-full
    restart: always
    networks:
      - nocobase
    depends_on:
      - postgres
    environment:
      - APP_KEY=YOUR_RANDOM_SECRET_KEY
      - DB_DIALECT=postgres
      - DB_HOST=postgres
      - DB_PORT=5432
      - DB_DATABASE=nocobase
      - DB_USER=nocobase
      - DB_PASSWORD=YOUR_STRONG_DB_PASSWORD
      - TZ=Asia/Ho_Chi_Minh
    volumes:
      - ./storage:/app/nocobase/storage
    ports:
      - "13000:80"

  postgres:
    image: postgres:16
    restart: always
    command: postgres -c wal_level=logical
    environment:
      POSTGRES_USER: nocobase
      POSTGRES_DB: nocobase
      POSTGRES_PASSWORD: YOUR_STRONG_DB_PASSWORD
    volumes:
      - ./storage/db/postgres:/var/lib/postgresql/data
    networks:
      - nocobase
```

### Giải thích cấu hình

**NocoBase:**

```yaml
image: nocobase/nocobase:latest-full
```

Image `full` có sẵn client PostgreSQL/MySQL/Oracle phục vụ plugin sao lưu và di chuyển dữ liệu, cùng LibreOffice phục vụ in mẫu PDF.

> Với production, nên **pin một version cụ thể** (ví dụ `nocobase/nocobase:<VERSION>-full`) thay vì dùng `latest` để tránh bị nâng cấp ngoài ý muốn. Danh sách version xem tại Docker Hub: `nocobase/nocobase`.

**APP_KEY:**

```yaml
APP_KEY=YOUR_RANDOM_SECRET_KEY
```

Tạo key ngẫu nhiên:

```bash
openssl rand -hex 32
```

Sau đó thay `YOUR_RANDOM_SECRET_KEY` bằng kết quả nhận được.

> APP_KEY dùng để mã hóa token người dùng và các thông tin nhạy cảm. **Nếu đổi APP_KEY, toàn bộ token cũ sẽ mất hiệu lực.** Hãy tạo một lần, lưu lại ở nơi an toàn cùng với bản backup và không để lộ ra ngoài.

**Database:**

NocoBase kết nối PostgreSQL thông qua tên service:

```text
postgres
```

Do đó:

```yaml
DB_HOST=postgres
```

Mật khẩu PostgreSQL phải giống nhau ở:

```yaml
DB_PASSWORD=YOUR_STRONG_DB_PASSWORD
```

và:

```yaml
POSTGRES_PASSWORD: YOUR_STRONG_DB_PASSWORD
```

Không sử dụng mật khẩu đơn giản trong production.

### Bước 6: Kiểm tra Docker Compose

Sau khi lưu file:

```bash
docker compose config
```

Nếu không có lỗi cấu hình, chuyển sang bước tiếp theo.

## Phần 3: Khởi chạy NocoBase

### Bước 7: Tải Docker image

```bash
docker compose pull
```

Docker sẽ tải các image được khai báo trong `docker-compose.yml`.

### Bước 8: Khởi chạy NocoBase

```bash
docker compose up -d
```

Ở lần chạy đầu tiên, NocoBase sẽ **tự động cài đặt** database và dữ liệu hệ thống.

Kiểm tra:

```bash
docker compose ps
```

Bạn cần thấy các service chính:

```text
app
postgres
```

đang ở trạng thái chạy.

### Bước 9: Kiểm tra log NocoBase

```bash
docker compose logs -f app
```

Khi thấy dòng tương tự dưới đây là NocoBase đã khởi động xong:

```text
🚀 NocoBase server running at: http://localhost:13000/
```

Nếu cần kiểm tra PostgreSQL:

```bash
docker compose logs -f postgres
```

Thoát log bằng:

```text
Ctrl + C
```

Container vẫn tiếp tục chạy sau khi thoát log, đây là hành vi bình thường.

## Phần 4: Truy cập NocoBase

### Bước 10: Kiểm tra port 13000

Docker Compose đang mapping:

```text
Cloud Server port 13000
        ↓
NocoBase container port 80
```

> **Lưu ý quan trọng về firewall:** Docker tự thêm rule iptables cho các port được publish, vì vậy port `13000` sẽ truy cập được từ Internet **kể cả khi UFW không cho phép**. Không cần chạy `ufw allow 13000`, và cũng **không thể dùng UFW để chặn port này**. Cách đóng port 13000 đúng là bind nó về `127.0.0.1` (xem Bước 15).

Nếu Cloud Server có tường lửa ở tầng hạ tầng (Security Group / Firewall trên trang quản trị), hãy đảm bảo port `13000` được mở trong giai đoạn kiểm tra.

### Bước 11: Truy cập và đăng nhập NocoBase

Mở trình duyệt:

```text
http://YOUR_SERVER_IP:13000
```

NocoBase sẽ hiển thị màn hình đăng nhập. Đăng nhập bằng tài khoản quản trị mặc định:

```text
Email:    admin@nocobase.com
Mật khẩu: admin123
```

Sau khi đăng nhập:

1. **Đổi mật khẩu tài khoản admin ngay lập tức** (nhấn vào avatar góc trên bên phải → Đổi mật khẩu).
2. Cập nhật email và thông tin cá nhân của tài khoản quản trị.
3. Kiểm tra giao diện quản trị.

> Không đổi mật khẩu mặc định là rủi ro bảo mật nghiêm trọng, vì bất kỳ ai truy cập được port 13000 đều có thể đăng nhập với quyền quản trị.

Đến đây, NocoBase đã được triển khai thành công trên Cloud Server.

## Phần 5: Domain và HTTPS

### Bước 12: Trỏ domain

Ví dụ sử dụng:

```text
nocobase.example.com
```

Tạo DNS record:

```text
Type: A
Name: nocobase
Value: YOUR_SERVER_IP
```

Sau khi DNS cập nhật, domain sẽ trỏ về Cloud Server. Kiểm tra bằng:

```bash
ping nocobase.example.com
```

### Bước 13: Cài và cấu hình Nginx

```bash
apt update
apt install nginx -y
```

Nếu Cloud Server có bật UFW, mở port SSH, HTTP và HTTPS (**phải cho phép SSH trước khi bật UFW** để không bị mất kết nối):

```bash
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable
ufw status
```

Nếu có Security Group / Firewall ở tầng hạ tầng, cũng cần mở port `80` và `443`.

Tạo file cấu hình:

```bash
nano /etc/nginx/sites-available/nocobase
```

Thêm:

```nginx
server {
    listen 80;
    server_name nocobase.example.com;

    # Cho phép upload file lớn (mặc định Nginx chỉ cho 1 MB)
    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:13000;
        proxy_http_version 1.1;

        # Hỗ trợ WebSocket (NocoBase dùng /ws)
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        send_timeout 600;
        proxy_buffering off;
    }
}
```

Thay `nocobase.example.com` bằng domain thực tế. Có thể điều chỉnh `client_max_body_size` theo dung lượng file tối đa bạn muốn cho phép upload.

Kích hoạt cấu hình:

```bash
ln -s /etc/nginx/sites-available/nocobase /etc/nginx/sites-enabled/
```

Kiểm tra:

```bash
nginx -t
```

Nếu kết quả:

```text
syntax is ok
test is successful
```

reload Nginx:

```bash
systemctl reload nginx
```

Truy cập:

```text
http://nocobase.example.com
```

### Bước 14: Cấu hình HTTPS

Cài Certbot:

```bash
apt install certbot python3-certbot-nginx -y
```

Chạy:

```bash
certbot --nginx -d nocobase.example.com
```

Certbot sẽ tự cấp chứng chỉ Let's Encrypt, cập nhật cấu hình Nginx và thiết lập gia hạn tự động. Kiểm tra gia hạn:

```bash
certbot renew --dry-run
```

Sau khi hoàn tất:

```text
https://nocobase.example.com
```

là địa chỉ truy cập NocoBase.

### Bước 15: Đóng port 13000 ra Internet

Sau khi truy cập được qua HTTPS, không nên để port `13000` public nữa. Mở lại file compose:

```bash
cd /opt/nocobase
nano docker-compose.yml
```

Sửa phần `ports` của service `app` thành:

```yaml
    ports:
      - "127.0.0.1:13000:80"
```

Áp dụng thay đổi:

```bash
docker compose up -d
```

Lúc này port `13000` chỉ truy cập được từ chính Cloud Server (qua Nginx). Kiểm tra từ máy tính cá nhân, địa chỉ `http://YOUR_SERVER_IP:13000` sẽ không còn truy cập được, trong khi `https://nocobase.example.com` vẫn hoạt động bình thường.

## Phần 6: Kiểm tra và vận hành Production

### Bước 16: Kiểm tra container

```bash
docker compose ps
```

### Bước 17: Kiểm tra log

```bash
docker compose logs --tail=100 app
```

### Bước 18: Kiểm tra tài nguyên

Tài nguyên sử dụng của từng container:

```bash
docker stats --no-stream
```

RAM:

```bash
free -h
```

Disk:

```bash
df -h
```

Cấu hình Nginx:

```bash
nginx -t
```

## Phần 7: Các lệnh Docker thường dùng

Chạy các lệnh sau trong thư mục `/opt/nocobase`.

### Khởi động

```bash
docker compose up -d
```

### Dừng

```bash
docker compose down
```

> Dữ liệu nằm trong thư mục `./storage` nên không bị mất khi chạy `docker compose down`.

### Restart

```bash
docker compose restart
```

### Xem container

```bash
docker compose ps
```

### Xem log

```bash
docker compose logs -f app
```

### Xem 100 dòng log gần nhất

```bash
docker compose logs --tail=100 app
```

## Phần 8: Backup NocoBase

NocoBase storage (file upload, plugin, cấu hình) được mount tại:

```text
./storage:/app/nocobase/storage
```

Dữ liệu PostgreSQL được lưu tại:

```text
./storage/db/postgres:/var/lib/postgresql/data
```

> **Không sao chép trực tiếp thư mục `./storage/db/postgres` khi database đang chạy.** Bản sao chép lúc này có thể không nhất quán và không restore được. Hãy dùng `pg_dump` như hướng dẫn dưới đây.

### Backup database

```bash
cd /opt/nocobase
mkdir -p backups
docker compose exec -T postgres pg_dump -U nocobase -d nocobase -Fc > backups/nocobase_db_$(date +%F).dump
```

### Backup storage và file cấu hình

```bash
tar --exclude=./storage/db -czf backups/nocobase_storage_$(date +%F).tar.gz ./storage docker-compose.yml
```

Nên backup định kỳ:

- PostgreSQL database (file `.dump`)
- Thư mục storage (file upload, plugin)
- `docker-compose.yml` và APP_KEY
- Cấu hình Nginx trong `/etc/nginx/sites-available/nocobase`

Ngoài cách dùng lệnh, bạn có thể dùng plugin **Backup Manager** của NocoBase (image `full` đã có sẵn các client database cần thiết).

**Không nên chỉ lưu backup trên cùng Cloud Server production.** Nên lưu một bản ở hệ thống lưu trữ độc lập (ví dụ Object Storage) và kiểm tra khả năng restore định kỳ.

## Phần 9: Cập nhật NocoBase

Không nên update production một cách tùy tiện.

Thay vì:

```yaml
image: nocobase/nocobase:latest-full
```

nên sử dụng version cụ thể:

```yaml
image: nocobase/nocobase:<VERSION>-full
```

Quy trình nên là:

1. Backup database (Phần 8).
2. Backup storage (Phần 8).
3. Kiểm tra release notes của version mới.
4. Test trên staging nếu có.
5. Sửa tag image trong `docker-compose.yml` sang version mới.
6. Pull image mới.
7. Khởi động lại container.
8. Kiểm tra log.
9. Kiểm tra chức năng.

Lệnh cho bước 6–8:

```bash
cd /opt/nocobase
docker compose pull
docker compose up -d
docker compose logs -f app
```

> Nếu đã pin version cụ thể, `docker compose pull` sẽ **không** tự tải bản mới. Bạn phải sửa tag trong `docker-compose.yml` trước (bước 5).

## Câu hỏi thường gặp về NocoBase

### NocoBase có thể triển khai trên Cloud Server không?

Có. NocoBase hỗ trợ mô hình self-hosted và có thể triển khai trên Cloud Server với môi trường phù hợp.

### Có thể cài NocoBase bằng Docker không?

Có. Docker là phương thức cài đặt được NocoBase khuyến nghị, giúp triển khai và quản lý các thành phần của ứng dụng dễ dàng.

### Nên chọn Cloud Server bao nhiêu RAM để chạy NocoBase?

Theo NocoBase, riêng ứng dụng cần tối thiểu 1 core / 2 GB RAM (dùng thử, test) và khuyến nghị 2 core / từ 4 GB RAM cho production quy mô nhỏ và vừa. Nếu chạy PostgreSQL trên cùng máy chủ, nên chọn cấu hình cao hơn và tăng dần theo số lượng người dùng, dữ liệu và plugin thực tế.

### Tài khoản đăng nhập mặc định của NocoBase là gì?

Tài khoản mặc định là `admin@nocobase.com` / `admin123`. Hãy đổi mật khẩu ngay sau lần đăng nhập đầu tiên.

### Có thể sử dụng domain riêng cho NocoBase không?

Có. Bạn có thể trỏ domain hoặc subdomain về Cloud Server, sau đó sử dụng Nginx làm reverse proxy và cấu hình HTTPS để truy cập NocoBase an toàn hơn.

### Có cần backup NocoBase không?

Có. Nên backup database (bằng `pg_dump` hoặc plugin Backup Manager), thư mục storage và các cấu hình quan trọng. Backup nên được lưu ở vị trí độc lập với máy chủ production.

### NocoBase phù hợp với doanh nghiệp nào?

NocoBase có thể được sử dụng để xây dựng CRM, hệ thống quản lý đơn hàng, workflow, dashboard và nhiều ứng dụng nội bộ khác. Mức độ phù hợp phụ thuộc vào yêu cầu và quy mô của từng doanh nghiệp.

## Kết luận

**Triển khai NocoBase trên Cloud Server** là một lựa chọn phù hợp cho developer, startup và doanh nghiệp muốn xây dựng ứng dụng nội bộ theo hướng no-code/low-code nhưng vẫn chủ động về hạ tầng và dữ liệu.

CLOUDFLY tự hào là đơn vị tiên phong tại Việt Nam cung cấp dịch vụ Cloud Server và Cloud Hosting tùy chỉnh cấu hình. Chúng tôi nhận được sự tin tưởng và hợp tác với hơn 50.000 khách hàng trong và ngoài nước. Sẵn sàng đồng hành và đem lại những giải pháp tối ưu nhất cho bạn.

Nếu quý khách hàng cần hỗ trợ bất cứ vấn đề gì liên quan đến chương trình ưu đãi, hãy liên hệ theo thông tin bên dưới.

**CloudFly - Đơn giản hóa ứng dụng trên đám mây**

**HOTLINE:** 0904.558.448

**WEBSITE:** https://cloudfly.vn/

**FACEBOOK:** https://www.facebook.com/cloudfly.vn

**ZALO GROUPS SĂN DEAL:** https://zalo.me/g/kdyf4yjbtxsiifsdzzvz
