Back to articles
Technology Insight

Hướng dẫn tự host Excalidraw trên Docker VPS nội bộ: Giải pháp vẽ sơ đồ tư duy và cộng tác bảo mật cho doanh nghiệp

June 4, 2026

Giới thiệu về Excalidraw và xu hướng Self-hosting trong doanh nghiệp

Trong kỷ nguyên làm việc từ xa và cộng tác số, các công cụ bảng trắng trực tuyến (virtual whiteboard) đã trở thành một phần không thể thiếu của các đội ngũ phát triển sản phẩm, thiết kế hệ thống và quản lý dự án. Excalidraw nổi lên như một hiện tượng nhờ giao diện vẽ tay (hand-drawn) trực quan, tốc độ phản hồi siêu tốc và khả năng hỗ trợ cộng tác thời gian thực (real-time collaboration) mạnh mẽ. Dù phiên bản đám mây công cộng của Excalidraw rất tuyệt vời, các doanh nghiệp lớn và các tổ chức có tiêu chuẩn bảo mật khắt khe thường đối mặt với bài toán: Làm sao để sử dụng công cụ này mà không để rò rỉ dữ liệu, sở hữu trí tuệ hay sơ đồ kiến trúc hệ thống ra bên ngoài?

Câu trả lời chính là Self-hosting (Tự triển khai) Excalidraw trên hạ tầng ảo hóa VPS (Virtual Private Server) hoặc máy chủ nội bộ thông qua nền tảng Docker. Giải pháp này giúp doanh nghiệp kiểm soát toàn bộ vòng đời của dữ liệu, tùy biến cấu hình theo nhu cầu và tối ưu hóa chi phí vận hành một cách triệt để.

Tại sao nên tự host Excalidraw trên Docker VPS nội bộ?

Việc dịch chuyển từ giải pháp SaaS (Software-as-a-Service) công cộng sang mô hình self-host mang lại những lợi ích chiến lược sau:

  • Bảo mật dữ liệu tuyệt đối: Mọi sơ đồ chiến lược, thiết kế phần mềm, hay quy trình kinh doanh nhạy cảm đều được lưu trữ cục bộ trên VPS nội bộ, nằm sau tường lửa của doanh nghiệp, loại bỏ hoàn toàn nguy cơ rò rỉ từ nhà cung cấp thứ ba.
  • Tối ưu hóa chi phí: Thay vì trả tiền theo đầu người (per-user) hàng tháng, doanh nghiệp chỉ cần đầu tư một khoản chi phí cố định cho hạ tầng VPS/Docker có sẵn. Hoạt động mở rộng quy mô người dùng gần như không tốn thêm chi phí phần mềm.
  • Khả năng kiểm soát độc lập: Hệ thống không bị ảnh hưởng bởi sự cố gián đoạn dịch vụ từ máy chủ toàn cầu của Excalidraw. Đội ngũ IT nội bộ hoàn toàn chủ động trong việc backup, khôi phục dữ liệu và cập nhật phiên bản.
  • Triển khai nhanh chóng với Docker: Nhờ công nghệ container hóa của Docker, việc đóng gói và chạy Excalidraw cùng các dịch vụ phụ trợ trở nên nhất quán, dễ dàng quản lý và di trú giữa các môi trường cloud khác nhau.

Yêu cầu hệ thống tối thiểu trước khi cài đặt

