apt update
apt install docker-compose-plugin -y
#安装docker compose

docker compose  version
Docker Compose version v2.38.2

sudo mkdir -p /sda1/data/mysql/conf.d

sudo chown -R 999:999 /sda1/data/mysql # MySQL 用户 UID 通常为 999

cat docker-compose.yml 
version: '3.8'

services:
  # MySQL 服务
  mysql:
    image: mysql:8.0
    container_name: mysql-server
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 密码 # 请修改为强密码
      MYSQL_DATABASE: aipan_db
      MYSQL_USER: aipan_user
      MYSQL_PASSWORD: 密码
    volumes:
      - /sda1/data/mysql:/var/lib/mysql  # 数据持久化
      - /sda1/data/mysql/conf.d:/etc/mysql/conf.d  # 配置文件挂载
    ports:
      - "3306:3306"
    networks:
      - app-network

  # aipan-netdisk-search 服务
  aipan:
    image: unilei/aipan-netdisk-search:latest
    container_name: aipan-netdisk-search-app
    restart: always
    depends_on:
      - mysql
    environment:
      # 配置数据库连接 URL,使用服务名 `mysql` 作为主机名
      DATABASE_URL: "mysql://aipan_user:密码@mysql:3306/aipan_db?schema=public"
    ports:
      - "3000:3000"
    networks:
      - app-network

networks:
  app-network:
    driver: bridge
 

docker compose up -d

 IP:3000访问

速度更快的版本


AIPan网盘搜索应用部署指南

本文档提供了AIPan网盘搜索应用的部署说明,包括系统要求、安装步骤和配置选项。

系统要求

  • Docker (20.10.0或更高版本)
  • Docker Compose (v2或更高版本)
  • 至少2GB RAM
  • 至少10GB可用磁盘空间
  • 互联网连接(用于拉取Docker镜像)

快速部署

1. 下载部署脚本

curl -O https://raw.githubusercontent.com/unilei/aipan.me/main/deploy.sh
chmod +x deploy.sh

2. 运行部署脚本

./deploy.sh

3. 选择部署选项

脚本将显示以下选项:

===== AIPan网盘搜索部署脚本 =====1) 完整部署 (首次部署或重新部署)2) 更新配置 (仅修改配置并重启服务)3) 运行数据库迁移 (初始化或更新数据库结构)4) 重新生成 Prisma 客户端 (解决 Prisma 相关问题)5) 退出

对于首次部署,选择选项1

部署过程详解

完整部署

选择选项1后,脚本将执行以下操作:

  1. 检查Docker和Docker Compose是否已安装
  2. 创建配置文件(.env和docker-compose.yml)
  3. 生成随机管理员凭据(用户名、密码、JWT密钥)
  4. 拉取所需的Docker镜像
  5. 启动应用服务

部署完成后,应用将在以下地址可用:

  • Web应用:http://localhost:3000
  • WebSocket:ws://localhost:3002

重要提示:管理员凭据将保存在admin_credentials.txt文件中,请妥善保管此文件!

更新配置

如需修改配置,选择选项2。此选项允许您:

  1. 编辑.env文件
  2. 重启服务以应用新配置

运行数据库迁移

如需初始化或更新数据库结构,选择选项3。此选项将:

  1. 检查PostgreSQL容器是否运行
  2. 执行Prisma数据库迁移
  3. 运行数据库种子脚本

重新生成Prisma客户端

如遇到Prisma相关问题,选择选项4。此选项将:

  1. 重新生成Prisma客户端
  2. 可选择重启应用以应用更改

配置选项

端口配置

默认情况下,应用使用以下端口:

  • 应用端口:3000
  • WebSocket端口:3002

您可以在部署过程中自定义这些端口。

环境变量

主要环境变量说明:

变量名说明默认值
ADMIN_USER管理员用户名随机生成
ADMIN_PASSWORD管理员密码随机生成
ADMIN_EMAIL管理员邮箱随机生成
JWT_SECRETJWT密钥随机生成
APP_PORT应用端口3000
WS_PORTWebSocket端口3002
POSTGRES_USERPostgreSQL用户名postgres
POSTGRES_PASSWORDPostgreSQL密码postgres
POSTGRES_DBPostgreSQL数据库名aipan

GitHub配置(可选)

如需启用GitHub集成,请在.env文件中设置以下变量:

NUXT_PUBLIC_GITHUB_OWNER="您的GitHub用户名或组织名"
NUXT_PUBLIC_GITHUB_REPO="您的GitHub仓库名"
NUXT_PUBLIC_GITHUB_TOKEN="您的GitHub个人访问令牌"
NUXT_PUBLIC_GITHUB_BRANCH="您的GitHub分支名"

