| 入口 | 地址 | 适用场景 |
|---|---|---|
| 家里局域网 | http://192.168.x.x:8099 | 人在家里,最高速 |
| Tailscale 内网 | http://100.113.156.117:8099 | 在外面用手机查东西、SSH 进去改脚本 |
| Funnel 公网 | https://desktop-dpg62md.tail68eaa9.ts.net | 给不装 Tailscale 的人看、分享链接 |
注意:Funnel 只转发 HTTP / HTTPS,所以 SSH 走不了公网,必须用 Tailscale 网络。
100.113.156.117、端口 22、用户 mengdehttp://100.113.156.117:8099doh.pub。换手机流量再试。内网地址 100.113.156.117 是保底方案,一定可用。
以 TickFlow 后端跑在 3011 端口为例,三步:
http://127.0.0.1:3011 有内容nohup,会话一结束进程就被杀。要用计划任务(见第 5 节)# 挂在 8443 端口(Funnel 允许 443 / 8443 / 10000)
sudo "C:\Program Files\Tailscale\tailscale.exe" funnel --bg --https=8443 http://127.0.0.1:3011
# 查看当前所有映射
"C:\Program Files\Tailscale\tailscale.exe" funnel status
之后访问地址就是 https://desktop-dpg62md.tail68eaa9.ts.net:8443。
/tickflow、/manual)?Funnel 是按端口整体代理的,不支持按路径分发,需要在本地先跑一个反向代理(nginx / caddy)再把它挂上去。
| 任务名 | 时间 | 作用 |
|---|---|---|
| 竞价专用机-0920唤醒就绪 | 09:20 | 唤醒机器,准备竞价数据 |
| 竞价专用机-0926兜底并休眠 | 09:26 | 兜底执行后让机器休眠 |
| 竞价专用机-1535唤醒就绪 | 15:35 | 唤醒,准备收盘选股 |
| 竞价专用机-1545兜底并休眠 | 15:45 | 兜底执行后休眠 |
| server-page-8099 | 开机时 | 常驻本状态页(8099) |
脚本位置:D:\盯盘工具,解释器 D:\python\pythonw.exe。--bg 任务配了 WakeToRun,到点会自动唤醒机器。
# ——— 状态自检 ———
netstat -ano | findstr LISTENING # 哪些端口在听
tasklist | findstr pythonw # 后台 Python 进程
# ——— Tailscale ———
"C:\Program Files\Tailscale\tailscale.exe" status # 设备与对端列表
"C:\Program Files\Tailscale\tailscale.exe" ip -4 # 本机虚拟 IP
"C:\Program Files\Tailscale\tailscale.exe" funnel status # 公网映射一览
# ——— 服务重启(需管理员) ———
Restart-Service sshd
Restart-Service Tailscale
# ——— 计划任务 ———
Get-ScheduledTask | Where-Object {$_.TaskName -like "*竞价*"} | Get-ScheduledTaskInfo
Start-ScheduledTask -TaskName "server-page-8099" # 手动触发
Stop-ScheduledTask -TaskName "server-page-8099"
# ——— 站点日志 ———
type C:\Users\mengde\server_www\server.log
PowerShell 管理员窗口执行(普通权限注册计划任务会被拒):
$a = New-ScheduledTaskAction -Execute "D:\python\pythonw.exe" `
-Argument '-m http.server 9000 --directory D:\mysite'
$t = New-ScheduledTaskTrigger -AtLogOn
$p = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" `
-LogonType Interactive -RunLevel Limited
$s = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries `
-DontStopIfGoingOnBatteries -ExecutionTimeLimit ([TimeSpan]::Zero)
Register-ScheduledTask -TaskName "mysite-9000" -Action $a -Trigger $t `
-Principal $p -Settings $s -Force
Start-ScheduledTask -TaskName "mysite-9000"
stderr 是 None,直接 -m http.server 会在第一个请求就静默崩溃(端口看着在听,请求全挂)。解决办法是套一层包装脚本,显式把 stdout/stderr 重定向到文件——参考 C:\Users\mengde\server_www\serve.py。
login.tailscale.com/admin/machines → desktop-dpg62md → Disable key expiry。不关的话 180 天后设备静默掉线,你会以为机器坏了。
另:tailscale.com 域名在国内被 DNS 污染,客户端本身不受影响(走 IP 直连控制面),但万一哪天连不上,备选方案是 cpolar / 花生壳这类国内穿透服务。