-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Remote access vi
Từ 1.4.2, SkimMail có thể tự phơi mình ra Internet công cộng qua một tunnel — không cần mở port inbound nào trên router — bằng Cloudflare Tunnel hoặc Tailscale, dưới dạng plugin tuỳ chọn tải về khi cần.
Một instance self-host bình thường sống trên mạng riêng: LAN, VPN, hoặc bind
vào localhost sau một reverse proxy tự bạn chạy. Vậy là ổn ở nhà, nhưng
"để tôi kiểm tra mail từ điện thoại bằng 4G" cần một địa chỉ có thể truy cập
công khai, và cách thông thường để có nó — một VPS có IP công khai, reverse
proxy của riêng bạn, chứng chỉ TLS — là hạ tầng mà hầu hết người self-host
không muốn dựng chỉ vì việc này. Remote access cho bạn một địa chỉ HTTPS công
khai (hoặc riêng-trong-tailnet) mà không cần bất kỳ thứ nào ở trên, đổi lại là
bạn phải tin tưởng một vendor tunnel với metadata lưu lượng của mình.
Settings ▸ Remote access, chỉ owner — mọi route dưới /api/remote/* đều
đòi vai owner.
| Vendor | Plugin | Cần gì | Địa chỉ có ổn định không? |
|---|---|---|---|
| Cloudflare Tunnel, quick tunnel |
cloudflared (binary của chính Cloudflare, đã ghim SHA256) |
Không cần gì — không tài khoản, không token | Không — mỗi lần khởi động ra một URL trycloudflare.com ngẫu nhiên mới |
| Cloudflare Tunnel, named tunnel | cloudflared |
Một Cloudflare tunnel token và hostname bạn đã cấu hình cho nó trên Cloudflare | Có |
| Tailscale |
skimmail-tunnel-ts (SkimMail tự build, trên tsnet) |
Một Tailscale auth key | Có, trong tailnet của bạn; công khai chỉ khi bật Funnel |
Cả hai plugin đều tải về khi cần — không gì ship sẵn trong binary gốc, gói apt hay image container — và được cài/cập nhật/gỡ qua đúng cơ chế như mọi plugin runtime khác; xem Operations ▸ Plugins để biết chỗ nó nằm trên đĩa, cách kiểm chữ ký manifest, và "đang dùng" nghĩa là gì khi cập nhật. Nút Install/Uninstall trên chính màn hình này chỉ lo phần đưa plugin lên đĩa; cập nhật một vendor plugin đã cài diễn ra ở Settings ▸ Plugins, không phải ở đây — màn hình này không có nút Update riêng.
Lưu cấu hình của một vendor và khởi động tunnel là một hành động duy nhất,
Save & connect. Các ô token/auth-key là write-only: để trống khi sửa lần
sau thì giữ nguyên cái đã lưu, giống quy ước của mọi ô bí mật khác trong
Settings. Một Cloudflare token đi tới tiến trình con cloudflared qua biến
môi trường, không bao giờ qua command line — command line thì ai chạy ps
trên máy cũng nhìn thấy.
Khi tunnel đang chạy, panel hiện URL sống, nút Copy, và một mã QR render ngay trên trình duyệt (không dịch vụ bên thứ ba nào thấy URL này) mà bạn quét thẳng bằng camera điện thoại — hữu ích khi không muốn gõ gì cả trên màn hình nhỏ. Một Cloudflare tunnel, dù kiểu nào, luôn công khai ngay khi đang chạy; một Tailscale tunnel chỉ công khai khi Funnel được bật, còn không thì chỉ truy cập được từ thiết bị trong chính tailnet của bạn.
Khởi động một tunnel sẽ dừng bất kỳ tunnel nào đang chạy trước đó — chỉ một tiến trình tunnel chạy tại một thời điểm, bất kể vendor nào.
Mọi hành động thay đổi bất cứ gì ở đây — lưu cấu hình, cài, khởi động, dừng —
đều bị từ chối thẳng khi server chạy AUTH_MODE=none (chế độ bỏ hẳn màn hình
đăng nhập, dành cho mạng thực sự riêng tư). Màn hình thay các card vendor bằng
một banner đỏ trơn, và API trả 409 auth_mode_none. Đây là chốt chặn cứng
trong code, không phải cài đặt bạn ghi đè được từ UI: việc tắt xác thực và bật
remote access được xem là loại trừ lẫn nhau một cách cố ý, vì một tunnel công
khai vào một instance không có đăng nhập sẽ trao cả hộp thư cho bất kỳ ai tìm
ra URL. Xem Bảo mật để biết AUTH_MODE=none dùng để làm gì.
Khi một tunnel đang công khai, màn hình hiện cảnh báo màu hổ phách nếu 2FA có vẻ đang tắt. Một giới hạn đáng biết: việc kiểm tra nhìn vào account id 1 cụ thể, không phải người đang đăng nhập. Trên instance chỉ-một-owner phổ biến thì đó chính là bạn nên cảnh báo là chính xác; trên instance nhiều người dùng nó phản ánh tài khoản được tạo đầu tiên, có thể không phải owner đang mở màn hình này và có thể chưa bật 2FA dù bạn đã bật.
| Có từ | 1.4.2 |
| Vai | owner |
| Số vendor | 2 — Cloudflare Tunnel, Tailscale |
| Đồng thời | một tiến trình tunnel tại một thời điểm, tính chung cả hai vendor |
| Cảnh báo 2FA | chỉ kiểm account id 1, không phải người gọi |
| Bị tắt cứng khi | AUTH_MODE=none |
-
Không thêm lớp xác thực nào của riêng nó. Một tunnel công khai khiến
việc đăng nhập của chính SkimMail là thứ duy nhất đứng giữa Internet và
mail của bạn — đó chính là lý do tồn tại chốt
AUTH_MODE=nonevà cảnh báo 2FA. - Không chạy được hai tunnel cùng lúc. Khởi động một cái sẽ dừng bất kỳ vendor nào đang chạy; không có load balancing hay failover giữa chúng.
- Cloudflare quick tunnel không cho bạn kiểm soát địa chỉ. Chỉ named tunnel dùng token mới ổn định qua các lần restart.
- Không tự quản lý chứng chỉ TLS. Cả hai vendor đều kết thúc TLS ở edge của riêng họ; SkimMail không bao giờ thấy hay lưu chứng chỉ cho việc này.
- Vận hành — plugin nằm ở đâu trên đĩa, cách cập nhật, và việc kiểm chữ ký manifest
-
Bảo mật —
AUTH_MODEvà vì saononetắt hẳn tính năng này -
Cấu hình —
SKIMMAIL_PLUGINS_URL, để trỏ việc lấy manifest plugin về một mirror riêng
SkimMail · skimmail@base101.app · 2026-09-15 · commit dffbb18