Quark配置(可选)

如需启用Quark集成,请在.env文件中设置以下变量:

NUXT_PUBLIC_QUARK_COOKIE="您的Quark Cookie"

常见问题

端口冲突

如果默认端口已被占用,脚本将自动寻找可用端口。

数据库认证失败

如果遇到数据库认证失败的错误(如 Authentication failed against database server, the provided database credentials for 'aipan' are not valid),可能是因为:

  1. 自定义数据库用户未正确创建或缺少权限
  2. 数据库连接字符串配置错误

解决方法

  • 运行部署脚本选项 3(运行数据库迁移),这将自动修复用户权限
  • 或者手动执行以下命令创建用户并授权:
docker exec aipan-postgres psql -U postgres -c "CREATE USER aipan WITH PASSWORD 'aipan123';"
docker exec aipan-postgres psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE aipan TO aipan;"

表权限错误

如果遇到表权限错误(如 permission denied for table ForumCategory),表示数据库用户没有足够的权限访问表。

解决方法

  • 运行部署脚本选项 3(运行数据库迁移),这将自动更新表权限
  • 或者手动执行以下命令授予表权限:
docker exec aipan-postgres psql -U postgres -d aipan -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO aipan;"
docker exec aipan-postgres psql -U postgres -d aipan -c "GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO aipan;"

数据持久化

应用数据存储在Docker卷中:

  • PostgreSQL数据:postgres-data
  • Redis数据:redis-data

查看日志

要查看应用日志,请运行:

docker-compose logs -f aipan-netdisk-search

停止服务

要停止所有服务,请运行:

docker-compose down

重启服务

要重启所有服务,请运行:

docker-compose restart

高级用法

手动编辑配置

您可以直接编辑.env文件来修改配置,然后重启服务:

nano .env
docker-compose restart

清理Docker资源

在部署过程中,您可以选择清理无用的Docker资源,包括:

  • 停止的容器
  • 未使用的网络
  • 未使用的数据卷

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90611.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90611.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/90611.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RAG情境化分段向量模型voyage-context-3,聚焦分段细节,融入全局文档上下文

最近看到一个有意思的工作,原文来自: https://blog.voyageai.com/2025/07/23/voyage-context-3/?utm_sourceTWITTER&utm_mediumORGANIC_SOCIAL voyage-context-3:聚焦分段细节,融入全局文档上下文 概要: Voyage A…

计算机体系结构中的中断服务程序ISR是什么?

计算机体系结构中的中断服务程序ISR是什么? 在计算机体系结构中,中断服务程序(Interrupt Service Routine, ISR) 是操作系统或硬件直接调用的关键代码模块,用于响应来自硬件设备、软件异常或系统事件的中断信号。其核心…

开源项目XBuilder前端框架

spx-gui/ 配置文件package.json 项目依赖和脚本配置vite.config.ts Vite构建工具配置tsconfig.json TS项目配置主文件tsconfig.app.json 应用程序的TS配置tsconfig.node.json Node.js环境的TS配置index.html 应用入口HTML文件src/ 源码目录main.ts 应用入口文件,初始…

0723 单项链表

Part 1.完成单向链表,并完成下面功能1.单链表节点创建链表是物理空间上不连续的一个结构,需要创建一个next作为指向下一个节点的指针,所以需要建立一个结构体包含数据域,next指针域,记录长度的数据域。因为长度只有头节…

基于 ASP.NET Web 应用程序(.NET Framework)的花店系统

1.1功能模块实现1.1.1整体结构界面由两部分组成:左侧导航栏、右侧内容展示区。使用了 Bootstrap 5 的样式库,并结合了 ASP.NET MVC 的 Html.ActionLink 和 Razor 条件判断语句来动态生成菜单项。1.1.2导航栏功能模块导航栏基础结构导航栏基础结构使用 Bo…

C++ Qt6 CMake qml文件启动方式说明

在Qt6之后,Qt程序默认使用CMake进行构建,当然也可以使用qmake, 本篇博客介绍Qt6.8之前和Qt6.8版本中QtQuick程序的启动方式。 在QtQuick程序main.cpp里qml的文件启动分为两种:(1)直接加载qml文件,(2)加载qml模块,下面分别介绍这两种启动方式。 方式1:直接启动qml文…

字符串 “asdasjkfkasgfgshaahsfaf” 经过哈夫曼编码之后存储比特数是多少?

要计算字符串 “asdasjkfkasgfgshaahsfaf” 经过哈夫曼编码后的存储比特数,需按以下步骤进行:步骤 1:统计字符出现频率先统计字符串中每个字符的出现次数:a:出现 6 次s:出现 6 次d:出现 1 次j&a…

