Back to articles
Technology Insight

Tự Host Penpot v2 Trên Cụm Docker Swarm Đa VPS: Giải Pháp Cộng Tác Thiết Kế UI/UX Thay Thế Figma Hoàn Hảo Cho Doanh Nghiệp

June 5, 2026

Giới thiệu xu hướng Self-hosted trong thiết kế UI/UX hiện đại

Trong kỷ nguyên số, các công cụ thiết kế giao diện (UI/UX) đóng vai trò cốt lõi trong quy trình phát triển sản phẩm công nghệ. Nhiều năm qua, Figma đã thống trị thị trường nhờ khả năng cộng tác thời gian thực mạnh mẽ. Tuy nhiên, việc phụ thuộc hoàn toàn vào nền tảng đám mây đóng (SaaS) đi kèm với nhiều rủi ro tiềm ẩn: chi phí bản quyền leo thang theo số lượng nhân sự, nguy cơ rò rỉ dữ liệu sở hữu trí tuệ, và sự thay đổi chính sách đột ngột từ nhà cung cấp.

Chính vì lý do đó, xu hướng Self-hosted (tự vận hành hạ tầng) đang trở thành chiến lược ưu tiên của các doanh nghiệp lớn và các tổ chức chú trọng bảo mật. Sự ra đời của Penpot v2 — nền tảng thiết kế UI/UX mã nguồn mở đầu tiên dựa trên tiêu chuẩn Web (SVG, CSS Grid) — đã tạo nên một bước ngoặt lớn. Bài viết này sẽ hướng dẫn chi tiết cách triển khai Penpot v2 trên cụm hạ tầng Docker Swarm đa VPS, mang lại khả năng chịu lỗi cao (High Availability), sẵn sàng quy mô lớn cho doanh nghiệp của bạn.

Tại sao chọn Penpot v2 và Docker Swarm?

Penpot v2: Sự thay thế xứng đáng cho Figma

Không chỉ dừng lại ở một bản sao mã nguồn mở, Penpot v2 mang đến những cải tiến vượt trội giúp thu hẹp khoảng cách với các công cụ thương mại:

  • CSS Grid Layout nâng cao: Cho phép các nhà thiết kế tạo ra các bố cục phức tạp hoạt động chính xác như giao diện code thực tế của lập trình viên.
  • Component v2 và Tính đóng gói: Hệ thống thành phần được thiết kế lại hoàn toàn, hỗ trợ ghi đè (overrides) linh hoạt và quản lý thư viện thiết kế quy mô lớn.
  • Hoàn toàn miễn phí bản quyền: Loại bỏ gánh nặng chi phí hàng tháng, cho phép mở rộng quy mô đội ngũ thiết kế và lập trình viên không giới hạn.

Docker Swarm đa VPS: Hạ tầng tối ưu cho doanh nghiệp

Khi triển khai một công cụ làm việc cộng tác cho toàn bộ doanh nghiệp, việc chạy trên một máy chủ đơn lẻ (Single VPS) là cực kỳ rủi ro. Chỉ cần một sự cố phần cứng, toàn bộ quy trình thiết kế sẽ bị gián đoạn. Docker Swarm cung cấp giải pháp:

  • Khả năng chịu lỗi (High Availability): Tự động dịch chuyển các container sang VPS khác nếu một node gặp sự cố.
  • Cân bằng tải tích hợp (Ingress Routing Mesh): Tự động điều phối lưu lượng truy cập từ người dùng đến các node đang hoạt động ổn định.
  • Quản lý đơn giản: Khác với Kubernetes phức tạp và tốn tài nguyên, Docker Swarm cực kỳ nhẹ nhàng, dễ cấu hình và vận hành, giúp tiết kiệm chi phí nhân sự DevOps.

Kiến trúc hệ thống Penpot trên Docker Swarm

Một kiến trúc tiêu chuẩn cho hệ thống Penpot v2 chịu tải cao trên Docker Swarm bao gồm tối thiểu 3 Node VPS (1 Manager Node và 2 Worker Nodes) để đảm bảo tính sẵn sàng cao:

  1. Khối Frontend & Backend (Penpot Frontend, Penpot Backend, Penpot Exporter): Xử lý giao diện người dùng, logic nghiệp vụ và xuất bản tài sản thiết kế (PDF, SVG, PNG). Các dịch vụ này sẽ được cấu hình chạy dưới dạng replicated service trên nhiều node.
  2. Khối Cơ sở dữ liệu (PostgreSQL & Redis): Penpot sử dụng PostgreSQL để lưu trữ dữ liệu người dùng, project và Redis để quản lý session, cache. Để đảm bảo an toàn, dữ liệu cần được lưu trữ trên một phân vùng Shared Storage (như GlusterFS hoặc Ceph) kết nối giữa các VPS.
  3. Khối Reverse Proxy (Traefik hoặc Nginx Proxy Manager): Chịu trách nhiệm tiếp nhận traffic HTTPS từ client, giải mã SSL và điều hướng vào mạng lưới Swarm Overlay Network.
