📖 Hướng dẫn đồng bộ profile

Một profile Chrome hiện diện ở 5 nơi — hiểu chúng liên hệ thế nào để không bao giờ mất dữ liệu.

1 · Một profile — năm nơi

Cùng một profile xuất hiện ở năm chỗ khác nhau. Mỗi chỗ có một vai trò riêng:

🖥️
A1 (GPM) — GPM-LOGIN

Phần mềm trên máy worker

Danh sách profile LOTUS_… bạn thấy trong GPM. Đây là DANH TÍNH: tên, proxy, vân tay. Bấm "Mở" là chạy.

📁
A2 (C_Temp) — THƯ MỤC TRÊN Ổ C

C:\ZGPM_Loaded_Profiles

Dữ liệu Chrome thật (cookie, cache…) trên đĩa worker. Đây là BẢN CACHE — có thể xóa để nhẹ đĩa.

🗄️
A3 (NAS) — NAS2

\\172.16.20.201\lotus_profiles

Kho lưu trữ trung tâm (file .tar + sha256). Đây là BẢN GỐC — nơi an toàn nhất, bản sao cuối cùng.

🗃️
A4 (MySQL) — SỔ LIÊN KẾT

…D03_GPM_Profile

Sổ liên kết profile ↔ IP ↔ email mà workflow n8n tra cứu. Không chứa dữ liệu Chrome, nhưng quyết định profile nào được dùng với IP nào.

🌐
A5 (WebProfile) — TRANG WEB

profiles.lotus1104.synology.me

Trang quản lý (dashboard này). Đây là BẢNG ĐIỀU KHIỂN — xem trạng thái + bấm nút xử lý, không giữ dữ liệu.

💡 Nhớ một câu: A3 (NAS) là bản gốc. A1 (GPM) là danh tính. A2 (C_Temp) là cache vứt được. A4 (MySQL) là sổ liên kết cho n8n. A5 (WebProfile) chỉ là tấm gương phản chiếu + điều khiển.
Vì sao đánh số lại (14/8/2026): trước đây chỉ có bốn nơi và trang web mang mã A4 — thiết kế cũ bỏ sót MySQL. Nay A4 = MySQL, A5 = trang web. Tài liệu cũ gọi web là "A4" thì hiểu là A5 (WebProfile).

2 · Hệ hình SAO — NAS ở giữa

Nhiều người tưởng bốn nơi nối vòng tròn với nhau. Sai. Thực tế mọi thứ xoay quanh A3 (NAS) ở trung tâm:

🗄️ A3 (NAS) bản gốc 🖥️ A1 (GPM) 📁 A2 (C_Temp) 🌐 A5 (WebProfile) B37 broker A5 (WebProfile) gửi lệnh qua đây pull / push push / pull đọc lệnh ghi

Worker (máy chạy GPM) tự đẩy (push) và tải (pull) dữ liệu thẳng giữa A2 (C_Temp) ⇄ A3 (NAS). A5 (WebProfile) chỉ đọc A3 (NAS) để hiển thị; muốn ghi (xóa/gỡ khóa/khôi phục) thì gửi lệnh qua B37 broker — trang web không bao giờ tự cầm chìa khóa kho.

3 · Vòng đời bình thường của một profile

Trên máy worker, một profile không sống quá ~60 phút. Quy trình chuẩn:

⬇️
BƯỚC 1
Pull từ NAS về A2 (C_Temp) + giành lease
▶️
BƯỚC 2
Mở & chạy (GPM mở Chrome, tự động hoá)
⬆️
BƯỚC 3
Push lên NAS + nhả lease
🧹
BƯỚC 4
Xóa A2 (C_Temp) (janitor dọn khi đã an toàn trên NAS)
✅ Vì bước 3 luôn đẩy lên NAS trước khi bước 4 xóa A2 (C_Temp), nên xóa A2 (C_Temp) là vô hại — mở lại lần sau chỉ cần pull. Đó là lý do được phép xóa A2 (C_Temp) để tiết kiệm đĩa.
🧹 Janitor tự dọn rác: máy worker tự xóa folder A2 (C_Temp) nằm quá 24h — nhưng CHỈ khi profile đó đã an toàn trên NAS (đã push, sha256 khớp) và không đang chạy. Chưa an toàn thì nó tự push lại (thử 5 lần trong ~30h) rồi mới cờ "cần cứu". Bạn không phải xóa tay.

