Hướng dẫn chi tiết cài đặt NocoDB với Docker trên Ubuntu
NocoDB là một công cụ mã nguồn mở tuyệt vời, cho phép bạn quản lý cơ sở dữ liệu thông qua giao diện trực quan, thân thiện như bảng tính. Nếu bạn đang tìm kiếm một giải pháp nhẹ nhàng, dễ triển khai để thay thế các công cụ như Airtable hay Notion, thì NocoDB là lựa chọn đáng cân nhắc. Trong bài viết này, mình sẽ chia sẻ kinh nghiệm cá nhân về cách cài đặt NocoDB với Docker Compose trên Ubuntu một cách chi tiết, từ việc chuẩn bị môi trường đến kiểm tra hệ thống sau khi hoàn tất. Với hướng dẫn này, bạn sẽ có một instance NocoDB hoạt động mượt mà chỉ trong vài bước.
Chuẩn bị môi trường cài đặt NocoDB trên Ubuntu
Trước khi bắt tay vào cài đặt, việc chuẩn bị môi trường là bước không thể bỏ qua. Dựa trên kinh nghiệm triển khai nhiều dự án với Docker, mình nhận thấy rằng một môi trường được chuẩn bị kỹ lưỡng sẽ giúp bạn tránh được những lỗi không đáng có trong quá trình cài đặt.
Yêu cầu phần cứng và phần mềm
Để đảm bảo NocoDB hoạt động ổn định, bạn cần một máy chủ hoặc máy tính đáp ứng các điều kiện tối thiểu sau:
- Hệ điều hành: Ubuntu 20.04 hoặc 22.04 (bài viết này sử dụng Ubuntu 22.04).
- RAM: Tối thiểu 2GB, khuyến nghị 4GB để đảm bảo hiệu suất.
- CPU: 1 CPU là đủ cho môi trường thử nghiệm, nhưng 2 CPU trở lên sẽ tốt hơn cho sản xuất.
- Ổ cứng: Ít nhất 20GB dung lượng trống để lưu trữ dữ liệu và container.
- Phần mềm cần cài trước:
- Docker Engine (phiên bản mới nhất).
- Docker Compose (khuyến nghị phiên bản v1 để tương thích tốt hơn với tài liệu NocoDB).
Cài đặt Docker và Docker Compose
Nếu bạn chưa cài đặt Docker và Docker Compose, hãy làm theo các bước sau. Mình đã từng gặp một số lỗi nhỏ khi cài đặt Docker trên các phiên bản Ubuntu khác nhau, vì vậy hãy đảm bảo bạn thực hiện đúng từng bước.
1. Cập nhật hệ thống:
sudo apt update && sudo apt upgrade -y
2. Cài đặt Docker: Thêm kho lưu trữ chính thức của Docker và cài đặt Docker Engine:
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
3. Kiểm tra Docker: Chạy lệnh sau để đảm bảo Docker đã được cài đặt đúng:
sudo systemctl status docker
Nếu Docker đang hoạt động, bạn sẽ thấy trạng thái active (running)
.
4. Cài đặt Docker Compose: Tải phiên bản mới nhất của Docker Compose từ GitHub:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
5. Kiểm tra Docker Compose:
docker-compose --version
Bạn sẽ thấy thông tin phiên bản, ví dụ: Docker Compose version v2.20.0
.
Thêm người dùng vào nhóm Docker
Để tránh phải sử dụng sudo
mỗi khi chạy lệnh Docker, hãy thêm người dùng hiện tại vào nhóm docker
:
sudo usermod -aG docker $USER
Sau đó, đăng xuất và đăng nhập lại để áp dụng thay đổi.
Tạo file Docker Compose cho NocoDB
Docker Compose giúp bạn quản lý nhiều container một cách dễ dàng thông qua một file cấu hình YAML duy nhất. Với NocoDB, chúng ta sẽ thiết lập một container cho NocoDB và một container cho cơ sở dữ liệu (nếu bạn muốn sử dụng cơ sở dữ liệu bên ngoài như PostgreSQL hoặc MySQL).
Cấu trúc file Docker Compose
Dưới đây là một file docker-compose.yml
mẫu mà mình thường sử dụng để triển khai NocoDB với cơ sở dữ liệu SQLite (mặc định của NocoDB). SQLite phù hợp cho các dự án nhỏ hoặc môi trường thử nghiệm vì nó không yêu cầu container cơ sở dữ liệu riêng.
version: '3.8'
services:
nocodb:
image: nocodb/nocodb:latest
container_name: nocodb
ports:
- "8080:8080"
volumes:
- nocodb_data:/usr/app/data
environment:
- NC_AUTH_JWT_SECRET=your_jwt_secret_here
restart: unless-stopped
volumes:
nocodb_data:
Giải thích các thành phần
- image: Sử dụng image chính thức
nocodb/nocodb:latest
từ Docker Hub. - ports: Ánh xạ cổng 8080 trên host với cổng 8080 của container.
- volumes: Lưu trữ dữ liệu NocoDB trong một volume để đảm bảo dữ liệu không bị mất khi container dừng.
- environment: Thiết lập biến
NC_AUTH_JWT_SECRET
để bảo mật JWT (thayyour_jwt_secret_here
bằng một chuỗi ngẫu nhiên dài). - restart: Đảm bảo container tự động khởi động lại trừ khi bị dừng thủ công.
Sử dụng cơ sở dữ liệu bên ngoài (tùy chọn)
Nếu bạn muốn sử dụng PostgreSQL thay vì SQLite, hãy thêm một dịch vụ cơ sở dữ liệu vào file docker-compose.yml
. Dưới đây là ví dụ:
version: '3.8'
services:
nocodb:
image: nocodb/nocodb:latest
container_name: nocodb
ports:
- "8080:8080"
volumes:
- nocodb_data:/usr/app/data
environment:
- NC_DB=pg://db:5432?u=nocodb&p=password&d=nocodb
- NC_AUTH_JWT_SECRET=your_jwt_secret_here
depends_on:
- db
restart: unless-stopped
db:
image: postgres:14
container_name: nocodb_postgres
environment:
- POSTGRES_USER=nocodb
- POSTGRES_PASSWORD=password
- POSTGRES_DB=nocodb
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
nocodb_data:
postgres_data:
Trong cấu hình này:
- Một container PostgreSQL (
db
) được thêm vào. - Biến
NC_DB
định dạng chuỗi kết nối:pg://<host>:<port>?u=<user>&p=<password>&d=<database>
. - Volume
postgres_data
lưu trữ dữ liệu cơ sở dữ liệu.
Triển khai NocoDB với Docker Compose
Sau khi đã chuẩn bị file docker-compose.yml
, bạn chỉ cần vài lệnh đơn giản để triển khai NocoDB.
Các bước triển khai
- Tạo thư mục dự án:
mkdir nocodb && cd nocodb
- Tạo file Docker Compose:
Sử dụng trình soạn thảo nhưnano
để tạo filedocker-compose.yml
:nano docker-compose.yml
Dán nội dung file YAML từ phần trước, sau đó lưu và thoát (Ctrl+O
,Enter
,Ctrl+X
). - Khởi động các container:
docker-compose up -d
Lệnh này sẽ tải image NocoDB (và PostgreSQL nếu sử dụng), tạo container và chạy chúng ở chế độ nền (-d
). - Kiểm tra trạng thái container:
docker ps
Bạn sẽ thấy containernocodb
(vànocodb_postgres
nếu dùng PostgreSQL) ở trạng tháiUp
.
Truy cập NocoDB
Mở trình duyệt và truy cập:
http://<IP_của_máy_chủ>:8080
Ví dụ, nếu bạn chạy trên máy cục bộ, sử dụng http://localhost:8080
. Bạn sẽ thấy giao diện đăng nhập của NocoDB. Đăng ký tài khoản admin bằng cách điền email và mật khẩu.
Cấu hình và tối ưu NocoDB sau khi cài đặt
Sau khi cài đặt thành công, việc cấu hình và tối ưu hóa NocoDB sẽ giúp hệ thống hoạt động ổn định và an toàn hơn.
Thiết lập bảo mật
- JWT Secret: Đảm bảo bạn đã thay
your_jwt_secret_here
bằng một chuỗi ngẫu nhiên dài (ví dụ, tạo bằngopenssl rand -hex 32
). - Mật khẩu admin mạnh: Sử dụng mật khẩu phức tạp cho tài khoản admin.
- Reverse Proxy: Nếu triển khai trên máy chủ công cộng, hãy sử dụng Nginx hoặc Caddy làm reverse proxy và bật HTTPS với Let’s Encrypt.
Sao lưu và khôi phục
Dữ liệu NocoDB được lưu trong volume nocodb_data
(và postgres_data
nếu dùng PostgreSQL). Để sao lưu:
- Dừng container:
docker-compose down
- Sao lưu volume:
tar -czvf nocodb_backup.tar.gz /var/lib/docker/volumes/nocodb_nocodb_data
- Khôi phục: Giải nén file sao lưu vào đúng vị trí volume.
Giám sát và bảo trì
- Kiểm tra logs: Nếu gặp lỗi, xem logs của container:
docker logs nocodb
- Cập nhật NocoDB: Để cập nhật lên phiên bản mới, chỉnh sửa file
docker-compose.yml
(thaylatest
bằng phiên bản cụ thể nếu cần) và chạy:docker-compose pull && docker-compose up -d
Xử lý sự cố thường gặp
Dựa trên kinh nghiệm triển khai NocoDB, mình đã tổng hợp một số lỗi phổ biến và cách khắc phục:
- Lỗi kết nối cơ sở dữ liệu:
- Kiểm tra chuỗi
NC_DB
trong filedocker-compose.yml
có đúng định dạng không. - Đảm bảo container cơ sở dữ liệu (nếu dùng) đang chạy (
docker ps
).
- Kiểm tra chuỗi
- NocoDB không tải được giao diện:
- Kiểm tra cổng 8080 có bị chặn bởi tường lửa không (
sudo ufw status
). - Mở cổng nếu cần:
sudo ufw allow 8080
.
- Kiểm tra cổng 8080 có bị chặn bởi tường lửa không (
- Dữ liệu bị mất sau khi container dừng:
- Đảm bảo bạn đã ánh xạ volume trong file
docker-compose.yml
. - Kiểm tra volume tồn tại:
docker volume ls
.
- Đảm bảo bạn đã ánh xạ volume trong file
Cài đặt NocoDB với Docker Compose trên Ubuntu không chỉ đơn giản mà còn mang lại sự linh hoạt trong việc quản lý cơ sở dữ liệu. Với các bước mà mình đã chia sẻ, từ chuẩn bị môi trường, tạo file Docker Compose, đến tối ưu hóa và xử lý sự cố, bạn hoàn toàn có thể tự tin triển khai một instance NocoDB hoạt động mượt mà. Điều mình thích nhất ở NocoDB là khả năng tùy chỉnh cao và giao diện thân thiện, phù hợp cho cả lập trình viên và người dùng không chuyên.
Hãy bắt đầu bằng cách thử nghiệm trên máy cục bộ hoặc một VPS nhỏ. Nếu bạn muốn mở rộng, đừng quên tích hợp reverse proxy và sao lưu định kỳ để bảo vệ dữ liệu. Bạn đã thử cài đặt NocoDB chưa? Nếu gặp bất kỳ vấn đề gì, hãy để lại câu hỏi, mình sẽ hỗ trợ bạn dựa trên kinh nghiệm của mình!