Khi bạn bắt đầu hành trình tự lưu trữ, việc quản lý mọi thứ không quá khó khăn. Rốt cuộc, bạn có lẽ chỉ có một máy chủ với vài dịch vụ; không có gì phức tạp. Tuy nhiên, khi phòng lab tại nhà của tôi phát triển, tôi nhận thấy việc tự mình quản lý tất cả trở nên quá khó khăn. Tôi đã thử nghiệm một số công cụ tự lưu trữ khác nhau để cố gắng theo dõi mọi thứ, nhưng cuối cùng, tôi quay lại sử dụng Obsidian để quản lý tất cả.

Obsidian không chỉ là một công cụ ghi chú, đó là lý do tại sao nó hoàn hảo cho dự án này. Với một loạt plugin và công cụ đáng kinh ngạc, bạn có thể biến một bộ sưu tập ghi chú thành một cơ sở dữ liệu hoàn chỉnh. Tôi sử dụng kết hợp các plugin cốt lõi như Properties và Backlinks cùng với các plugin cộng đồng như Dataview, Excalidraw, và Advanced Tables để quản lý máy chủ và dịch vụ tự lưu trữ của mình, và nó đã hoạt động hoàn hảo cho nhu cầu của tôi.

Ban đầu có chút khó khăn để bắt đầu, chủ yếu vì bạn sẽ phải nhập thủ công mọi thứ, nhưng tôi sẽ hướng dẫn bạn qua thiết lập của tôi và cách tôi làm cho nó dễ dàng hơn cho bản thân mình.

Thiết lập cấu trúc

Mẫu và thư mục

Hình ảnh bộ sưu tập

Để minh họa, tôi đã sao chép một số tài liệu thực tế từ phòng lab tại nhà của mình để minh họa cách tôi tổ chức thư mục. Tôi cấu trúc tài liệu của phòng lab tại nhà như sau:

  • 0 – Meta
    • Templates
  • 1 – Phần cứng
    • Thiết bị mạng
    • Máy chủ
  • 2 – Dịch vụ
  • 3 – Tự động hóa
  • 4 – Sự cố
  • 5 – Ghi chú
  • 6 – Thiết kế

Templates là những gì bạn mong đợi; tôi có các mẫu cho máy chủ, thiết bị mạng, sự cố và dịch vụ. Chúng định nghĩa một bố cục chung mà mỗi ghi chú sau này nên tuân theo, bao gồm các trường thuộc tính, tên, ngày cập nhật cuối cùng, và nhiều hơn nữa. Trường thuộc tính của tôi, ở đầu mỗi ghi chú, trông như thế này:

---
type: server
hostname: "{{title}}"
role: 
os: 
ip: 
mac: 
cpu: 
ram_gb: 
disk_tb: 
rack_u: 
location: "{{location}}"
production: false
last_update: ""
tags:
 - server
---

Cấu trúc này cho phép tôi tạo các truy vấn Dataview xem toàn bộ một thư mục, và tôi có thể sử dụng các trường thuộc tính để điền thông tin vào bảng về từng mục. Ví dụ, một truy vấn Dataview tôi sử dụng là:

```dataview
TABLE WITHOUT ID
 file.link AS "File",
 hostname AS "Host",
 ip AS "IP",
 os AS "OS",
 last_update AS "Last updated"

from "1 - Hardware/Servers"
where type = "server"
sort hostname
```

Trên đây sẽ tạo một bảng không có ID (nếu không, file.link sẽ bị trùng), và nó sẽ hiển thị máy chủ, IP, OS, và khi nào được cập nhật lần cuối. Nó lấy dữ liệu từ “1 – Hardware/Servers” nơi loại bằng máy chủ, sau đó sắp xếp theo thứ tự bảng chữ cái theo hostname.

Bạn không cần phải tổ chức nó chính xác như thế này, nhưng điều gì đó tương tự sẽ giúp dễ dàng hơn. Tự động hóa chủ yếu được điền bởi những tự động hóa quan trọng nhất của Home Assistant, mặc dù kho thực sự của tôi cũng chứa thông tin về việc cập nhật tự động danh sách IP OPNsense và sao lưu Backblaze B2.

Obsidian Home Lab documentation incident template