4 · Luật vàng

A5 (WebProfile) xóa được. A1 (GPM) xóa được. A2 (C_Temp) xóa được. A3 (NAS) thì KHÔNG.

A3 (NAS) là điểm-không-quay-lại duy nhất của cả hệ. Xóa nhầm A1 (GPM)/A2 (C_Temp)/A5 (WebProfile) đều khôi phục được chừng nào A3 (NAS) còn sống. Mọi thảm hoạ mất dữ liệu đều đi qua đúng một cửa: ai đó xóa thật ở A3 (NAS) khi A2 (C_Temp) đã trống.

5 · Quy tắc đặt tên — cũng chính là ID

Mọi profile do hệ thống tạo đều mang tên theo đúng một khuôn:

UID_000001_GPM_Profile
ĐiềuNghĩa
6 chữ số tăng dần000001000002 → … Số đã cấp không bao giờ dùng lại, cho tới khi tràn ở 999999.
Bộ đếm nằm trên NASMọi máy, mọi workflow xin cùng một chỗ ⇒ hai máy xin cùng lúc vẫn nhận hai số khác nhau (không bao giờ trùng tên).
Tự đặt khi tạoTạo profile mà để trống ô Tên (hoặc gõ AUTO) ⇒ hệ thống tự cấp. Muốn tên riêng thì cứ gõ tên riêng.
Vì sao quan trọngCái tên này là con dấu sở hữu: nút 🧹 Dọn dẹp chỉ được phép xóa profile mang dấu. Profile bạn tự đặt tên (LOTUS_…) sẽ chỉ được báo cáo, không bao giờ bị tự động xóa.
Đồng thời là ID mới 14/08Chuỗi này chính là id của profile ở A2 (khoá thư mục), A3 (tên file .tar), A4 (cột profile_id) và A5 (dòng bạn đang nhìn). Trước đây id là chuỗi 2dd0ceb3-41a3-… vô nghĩa.
⚠ Đừng đổi tên profile trong GPM. Cái tên ở A1 (GPM) chính là cầu nối giúp hệ tìm ra profile tương ứng bên GPM. Đổi tên UID_… thành thứ khác là cắt cầu: hệ mất dấu profile đó (dữ liệu vẫn còn trên NAS, nhưng 🧹 sẽ chỉ báo cáo chứ không dám đụng).
💡 Muốn xin trước vài cái tên (ví dụ trong n8n): gọi GET /uid/next?count=5 trên B37.
Còn thư mục trên máy worker A2 (C_Temp) thì sao? Nó vẫn mang tên ngẫu nhiên kiểu v5rzKYWMUs-14082026GPM tự đặt và không cho ép. Hệ ghi nhớ "thư mục nào của UID nào" trong một file map riêng, nên bạn không cần quan tâm tên thư mục.

6 · Lỡ tay xóa thì sao? — Ma trận

Điều gì xảy ra khi bạn (hoặc script) lỡ xóa từng nơi:

Xóa nhầmDữ liệu còn ở đâuKhôi phục?Mất gì
A5 (web) mọi nơi khácTự động — khởi động lại containerKhông gì — A5 (WebProfile) chỉ là gương
A4 (MySQL) mọi nơi khácThêm lại hàng (n8n/tay) — bản đã xóa có JSON trong thùng rác khoLiên kết IP ↔ email nếu không còn bản sao
A1 (GPM) A2 (nếu còn) + A3 (NAS)Bấm "Khôi phục" trên A5 (WebProfile)Chỉ phần chưa push (nếu có)
A2 (C_Temp) — đã an toàn NAS A3 (NAS)Tự động — mở lại là pullKhông gì (đúng thiết kế)
A2 (C_Temp) — CHƯA push chỉ chính nó🔴 Cần cứu (nếu folder còn)Mất phiên nếu folder cũng mất
A3 (NAS) — A2 (C_Temp) còn A2 (C_Temp)Push tay lại từ máy workerKhông, nếu kịp push
A3 (NAS) — A2 (C_Temp) đã xóa KHÔNG CÒN ĐÂU❌ Không thểMẤT VĨNH VIỄN
⚠ Nhìn hàng cuối. Chính vì được phép xóa A2 (C_Temp) cho nhẹ đĩa, việc xóa A3 (NAS) trở thành tận thế — càng dọn A2 (C_Temp) sạch, A3 (NAS) càng là bản sao duy nhất. Hãy đối xử với A3 (NAS) như tài sản quý nhất.

7 · Dùng A5 (WebProfile) — nút một chạm

Bấm một profile trên dashboard → mở khung chi tiết → khối ⚡ Hành động. Nút hiện ra tùy trạng thái:

▶ Khôi phục về worker 🔓 Gỡ khóa treo ⛔ Xử lý treo (đóng) 🗑 Xóa khỏi kho → Cách ly 🗑 Xóa hẳn (mọi nơi)
NútKhi nào dùngLàm gì bên trong
Khôi phụcProfile Sẵn sàng/Cách ly — muốn kéo về máy worker để chạyWorker tải .tar từ NAS vào folder GPM (tạo lại trong GPM nếu thiếu)
Gỡ khóa treoTrạng thái Khoá treo — máy giữ lease đã chếtXóa file khóa treo trên NAS để máy khác dùng lại được
Xử lý treoProfile Đang chạy nhưng đơ/không phản hồiGửi lệnh đóng profile xuống worker (qua GPM)
Xóa → Cách lyChỉ muốn gỡ bản NAS, vẫn giữ profile trong GPMChuyển bản NAS vào cách ly (hồi được), KHÔNG xóa vĩnh viễn
Xóa hẳnKhông cần profile này ở bất cứ đâu nữaXóa cả 4 nơi: entry A1 (GPM) + thư mục worker A2 (C_Temp) + gói NAS (A3 (NAS), sang cách ly) + dòng trên bảng A5 (WebProfile)
🔐 Mọi nút gửi yêu cầu qua B37 broker (thằng duy nhất có quyền ghi NAS + nói chuyện với worker). Trang A5 (WebProfile) không bao giờ tự cầm dao — an toàn kể cả khi mở công khai.

8 · 🧹 Dọn dẹp & 🗑 Xóa hẳn — hai nút mạnh nhất

🧹 Dọn dẹp (nút ở thanh trên cùng)

Lấy A3 (NAS) làm chuẩn rồi quét xem ở ba nơi kia còn thứ gì không còn liên kết với A3 (NAS) — và dọn đi.

