Xuất bản Second Brain lên web có mật khẩu: Quartz, Cloudflare hoặc Obsidian Publish
Bạn muốn xem kho tri thức trên điện thoại, hoặc chia cho vài người trong đội đọc, nhưng không muốn cả Internet thấy. Bài này đi từng bước hai cách: tự dựng bằng Quartz trên Cloudflare Pages rồi khoá bằng Cloudflare Access, hoặc dùng dịch vụ Obsidian Publish có mật khẩu. Dữ kiện đối chiếu tài liệu chính thức ngày 20–21/10/2026.
Muốn xem kho trên điện thoại nhưng không muốn cả Internet thấy
Anh Tuấn có một kho Obsidian gồm quy trình, kịch bản tư vấn, ghi chú họp. Anh muốn mở kho trên điện thoại và cho hai trưởng nhóm đọc. Anh làm theo một hướng dẫn đưa kho lên web miễn phí, rồi mới phát hiện trang mở cho bất kỳ ai có đường dẫn, kèm cả ảnh chụp hợp đồng. (Tình huống minh hoạ.)
Đưa Second Brain lên web không khó. Khó là khoá đúng và không đưa nhầm. Bài này đi theo thứ tự đó: chọn phần được đưa lên, dựng trang, khoá trang, rồi kiểm tra từng địa chỉ trước khi gửi link. Chưa có kho, bắt đầu từ Cài Obsidian và tạo kho Second Brain đầu tiên.
Xuất bản Second Brain lên web có mật khẩu là gì?
Xuất bản Second Brain lên web có mật khẩu là biến một phần ghi chú đã chọn thành trang web để đọc trên mọi thiết bị, đặt sau một lớp đăng nhập để chỉ người được duyệt mới mở được.
| Tiêu chí | Quartz + Cloudflare Pages + Access | Obsidian Publish |
|---|---|---|
| Chi phí | Quartz giấy phép MIT; Pages và Access có gói Free (Access Free cho dưới 50 người dùng) | 8 USD/site/tháng trả năm, 10 USD nếu trả tháng |
| Cách khoá | Mỗi người đăng nhập bằng email được duyệt, nhận mã PIN một lần | Mật khẩu cho cả site, tạo được nhiều mật khẩu có biệt danh |
| Kỹ năng cần | Dòng lệnh, Node.js, GitHub, bảng điều khiển Cloudflare | Bấm chọn trong Obsidian |
| Giới hạn cần biết | Ảnh, PDF trong thư mục nội dung luôn bị xuất ra; gói Free 500 lần build/tháng, 20.000 tệp/site | Lưu trữ 4 GB, tệp tối đa 50 MB; plugin như Dataview không chạy |
Nguồn: Quartz GitHub · Cloudflare Access · Pages limits · Obsidian Publish · Publish – giới hạn
Bước 0: chọn phần được đưa lên trước khi dựng
Lớp mật khẩu có thể cấu hình sai; thứ không nằm trên web thì không thể lộ qua web.
- Tạo một thư mục riêng trong kho, ví dụ
Web, chỉ chứa ghi chú bạn đồng ý cho người khác đọc. Không trỏ cả kho lên web. - Để ngoài thư mục đó: dữ liệu khách hàng, lương, hợp đồng, số liệu tài chính, biên bản nhạy cảm.
- Rà ảnh, PDF đính kèm. Với Quartz, mọi tệp không phải Markdown trong thư mục nội dung đều được xuất ra công khai, kể cả khi ghi chú chứa nó đã bị lọc.
- Không có khoá API, mật khẩu, mã OTP nào trong ghi chú. Nếu có, chuyển sang trình quản lý mật khẩu và đổi khoá đó.
- Kho đã có lịch sử phiên bản hoặc bản sao lưu, xem Đồng bộ và sao lưu Second Brain.
Nguồn: Quartz – Private pages
Đường 1, bước 1–4: dựng trang bằng Quartz
Quartz là trình tạo web tĩnh, biến các tệp Markdown thành trang web có tìm kiếm, liên kết [[ ]], backlink và đồ thị ghi chú, tương thích Obsidian. Giấy phép MIT. Tài liệu hiện hành là Quartz 5 (bản 5.0.0, nhánh mặc định v5); yêu cầu Node.js từ v22 và npm từ 10.9.2.
Bước 1. Tạo kho GitHub riêng tư từ mẫu Quartz
Mở kho Quartz trên GitHub, bấm Use this template → Create a new repository, đặt tên và chọn Private. Tài liệu Quartz khuyên cách này vì không phải chỉnh lại địa chỉ kho về sau.
Bước 2. Tải về, cài, khởi tạo và xem thử trên máy
git clone https://github.com/<tài khoản GitHub>/<tên kho riêng tư>.git
cd <tên kho riêng tư>
node -v # cần từ v22 trở lên
npm i
npx quartz create # chọn mẫu obsidian, cách nạp nội dung, base URL
npx quartz plugin install --from-config # cài plugin mà mẫu đã chọn
npx quartz build --serve # xem thử tại http://localhost:8080Khi npx quartz create hỏi: chọn mẫu obsidian; cách nạp nội dung chọn copy và trỏ tới thư mục Web ở bước 0, không trỏ cả kho; base URL không kèm https://.
Bước 3. Đặt hai lớp lọc trong quartz.config.yaml
configuration:
baseUrl: <tên miền, không có https://>
ignorePatterns:
- private
- templates
- .obsidian
- "<thư mục nhạy cảm, ví dụ Khach-hang>"
plugins:
- source: "@quartz-community/remove-draft"
enabled: true # bỏ ghi chú có draft: true
- source: "@quartz-community/explicit-publish"
enabled: true # chỉ xuất bản ghi chú có publish: trueLớp 1 là plugin lọc: bật explicit-publish thì chỉ ghi chú có publish: true mới lên web. Lớp 2 là ignorePatterns: thư mục bị bỏ qua hoàn toàn. Tài liệu Quartz nhắc hai lớp này chỉ giữ trang khỏi bản web; kho GitHub công khai thì phải thêm cả vào .gitignore, nên để kho riêng tư như bước 1.
Bước 4. Đẩy lên GitHub
npx quartz sync --no-pull # lần đầu
npx quartz sync # những lần sauNguồn: Quartz 5 · Quartz – Installation · Quartz – Configuration · Quartz – Private pages
Đường 1, bước 5: đưa lên Cloudflare Pages
- Đăng nhập bảng điều khiển Cloudflare, vào Compute (Workers) → Workers & Pages → Create application → Pages → Connect to Git, chọn kho GitHub vừa tạo.
- Ở mục Set up builds and deployments, điền theo bảng dưới rồi bấm Save and deploy.
- Từ đây, mỗi lần
npx quartz sync, Cloudflare tự build lại trang.
| Mục | Giá trị theo tài liệu Quartz |
|---|---|
| Production branch | v5 |
| Framework preset | None |
| Build command | npx quartz plugin install && npx quartz build |
| Build output directory | public |
Trang lấy ngày cập nhật từ git thì thêm git fetch --unshallow && vào đầu lệnh build, vì Pages chỉ tải lịch sử git rút gọn.
Gói Free của Pages: 500 lần build mỗi tháng, mỗi build tối đa 20 phút, 20.000 tệp mỗi site, mỗi tệp tối đa 25 MiB.
Nguồn: Quartz – Hosting · Pages limits · Cloudflare Pages
Đường 1, bước 6: khoá trang bằng Cloudflare Access
Cloudflare Access đặt một cổng đăng nhập trước trang web. Gói Free giá 0 USD, dành cho nhóm dưới 50 người dùng; trên mức đó là gói trả theo người, 7 USD/người/tháng nếu trả năm. Người xem không cần tài khoản riêng: Access có thể gửi mã PIN một lần qua email tới địa chỉ được duyệt.
- Trong dự án Pages, vào Settings → General, bấm Enable access policy. Bước này khoá các bản xem trước (preview), vốn mặc định công khai.
- Bấm Manage ở policy vừa tạo, mở ứng dụng của dự án, chọn Configure, ở mục Public hostname bỏ dấu
*ở ô Subdomain rồi lưu (nếu báo lỗi, đổi tên ứng dụng), để khoá luôn địa chỉ chínhtên-dự-án.pages.dev. - Quay lại dự án, bật lại access policy cho preview. Kiểm tra phải có hai policy: một cho
*.pages.dev, một cho preview. - Trong quy tắc của ứng dụng, chỉ cho phép đúng danh sách email bạn duyệt.
- Thêm cách đăng nhập bằng mã PIN: Zero Trust → Integrations → Identity providers, thêm One-time PIN. Tổ chức Zero Trust mới mặc định dùng nhà cung cấp danh tính của Cloudflare, nên bước này phải tự làm.
- Có tên miền riêng: vào Zero Trust → Access controls → Applications → Create new application, chọn loại Self-hosted and private, thêm public hostname là đúng tên miền đó. Thiếu bước này, trang đăng nhập vẫn hiện ra nhưng không hoạt động. Lưu ý thứ tự: hiện không thêm được tên miền tuỳ chỉnh khi tên miền đó đã có Access policy, nên gắn tên miền vào dự án trước.
Nguồn: Cloudflare Access – gói · Pages – Access · Preview deployments · One-time PIN · Basic Auth
Đường 2: Obsidian Publish có mật khẩu
Obsidian Publish là dịch vụ trả phí của chính Obsidian: chọn ghi chú, bấm Publish, trang nằm ở publish.obsidian.md/tên-site hoặc tên miền riêng. Giá 8 USD/site/tháng trả năm, 10 USD trả tháng, gồm 4 GB lưu trữ. Chỉ ghi chú bạn chọn mới được gửi lên máy chủ (hạ tầng Cloudflare, đặt ở San Francisco).
Chọn ghi chú
- Bật core plugin Publish, tạo site trong tài khoản Obsidian có gói Publish.
- Ở thanh bên trái, bấm Publish changes, chọn ghi chú ở mục NEW rồi bấm Publish.
- Thuộc tính
publish: truetự đưa ghi chú vào danh sách,publish: falseloại ra. - Nút Add linked thêm các ghi chú được liên kết. Xem lại danh sách trước khi bấm, vì liên kết có thể kéo theo ghi chú bạn chưa định chia sẻ.
- Ghi chú đổi tên hoặc đã xoá trên máy không tự gỡ khỏi web: phải tự tích ô xoá khi Publish.
Đặt mật khẩu cho cả site
- Publish changes → Change site options.
- Ở Other site settings, cạnh Passwords, bấm Manage → New password.
- Nhập mật khẩu, đặt Nickname theo người được cấp (để sau này thu hồi đúng người), bấm Add this password.
Nguồn: Obsidian Publish · Publish your content · Publish – Security and privacy · Obsidian pricing
Aduca làm bản web riêng tư thế nào?
Aduca tự dựng theo hướng gần đường 1: kho Obsidian được xuất thành trang web bằng Quartz trên Cloudflare Pages; lớp đăng nhập dùng mật khẩu kèm mã Authenticator (TOTP). Trên đó có giao diện "chòm sao tri thức" để xem liên kết giữa các ghi chú. Bản web đồng bộ với máy Mac khoảng 2 phút một lần; khi hai bên cùng sửa, bản xung đột được lưu riêng chứ không ghi đè.
Phần sửa trên web và đồng bộ hai chiều là phần làm thêm, ngoài phạm vi bài này; người mới nên bắt đầu với bản chỉ đọc. Thứ tự vẫn là: chia vùng, khoá, kiểm tra, rồi mới chia sẻ. Chi tiết: Nhật ký Aduca xây Second Brain.
Kiểm tra đã làm đúng
npx quartz build # build lại, kết quả nằm trong thư mục public
find public -type f \( -iname "*.pdf" -o -iname "*.png" -o -iname "*.jpg" \) # liệt kê tệp ảnh, PDF sẽ lên web
grep -ril "<từ khoá nhạy cảm>" public # thấy kết quả là phải gỡ trước khi đẩy lên- Mở cửa sổ ẩn danh, vào tên miền riêng: phải hiện trang đăng nhập.
- Vào địa chỉ
tên-dự-án.pages.dev: phải hiện trang đăng nhập. - Vào một bản preview (dạng
<mã>.tên-dự-án.pages.dev, tạo khi đẩy lên nhánh phụ): phải hiện trang đăng nhập. - Dán thẳng đường dẫn một ảnh hoặc PDF trên trang: phải hiện trang đăng nhập.
- Thử đăng nhập bằng một email không nằm trong danh sách: không nhận được quyền vào.
- Kho GitHub ở chế độ Private; danh sách người có quyền vào kho đúng như dự định.
- Với Obsidian Publish: mở site bằng cửa sổ ẩn danh, phải bị hỏi mật khẩu; mục Passwords có đúng số mật khẩu, đúng biệt danh.
Lỗi thường gặp và cách xử lý
| Hiện tượng | Nguyên nhân thường gặp | Cách xử lý |
|---|---|---|
| Build trên Cloudflare lỗi dù máy chạy được | Thiếu bước cài plugin, sai nhánh | Lệnh build có npx quartz plugin install, nhánh v5; trên máy thử npx quartz plugin install --latest |
| Tên miền riêng hiện trang đăng nhập nhưng không vào được | Chưa có ứng dụng Access cho tên miền đó | Tạo ứng dụng Access loại Self-hosted and private cho đúng tên miền |
| Không thêm được tên miền riêng vào dự án | Tên miền đã có Access policy | Gắn tên miền vào dự án trước, tạo policy sau |
| Địa chỉ pages.dev vẫn mở tự do | Policy chỉ phủ preview, còn dấu * ở Subdomain | Bỏ dấu *, lưu, bật lại policy cho preview |
| Ghi chú đã lọc nhưng ảnh của nó vẫn mở được | Quartz luôn xuất tệp không phải Markdown | Chuyển ảnh, PDF ra khỏi thư mục nội dung hoặc thêm vào ignorePatterns |
| Không nhận được mã PIN | Chưa thêm One-time PIN, email ngoài danh sách, thư vào mục rác | Thêm One-time PIN ở Identity providers, kiểm tra quy tắc email |
| Bảng Dataview không hiện trên Obsidian Publish | Plugin cần code block không chạy trên Publish | Chuyển bảng thành nội dung tĩnh trước khi publish |
Nguồn: Quartz – Hosting · Pages – known issues · Publish – limitations
Bắt đầu từ đâu?
- Hôm nay: tạo thư mục
Web, chuyển vào 10–20 ghi chú bạn sẵn sàng cho người khác đọc, rà ảnh và PDF đi kèm. - Tuần này: chọn đường. Có người kỹ thuật thì dựng Quartz, đưa lên Pages, khoá bằng Access; muốn nhanh thì dùng Obsidian Publish với mật khẩu theo từng người.
- Trước khi gửi link: chạy hết mục "Kiểm tra đã làm đúng", ghi lại ai được cấp quyền và lịch rà soát danh sách mỗi tháng.
Muốn AI cùng đọc kho theo cách có kiểm soát, xem Kết nối Second Brain với AI qua MCP và Nối Second Brain với Claude qua MCP. Muốn được tư vấn hoặc cùng dựng Second Brain cho doanh nghiệp, bạn có thể đăng ký Tư vấn 1-1 hoặc Coaching 1-1; chi phí báo sau buổi tư vấn.
Đọc tiếp: Cho nghiên cứu thị trường →
Câu hỏi thường gặp
Nên chọn Quartz trên Cloudflare hay Obsidian Publish?
Nếu bạn quen dòng lệnh, GitHub và muốn mỗi người đăng nhập bằng email riêng, Quartz trên Cloudflare Pages cộng Cloudflare Access hợp hơn, chạy được trong gói Free nếu dưới 50 người dùng. Nếu muốn ít thao tác, chấp nhận trả phí và chỉ cần một vài mật khẩu chung cho cả site, Obsidian Publish nhanh hơn.
Obsidian Publish có đặt mật khẩu cho từng ghi chú được không?
Không. Theo trợ giúp chính thức, mật khẩu áp cho cả site và hiện chưa hỗ trợ mật khẩu riêng từng ghi chú. Bạn có thể tạo nhiều mật khẩu, đặt biệt danh theo từng người. Muốn chia quyền khác nhau thì tách thành nhiều site.
Ghi chú đã gắn draft: true thì ảnh trong ghi chú đó có bị ẩn không?
Không. Tài liệu Quartz cảnh báo mọi tệp không phải Markdown như ảnh, PDF, ghi âm trong thư mục nội dung đều được xuất ra và công khai, bất kể bộ lọc. Cách an toàn là không đưa tệp đó vào thư mục content.
Có thể tự viết đoạn mã hỏi mật khẩu thay cho Cloudflare Access không?
Cloudflare có mẫu mã HTTP Basic Authentication nhưng ghi rõ mẫu này không phù hợp để chạy thật và khuyên dùng Cloudflare Access. Với kho tri thức của doanh nghiệp, nên dùng Access hoặc dịch vụ có sẵn mật khẩu.
Đưa lên web có mật khẩu rồi thì cho AI đọc qua web được không?
Bài này chỉ bàn chuyện người đọc. Cho AI đọc kho nên đi đường riêng, có quyền tối thiểu và nhật ký, ví dụ qua MCP, xem bài Kết nối Second Brain với AI qua MCP trong thư mục này.
Tài liệu liên quan
- Second Brain · AI AgentSecond Brain là gì? Bộ não thứ 2 cho chủ doanh nghiệp thời AISecond Brain (bộ não thứ 2) là gì: kho tri thức số bên ngoài đầu bạn, phương pháp CODE và PARA, vì sao quan trọng khi dùng AI Agent, kèm ví dụ của Aduca.
- Second Brain · AI AgentCài Obsidian và tạo kho Second Brain đầu tiênCài Obsidian từ trang chính thức trên Windows, macOS, Linux, điện thoại; tạo vault, dựng cây thư mục PARA, bật plugin lõi, đặt thư mục mẫu và chọn cách đồng bộ.
- Second Brain · AI AgentPhương pháp CODE và PARA: thu, sắp, chắt, dùng tri thứcPhương pháp CODE và PARA cho Second Brain: 4 bước thu, sắp, chắt, dùng; 4 nhóm PARA; tóm tắt lũy tiến; Zettelkasten, MOC và cách áp dụng cho doanh nghiệp nhỏ.
- Second Brain · AI Agent30 mẫu ghi chú Second Brain dùng ngay cho doanh nghiệp30 mẫu ghi chú Second Brain kèm properties: nguồn, bảng giá, kịch bản tư vấn, SOP, biên bản họp, prompt, luật cho AI; cách dùng plugin Templates của Obsidian.
Xem tất cả tài liệu hướng dẫn →

