如何在注销服务器后保持ngrok运行

18

我将ngrok运行在一台远程登录的服务器上。

我通过使用ngrok.exe http 80来启动它。问题是,当我注销该服务器时,ngrok将关闭并且我将失去隧道连接。有没有办法可以让ngrok隧道继续保持运行状态,即使我已经注销了机器?我理解如果机器被关闭,我无法保持隧道运行,这是显而易见的。有什么想法吗?

提前致谢。

1个回答

44

正如你所说,如果机器关闭了,那么就没有办法让进程继续运行。有许多方法可以做到这一点。在这些方法中,我假设您已经拥有了以下配置文件:

config.yml

authtoken: <your-auth-token>
tunnels:
    default:
        proto: http
        addr: 80

Ngrok链接(Windows/Mac OS/Linux,商业版)

使用ngrok链接,只需运行以下命令:

ngrok service install -config /path/to/your/config.yml
ngrok service start

您应该能够像管理运行在您给定操作系统上的任何其他服务一样管理ngrok。

Nohup(Maco OS / Linux)

nohup命令通常默认安装在Mac OS和Linux上。要运行此命令,请使用以下方式:

nohup ngrok start --all --config="path/to/config.yml" &

在屏幕中运行应该也可以在这里实现相同的效果。

创建 Windows 服务(Windows)

要创建服务,您需要下载一个从非服务可执行文件创建服务的程序。这里我将使用 NSSM(Non-Sucking Service Manager)来说明如何操作。

  1. 下载可执行文件
  2. 打开CMD并进入与nssm.exe相同的目录
  3. 运行以下命令:

    nssm.exe install ngrok
    
  4. 在出现的窗口中选择ngrok可执行文件,并将以下内容添加到参数中,然后点击“安装服务”。

  5. start --all --config="C:\path\to\my\config.yml"
    
  6. 现在可以从服务管理器中管理该服务。要启动它,请打开管理员终端并运行以下命令:

  7. sc start ngrok
    

    创建一个systemd服务 (仅适用于Linux - systemd)

    需要root权限。

    1. 进入 /etc/systemd/system/ 目录

    2. 创建以下文件:

      ngrok.service

    [Unit]
    Description=Ngrok
    After=network.service
    
    [Service]
    type=simple
    User=<your_user_name>
    WorkingDirectory=/home/<your_user_name>
    ExecStart=/usr/bin/ngrok start --all --config="/path/to/config.yml"
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    
  8. 然后运行以下命令以启动并启用服务

  9. systemctl enable ngrok.service && systemctl start ngrok.service
    

来源:

https://ngrok.com/docs/ngrok-link#service

https://www.freedesktop.org/software/systemd/man/systemd.unit.html

https://nssm.cc/commands


4
很遗憾,Ngrok Link是一款单独的付费产品,因此如果您不付费的话就无法使用它。我会尽力保证翻译内容准确且易于理解,但不会添加任何额外的信息或解释。 - Yusha
2
我已更新我的答案以显示此内容,并包括如何设置ngrok服务而无需ngrok链接的说明。 - Hobbid Hobbin
我们应该把配置文件放在哪里? - Kavi Vaidya
1
配置文件可以放在任何地方,只要您像示例中那样提供文件路径即可。如果没有传递配置参数,则会在文档中指定的默认文件位置查找:https://ngrok.com/docs#default-config-location $HOME 在 $HOME/.ngrok2/ngrok.yml 中是运行进程的用户的主目录(或通过 nssm 运行 Windows 服务时的 system32 文件夹)。 - Hobbid Hobbin
我如何使用ngrok的免费版本实现这个?这个解决方案仅适用于ngrok-link,而我需要支付费用才能使用该版本。 - Opa114
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接