OpenIsle
OpenIsle
话题发帖我的消息关于🔥 活动
类别
好玩 & 轻松交流 x 268
技术 & 开发调优 x 135
软件 & 资源 x 67
资讯 & 快讯 x 44
运营反馈 x 37
水深火热 x 13
Crypto x 10
标签
纯水 x 230
软件开发 x 103
人工智能 x 66
抽奖 x 64
开源共建 x 45
快问快答 x 33
夸克网盘 x 31
搬运 x 24
百度网盘 x 14
ChatGPT x 13
查看更多
【开源共建】本站代码自部署方法(长期维护)
技术 & 开发调优
开源共建
软件开发
精品
avatar
nagisa 发帖达人
去年 8.4 23:57
  • 前置工作
  • 前端极速调试(Docker 全量环境)
  • 启动后端服务
    • 本地 IDEA
      • 配置环境变量
      • 配置 IDEA 参数
  • 前端连接预发或正式环境
  • 其他配置
    • 配置第三方登录以GitHub为例
    • 配置Resend邮箱服务
  • API文档
    • OpenAPI文档
    • 部署时间线以及文档时效性
    • OpenAPI文档使用
    • OpenAPI文档应用场景

前置工作

先克隆仓库:

git clone https://github.com/nagisa77/OpenIsle.git cd OpenIsle
  • 后端开发环境
    • JDK 17+
  • 前端开发环境
    • Node.JS 20+

前端极速调试(Docker 全量环境)

想要最快速地同时体验前端和后端,可直接使用仓库提供的 Docker Compose。该方案会一次性拉起数据库、消息队列、搜索、后端、WebSocket 以及前端 Dev Server,适合需要全链路联调的场景。

  1. 准备环境变量文件:

    cp .env.example .env

    .env.example 是模板,可在 .env 中按需覆盖如端口、密钥等配置。确保 NUXT_PUBLIC_API_BASE_URL、NUXT_PUBLIC_WEBSOCKET_URL 等仍指向 localhost,方便前端直接访问容器映射端口。

  2. 启动 Dev Profile:

    docker compose \ -f docker/docker-compose.yaml \ --env-file .env \ --profile dev build
    docker compose \ -f docker/docker-compose.yaml \ --env-file .env \ --profile dev up -d

    该命令会创建名为 frontend_dev 的容器并运行 npm run dev,浏览器访问 http://127.0.0.1:3000 即可查看页面。

    修改代码后,可以强制重新创建所有容器,执行:

    docker compose \ -f docker/docker-compose.yaml \ --env-file .env \ --profile dev up -d --force-recreate
  3. 查看服务状态:

    docker compose -f docker/docker-compose.yaml --env-file .env ps docker compose -f docker/docker-compose.yaml --env-file .env logs -f frontend_dev
  4. 停止所有容器:

    docker compose -f docker/docker-compose.yaml --env-file .env --profile dev down

如需自定义 Node 依赖缓存、数据库持久化等,可参考 docker/docker-compose.yaml 中各卷的定义进行调整。

启动后端服务

启动后端服务有多种方式,选择一种即可。

[!IMPORTANT]
仅想修改前端的朋友可不用部署后端服务。转到 启动前端服务 章节。

本地 IDEA

cd backend/

IDEA 打开 backend/ 文件夹。

配置环境变量

  1. 在 IDEA 中配置「Environment file」:将 Run/Debug Configuration 的 Environment variables 指向刚刚复制的 .env,即可让 IDE 读取该文件。
  2. 需要调整端口或功能开关时,优先修改 .env,例如:
    SERVER_PORT=8081 LOG_LEVEL=DEBUG

也可以修改 src/main/resources/application.properties,但该文件会被 Git 追踪,通常不推荐。

backend_img_5.png

配置 IDEA 参数

  • 设置 JDK 版本为 Java 17。
  • 设置 VM Option,最好运行在其他端口(例如 8081)。若已经在 open-isle.env 中调整端口,可省略此步骤。
    -Dserver.port=8081

backend_img_3.png

backend_img_2.png

完成环境变量和运行参数设置后,即可启动 Spring Boot 应用。

backend_img_4.png

前端连接预发或正式环境

前端默认读取 .env 中的接口地址,可通过修改以下变量快速切换到预发或正式环境:

  1. 按需覆盖关键变量:

    NUXT_PUBLIC_API_BASE_URL=https://www.staging.open-isle.com NUXT_PUBLIC_WEBSOCKET_URL=https://www.staging.open-isle.com

    将 staging 替换为 www 即可连接正式环境。其他变量(如 OAuth Client ID、站点地址等)可根据需求调整。

其他配置

配置第三方登录以GitHub为例

  • 修改 application.properties 配置

    backend_img.png

  • 修改 .env 配置

    fontend_img.png

  • 配置第三方登录回调地址

    github_img.png

    github_img_2.png

配置Resend邮箱服务

https://resend.com/emails 创建账号并登录

  • Domains -> Add Domain
    image-20250906150459400.png
  • 填写域名
    image-20250906150541817.png
  • 等待一段时间后解析成功,创建 key
    API Keys -> Create API Key,输入名称,设置 Permission 为 Sending access
    Key 只能查看一次,务必保存下来
    image-20250906150811572.png
    image-20250906150924975.png
    image-20250906150944130.png
  • 修改 .env 配置中的 RESEND_API_KEY 和 RESEND_FROM_EMAIL
    RESEND_FROM_EMAIL: noreply@域名
    RESEND_API_KEY:刚刚复制的 Key
    image-20250906151218330.png

API文档

OpenAPI文档

https://docs.open-isle.com

部署时间线以及文档时效性

我已经将API Docs的部署融合进本站CI & CD中,目前如下

  • 每次合入main之后,都会构建预发环境 http://staging.open-isle.com/ ,现在文档是紧随其后进行部署,也就是说代码合入main之后,如果是新增后台接口,就可以立即通过OpenAPI文档页面进行查看和调试,但是如果想通过OpenAPI调试需要选择预发环境的
  • 每日凌晨三点会构建并重新部署正式环境,届时当日合入main的新后台API也可以通过OpenAPI文档页面调试

CleanShot 2025-09-10 at 12 .04.48@2x.png

👆如图是合入main之后构建预发+docs的情形,总大约耗时4分钟左右

OpenAPI文档使用

  • 预发环境/正式环境切换,以通过如下位置切换API环境

CleanShot 2025-09-10 at 12 .08.00@2x.png

  • API分两种,一种是需要鉴权(需登录后的token),另一种是直接访问,可以直接访问的GET请求,直接点击Send即可调试,如下👇,比如本站的推荐流rss: /api/rss: https://docs.open-isle.com/openapi/feed

CleanShot 2025-09-10 at 12 .09.48@2x.png

  • 需要登陆的API,比如关注,取消关注,发帖等,则需要提供token,目前在“API与调试”可获取自身token,可点击link看看👉 https://www.open-isle.com/about?tab=api

CleanShot 2025-09-10 at 12 .11.07@2x.png

copy完token之后,粘贴到Bear之后, 即可发送调试, 如下👇,大家亦可自行尝试:https://docs.open-isle.com/openapi/me

CleanShot 2025-09-10 at 12 .13.00@2x.png

OpenAPI文档应用场景

  • 方便大部分前端调试的需求,如果有只想做前端/客户端的同学参与本项目,该平台会大大提高效率
  • 自动化:有自动化发帖/自动化操作的需求,亦可通过该平台实现或调试
  • API文档: https://docs.open-isle.com/openapi
emoji
5
emoji
2
emoji
2
5
Sort by:
返回
暂无评论