0

# [Open Source] #185 - GitSave: Hệ thống sao lưu mã nguồn tự vận hành với kiến trúc Astro 5, cơ chế Git Mirroring và bảo mật mã hóa AES-256

Việc bảo vệ mã nguồn khỏi các rủi ro mất mát dữ liệu trên GitHub, GitLab hay Bitbucket là ưu tiên hàng đầu của mọi kỹ sư và tổ chức. GitSave ra đời như một giải pháp tự lưu trữ (self-hosted) tinh gọn, cho phép tự động hóa quy trình sao lưu toàn bộ các kho lưu trữ (repositories) về máy chủ cá nhân hoặc ổ đĩa mạng (SMB). Điểm mạnh của dự án nằm ở sự kết hợp giữa hiệu năng vượt trội của Astro 5 và khả năng quản lý dữ liệu bền bỉ của Prisma.

Dưới góc độ kỹ thuật, GitSave là một minh chứng xuất sắc về việc ứng dụng Kiến trúc Islands, kỹ thuật điều phối Tiến trình con (Subprocesses) và tư duy bảo mật Encryption at Rest.

Github: https://github.com/v8u7/gitsave


🛠️ 1. Nền tảng công nghệ: Hiệu năng tối đa và Trải nghiệm mượt mà

GitSave tận dụng những công nghệ "vàng" trong hệ sinh thái JavaScript để xây dựng một hệ thống ổn định:

  • Frontend Core (Astro 5.0): Sử dụng kiến trúc Islands Architecture giúp giảm thiểu tối đa lượng JavaScript gửi xuống trình duyệt. Astro xử lý phần lớn giao diện dưới dạng tĩnh, trong khi React 18 chỉ được nạp cho các thành phần cần tương tác cao như Form cấu hình và Dashboard.
  • Data Layer (Prisma & SQLite): SQLite được chọn làm nhân lưu trữ nhờ tính gọn nhẹ, không cần quản trị server DB phức tạp. Prisma ORM đảm bảo tính an toàn kiểu dữ liệu (Type-safety) từ tầng Database đến Frontend.
  • Backend Orchestrator (Node.js & Express): Đóng vai trò là bộ máy điều phối, thực thi các lệnh hệ thống và quản lý hàng đợi sao lưu thông qua node-cron.
  • Styling & UI: Sử dụng Tailwind CSS, mang lại giao diện hiện đại với hỗ trợ Dark Mode mặc định, tối ưu cho các quản trị viên hệ thống thường xuyên làm việc trong môi trường ánh sáng thấp.

🏗️ 2. Trụ cột kiến trúc: Service-Oriented Controller Pattern

Kiến trúc mã nguồn của GitSave được tổ chức cực kỳ khoa học, tách biệt rõ ràng các trách nhiệm:

  • Tách biệt logic nghiệp vụ: Dự án chia làm 3 lớp chính:
    • Controller: Tiếp nhận và điều hướng request (vd: ScheduleController).
    • Service: Nơi thực thi logic "nặng" (vd: GitService xử lý clone, EncryptionService xử lý mã hóa).
    • Prisma Client: Tương tác dữ liệu nguyên tử.
  • Dynamic Cron Management: Hệ thống không sử dụng các file cấu hình cron tĩnh. Toàn bộ lịch trình được lưu trong DB. Khi có bất kỳ thay đổi nào, ScheduleService sẽ tự động tính toán lại và đăng ký lại tác vụ với node-cron ngay trong thời gian thực (Hot-reload scheduling).

🔄 3. Workflow: Vòng đời của một chu kỳ Sao lưu (Sequence Diagram)

Sơ đồ mô tả quy trình tự động hóa từ lúc người dùng thiết lập đến khi tệp tin được lưu trữ an toàn:

image.png


⚡ 4. Các kỹ thuật "Pro-level" trong mã nguồn

  1. Git Mirroring Strategy: GitSave sử dụng cờ --mirror thay vì clone thông thường. Đây là kỹ thuật chuyên sâu giúp sao chép 1:1 mọi thông tin của repository (bao gồm tất cả nhánh, thẻ và lịch sử commit), đảm bảo bản backup có giá trị phục hồi tuyệt đối.
  2. Encryption at Rest: Các Access Token nhạy cảm từ GitHub/GitLab không bao giờ được lưu dưới dạng văn bản thuần. Hệ thống sử dụng thuật toán mã hóa đối xứng AES-256-CBC với mã khóa (Key) được quản lý qua biến môi trường, bảo vệ dữ liệu ngay cả khi file SQLite bị rò rỉ.
  3. Subprocess Timeout Guard: Để ngăn chặn các tiến trình treo (Zombies) do mạng lỗi hoặc repo quá lớn, dự án triển khai cơ chế timeout cho các lệnh Git. Nếu tác vụ vượt quá thời gian cho phép, hệ thống sẽ tự động kill process và ghi log thất bại.
  4. Automated Cleanup (Retention Policy): Kỹ thuật quản lý dung lượng đĩa thông minh thông qua tham số keepLast. Hệ thống tự động đếm số lượng bản sao thành công và thực hiện xóa đệ quy (fs.rmSync) các bản cũ nhất, duy trì sự gọn nhẹ cho server.

⚖️ 5. So sánh chiến lược

Tiêu chí GitSave Manual Scripts (Bash) Dịch vụ SaaS Backup
Giao diện quản lý Dashboard trực quan Dòng lệnh Web App
Bảo mật Token AES-256 Encrypted Plaintext trong file .sh Phụ thuộc bên thứ 3
Hỗ trợ SMB Tích hợp sẵn Cần cấu hình mount phức tạp Thường không hỗ trợ
Triển khai 1 Click (Docker) Thủ công Không cần
Chi phí Miễn phí (Self-host) Miễn phí Trả phí theo Repository

✅ Kết luận: Tại sao GitSave là hình mẫu cho Self-hosted Tools?

GitSave chứng minh rằng một công cụ quản trị không cần phải quá đồ sộ để trở nên mạnh mẽ. Việc làm chủ các kỹ thuật xử lý tệp tin tầng thấp và quản lý tiến trình của Node.js, kết hợp với giao diện hiện đại từ Astro 5, đã tạo ra một sản phẩm có độ tin cậy cực cao cho cộng đồng DevSecOps.

Đối với các kỹ sư Backend, nghiên cứu GitSave mang lại giá trị về:

  • Kỹ thuật điều phối Tiến trình con (Subprocesses) an toàn.
  • Cách xây dựng Hệ thống lập lịch động (Dynamic Scheduling).
  • Tư duy thiết kế Kiến trúc bảo mật mã hóa dữ liệu người dùng.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí