两种在Colab Tunnel的方法
2024/06/17更新:补充一个 self-host 方式:
首先介绍一个项目:awesome-tunneling,这里记录了许多隧道工具。
最最懒人的方案是 ssh -oStrictHostKeyChecking=no -p 443 -R0:localhost:<port> a.pinggy.io
,通过 ssh 来 tunnel,服务提供随机域名,什么都不用装,临时使用很方便。
自建方案比较方便的有 bore 和 wstunel,bore 只支持 TCP,wstunnel 支持 TCP+UDP。
比较方便是指项目提供 bin 且不需要配置文件,一行命令就能启动。
# localhost service ./wstunnel client -R tcp://<access_port>:localhost:<service_port> wss://server.public.ip:<ws-port> -P <password>
# server with public ip ./wstunnel server -s <passord> wss://0.0.0.0:<ws-port>
最后访问 server.public.ip:<access_port>
。
反向隧道只是 wstunnel 的功能之一,本身也可以当作代理用,不过这样的话就不如 glider 更灵活。
最近Cloudflare Tunnel不太稳定,所以又用回了ngrok,顺便也记录一下localtunnel的用法。
主要是实现静态地址的访问。
ngrok版,需要在后台的Endpoints里获得一个分配的域名,然后在Edges加上它。
!pip install pyngrok
!ngrok config add-authtoken "XXXAUTH...TOKENXXX"
import os
get_ipython().system = os.system
def tunnel_ng():
!nohup ngrok tunnel --label edge="edghts_xxx...xxx" http://localhost:8443 &
tunnel_ng()
!python -m http.server --directory /content 8443
localtunnel版,SUBDOMAIN
可以改为自己喜欢的静态前缀,以后就可以一直用。
!npm install -g localtunnel
SUBDOMAIN="static-sub-domain"
PORT=8443
def tunnel_lt(domain=SUBDOMAIN, port=PORT):
get_ipython().system_raw(f'lt --local-host 0.0.0.0 --subdomain {domain} --port {port} >/dev/null 2>&1 &')
print(f'public.url:\nhttps://{domain}.loca.lt\npassword:')
!curl --no-progress-meter https://loca.lt/mytunnelpassword; printf "\n"
tunnel_lt()
!python -m http.server --directory /content 8443