Fullstack Next.js with Cloudflare 安装脚本 根据您提供的 GitHub 仓库,我创建了一个交互式安装脚本,可以帮助您设置 Fullstack Next.js 与 Cloudflare 的项目。
安装脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 #!/bin/bash set -eRED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' info () { echo -e "${BLUE} [INFO]${NC} $1 " } success () { echo -e "${GREEN} [SUCCESS]${NC} $1 " } warning () { echo -e "${YELLOW} [WARNING]${NC} $1 " } error () { echo -e "${RED} [ERROR]${NC} $1 " } check_command () { if ! command -v $1 &> /dev/null; then error "$1 未安装,请先安装 $1 " exit 1 fi } echo -e "${BLUE} ===============================================${NC} " echo -e "${BLUE} Fullstack Next.js with Cloudflare 安装脚本 ${NC} " echo -e "${BLUE} ===============================================${NC} " echo "" info "检查必要的工具..." check_command node check_command npm check_command git read -p "请输入项目名称 (默认: my-next-app): " project_nameproject_name=${project_name:-my-next-app} info "克隆仓库..." if [ -d "$project_name " ]; then warning "目录 $project_name 已存在,将尝试使用现有目录" else git clone https://github.com/ifindev/fullstack-next-cloudflare.git $project_name fi cd $project_name if [ $? -ne 0 ]; then error "克隆仓库失败" exit 1 fi info "安装依赖..." npm install if [ $? -ne 0 ]; then error "安装依赖失败" exit 1 fi info "设置环境变量..." if [ ! -f .env.local ]; then cp .env.example .env.local info "已创建 .env.local 文件,请根据需要进行编辑" else info ".env.local 文件已存在" fi read -p "是否要现在设置环境变量? (y/N): " setup_envif [[ $setup_env =~ ^[Yy]$ ]]; then read -p "数据库URL (默认: postgresql://postgres:postgres@localhost:5432/postgres): " database_url database_url=${database_url:-postgresql://postgres:postgres@localhost:5432/postgres} read -p "GitHub OAuth Client ID: " github_client_id read -p "GitHub OAuth Client Secret: " github_client_secret read -p "Google OAuth Client ID: " google_client_id read -p "Google OAuth Client Secret: " google_client_secret read -p "JWT Secret (默认: $(openssl rand -hex 32) ): " jwt_secret jwt_secret=${jwt_secret:-$(openssl rand -hex 32)} read -p "加密密钥 (默认: $(openssl rand -hex 32) ): " encryption_key encryption_key=${encryption_key:-$(openssl rand -hex 32)} sed -i.bak "s|DATABASE_URL=.*|DATABASE_URL=\"$database_url \"|" .env.local sed -i.bak "s|GITHUB_CLIENT_ID=.*|GITHUB_CLIENT_ID=\"$github_client_id \"|" .env.local sed -i.bak "s|GITHUB_CLIENT_SECRET=.*|GITHUB_CLIENT_SECRET=\"$github_client_secret \"|" .env.local sed -i.bak "s|GOOGLE_CLIENT_ID=.*|GOOGLE_CLIENT_ID=\"$google_client_id \"|" .env.local sed -i.bak "s|GOOGLE_CLIENT_SECRET=.*|GOOGLE_CLIENT_SECRET=\"$google_client_secret \"|" .env.local sed -i.bak "s|JWT_SECRET=.*|JWT_SECRET=\"$jwt_secret \"|" .env.local sed -i.bak "s|ENCRYPTION_KEY=.*|ENCRYPTION_KEY=\"$encryption_key \"|" .env.local rm -f .env.local.bak success "环境变量已更新" else info "跳过环境变量设置,您可以在 .env.local 文件中手动设置" fi info "设置数据库..." read -p "是否要设置数据库? (y/N): " setup_dbif [[ $setup_db =~ ^[Yy]$ ]]; then if ! command -v psql &> /dev/null; then warning "未找到 psql 命令,请手动设置数据库" else read -p "请输入数据库名称 (默认: postgres): " db_name db_name=${db_name:-postgres} read -p "请输入数据库用户 (默认: postgres): " db_user db_user=${db_user:-postgres} read -p "请输入数据库密码 (默认: postgres): " db_password db_password=${db_password:-postgres} if PGPASSWORD=$db_password psql -U $db_user -lqt | cut -d \| -f 1 | grep -qw $db_name ; then info "数据库 $db_name 已存在" else info "创建数据库 $db_name ..." PGPASSWORD=$db_password createdb -U $db_user $db_name fi info "运行数据库迁移..." npm run db:generate npm run db:push success "数据库设置完成" fi else info "跳过数据库设置" fi info "Cloudflare 设置..." read -p "是否要设置 Cloudflare? (y/N): " setup_cfif [[ $setup_cf =~ ^[Yy]$ ]]; then if ! command -v wrangler &> /dev/null; then info "安装 Wrangler..." npm install -g wrangler fi info "请登录您的 Cloudflare 账户..." wrangler login info "创建 KV 命名空间..." read -p "请输入 KV 命名空间名称 (默认: next_app_kv): " kv_namespace kv_namespace=${kv_namespace:-next_app_kv} kv_id=$(wrangler kv:namespace create "$kv_namespace " | grep -oP '(?<=id = ")[^"]+' ) if [ -n "$kv_id " ]; then if grep -q "kv_namespaces" wrangler.toml; then sed -i.bak "s/.*kv_namespaces.*/kv_namespaces = [{ binding = \"KV\", id = \"$kv_id \" }]/" wrangler.toml else echo -e "\n[kv_namespaces]" >> wrangler.toml echo "binding = \"KV\"" >> wrangler.toml echo "id = \"$kv_id \"" >> wrangler.toml fi success "KV 命名空间已创建并配置" else error "创建 KV 命名空间失败" fi info "创建 D1 数据库..." read -p "请输入 D1 数据库名称 (默认: next_app_db): " d1_db_name d1_db_name=${d1_db_name:-next_app_db} d1_id=$(wrangler d1 create "$d1_db_name " | grep -oP '(?<=Database ID: )[\w-]+' ) if [ -n "$d1_id " ]; then if grep -q "d1_databases" wrangler.toml; then sed -i.bak "s/.*database_id.*/database_id = \"$d1_id \"/" wrangler.toml else echo -e "\n[[d1_databases]]" >> wrangler.toml echo "binding = \"DB\"" >> wrangler.toml echo "database_name = \"$d1_db_name \"" >> wrangler.toml echo "database_id = \"$d1_id \"" >> wrangler.toml fi success "D1 数据库已创建并配置" else error "创建 D1 数据库失败" fi else info "跳过 Cloudflare 设置" fi info "构建项目..." npm run build if [ $? -ne 0 ]; then error "构建项目失败" exit 1 fi success "项目构建成功" echo -e "${GREEN} ===============================================${NC} " echo -e "${GREEN} 安装完成! ${NC} " echo -e "${GREEN} ===============================================${NC} " echo "" echo "下一步操作:" echo "1. cd $project_name " echo "2. 根据需要编辑 .env.local 文件" echo "3. 运行开发服务器: npm run dev" echo "4. 部署到 Cloudflare: npm run deploy" echo "" echo "文档: https://github.com/ifindev/fullstack-next-cloudflare" echo ""
使用说明
将上述脚本保存为 install.sh 文件
给脚本添加执行权限:chmod +x install.sh
运行脚本:./install.sh
脚本功能 这个安装脚本提供以下功能:
环境检查 :确保已安装 Node.js、npm 和 Git
项目克隆 :从 GitHub 克隆仓库
依赖安装 :安装项目所需的所有依赖
环境变量配置 :交互式设置各种 API 密钥和配置
数据库设置 :可选设置 PostgreSQL 数据库
Cloudflare 配置 :设置 KV 命名空间和 D1 数据库
项目构建 :构建项目以确保一切正常
自定义参数 脚本会提示您输入以下自定义参数:
项目名称
数据库连接字符串
GitHub OAuth 客户端 ID 和密钥
Google OAuth 客户端 ID 和密钥
JWT 密钥和加密密钥
Cloudflare KV 和 D1 数据库设置
您可以根据需要选择是否设置这些参数。
注意事项
确保您已安装 PostgreSQL(如果需要本地数据库)
确保您有 Cloudflare 账户并已登录 Wrangler
某些步骤可能需要手动操作,如 OAuth 应用的设置
这个脚本简化了官方安装说明中的步骤,使设置过程更加自动化和用户友好。
时间 : 2025-09-20T11:04:43
👤 用户 https://github.com/ifindev/fullstack-next-cloudflare
帮我更具官方安装说明写一个安装脚本。需要的api设置为自定义参数。
时间 : 2025-09-20T11:04:43
🤖 DeepSeek (deepseek-chat) Fullstack Next.js with Cloudflare 安装脚本 根据您提供的 GitHub 仓库,我创建了一个交互式安装脚本,可以帮助您设置 Fullstack Next.js 与 Cloudflare 的项目。
安装脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 #!/bin/bash set -eRED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' info () { echo -e "${BLUE} [INFO]${NC} $1 " } success () { echo -e "${GREEN} [SUCCESS]${NC} $1 " } warning () { echo -e "${YELLOW} [WARNING]${NC} $1 " } error () { echo -e "${RED} [ERROR]${NC} $1 " } check_command () { if ! command -v $1 &> /dev/null; then error "$1 未安装,请先安装 $1 " exit 1 fi } echo -e "${BLUE} ===============================================${NC} " echo -e "${BLUE} Fullstack Next.js with Cloudflare 安装脚本 ${NC} " echo -e "${BLUE} ===============================================${NC} " echo "" info "检查必要的工具..." check_command node check_command npm check_command git read -p "请输入项目名称 (默认: my-next-app): " project_nameproject_name=${project_name:-my-next-app} info "克隆仓库..." if [ -d "$project_name " ]; then warning "目录 $project_name 已存在,将尝试使用现有目录" else git clone https://github.com/ifindev/fullstack-next-cloudflare.git $project_name fi cd $project_name if [ $? -ne 0 ]; then error "克隆仓库失败" exit 1 fi info "安装依赖..." npm install if [ $? -ne 0 ]; then error "安装依赖失败" exit 1 fi info "设置环境变量..." if [ ! -f .env.local ]; then cp .env.example .env.local info "已创建 .env.local 文件,请根据需要进行编辑" else info ".env.local 文件已存在" fi read -p "是否要现在设置环境变量? (y/N): " setup_envif [[ $setup_env =~ ^[Yy]$ ]]; then read -p "数据库URL (默认: postgresql://postgres:postgres@localhost:5432/postgres): " database_url database_url=${database_url:-postgresql://postgres:postgres@localhost:5432/postgres} read -p "GitHub OAuth Client ID: " github_client_id read -p "GitHub OAuth Client Secret: " github_client_secret read -p "Google OAuth Client ID: " google_client_id read -p "Google OAuth Client Secret: " google_client_secret read -p "JWT Secret (默认: $(openssl rand -hex 32) ): " jwt_secret jwt_secret=${jwt_secret:-$(openssl rand -hex 32)} read -p "加密密钥 (默认: $(openssl rand -hex 32) ): " encryption_key encryption_key=${encryption_key:-$(openssl rand -hex 32)} sed -i.bak "s|DATABASE_URL=.*|DATABASE_URL=\"$database_url \"|" .env.local sed -i.bak "s|GITHUB_CLIENT_ID=.*|GITHUB_CLIENT_ID=\"$github_client_id \"|" .env.local sed -i.bak "s|GITHUB_CLIENT_SECRET=.*|GITHUB_CLIENT_SECRET=\"$github_client_secret \"|" .env.local sed -i.bak "s|GOOGLE_CLIENT_ID=.*|GOOGLE_CLIENT_ID=\"$google_client_id \"|" .env.local sed -i.bak "s|GOOGLE_CLIENT_SECRET=.*|GOOGLE_CLIENT_SECRET=\"$google_client_secret \"|" .env.local sed -i.bak "s|JWT_SECRET=.*|JWT_SECRET=\"$jwt_secret \"|" .env.local sed -i.bak "s|ENCRYPTION_KEY=.*|ENCRYPTION_KEY=\"$encryption_key \"|" .env.local rm -f .env.local.bak success "环境变量已更新" else info "跳过环境变量设置,您可以在 .env.local 文件中手动设置" fi info "设置数据库..." read -p "是否要设置数据库? (y/N): " setup_dbif [[ $setup_db =~ ^[Yy]$ ]]; then if ! command -v psql &> /dev/null; then warning "未找到 psql 命令,请手动设置数据库" else read -p "请输入数据库名称 (默认: postgres): " db_name db_name=${db_name:-postgres} read -p "请输入数据库用户 (默认: postgres): " db_user db_user=${db_user:-postgres} read -p "请输入数据库密码 (默认: postgres): " db_password db_password=${db_password:-postgres} if PGPASSWORD=$db_password psql -U $db_user -lqt | cut -d \| -f 1 | grep -qw $db_name ; then info "数据库 $db_name 已存在" else info "创建数据库 $db_name ..." PGPASSWORD=$db_password createdb -U $db_user $db_name fi info "运行数据库迁移..." npm run db:generate npm run db:push success "数据库设置完成" fi else info "跳过数据库设置" fi info "Cloudflare 设置..." read -p "是否要设置 Cloudflare? (y/N): " setup_cfif [[ $setup_cf =~ ^[Yy]$ ]]; then if ! command -v wrangler &> /dev/null; then info "安装 Wrangler..." npm install -g wrangler fi info "请登录您的 Cloudflare 账户..." wrangler login info "创建 KV 命名空间..." read -p "请输入 KV 命名空间名称 (默认: next_app_kv): " kv_namespace kv_namespace=${kv_namespace:-next_app_kv} kv_id=$(wrangler kv:namespace create "$kv_namespace " | grep -oP '(?<=id = ")[^"]+' ) if [ -n "$kv_id " ]; then if grep -q "kv_namespaces" wrangler.toml; then sed -i.bak "s/.*kv_namespaces.*/kv_namespaces = [{ binding = \"KV\", id = \"$kv_id \" }]/" wrangler.toml else echo -e "\n[kv_namespaces]" >> wrangler.toml echo "binding = \"KV\"" >> wrangler.toml echo "id = \"$kv_id \"" >> wrangler.toml fi success "KV 命名空间已创建并配置" else error "创建 KV 命名空间失败" fi info "创建 D1 数据库..." read -p "请输入 D1 数据库名称 (默认: next_app_db): " d1_db_name d1_db_name=${d1_db_name:-next_app_db} d1_id=$(wrangler d1 create "$d1_db_name " | grep -oP '(?<=Database ID: )[\w-]+' ) if [ -n "$d1_id " ]; then if grep -q "d1_databases" wrangler.toml; then sed -i.bak "s/.*database_id.*/database_id = \"$d1_id \"/" wrangler.toml else echo -e "\n[[d1_databases]]" >> wrangler.toml echo "binding = \"DB\"" >> wrangler.toml echo "database_name = \"$d1_db_name \"" >> wrangler.toml echo "database_id = \"$d1_id \"" >> wrangler.toml fi success "D1 数据库已创建并配置" else error "创建 D1 数据库失败" fi else info "跳过 Cloudflare 设置" fi info "构建项目..." npm run build if [ $? -ne 0 ]; then error "构建项目失败" exit 1 fi success "项目构建成功" echo -e "${GREEN} ===============================================${NC} " echo -e "${GREEN} 安装完成! ${NC} " echo -e "${GREEN} ===============================================${NC} " echo "" echo "下一步操作:" echo "1. cd $project_name " echo "2. 根据需要编辑 .env.local 文件" echo "3. 运行开发服务器: npm run dev" echo "4. 部署到 Cloudflare: npm run deploy" echo "" echo "文档: https://github.com/ifindev/fullstack-next-cloudflare" echo ""
使用说明
将上述脚本保存为 install.sh 文件
给脚本添加执行权限:chmod +x install.sh
运行脚本:./install.sh
脚本功能 这个安装脚本提供以下功能:
环境检查 :确保已安装 Node.js、npm 和 Git
项目克隆 :从 GitHub 克隆仓库
依赖安装 :安装项目所需的所有依赖
环境变量配置 :交互式设置各种 API 密钥和配置
数据库设置 :可选设置 PostgreSQL 数据库
Cloudflare 配置 :设置 KV 命名空间和 D1 数据库
项目构建 :构建项目以确保一切正常
自定义参数 脚本会提示您输入以下自定义参数:
项目名称
数据库连接字符串
GitHub OAuth 客户端 ID 和密钥
Google OAuth 客户端 ID 和密钥
JWT 密钥和加密密钥
Cloudflare KV 和 D1 数据库设置
您可以根据需要选择是否设置这些参数。
注意事项
确保您已安装 PostgreSQL(如果需要本地数据库)
确保您有 Cloudflare 账户并已登录 Wrangler
某些步骤可能需要手动操作,如 OAuth 应用的设置
这个脚本简化了官方安装说明中的步骤,使设置过程更加自动化和用户友好。
时间 : 2025-09-20T11:04:43
对话统计