Trực quan hóa Kiến trúc HomeLab: 6 Tháng Tự vận hành Excalidraw trên Docker

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

Ghi chép trong sự hỗn loạn: Tại sao tôi chuyển sang Excalidraw

Hầu hết các HomeLab đều bắt đầu với một chiếc Raspberry Pi chạy Pi-hole hoặc một máy chủ Plex cơ bản. Việc quản lý lúc đó thật dễ dàng. Nhưng rồi cụm Proxmox xuất hiện, các VLAN IoT bị cô lập, và một chồng hơn 30 container Docker. Đột nhiên, bản đồ mạng trong tâm trí bạn sụp đổ. Trong năm đầu tiên, tôi đã dựa vào trí nhớ và những dòng chữ nguệch ngoạc vội vã trong sổ tay. Khi DNS nội bộ bị sập vào lúc 2 giờ sáng, tôi không hề sửa dịch vụ—mà tôi đang bò dưới gầm bàn, lần mò các dây cáp Ethernet để tìm đúng cổng gateway.

Tôi đã thử những cái tên sừng sỏ như Lucidchart và Draw.io. Chúng rất mạnh mẽ, nhưng thường tạo cảm giác quá cứng nhắc cho việc phác thảo ý tưởng nhanh chóng hoặc khóa dữ liệu của tôi sau bức tường đăng nhập. Sáu tháng trước, tôi đã chuyển mọi thứ sang một instance Excalidraw tự vận hành trên Docker. Tôi muốn một công cụ mang lại cảm giác như một chiếc bảng trắng nhưng hoạt động như bàn làm việc của một kiến trúc sư kỹ thuật số. Nó hoạt động vô cùng ổn định. Tài liệu của tôi hiện đã riêng tư, có thể hoạt động ngoại tuyến và—thành thật mà nói—việc vẽ vời thực sự rất thú vị.

Kiến trúc của một chiếc Bảng trắng Tự vận hành

Excalidraw là một bảng trắng ảo với phong cách “vẽ tay” đặc trưng. Đây không chỉ là một mánh khóe thẩm mỹ. Khi một sơ đồ trông giống như một bản phác thảo, bạn sẽ cảm thấy tự do để lặp đi lặp lại các ý tưởng. Bạn ngừng ám ảnh về việc căn chỉnh chuẩn xác từng pixel và bắt đầu tập trung vào logic thực tế. Bằng cách tự host tại địa phương, cấu trúc liên kết mạng nhạy cảm của tôi không bao giờ chạm tới đám mây của bên thứ ba.

Docker image tiêu chuẩn cung cấp frontend. Nếu bạn cần cộng tác nhiều người dùng, bạn có thể triển khai backend ‘room’. Đối với hầu hết chúng ta, frontend độc lập là quá đủ. Nó nhanh, nhẹ và hoàn hảo cho những kiến trúc sư làm việc độc lập.

Cài đặt: Triển khai Excalidraw qua Docker Compose

Docker Compose là lựa chọn hàng đầu của tôi để giữ cho các cấu hình được kiểm soát phiên bản. Dưới đây là stack chính xác mà tôi đã chạy trên máy chủ Ubuntu của mình. Nó đơn giản, hiệu quả và tự động tải các bản build ổn định mới nhất.

version: '3.8'
services:
  excalidraw:
    image: excalidraw/excalidraw:latest
    container_name: excalidraw
    ports:
      - "3001:80"
    restart: always
    environment:
      - NODE_ENV=production
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:80"]
      interval: 30s
      timeout: 10s
      retries: 3

Khởi chạy nó bằng lệnh nhanh docker-compose up -d và giao diện người dùng sẽ hoạt động tại http://[SERVER-IP]:3001. Image này cực kỳ nhẹ. Vì không dựa vào cơ sở dữ liệu nặng nề, nó chiếm rất ít dung lượng đĩa. Có một lưu ý: theo mặc định, Excalidraw lưu trữ công việc của bạn trong local storage của trình duyệt. Điều này giúp ứng dụng chạy mượt mà, nhưng đồng thời sơ đồ của bạn sẽ không thực sự được “lưu” cho đến khi bạn xuất chúng ra một file.

