网盘聚合搜索项目Aipan(爱盼)【续】

同步来源:树洞剪藏 源站剪藏 ID:226 原文地址:https://mp.weixin.qq.com/s/M-av3SP1KRaUomy5vpo4oQ
网盘聚合搜索项目Aipan(爱盼)【续】
网盘聚合搜索项目Aipan(爱盼)【续】
原创
杨浦老苏
各种折腾
2024年12月03日 20:42 上海
各种折腾 聚沙成塔,集腋成裘 766篇原创内容
公众号 ,
前言 本文是 网盘聚合搜索项目Aipan(爱盼) 的后续 当时留了个尾巴,就是无法登陆 Aipan 的后台。从官方代码的 Issue #67 看,作者建议用户在本地编译,这个对大部分用户来说是比较困难的。 老苏分析了镜像中生成的 js 和 mjs 文件,发现编译时,会将环境变量保存在 nitro.mjs 文件中,但是在运行时设置的环境变量则不会,所以我们要做的是,把运行时设置的环境变量替换到 nitro.mjs 中 找到了原因,解决起来就简单了,老苏准备拿出惯用的 占位符 法,来解决这个问题 构建镜像
如果你不想自己构建,可以跳过,直接阅读下一章节 Dockerfile 官方提供了 Dockerfile ,但老苏编译的时候,可能因为是虚拟机的缘故,在构建时出现了 JavaScript 堆内存不足 的错误。这通常发生在 Node.js 应用程序在处理大量数据或复杂操作时 114.8 ✔ Server built in 41821ms 115.0 [nitro] ✔ Generated public .output/public 116.7 [nitro] ℹ Building Nuxt Nitro server (preset: node-server, compatibility date: 2024-09-12) 239.9 239.9 <--- Last few GCs ---> 239.9 239.9 [16:0x7f4c8031f660] 229536 ms: Mark-Compact 2034.0 (2091.6) -> 2024.7 (2092.6) MB, 3942.93 / 0.00 ms (average mu = 0.225, current mu = 0.055) allocation failure; scavenge might not succeed 239.9 [16:0x7f4c8031f660] 235234 ms: Mark-Compact 2033.1 (2092.6) -> 2027.7 (2093.6) MB, 5486.97 / 0.00 ms (average mu = 0.127, current mu = 0.037) allocation failure; scavenge might not succeed 239.9 239.9 239.9 <--- JS stacktrace ---> 239.9 239.9 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 239.9 ----- Native stack trace ----- 239.9 246.5 npm error path /app 246.5 npm error command failed 246.5 npm error signal SIGABRT 246.5 npm error command sh -c nuxt build 246.5 npm error A complete log of this run can be found in: /root/.npm/_logs/2024-12-02T16_02_24_571Z-debug-0.log
所以老苏微微做了一点点改动,增加了一句 ENV NODE_OPTIONS="--max-old-space-size=4096" ,来对 Node.js 的内存进行限制
第一阶段:构建阶段
FROM node: 20.18 . 0 -alpine AS builder LABEL authors= "Lei"
设置工作目录
WORKDIR /app
安装 pnpm
RUN npm install -g pnpm
复制 package.json 和 pnpm-lock.yaml(或 package-lock.json,如果有)
COPY package*.json ./
安装构建依赖
RUN pnpm install
复制所有项目文件
COPY . .
生成 Prisma 客户端(不执行数据库迁移)
RUN npx prisma generate
构建 Nuxt.js 项目
ENV NODE_OPTIONS= "--max-old-space-size=4096" RUN npm run build
第二阶段:运行阶段
FROM node: 20.18 . 0 -alpine LABEL authors= "Lei"
设置工作目录
WORKDIR /app
复制构建后的项目文件
COPY --from=builder /app/.output .output COPY --from=builder /app/node_modules node_modules COPY --from=builder /app/package.json package.json
复制 prisma schema 文件
COPY --from=builder /app/prisma /app/prisma
复制启动脚本
COPY start.sh /app/start.sh RUN chmod +x /app/start.sh
设置公共的环境变量
ENV NUXT_HOST= 0.0 . 0.0 ENV NUXT_PORT= 3000
暴露端口
EXPOSE 3000
使用启动脚本作为启动命令
CMD [ "/app/start.sh" ]
env 需要在 .env 中添加特定的字符串,方便后面进行替换 ADMIN_USER="admin_user" ADMIN_PASSWORD="admin_password" ADMIN_EMAIL="admin_email" JWT_SECRET="jwt_secret" DATABASE_SCHEMA="database_schema" DATABASE_URL="database_url" SHADOW_DATABASE_URL="shadow_database_url"
复制到服务器上的 .env 文件 然后执行docker compose 命令
GitHub 配置
GitHub 用户名
NUXT_PUBLIC_GITHUB_OWNER="nuxt_public_github_owner"
用于存储图片的仓库名称
NUXT_PUBLIC_GITHUB_REPO="nuxt_public_github_repo"
GitHub Personal Access Token
NUXT_PUBLIC_GITHUB_TOKEN="nuxt_public_github_token" # 替换为新生成的 token
默认分支名称
NUXT_PUBLIC_GITHUB_BRANCH="nuxt_public_github_branch"
start.sh 老苏在官方的 start.sh 中间,插入了一段替换 .env 中设定的特定字符串的脚本,其他未做任何修改 #!/bin/sh
检查必要的环境变量是否已设置
: " ${ADMIN_PASSWORD:?Need to set ADMIN_PASSWORD} " : " ${ADMIN_EMAIL:?Need to set ADMIN_EMAIL} " : " ${JWT_SECRET:?Need to set JWT_SECRET} " : " ${DATABASE_URL:?Need to set DATABASE_URL} " : " ${DATABASE_SCHEMA:?Need to set DATABASE_SCHEMA} "
以下这段新增用来替换环境变量的实际值
sed -i -e 's,admin_user,' " ${ADMIN_USER} " ',g'
-e 's,admin_password,' " ${ADMIN_PASSWORD} " ',g'
-e 's,admin_email,' " ${ADMIN_EMAIL} " ',g'
-e 's,jwt_secret,' " ${JWT_SECRET} " ',g'
-e 's,database_schema,' " ${DATABASE_SCHEMA} " ',g'
-e 's,database_url,' " ${DATABASE_URL} " ',g'
-e 's,shadow_database_url,' " ${SHADOW_DATABASE_URL} " ',g'
-e 's,nuxt_public_github_owner,' " ${NUXT_PUBLIC_GITHUB_OWNER} " ',g'
-e 's,nuxt_public_github_repo,' " ${NUXT_PUBLIC_GITHUB_REPO} " ',g'
-e 's,nuxt_public_github_token,' " ${NUXT_PUBLIC_GITHUB_TOKEN} " ',g'
-e 's,nuxt_public_github_branch,' " ${NUXT_PUBLIC_GITHUB_BRANCH} " ',g'
/app/.output/server/chunks/nitro/nitro.mjs
echo "Running database migrations..."
执行数据库迁移,并指定 schema 文件的位置
npx prisma migrate deploy --schema=/app/prisma/schema.prisma
echo "Starting application..."
启动 Nuxt.js 应用
exec node .output/server/index.mjs
解释 :
-i :直接修改文件。
-e :指定要执行的命令,可以多次使用以进行多个替换。
s,...,g :替换命令, g 表示全局替换。
"${ADMIN_USER}" 等:使用双引号引用变量,确保变量的值被正确解析。 构建 构建镜像和容器运行的基本命令如下👇
下载代码
git clone https://github.com/unilei/aipan-netdisk-search.git
进入目录
cd aipan-netdisk-search
创建 .env 文件
cp .env.example .env
修改 start.sh 文件
构建镜像
docker build -t wbsu2003/aipan-netdisk-search:v1 .
安装 请参考上文,但因为更换了镜像,所以 docker-compose.yml 中需要将 image: unilei/aipan-netdisk-search:amd64 修改为 image: wbsu2003/aipan-netdisk-search:latest ,其他都是一样
文章传送门: 网盘聚合搜索项目Aipan(爱盼) 运行 看起来主页面上又多了 本地音乐播放器 后台 在浏览器中输入 http://群晖IP:3295/login 就能看到后台界面 输入我们在环境变量中设置的账号和密码就可以了 云盘 老苏随便加了一个,但没弄明白怎么用 在前端页面上没有找到入口,有知道的请给老苏科普一下 博客 点 新建文章 功能一目了然 Alist 需要那种能匿名访问的,老苏在网上找了一个 点 添加数据源
名称 :这是标识,直接用了网站的
源链接 :切记不要以 / 结尾,一般复制网址都会带,记得删掉,否则会刷不出列表 添加成功后,可以切换到 tv 界面 在浏览器中输入 http://群晖IP:3295/tv 切到主页 找部电影看看 参考文档
unilei/aipan-netdisk-search: 本项目乃是基于 Vue 与 Nuxt.js 技术打造的网盘搜索项目,持续开源并保持维护更新。其旨在让人人皆可拥有属于自己的网盘搜索网站。强烈建议自行部署,向所有参与者致敬!Salute to all! 地址:https://github.com/unilei/aipan-netdisk-search 网盘聚合搜索项目Aipan(爱盼) | 老苏的blog 地址:https://laosu.tech/2024/11/16/网盘聚合搜索项目Aipan(爱盼) 使用最新的官方Docker镜像;无法登陆后台(邮箱或密码不正确) · Issue #67 · unilei/aipan-netdisk-search 地址:https://github.com/unilei/aipan-netdisk-search/issues/67
各种折腾 聚沙成塔,集腋成裘 766篇原创内容
公众号 , @所有人:写文不易,如果你都看到了这里,请点个 赞 和 在看 ,分享给更多的朋友;为确保你能收到每一篇文章,请主页右上角设置星标。
预览时标签不可点
群晖 670 docker 677 网盘 49 搜索 10
群晖 · 目录
上一篇 多功能一站式服务平台UniBoard
阅读原文
关闭
更多
小程序 广告
搜索「undefined」网络结果
微信扫一扫 关注该公众号
当前内容可能存在未经审核的第三方商业营销信息,请确认是否继续访问。
继续访问 取消 微信公众平台广告规范指引
: , 。
视频 小程序 赞 ,轻点两下取消赞 在看 ,轻点两下取消在看 分享 留言 收藏