【问题标题】:How to keep ngrok running even when signing off of a server即使在注销服务器时如何保持 ngrok 运行
【发布时间】:2018-11-13 20:28:50
【问题描述】:

我有ngrok 在我远程连接的服务器上运行。

我首先使用显而易见的 ngrok.exe http 80。问题是当我在该特定服务器上注销时,ngrok 将关闭,我将失去我的隧道。即使我已经注销了机器,有没有办法让 ngrok 隧道继续运行?我知道如果机器关闭,我无法保持隧道运行,这是显而易见的。有什么想法吗?

提前致谢。

【问题讨论】:

    标签: tunnel ngrok


    【解决方案1】:

    正如您所说,如果机器关闭,则无法保持进程运行。有很多方法可以做到这一点。在每种方法中,我假设您已经拥有以下配置文件:

    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(非吸吮服务管理器)来做到这一点。

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

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

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

      sc start ngrok
      

    创建 systemd 服务(Linux - 仅限 systemd)

    需要根。

    1. cd 到 /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
      
    3. 然后运行以下命令启动并启用服务

      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

    【讨论】:

    • 不幸的是,Ngrok Link 是一个单独的产品并且要花钱,所以除非您付费,否则这将无法使用。
    • 我已更新我的答案以显示这一点,并包含有关如何在不需要 ngrok 链接的情况下将 ngrok 设置为服务的说明。
    • 我们将配置文件放在哪里?
    • 配置文件可以放在任何地方,只要您提供文件的路径,如示例中所示。如果没有传递配置参数,它将查看此处文档指定的默认文件位置:ngrok.com/docs#default-config-location $HOME/.ngrok2/ngrok.yml 中的 $HOME 是运行进程的用户的主目录(或通过 nssm 运行 Windows 服务时的 system32 文件夹)。
    • 我使用 Snapd 安装了 ngrok,并在 ngrok.service 上有这一行 - ExecStart=/var/lib/snapd/snap/bin/ngrok start --all --config="/snap/ ngrok/config.yml”。我没有包括用户和工作目录,因为我只想让 ngrok 为 Jenkins 运行。我试图运行您给出的命令,但它给我带来了错误(代码=退出,状态=1/失败)。知道出了什么问题吗?
    猜你喜欢
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 2013-01-26
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    相关资源
    最近更新 更多