NơiCái bị coi là "không liên kết"
A5 (WebProfile) + A3 (NAS) Dòng "Thiếu file" (bảng có ghi nhưng gói .tar đã mất), khóa mồ côi, mảnh upload dở cũ, cờ "cần cứu" của profile đã biến mất
A4 (MySQL) mọi nơi khácThêm lại hàng (n8n/tay) — bản đã xóa có JSON trong thùng rác khoLiên kết IP ↔ email nếu không còn bản sao
A4 (MySQL) Hàng trỏ tới profile không còn trên NAS. Hàng nào còn email liên kết thì chỉ báo cáo, KHÔNG tự xóa
A1 (GPM) Profile mang dấu UID_… mà NAS không hề có bản nào
A2 (thư mục) Thư mục đã an toàn trên NAS (cache thuần, vứt được)
Luôn XEM TRƯỚC. Bấm 🧹 → bước 1 chọn phạm vi → bước 2 hiện bản kê chi tiết "sẽ xóa gì, ở đâu, bao nhiêu cái". Không có gì bị xóa cho tới khi bạn bấm Thực thi dọn dẹp.
❓ "Tôi xóa trên NAS rồi mà thư mục A2 (C_Temp) vẫn còn nguyên" — đúng như thiết kế. Trước khi hỏi "NAS có biết thư mục này không", hệ thống hỏi tuổi trước: thư mục mới hơn 24 giờ thì không bị đụng, bất kể NAS có gì.
Vì sao chặn ở đây: một thư mục vừa được ghi rất có thể là phiên vừa đóng mà bước đẩy lên NAS còn đang thử lại. Xóa nó lúc đó có khi là xóa bản duy nhất.
Muốn dọn ngay: trong hộp thoại 🧹 có ô "Chỉ đụng thư mục A2 (C_Temp) cũ hơn (giờ)" — hạ xuống 0 là bỏ chốt tuổi. Hai lớp bảo vệ còn lại (đang chạy · data chưa cứu) vẫn giữ nguyên.
Trong lúc quét bạn luôn nhìn thấy nó đang làm gì. Một hộp tiến trình hiện ra và không tự tắt: thanh chạy theo số bước đã xong (kho NAS → từng worker), đồng hồ đếm giây, mỗi dòng có dấu ✓ / ✗ kèm kết quả gọn ("2 mục cần dọn", "worker không trả lời"). Quét mỗi worker thường 5–60 giây vì nó phải liệt kê toàn bộ profile GPM rồi soi từng thư mục. Nút Dừng chờ chỉ ngừng chờ ở trình duyệt — lệnh đã gửi vẫn chạy nốt dưới worker.
Máy tắt thì biết ngay, không phải chờ: khi mở hộp thoại, hệ thống bắt mạch từng worker (vài chục mili-giây nếu máy sống). Máy không trả lời trong 6 giây sẽ bị bỏ tick sẵn kèm lý do, và nếu bạn vẫn tick thì bước đó cũng chỉ mất ~6 giây để báo ✗ rồi đi tiếp — trước đây phải chờ 3 phút. Một worker chết không làm hỏng cả lượt: các bước còn lại vẫn chạy, phần lỗi ghi rõ trong bản kê.
Ba thứ 🧹 KHÔNG BAO GIỜ đụng — kể cả khi bạn bật hết tùy chọn:
  • Profile đang chạy (lock còn hạn hoặc Chrome đang mở thư mục đó).
  • Thư mục có data chưa kịp lên NAS — đó là dữ liệu chưa cứu, để Janitor push lại, không xóa.
  • Thư mục tên bắt đầu bằng _ hoặc . (ví dụ _backup) — của người vận hành, không phải profile.

Hai tùy chọn nâng cao — mặc định tắt, chỉ bật khi hiểu rõ:

Tùy chọnCho phép thêm điều gìRủi ro
Xóa thư mục không map được idDọn folder lạ > 24h không biết thuộc profile nàoThấp — nhưng chỉ nên bật khi đã nhìn bản kê
force — xóa thư mục A3 (NAS) không biết idDọn folder mà NAS chưa từng thấyCao — có thể là profile chưa từng push thành công

🗑 Xóa hẳn — một hoặc nhiều profile

Tick ô vuông ở đầu mỗi dòng (hoặc ô trên cùng để chọn tất cả) → thanh "Đã chọn N profile" hiện ra → bấm 🗑 Xóa hẳn.

  1. Worker trước: xóa entry trong A1 (GPM) + thư mục cục bộ A2 (C_Temp).
  2. Kho sau: gói .tar vào thùng rác kho (vẫn hồi được), dòng trên bảng A5 (WebProfile) biến mất.
  3. Sổ A4 (MySQL): xóa hàng profile ↔ IP ↔ email tương ứng — kèm bản sao JSON trong thùng rác. Nếu để lại, n8n vẫn tra ra profile đã chết rồi bảo worker mở nó.

Cũng có hộp tiến trình như 🧹: mỗi workpool là một bước, hiện "xóa 3/5" ngay khi bước đó xong.