Để đảm bảo Excalidraw vận hành mượt mà cho một đội ngũ từ 20 đến 100 người dùng đồng thời, cấu hình VPS nội bộ khuyến nghị bao gồm:

  • Hệ điều hành: Ubuntu Server 22.04 LTS hoặc các phiên bản Linux tương đương.
  • Phần cứng: Tối thiểu 2 vCPU, 4GB RAM và 20GB ổ cứng SSD trống.
  • Phần mềm bổ trợ: Docker Engine bản mới nhất và Docker Compose (v2).
  • Mạng: Một tên miền nội bộ (hoặc domain công cộng trỏ về IP của VPS) và chứng chỉ SSL (Let's Encrypt) để mã hóa đường truyền HTTPS, điều này rất quan trọng vì tính năng chia sẻ và mã hóa của Excalidraw yêu cầu một môi trường bảo mật.

Hướng dẫn chi tiết các bước cài đặt Excalidraw với Docker Compose

Kiến trúc tự host hoàn chỉnh của Excalidraw không chỉ bao gồm giao diện web (frontend) mà còn cần một máy chủ cộng tác (collaboration server) để xử lý việc đồng bộ hóa dữ liệu thời gian thực giữa các thành viên. Dưới đây là quy trình thiết lập chuẩn hóa.

Bước 1: Chuẩn bị thư mục dự án

Mở terminal trên VPS của bạn và tạo một thư mục chuyên dụng để quản lý cấu hình Excalidraw:

mkdir -p /opt/excalidraw-stack
cd /opt/excalidraw-stack

Bước 2: Tạo file cấu hình Docker Compose

Sử dụng trình soạn thảo văn bản (như nano hoặc vim) để tạo file docker-compose.yml:

nano docker-compose.yml

Sao chép và dán đoạn mã cấu hình dưới đây vào file. Cấu hình này định nghĩa hai dịch vụ chính: excalidraw-frontend (giao diện người dùng) và excalidraw-room (máy chủ kết nối cộng tác):

Lưu ý: Hãy thay thế [https://excalidraw.company.local](https://excalidraw.company.local) bằng tên miền nội bộ thực tế của doanh nghiệp bạn.

version: '3.8'

services:
  excalidraw-frontend:
    image: excalidraw/excalidraw:latest
    container_name: excalidraw_web
    ports:
      - "8080:80"
    environment:
      - REACT_APP_BACKEND_V2_GET_URL=[https://excalidraw.company.local/api/v2/](https://excalidraw.company.local/api/v2/)
      - REACT_APP_BACKEND_V2_POST_URL=[https://excalidraw.company.local/api/v2/](https://excalidraw.company.local/api/v2/)
      - REACT_APP_WS_SERVER_URL=wss://excalidraw.company.local
    restart: always

  excalidraw-room:
    image: excalidraw/excalidraw-room:latest
    container_name: excalidraw_collab
    ports:
      - "5001:5001"
    environment:
      - PORT=5001
    restart: always

Bước 3: Khởi động hệ thống Container

Sau khi lưu file cấu hình, thực hiện lệnh sau để Docker tự động tải các image chính thức từ Docker Hub và khởi chạy các container dưới nền:

docker compose up -d

Kiểm tra trạng thái hoạt động của các container bằng lệnh docker compose ps để đảm bảo cả hai dịch vụ đều đang ở trạng thái "Up".

Cấu hình Reverse Proxy Nginx và kích hoạt HTTPS

Để người dùng trong mạng nội bộ truy cập an toàn qua giao thức HTTPS thay vì sử dụng địa chỉ IP và cổng cấu hình thô, chúng ta cần thiết lập một Reverse Proxy sử dụng Nginx.

Tạo file cấu hình Nginx cho Excalidraw

Tạo một file cấu hình ảo cho Nginx tại đường dẫn /etc/nginx/sites-available/excalidraw với nội dung điều hướng các request thông thường vào frontend (port 8080) và các kết nối WebSocket vào máy chủ cộng tác (port 5001):

server {
    listen 80;
    server_name excalidraw.company.local;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name excalidraw.company.local;

    ssl_certificate /etc/ssl/certs/excalidraw.crt;
    ssl_certificate_key /etc/ssl/private/excalidraw.key;

    # Frontend Routing
    location / {
        proxy_pass http://localhost:8080;
        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;
    }

    # Collaboration Room (WebSockets) Routing
    location /socket.io/ {
        proxy_pass http://localhost:5001;
        proxy_http_version 1.1;
        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;
    }
}

Kích hoạt cấu hình và khởi động lại dịch vụ Nginx bằng các lệnh:

ln -s /etc/nginx/sites-available/excalidraw /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

Kiểm tra tính năng cộng tác thời gian thực

Khi quá trình cài đặt hoàn tất, hãy truy cập vào địa chỉ [https://excalidraw.company.local](https://excalidraw.company.local) từ trình duyệt web. Bạn sẽ thấy giao diện quen thuộc của Excalidraw xuất hiện.

Để kiểm tra tính năng thiết kế đồng thời, hãy nhấp vào nút "Live Collaboration" (Cộng tác trực tiếp) ở góc trên bên phải, hệ thống sẽ tạo ra một liên kết chia sẻ duy nhất dựa trên tên miền của bạn. Hãy gửi liên kết này cho một đồng nghiệp khác trong cùng mạng nội bộ. Nếu hai người có thể nhìn thấy con trỏ chuột của nhau và cùng chỉnh sửa sơ đồ theo thời gian thực mà không gặp lỗi kết nối, hệ thống self-host của bạn đã hoạt động hoàn hảo.

Các lưu ý quan trọng về bảo mật và vận hành hệ thống

Vận hành một hệ thống tự host đòi hỏi đội ngũ IT của doanh nghiệp phải tuân thủ các nguyên tắc quản trị hệ thống nghiêm ngặt:

  1. Sao lưu (Backup) định kỳ: Mặc dù Excalidraw lưu trữ trạng thái bản vẽ trong local storage của trình duyệt người dùng theo mặc định, các tính năng lưu trữ chia sẻ phòng (rooms) cần được giám sát chặt chẽ. Đảm bảo cấu hình lưu trữ hoặc tích hợp cơ sở dữ liệu (như thiết lập lưu trữ file tĩnh lên một cụm MinIO nội bộ) được backup hàng ngày.
  2. Cập nhật phiên bản (Upgrading): Thường xuyên kiểm tra các bản vá bảo mật từ kho lưu trữ GitHub của Excalidraw. Để cập nhật, bạn chỉ cần thực hiện chuỗi lệnh: docker compose pull && docker compose up -d.
  3. Giới hạn truy cập: Sử dụng VPN nội bộ (như WireGuard hoặc OpenVPN) hoặc thiết lập các quy tắc tường lửa (Firewall Rules) trên VPS để chỉ cho phép các dải IP nội bộ thuộc doanh nghiệp truy cập vào cổng hệ thống Excalidraw.

Lời kết

Việc tự host Excalidraw trên hệ thống Docker VPS nội bộ là một bước đi chiến lược giúp doanh nghiệp vừa sở hữu một công cụ thiết kế, tư duy sáng tạo đỉnh cao, vừa đảm bảo tính toàn vẹn và an toàn tuyệt đối cho dữ liệu số nội bộ. Với sự hỗ trợ mạnh mẽ từ Docker và Nginx, quy trình triển khai và vận hành hệ thống này hoàn toàn nằm trong tầm tay của đội ngũ kỹ thuật nội bộ, mang lại giá trị sử dụng lâu dài và bền vững cho doanh nghiệp.

Hướng dẫn tự host Excalidraw trên Docker VPS nội bộ: Giải pháp vẽ sơ đồ tư duy và cộng tác bảo mật cho doanh nghiệp | DPTCloud