赞
踩
环境:DSM6.2
问题:群晖套件起不来,想修改套件启动命令
解决办法:修改套件配置文件
背景:1.矿神套件zerotier,不能自动添加路由,有时候zerotier只能跟自己通讯
2.矿神cloudflared套件,默认使用qui2协议启动,且不能指定ipv6协议
解决过程:修改启动配置文件
群晖套件的目录主要有2个地方我们以cloudflare为例:
/var/packages/cloudflared
/volume3/@appstore/cloudflared/
套件可以理解为服务,他一般保存在下列地址
/var/packages/套件名字/scripts/start-stop-status
比如
/var/packages/cloudflared/scripts/start-stop-status
在cloudflare套件的启动命令中,查找start_daemon 开头的配置文件
start_daemon () { i=0 if [ -z "${SVC_QUIET}" ]; then if [ -z "${SVC_KEEP_LOG}" ]; then date > ${LOG_FILE} else date >> ${LOG_FILE} fi fi call_func "service_prestart" printf "%s" "$SERVICE_COMMAND" | while read -r service || [ -n "$service" ] do i=$((i + 1)) if [ -z "${SVC_QUIET}" ]; then echo "Starting ${DNAME} command ${service}" >> ${LOG_FILE} fi if [ -n "${service}" ]; then if [ -n "${SVC_NO_REDIRECT}" ]; then OUT="/dev/null"
进一步分析发现启动命令是在另一个配置文件的变量中,继续修改:
vi /var/packages/cloudflared/scripts/service-setup
发现SERVICE_COMMAND为命令直接修改即可
if [ -e $TOKEN_FILE ]; then
CLOUDFLARED_TOKEN="$(cat $TOKEN_FILE)"
fi
SERVICE_COMMAND="${SYNOPKG_PKGDEST}/bin/cloudflared --no-autoupdate tunnel run --token ${CLOUDFLARED_TOKEN}"
SVC_BACKGROUND=y
SVC_WRITE_PID=y
这里我修改为IPV6协议:
cloudflared --edge-ip-version 6 --no-autoupdate tunnel
vi /var/packages/zerotier/scripts/start-stop-status
直接加一个脚本去判断路由有没有起来
start_daemon()
{
${SYNOPKG_PKGDEST}/bin/zerotier-one $PKGVAR -d
/volume3/docker/job/zerotier.sh
echo $(pidof zerotier-one) > ${ZTO_PID_FILE}
log "Started ZeroTier ($(cat $ZTO_PID_FILE))"
}
EXIST=`ip route show 10.244.0.0/16 | wc -l`
if [ $EXIST -eq 0 ]
then
route add -net 10.244.0.0/16 dev ztyqb2flah
fi```
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。