server_addr: [ngrok服务端域名]:[ngrok服务端端口]
trust_host_root_certs: false
tunnels:
# 配置ssh登录
ssh:
remote_port: 1022
proto:
tcp: 22
http:
subdomain: test
proto:
http: 8080
http_auth:
auth: 'username:password'
remote_port: auth
proto:
http: 8081
#!/bin/sh
### BEGIN INIT INFO
# Provides: ngrok
# Required-Start: $remote_fs $network $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: ngrok Service
### END INIT INFO
NAME=ngrok
# 安装目录
BASEDIR=/opt/ngrok
# 主程序
DAEMON=$BASEDIR/bin/ngrok
# PID
PIDFILE=$BASEDIR/ngrok.pid
# 配置文件
CONFFILE=$BASEDIR/conf/conf.yaml
# 日志文件
LOGFILE=/var/log/ngrok/ngrok.log
test -f $DAEMON || exit 0
test -f $CONFFILE || exit 0
. /lib/lsb/init-functions
EXTRA_OPTS="$EXTRA_OPTS -config $CONFFILE"
EXTRA_OPTS="$EXTRA_OPTS -log-level INFO -log $LOGFILE"
EXTRA_OPTS="$EXTRA_OPTS start-all"
case "$1" in
# 启动
start)
log_daemon_msg "Starting" $NAME
/sbin/start-stop-daemon --start --nicelevel 0 --quiet --oknodo \
--backgroun \
--make-pidfile --pidfile $PIDFILE \
--exec $DAEMON -- $EXTRA_OPTS
log_end_msg $?
;;
# 停止
stop)
log_daemon_msg "Stopping" $NAME
killproc -p $PIDFILE $DAEMON
RETVAL=$?
[ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE
log_end_msg $RETVAL
;;
# 重启
restart)
log_daemon_msg "Restarting" $NAME
$0 stop
$0 start
;;
reload | force-reload)
log_daemon_msg "Reloading configuration files for" $NAME
log_end_msg 0
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
*)
log_action_msg "Usage: /etc/init.d/$NAME {start|stop|status|restart|reload|force-reload}"
exit 2
;;
esac
exit 0
/etc/init.d
下假设启动脚本在/opt/ngrok/sh
下,名为ngrok.sh
ln -s /opt/ngrok/sh/ngrok.sh /etc/init.d/ngrok
# 重新加载进程,脚本才生效
sudo systemctl daemon-reload
# 启动
sudo systemctl start ngrok.service
# 设置开机自启
sudo systemctl enable ngrok