Đăng ký Tư vấn 1-1 xây Second Brain
Chuyên gia Aduca cùng bạn xem tri thức đang nằm rải rác ở đâu, chọn công cụ và cấu trúc phù hợp, rồi lên lộ trình nối Second Brain với AI Agent một cách an toàn. Dịch vụ dựng Second Brain nằm trong gói Tư vấn 1-1 hoặc Coaching 1-1; chi phí báo sau buổi tư vấn.
Nguồn tham khảo
- Quartz – trang chủ tài liệu (Quartz 5)
- Quartz – triển khai lên Cloudflare Pages
- Quartz – ẩn ghi chú riêng tư
- Cloudflare Pages – giới hạn
- Cloudflare Pages – bật Access cho dự án
- Cloudflare Zero Trust – đăng nhập bằng mã PIN qua email
- Cloudflare Access – gói và giá
- Obsidian Help – mật khẩu cho Obsidian Publish
- Obsidian Publish – tính năng và giá
- Cloudflare Workers – mẫu Basic Auth
Lịch sử cập nhật
- 21/10/2026 — Bản đầu.
Miễn trừ trách nhiệm
Bài viết thuộc chuỗi kiến thức của Công ty Cổ phần Giáo dục Aduca, chia sẻ miễn phí cho mục đích học tập. Thông tin kỹ thuật đối chiếu với tài liệu chính thức của các dự án và nền tảng tại ngày cập nhật (có ghi nguồn); phần nhận định là quan điểm của Aduca. OpenClaw, Hermes Agent, Claude (thương hiệu của Anthropic), ChatGPT (thương hiệu của OpenAI), n8n (thương hiệu của n8n GmbH), các phần mềm chạy model và các model AI mở (Ollama, LM Studio, Qwen, Gemma, gpt-oss…), Obsidian, Notion, phương pháp Building a Second Brain (Tiago Forte) cùng các phần mềm, dịch vụ nêu trong bài thuộc về chủ sở hữu tương ứng, không thuộc Aduca; Aduca không phải đối tác chính thức của các công ty này. Tính năng, gói và giá có thể thay đổi bất cứ lúc nào – hãy kiểm tra trang chính thức trước khi mua. Kết quả áp dụng phụ thuộc quy trình, dữ liệu và con người của từng doanh nghiệp; bài viết không cam kết doanh thu hay hiệu quả cụ thể. © 2026 Aduca — được trích dẫn khi ghi rõ nguồn aduca.vn.