Vì sao thứ tự đó? Nếu đứt gánh giữa chừng, thứ còn lại là bản NAS — thứ duy nhất cứu được.
Đang chạy thì sao? Hệ thống từ chối xóa profile đang giữ khóa còn hạn, và nói rõ máy nào đang giữ. Chỉ khi bạn chắc máy đó đã chết mới tick force.
Profile đang ở trạng thái "Cách ly" thì sao? Bản thật của nó nằm trong vùng cách ly chứ không nằm trong kho chính. "Xóa hẳn" sẽ dọn cả bản cách ly đó — nếu không, bạn bấm xóa mà dòng vẫn hiện y nguyên (đúng lỗi đã gặp ngày 14/8, nay đã sửa).
Bản bị xóa đi vào thùng rác của kho (_deleted/) — không hiện trên bảng nhưng file vẫn còn, người vận hành xóa tay khi chắc chắn. Không có gì tự dọn thùng rác này.
Ô "Xóa VĨNH VIỄN" bỏ luôn bản cách ly và cả thùng rác. Sau khi tick ô đó, chỉ còn snapshot của NAS cứu được bạn. Mặc định luôn để tắt.

9 · Xử lý sự cố thường gặp

KHOÁ TREO

Profile kẹt "đang chạy" mãi

Máy giữ lease chết giữa chừng. → Kiểm máy đó (Fleet Monitor B34). Chắc đã chết thì bấm Gỡ khóa treo. Máy đó khởi động lại sẽ tự đòi lease của mình, khỏi làm gì.

CÁCH LY

Profile bị đánh dấu lỗi

Bản .tar hỏng, đã tách khỏi kho chính. → Tải bản trong quarantine/ về mở thử, sửa (xóa lock SQLite) rồi push đè bản tốt cùng id; không cứu được thì bỏ.

THIẾU FILE

Manifest có nhưng không thấy .tar

Dữ liệu lệch (xóa tay/upload hỏng). → Nếu máy nào còn bản tốt thì push lại để phục hồi; nếu bỏ id thì để yên (không cấp cho worker được).

🔴 CẦN CỨU

Folder A2 (C_Temp) chưa push được lên NAS

Janitor đã thử push lại 5 lần trong ~30h vẫn hỏng. → ĐỪNG xóa folder này bằng tay (mất phiên vĩnh viễn). Kiểm mạng NAS + credential, rồi push tay từ máy đó.

🚫 Sai lầm chết người: thấy folder A2 (C_Temp) nằm lâu → xóa tay cho gọn. Nếu nó thuộc diện chưa push / cần cứu, bạn vừa hủy bản duy nhất của phiên đó. Luôn nhìn A5 (WebProfile) xác nhận Sẵn sàng trước khi xóa bất cứ gì.

10 · Làm sao để KHÔNG mất đồng bộ

✅ NÊN

  • Để worker + janitor tự lo pull/push/xóa A2 (C_Temp) — đừng can thiệp tay khi không cần.
  • Xóa/gỡ khóa/khôi phục qua nút A5 (WebProfile), không sờ NAS trực tiếp.
  • Chỉ xóa A2 (C_Temp) khi A5 (WebProfile) báo Sẵn sàng (đã an toàn trên NAS).
  • Bật snapshot NAS làm lưới cuối.
  • Thấy Khoá treo → xác minh máy chết rồi mới gỡ.

🚫 KHÔNG NÊN

  • Xóa/sửa file thẳng trên A3 (NAS) — đây là bản gốc, không quay lại được.
  • Xóa folder A2 (C_Temp) khi chưa thấy profile Sẵn sàng trên A5 (WebProfile).
  • Xóa thủ công profile 🔴 Cần cứu.
  • Gỡ khóa một profile đang chạy thật (mở đường 2 máy cùng ghi → hỏng dữ liệu).
  • Chạy 2 máy pull cùng một profile cùng lúc — lease sẽ chặn, đừng cố phá.
🌸 Tóm lại một câu: tin vào A3 (NAS) là bản gốc, để hệ tự đồng bộ, và mọi thao tác xử lý đều bấm qua A5 (WebProfile). Giữ được nguyên tắc đó thì gần như không thể mất dữ liệu.