Tinh chỉnh Cấu hình: Reverse Proxy và Thư viện Tùy chỉnh

Việc nhập địa chỉ IP và cổng khá rắc rối. Để biến nó thành một phần cố định trong quy trình làm việc, tôi đã tích hợp nó với Nginx Proxy Manager (NPM). Tôi đã trỏ domain draw.home.lan tới container và thêm chứng chỉ SSL từ CA nội bộ của mình. Giờ đây, kết nối đã được mã hóa và URL thì rất dễ nhớ.

Nhập các Icon HomeLab

Các hình tròn và hình vuông tiêu chuẩn không đủ cho một bản đồ mạng chuyên nghiệp. Bạn cần các icon máy chủ, router và Wi-Fi. Bí quyết nằm ở libraries.excalidraw.com. Tôi đã tùy chỉnh thanh bên của mình với một vài bộ thư viện chính:

  • Cisco Network Icons: Thiết yếu để lập bản đồ các switch quản lý và tường lửa phần cứng.
  • Cloud Infrastructure: Tuyệt vời để trực quan hóa cách các dịch vụ cục bộ giao tiếp với AWS hoặc Cloudflare Tunnel.
  • Software Architecture: Hoàn hảo để hiển thị cách các container Docker như Traefik hoặc Authelia tương tác với nhau.

Sau khi nhập các thư viện này, bạn có thể kéo và thả icon máy chủ rack-mount hoặc cơ sở dữ liệu lên canvas chỉ trong vài giây.

Xác minh và Hiệu suất

Sau nửa năm hoạt động, container này là một trong những thành viên thầm lặng nhất trong hệ thống của tôi. Nó thường chạy không tải chỉ với 42MB RAM và sử dụng ít hơn 1% chu kỳ CPU trên một chiếc NUC i5 cũ. Đó chính là định nghĩa của việc “thiết lập một lần rồi quên luôn“.

Nếu bạn muốn kiểm tra trạng thái của container, hãy sử dụng:

docker logs -f excalidraw

Tôi cũng sử dụng Uptime Kuma để ping URL mỗi 60 giây. Trong 180 ngày, tôi chưa gặp phải sự cố ngừng hoạt động ngoài ý muốn nào. Sự ổn định của image chính thức thực sự rất ấn tượng.

Chiến lược Sao lưu của tôi

Đừng quá tin tưởng vào bộ nhớ cache của trình duyệt với những công sức của bạn. Mỗi tháng, tôi xuất bản đồ HomeLab chính của mình dưới dạng file .excalidraw và commit nó vào kho lưu trữ Gitea riêng tư. Điều này đảm bảo rằng ngay cả khi tôi xóa cookie hoặc laptop bị hỏng, kiến trúc của tôi vẫn an sau. Bạn cũng có thể xuất dưới dạng SVG để nhúng sơ đồ trực tiếp vào README trên GitHub hoặc trang Wiki.js.

Lời kết

Tự vận hành Excalidraw là một trong những quyết định quản trị tốt nhất mà tôi từng thực hiện. Nó thu hẹp khoảng cách giữa tài liệu kỹ thuật và sự tự do sáng tạo. Tôi không còn ngại việc cập nhật bản đồ mạng của mình nữa vì công cụ này rất nhanh và kết quả trông rất chuyên nghiệp. Nếu bạn đã chán ngấy với các phần mềm doanh nghiệp cồng kềnh hoặc những hạn chế của bút và giấy, thì thiết lập dựa trên Docker này là một nền tảng vững chắc cho bất kỳ HomeLab đang phát triển nào.

Share: