Hướng Dẫn Cài Đặt Proxy Server Trên Máy Tính
3 Th10 2023
![]()
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ế.
Cloud Server cần:
root hoặc sudo13000 trong giai đoạn kiểm traCấ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.
ssh root@YOUR_SERVER_IP
Kiểm tra user:
whoami
Kết quả mong đợi:
root
Kiểm tra CPU:
nproc
Kiểm tra RAM:
free -h
Kiểm tra disk:
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.
Cập nhật hệ thống:
apt update && apt upgrade -y
Cài Docker Engine và Docker Compose plugin bằng script chính thức của Docker:
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:
docker --version
docker compose version
Kiểm tra trạng thái Docker:
systemctl status docker
Nếu Docker chưa chạy, khởi động và bật tự chạy cùng hệ thống:
systemctl enable --now docker
mkdir -p /opt/nocobase
cd /opt/nocobase
Kiểm tra:
pwd
Kết quả:
/opt/nocobase
docker-compose.ymlTạo file:
nano docker-compose.yml
Sử dụng cấu hình Docker Compose với NocoBase và PostgreSQL:
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
NocoBase:
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ùnglatestđể tránh bị nâng cấp ngoài ý muốn. Danh sách version xem tại Docker Hub:nocobase/nocobase.
APP_KEY:
APP_KEY=YOUR_RANDOM_SECRET_KEY
Tạo key ngẫu nhiên:
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:
postgres
Do đó:
DB_HOST=postgres
Mật khẩu PostgreSQL phải giống nhau ở:
DB_PASSWORD=YOUR_STRONG_DB_PASSWORD
và:
POSTGRES_PASSWORD: YOUR_STRONG_DB_PASSWORD
Không sử dụng mật khẩu đơn giản trong production.
Sau khi lưu file:
docker compose config
Nếu không có lỗi cấu hình, chuyển sang bước tiếp theo.
docker compose pull
Docker sẽ tải các image được khai báo trong docker-compose.yml.
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:
docker compose ps
Bạn cần thấy các service chính:
app
postgres
đang ở trạng thái chạy.
docker compose logs -f app
Khi thấy dòng tương tự dưới đây là NocoBase đã khởi động xong:
🚀 NocoBase server running at: http://localhost:13000/
Nếu cần kiểm tra PostgreSQL:
docker compose logs -f postgres
Thoát log bằng:
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.
Docker Compose đang mapping:
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
13000sẽ truy cập được từ Internet kể cả khi UFW không cho phép. Không cần chạyufw 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.
Mở trình duyệt:
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:
Email: admin@nocobase.com
Mật khẩu: admin123
Sau khi đăng nhập:
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.
Ví dụ sử dụng:
nocobase.example.com
Tạo DNS record:
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:
ping nocobase.example.com
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):
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:
nano /etc/nginx/sites-available/nocobase
Thêm:
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:
ln -s /etc/nginx/sites-available/nocobase /etc/nginx/sites-enabled/
Kiểm tra:
nginx -t
Nếu kết quả:
syntax is ok
test is successful
reload Nginx:
systemctl reload nginx
Truy cập:
http://nocobase.example.com
Cài Certbot:
apt install certbot python3-certbot-nginx -y
Chạy:
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:
certbot renew --dry-run
Sau khi hoàn tất:
https://nocobase.example.com
là địa chỉ truy cập NocoBase.
Sau khi truy cập được qua HTTPS, không nên để port 13000 public nữa. Mở lại file compose:
cd /opt/nocobase
nano docker-compose.yml
Sửa phần ports của service app thành:
ports:
- "127.0.0.1:13000:80"
Áp dụng thay đổi:
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.
docker compose ps
docker compose logs --tail=100 app
Tài nguyên sử dụng của từng container:
docker stats --no-stream
RAM:
free -h
Disk:
df -h
Cấu hình Nginx:
nginx -t
Chạy các lệnh sau trong thư mục /opt/nocobase.
docker compose up -d
docker compose down
Dữ liệu nằm trong thư mục
./storagenên không bị mất khi chạydocker compose down.
docker compose restart
docker compose ps
docker compose logs -f app
docker compose logs --tail=100 app
NocoBase storage (file upload, plugin, cấu hình) được mount tại:
./storage:/app/nocobase/storage
Dữ liệu PostgreSQL được lưu tại:
./storage/db/postgres:/var/lib/postgresql/data
Không sao chép trực tiếp thư mục
./storage/db/postgreskhi 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ùngpg_dumpnhư hướng dẫn dưới đây.
cd /opt/nocobase
mkdir -p backups
docker compose exec -T postgres pg_dump -U nocobase -d nocobase -Fc > backups/nocobase_db_$(date +%F).dump
tar --exclude=./storage/db -czf backups/nocobase_storage_$(date +%F).tar.gz ./storage docker-compose.yml
Nên backup định kỳ:
.dump)docker-compose.yml và APP_KEY/etc/nginx/sites-available/nocobaseNgoà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ỳ.
Không nên update production một cách tùy tiện.
Thay vì:
image: nocobase/nocobase:latest-full
nên sử dụng version cụ thể:
image: nocobase/nocobase:<VERSION>-full
Quy trình nên là:
docker-compose.yml sang version mới.Lệnh cho bước 6–8:
cd /opt/nocobase
docker compose pull
docker compose up -d
docker compose logs -f app
Nếu đã pin version cụ thể,
docker compose pullsẽ không tự tải bản mới. Bạn phải sửa tag trongdocker-compose.ymltrước (bước 5).
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ó. 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.
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 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ó. 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ó. 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 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.
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