“Sự cố” là một thuật ngữ hơi phóng đại và phù hợp hơn với một nhà cung cấp dịch vụ thực tế, nhưng điểm mấu chốt là tôi có thể sử dụng nó để ghi lại các vấn đề. Ví dụ, nếu tôi gặp sự cố máy chủ, tôi có thể lưu nhật ký và chi tiết về những gì đã xảy ra, và sau đó trong tương lai, nếu máy chủ gặp sự cố lại, tôi có thể so sánh với một sự cố trước đó trên cùng một máy chủ hoặc dịch vụ và xem liệu nó có giống nhau không. Tôi sử dụng một thuộc tính “affected” để liên kết với dịch vụ hoặc máy chủ bị ảnh hưởng, để tôi có thể tạo một truy vấn Dataview để hiển thị tất cả các sự cố ảnh hưởng đến một dịch vụ. Phòng lab tại nhà của tôi vẫn đủ nhỏ để điều này không thực sự cần thiết, dù vậy.

Tuy nhiên, điều ích là khả năng hiển thị tất cả các nhiệm vụ còn lại trên máy chủ và dịch vụ của tôi. Tôi đã tạo một truy vấn Dataview cơ bản có thể lấy tất cả các mục chưa được kiểm tra trong mỗi ghi chú máy chủ và dịch vụ. Nó trông như thế này:

```dataview
TABLE WITHOUT ID
 file.link AS "File",
 t.text AS "Task"

FROM "1 - Hardware" OR "2 - Services"
FLATTEN file.tasks AS t
WHERE !t.completed
SORT name, t.text
```

Điều này sẽ hiển thị cho tôi một bảng với tệp và nhiệm vụ cần hoàn thành, để tôi có thể nhấp vào tệp, đi đến chi tiết dịch vụ, và dễ dàng thấy những chi tiết tôi cần kết nối với nó. Tôi có thể thêm một loạt các nhiệm vụ ảnh hưởng đến các dịch vụ khác nhau, và sau đó liệt kê tất cả trong một bảng để hành động trên bảng điều khiển của tôi. Chúng cũng được tạo động, vì vậy chúng sẽ được loại bỏ hoặc bổ sung tùy thuộc vào những gì xảy ra trong ghi chú.

Cuối cùng, Ghi chú và Thiết kế là những mô tả “meta” mà tôi không thường xuyên sử dụng nhiều, nhưng cũng tốt để có. Ghi chú lưu giữ các ghi chú hàng ngày của tôi trong Obsidian khi tôi tạo chúng, và có thể phục vụ như một nhật ký thay đổi nếu tôi quan tâm làm điều đó, và Thiết kế là dành cho các sơ đồ Excalidraw của tôi về mạng gia đình của mình.

Tạo ghi chú

Làm việc từ các mẫu của chúng tôi

obsidian-home-lab-insert-template

Bây giờ, để sử dụng mẫu của chúng tôi, chúng tôi sẽ tạo một ghi chú thông thường trong thư mục chính xác. Ví dụ, nếu chúng tôi sẽ tạo một máy chủ mới tên là PVE3, chúng tôi sẽ tạo một mục mới trong thư mục Servers tên là “PVE3”. Sau đó, ở bên trái, chúng tôi sẽ nhấp vào “Insert template” và chọn mẫu máy chủ của chúng tôi. Điều này sẽ điền phần còn lại của mẫu, thay thế các biến {{title}} bằng tiêu đề thực tế của ghi chú. Tôi chưa định nghĩa {{ip}}, {{location}}, hoặc {{mac}}, vì tôi đang trong quá trình chuyển sang Templater, điều này sẽ cho phép tôi đưa ra các lời nhắc yêu cầu những chi tiết đó trước khi tạo ghi chú.

Obsidian là một công cụ vô cùng mạnh mẽ, và tôi đã dần quen với nó trong nửa năm qua. Mẫu đặc biệt hữu ích, và với chúng, tôi có thể tạo ra một ký hiệu chuẩn mà tất cả các ghi chú của tôi có thể được dựa vào. Không có việc sao chép và dán thủ công, cũng không có nguy cơ mất tổ chức trong cấu trúc ghi chú. Tất cả đều được xử lý giống nhau và trông giống nhau; chúng chỉ được điền với các giá trị đúng. Đó cũng là lý do tại sao tôi muốn cấu hình plugin Templater, vì nó cho phép tôi chèn các đoạn mã để kiểm soát và tự động hóa nhiều hơn.

Nếu bạn có một phòng lab tại nhà khó quản lý với vô số dịch vụ và công cụ tự lưu trữ, tôi rất khuyên bạn nên thử Obsidian để ghi chép lại nó. Tôi đã thử qua các công cụ như NetBox và HomeBox, nhưng tôi thấy chúng quá phức tạp so với sở thích của mình. Obsidian đơn giản, tôi có thể đồng bộ hóa ghi chú của mình ở bất kỳ đâu, và nó ở định dạng Markdown quen thuộc ngay cạnh các ghi chú khác của tôi nữa.