Docker
创建 install.sh 填入下列代码
#!/bin/bash
echo "=== 开始配置 RSSHub ==="
# 生成随机端口的函数
generate_random_port() {
while true; do
port=$((RANDOM % 55535 + 10000)) # 生成10000-65535之间的端口
if ! netstat -tuln 2>/dev/null | grep -q ":$port "; then
echo $port
break
fi
done
}
# 检查本地配置
if [ -d "rsshub-data" ]; then
echo "警告:检测到本地已存在 RSSHub 配置"
read -p "是否清除现有配置并重新初始化?(y/N) " answer
if [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then
echo "清理现有配置..."
rm -rf rsshub-data .env
echo "现有配置已清理"
else
echo "保留现有配置,退出脚本"
exit 0
fi
fi
# 检查 docker-compose-rsshub.yml
if [ -f "docker-compose-rsshub.yml" ]; then
echo "发现现有的 docker-compose-rsshub.yml"
read -p "是否覆盖现有的 docker-compose-rsshub.yml?(y/N) " answer
if [ "$answer" != "y" ] && [ "$answer" != "Y" ]; then
echo "保留现有 docker-compose-rsshub.yml,退出脚本"
exit 0
fi
fi
echo -e "\n1. 生成随机端口..."
RSSHUB_PORT=$(generate_random_port)
BROWSERLESS_PORT=$(generate_random_port)
echo "RSSHub 端口: $RSSHUB_PORT"
echo "Browserless 端口: $BROWSERLESS_PORT"
echo -e "\n2. 创建环境变量文件..."
cat > .env << EOL
RSSHUB_PORT=$RSSHUB_PORT
BROWSERLESS_PORT=$BROWSERLESS_PORT
REDIS_URL=redis://redis:6379/
EOL
echo "环境变量文件创建完成"
echo -e "\n3. 创建本地数据目录..."
mkdir -p rsshub-data
echo "目录创建完成"
echo -e "\n4. 创建 docker-compose-rsshub.yml..."
cat > docker-compose-rsshub.yml << EOL
version: "3.8"
services:
rsshub:
image: diygod/rsshub
container_name: rsshub-\${RSSHUB_PORT}
restart: unless-stopped
ports:
- "\${RSSHUB_PORT}:1200"
environment:
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: "\${REDIS_URL}"
PUPPETEER_WS_ENDPOINT: "ws://browserless:\${BROWSERLESS_PORT}"
depends_on:
- redis
- browserless
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:1200/healthz"]
interval: 30s
timeout: 10s
retries: 3
redis:
image: redis:alpine
restart: unless-stopped
volumes:
- redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 5
start_period: 5s
browserless:
image: browserless/chrome
container_name: browserless-\${BROWSERLESS_PORT}
restart: unless-stopped
ports:
- "\${BROWSERLESS_PORT}:3000"
ulimits:
core:
soft: 0
hard: 0
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/pressure"]
interval: 30s
timeout: 10s
retries: 3
volumes:
redis-data:
EOL
echo "配置文件创建完成"
echo -e "\n5. 设置目录权限..."
# 如果服务中需要其他权限设置,请在此补充逻辑
echo "权限设置完成"
echo -e "\n6. 创建管理脚本..."
cat > manage-rsshub.sh << EOL
#!/bin/bash
source .env
case \$1 in
start)
echo "启动 RSSHub..."
docker compose -f docker-compose-rsshub.yml up -d
echo "RSSHub 已启动!"
echo "RSSHub 访问地址: http://localhost:\$RSSHUB_PORT"
;;
stop)
echo "停止 RSSHub..."
docker compose -f docker-compose-rsshub.yml down
;;
restart)
echo "重启 RSSHub..."
docker compose -f docker-compose-rsshub.yml restart
;;
status)
docker compose -f docker-compose-rsshub.yml ps
;;
logs)
docker compose -f docker-compose-rsshub.yml logs -f
;;
info)
echo "RSSHub 信息:"
echo "RSSHub 访问地址: http://localhost:\$RSSHUB_PORT"
echo "Browserless 访问地址: http://localhost:\$BROWSERLESS_PORT"
echo "Redis 连接地址: \$REDIS_URL"
;;
*)
echo "用法: \$0 {start|stop|restart|status|logs|info}"
;;
esac
EOL
chmod +x manage-rsshub.sh
echo "管理脚本创建完成"
echo -e "\n7. 配置完成!"
echo "随机分配的 RSSHub 端口: $RSSHUB_PORT"
echo "随机分配的 Browserless 端口: $BROWSERLESS_PORT"
echo -e "\n你可以使用以下命令:"
echo "- ./manage-rsshub.sh start # 启动服务"
echo "- ./manage-rsshub.sh stop # 停止服务"
echo "- ./manage-rsshub.sh restart # 重启服务"
echo "- ./manage-rsshub.sh status # 查看服务状态"
echo "- ./manage-rsshub.sh logs # 查看服务日志"
echo "- ./manage-rsshub.sh info # 查看服务信息"
# 询问是否立即启动服务
read -p "是否立即启动 RSSHub?(y/N) " answer
if [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then
echo "启动 RSSHub..."
docker compose -f docker-compose-rsshub.yml up -d
echo -e "\nRSSHub 已启动!"
echo "RSSHub 访问地址: http://localhost:$RSSHUB_PORT"
echo "Browserless 访问地址: http://localhost:$BROWSERLESS_PORT"
fik8s
将 NaturalSelection Labs Chart 仓库添加到 Helm:
helm repo add nsl https://naturalselectionlabs.github.io/helm-charts更新 Chart 仓库:
helm repo update拉取 chart,并解压,复制其中的 values
helm pull nsl/rsshub
tar -zxvf rsshub*.tgz
cp ./rsshub/values.yaml .使用 helm 命令行安装:
helm install rsshub nsl/rsshub -f