什么是游戏盾(高防版)?

随着网络游戏产业的快速发展,游戏服务器的安全问题日益受到关注。DDoS攻击、CC攻击等网络威胁常常导致游戏卡顿、断线甚至服务器宕机,严重影响玩家体验。游戏盾(高防版)是一种专为游戏业务设计的网络安全防护服务,集成…

openGauss数据库在CentOS 7 中的单机部署与配置

部署 版本选择 通过openGuass官网下载地址 ,我们可以看到它支持x86_64与Aarch64两种平台,又分成openEuler 22、openEuler 20、Centos 7以及Docker 版本。 进入CentOS 7标签,看到又分成企业版、轻量版、极简版与分布式镜像版。 本文只讨论…

HTTP响应状态码详解

HTTP 响应状态码(HTTP Status Code)是服务器在响应客户端请求时返回的 3 位数字代码,用于表示请求的处理状态。以下是常见的 HTTP 状态码及其含义: 1xx(信息性状态码) 表示请求已被接收,需要继…

Pytorch中register_buffer和torch.nn.Parameter的异同

说下register_buffer和Parameter的异同 相同点方面描述追踪都会被加入 state_dict(模型保存时会保存下来)。与 Module 的绑定都会随着模型移动到 cuda / cpu / float() 等而自动迁移。都是 nn.Module 的一部分都可以通过模块属性访问,如 self…

吉吉巳资源整站源码完整打包,适用于搭建资源聚合/整合类站点,全网独家,拿来就用

想要搭建一个资源整合站点,如影视聚合类站点、资讯聚合类站点、图集聚合类站点等,需要花费大量的时间来查找合适的系统或源码。然后要去测试,修复bug,一直到能够正常的运营使用,花费的时间绝对不短,今天分享…

嵌入式学习的第三十五天-进程间通信-HTTP

TCP/IP协议模型:应用层:HTTP;传输层:TCP UDP;网络层:IPv4 IPv6网络接口层一、HTTP协议1. 万维网WWW(World Wide Web) 世界范围内的,联机式的信息储藏所。 万维网解决了获取互联网上的数据时需要解决的以下问题&#x…

es 和 lucene 的区别

1. Lucene 是“发动机”,ES 是“整车”Lucene:只是一个 Java 库,提供倒排索引、分词、打分等底层能力。你必须自己写代码处理索引创建、更新、删除、分片、分布式、故障恢复、API 封装等所有逻辑。Elasticsearch:基于 Lucene 的分…

AS32S601 系列 MCU芯片GPIO Sink/Source 能力测试方法

一、引言随着电子技术的飞速发展,微控制器(MCU)在工业控制、汽车电子、商业航天等众多领域得到了广泛应用。国科安芯推出的AS32S601 系列 MCU 以其卓越的性能和可靠性,成为了众多设计工程师的首选之一。为了确保其在实际应用中的稳…

JAVA-08(2025.07.24学习记录)

面向对象类package com.mm;public class Person {/*** 名词-属性*/String name;int age;double height;/*** 动词-方法*/public void sleep(String add) {System.out.println("我在" add "睡觉");}public String introduce() {return "我的名字是&q…

地下隧道管廊结构健康监测系统 测点的布设及设备选型

隧道监测背景 隧道所处地下环境复杂,在施工过程中会面临围堰变形、拱顶沉降、净空收敛、初衬应力变化、土体塌方等多种危险情况。在隧道营运过程中,也会受到材料退化、地震、人为破坏等因素影响,引发隧道主体结构的劣化和损坏,若不…

node.js卸载与安装超详细教程

文章目录一、卸载Step1:通过控制面板删除node版本Step2:删除node的安装目录Step3:查找.npmrc文件是否存在,有就删除。Step4:查看以下文件是否存在,有就删除Step5:打开系统设置,检查系…

飞算JavaAI“删除接口信息” 功能:3 步清理冗余接口,让管理效率翻倍

在飞算JavaAI的接口设计与管理流程中,“删除接口信息” 功能为用户提供了灵活调整接口方案的便利。该功能的存在,让用户能够在接口生命周期的前期(审核阶段)及时清理无需创建的接口,保证接口管理的简洁性与高效性。一、…

行业热点丨SimLab解决方案如何高效应对3D IC多物理场与ECAD建模挑战?

半导体行业正快速超越传统2D封装技术,积极采用 3D集成电路(3D ICs)和2.5D 先进封装等方案。这些技术通过异构芯粒、硅中介层和复杂多层布线实现更高性能与集成度。然而,由于电子计算机辅助设计(ECAD)数据规…