Lưu ý bảo mật: Tất cả các giao tiếp nội bộ giữa các container của Penpot phải được cô lập hoàn toàn trong một mạng Overlay riêng biệt mã hóa (Encrypted Overlay Network).

Hướng dẫn triển khai chi tiết từng bước

Bước 1: Khởi tạo cụm Docker Swarm

Đầu tiên, truy cập vào VPS được chọn làm Manager Node thông qua SSH và chạy lệnh khởi tạo:

docker swarm init --advertise-addr 

Hệ thống sẽ trả về một chuỗi token kèm lệnh docker swarm join. Sao chép lệnh này và thực thi trên các VPS Worker còn lại để liên kết chúng vào cụm.

Bước 2: Cấu hình Shared Storage (Lưu trữ dùng chung)

Vì các container có thể di chuyển linh hoạt giữa các VPS, bạn cần thiết lập một hệ thống tệp tin phân tán như GlusterFS để đồng bộ thư mục chứa file thiết kế và cơ sở dữ liệu giữa các node. Đảm bảo thư mục /mnt/penpot-data được mount đồng nhất trên toàn bộ các VPS.

Bước 3: Xây dựng tệp cấu hình Docker Compose cho Swarm (penpot-swarm.yml)

Dưới đây là cấu trúc tệp docker-compose.yml chuẩn hóa cho deploy dạng Stack trên Docker Swarm:

version: '3.8'

services:
  penpot-frontend:
    image: penpotapp/frontend:latest
    networks:
      - penpot-net
    deploy:
      replicas: 2
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure

  penpot-backend:
    image: penpotapp/backend:latest
    volumes:
      - /mnt/penpot-data/assets:/opt/data/assets
    environment:
      - PENPOT_DATABASE_URI=postgresql://penpot:password@penpot-postgres/penpot
      - PENPOT_REDIS_URI=redis://penpot-redis:6379
    networks:
      - penpot-net
    deploy:
      replicas: 2

  penpot-postgres:
    image: postgres:15-alpine
    volumes:
      - /mnt/penpot-data/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=penpot
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=penpot
    networks:
      - penpot-net
    deploy:
      placement:
        constraints:
          - node.role == manager

  penpot-redis:
    image: redis:7-alpine
    networks:
      - penpot-net

networks:
  penpot-net:
    driver: overlay
    attachable: true

Bước 4: Khởi chạy Stack và kiểm tra trạng thái

Thực hiện lệnh sau trên Manager Node để triển khai toàn bộ hệ thống ứng dụng Penpot:

docker stack deploy -c penpot-swarm.yml penpot

Kiểm tra trạng thái hoạt động của các dịch vụ để đảm bảo các bản sao (replicas) được phân bổ đều và chạy ổn định:

docker stack services penpot

Tối ưu hóa hiệu năng và chiến lược sao lưu dữ liệu

Để hệ thống tự host vận hành trơn tru và đạt hiệu năng không thua kém Figma, doanh nghiệp cần chú ý hai yếu tố cốt lõi sau:

Tối ưu hiệu năng kết nối

Do Penpot v2 xử lý đồng bộ dữ liệu thời gian thực thông qua WebSocket, hãy đảm bảo cấu hình Reverse Proxy của bạn hỗ trợ giữ kết nối lâu dài (Keep-Alive) và thiết lập thời gian timeout hợp lý. Sử dụng mạng nội bộ mã thông báo giữa các VPS (Private Network/VPC) để giảm thiểu độ trễ (latency) khi truyền tải dữ liệu giữa backend và cơ sở dữ liệu.

Chiến lược sao lưu tự động (Backup Strategy)

Dữ liệu thiết kế là tài sản vô giá của doanh nghiệp. Bạn cần thiết lập cơ chế tự động:

  • Tạo bản sao lưu định kỳ (Crontab) cho cơ sở dữ liệu PostgreSQL bằng công cụ pg_dump mỗi 6 tiếng.
  • Đẩy các tệp tin lưu trữ (assets/images) lên một hạ tầng lưu trữ thứ ba hoàn toàn độc lập (ví dụ: S3 bách phân hoặc một hệ thống NAS vật lý của công ty) nhằm phòng ngừa thảm họa mất sạch dữ liệu trên cụm VPS.

Lời kết

Triển khai thành công Penpot v2 trên Docker Swarm đa VPS không chỉ giúp doanh nghiệp tối ưu chi phí vận hành mà quan trọng hơn hết là giành lại quyền kiểm soát hoàn toàn dữ liệu. Đây là một giải pháp hoàn hảo, an toàn, có khả năng mở rộng linh hoạt, đáp ứng các tiêu chuẩn khắt khe nhất của các bộ phận phát triển sản phẩm công nghệ hiện đại ngày nay. Hãy bắt đầu số hóa hạ tầng thiết kế của bạn ngay hôm nay để trải nghiệm sự tự do của thế giới mã nguồn mở mang lại!