⚡ Self-hosted ngrok alternative

Đưa localhost của bạn
ra internet, có HTTPS.

Một lệnh ssh là xong — service local của bạn lập tức có URL public *.entry.io.vn kèm SSL tự động. Không cài app, không đăng ký.

# expose app local cổng 3000 ssh -p 2222 -R 80:localhost:3000 entry.io.vn
01 — Setup

Bắt đầu

Một lần duy nhất để được phép tạo tunnel.

  1. Có SSH key trên máy (Linux/Mac/Windows đều có sẵn ssh). Chưa có thì tạo:
    ssh-keygen -t ed25519
  2. Lấy & gửi public key cho admin để thêm vào allowlist (chỉ key đã đăng ký mới tạo được tunnel):
    📋 Copy lệnh lấy public key của bạn:
    # Linux / macOS cat ~/.ssh/id_ed25519.pub
    # Windows — PowerShell type $env:USERPROFILE\.ssh\id_ed25519.pub
  3. Xong! Mở tunnel bất cứ lúc nào bằng các lệnh ở mục tiếp theo.
02 — Usage

Cách dùng

Giữ terminal mở = tunnel sống. Đóng / Ctrl-C = tunnel tắt.

🎲

Subdomain ngẫu nhiên

Nhanh nhất — hệ thống tự cấp tên.

ssh -p 2222 -R 80:localhost:3000 \ entry.io.vn
→ abc.entry.io.vn
✏️

Subdomain tự đặt

Tên cố định, dễ nhớ cho demo/webhook.

ssh -p 2222 -R myapp:80:localhost:3000 \ entry.io.vn
→ myapp.entry.io.vn
🔌

Tunnel TCP

Cho DB, SSH... (không phải web).

ssh -p 2222 -R 0:localhost:5432 \ entry.io.vn
→ cấp port public ngẫu nhiên
💡 Thay 3000 bằng cổng app local (Vite 5173, Node 3000, Django 8000...). HTTPS bật tự động; vào http:// sẽ tự chuyển sang https://.
03 — Background

Chạy ngầm (tự bật khi boot, tự reconnect)

Dành cho máy Linux luôn bật — systemd + autossh.

  1. Cài bằng 1 lệnh (quyền root):
    curl -fsSL https://entry.io.vn/sish-tunnel-install.sh | sudo bash
    Tự cài autossh, tạo key, tạo systemd service và in ra public key.
  2. Gửi public key script vừa in cho admin để thêm quyền.
  3. Cấu hình & khởi động:
    # sửa SUBDOMAIN, LOCAL_PORT sudo nano /etc/sish-tunnel/tunnel.conf sudo systemctl restart sish-tunnel sudo systemctl status sish-tunnel
Tính năngCơ chế
Chạy ngầmsystemd service
Tự kết nối lại khi rớtautossh -M 0 + ServerAliveInterval
Tự bật khi rebootsystemctl enable
Xem log realtimejournalctl -u sish-tunnel -f
📄 Nội dung script sish-tunnel-install.sh
⬇ Tải về
đang tải…
04 — How it works

Cơ chế hoạt động

Máy bạn mở kết nối ra (vượt NAT/firewall), nginx tuyến đầu xử lý HTTPS.

Máy bạn (sau NAT) Internet ┌───────────────┐ ssh -R :2222 ┌─────────────┐ │ localhost:3000│ ───────────────────►│ người xem │ └───────┬───────┘ └──────┬──────┘ │ đường hầm ngược │ https://app.entry.io.vn ▼ ▼ ┌──────────────────────────────────────────────────┐ │ VPS entry.io.vn │ │ nginx :443 (cert *.entry.io.vn) ──► sish │ │ proxy *.entry.io.vn theo Host header │ └──────────────────────────────────────────────────┘
🔒 Có xác thực bằng SSH key — chỉ key đã thêm mới tạo được tunnel, tránh người lạ lợi dụng tên miền.
05 — FAQ

Câu hỏi thường gặp

Những thắc mắc hay gặp khi dùng tunnel.

Tôi có cần cài phần mềm gì không?
Không. Tunnel tạm thời chỉ cần ssh (có sẵn trên mọi hệ điều hành). Chỉ khi muốn chạy ngầm trên máy Linux thì cần autossh — script ở mục 03 tự cài giúp.
Vì sao tunnel tắt khi tôi đóng terminal?
Đó là tunnel tạm thời gắn với phiên ssh. Muốn nó sống mãi (tự bật khi boot, tự reconnect), dùng cách chạy ngầm bằng systemd ở mục 03.
Subdomain có cố định được không?
Có. Đặt tên ngay trong lệnh: ssh -p 2222 -R tên:80:localhost:3000 entry.io.vnhttps://tên.entry.io.vn. Bỏ trống thì hệ thống cấp tên ngẫu nhiên.
HTTPS có sẵn không, tôi có phải tự cài cert?
Tự động hoàn toàn. Mọi subdomain dùng chung chứng chỉ wildcard *.entry.io.vn; truy cập http:// sẽ tự chuyển sang https://.
Báo lỗi "Permission denied (publickey)"?
Public key của bạn chưa được thêm vào allowlist. Lấy key bằng lệnh ở mục 01 rồi gửi cho admin. Sau khi được thêm, chạy lại lệnh là vào.
Expose service không phải web (database, SSH...) được không?
Được — dùng tunnel TCP: ssh -p 2222 -R 0:localhost:5432 entry.io.vn. Hệ thống cấp một port public ngẫu nhiên trỏ về service local của bạn.
Nhiều người dùng chung được không?
Được. Mỗi người gửi public key riêng để admin thêm vào /root/sish/pubkeys/. Không giới hạn số tunnel đồng thời.
Có an toàn không?
Có 2 lớp: xác thực SSH keyHTTPS cho mọi traffic. Tuy vậy đừng expose service nhạy cảm ra public lâu dài mà không có thêm lớp bảo vệ.
Theme