【教程】RSSHub 安装


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"
fi

k8s

将 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

参考资料

https://docs.rsshub.app/zh/deploy/


如果本文帮助到了你,帮我点个广告可以咩(o′┏▽┓`o)


评论
  目录