Eggblog博客部署文档

本人个人博客地址:Egg-blog

一、原帖部署文档地址

gitee:gitee原帖Wiki文档 github:github原帖Wiki文档

二、原帖文档补充

部署minio

因为目前minio的最新版转为闭源了,Web控制台的功能一再削减,所以原文档里面的内容需要更新

方案一:安装minio2022-01

再合适位置创建指定目录
language 复制代码
mkdir -p /opt/minio/data
mkdir -p /opt/minio/config
创建容器
language 复制代码
docker run --name minio \
-p 9000:9000 \
-p 9001:9001 \
-d \
--restart=always \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123" \
-v /opt/minio/data:/data \
-v /opt/minio/config:/root/.minio \
minio/minio:RELEASE.2022-01-04T07-41-07Z server /data \
--console-address ":9001" \
--address ":9000"
docker-compose.yml
language 复制代码
services:
  minio:
    image: minio/minio:RELEASE.2022-01-04T07-41-07Z # 指定镜像和标签
    container_name: minio # 容器名称
    restart: always # 容器总是重启[minio具体介绍](https://blog.csdn.net/weixin_46739493/article/details/150576442)
    ports:
      - "9000:9000" # 映射端口 9000
      - "9001:9001" # 映射端口 9001 (Console)
    environment:
      TZ: Asia/Shanghai
      MINIO_ROOT_USER: admin # 设置环境变量
      MINIO_ROOT_PASSWORD: ChenYe153697045& # 设置环境变量
    volumes:
      - /root/sodamp/minio/data:/data # 挂载数据目录
      - /root/sodamp/minio/config:/root/.minio # 挂载配置目录
    command: server /data --console-address ":9001" --address ":9000" # 启动命令及参数

方案二:使用minio-client命令行的方式设置桶的访问策略

虽然开源社区版的Web界面受限,但是minio-client命令行还是可以进行桶的设置。 minio-client具体介绍:minio-client详细教程 安装完成以后,设置好minio实例别名,连接到示例后,运行下面的设置访问策略

language 复制代码
mc anonymous set download myminio/blog
#把 myminio 换成你自己配置的 alias 就行
原帖的S3策略条目 mc download 策略包含的动作
s3:GetBucketLocation ✅ 包含
s3:ListBucket + Condition: prefix=* ✅ 包含(前缀条件一样)
s3:GetObject on blog/** ✅ 包含(桶内所有对象)

完全等价,不用手写JSON 了。

顺便说一句:mc anonymous set 一共就四档。

  • none --- 禁止匿名访问(默认)
  • download --- 匿名可读可列
  • upload --- 匿名可上传
  • public --- 匿名可读可写

部署一言接口

官方文档:部署实例 这里我使用docker部署,需要先部署redis

language 复制代码
  docker run -d
  --name hitokoto-api
  --restart unless-stopped -p 9090:8000 #可以将左边的9090修改为自己喜欢的端口号
  -v "/var/lib/docker/volumes/hitokoto-data:/usr/src/app/data" # 请替换 /path/to/your/data/dir 为您想存储接口持久化数据的目录绝对位置
  -e "REDIS.HOST=172.17.0.1"
  -e "REDIS.PORT=6379"
  -e "REDIS.PASSWORD=xxx" # 自己的redis密码
  hitokoto/api:latest

部署音乐模块

开源地址:GlassMusicPlayer

环境要求

环境要求: Node.js >= 22,pnpm >= 10

快速开始

language 复制代码
# 克隆项目
git clone https://github.com/XiangZi7/GlassMusicPlayer.git
cd GlassMusicPlayer

# 安装依赖
pnpm install

# 配置环境变量
cp .env.example .env

# 启动开发服务器
pnpm dev

配置环境变量

项目提供了 .env.example 模板文件,请根据需要复制并修改:

language 复制代码
# 开发环境
cp .env.example .env.development

# 生产环境
cp .env.example .env.production

#.env.development 示例:
VITE_USER_NODE_ENV = development
VITE_PUBLIC_PATH = /
VITE_ROUTER_MODE = history
VITE_APP_BASE_API = 'http://localhost:3000'

#.env.production 示例:
VITE_USER_NODE_ENV = production
VITE_PUBLIC_PATH = /
# 静态托管(如 GitHub Pages)建议使用 hash 模式
VITE_ROUTER_MODE = hash
VITE_APP_BASE_API = 'https://your-api-domain.com'
  • .env 为通用配置,.env.development / .env.production 为特定环境配置,优先级更高
  • 所有 .env.*(除 .env.example)已被 .gitignore 忽略,不会提交到仓库
  • 变量必须以 VITE_ 开头才能在客户端代码中使用

可用脚本

命令 说明
pnpm dev 启动开发服务器
pnpm build 构建生产环境产物
pnpm build:test 构建测试环境产物
pnpm preview 本地预览生产构建
pnpm lint ESLint 检查并自动修复
pnpm format Prettier 格式化代码

每个模块的Nginx配置

admin前台

language 复制代码
# gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";

    location / {
        try_files $uri $uri/ /index.html;
    }

    # 后端接口(剥掉/api前缀转发)
    location /api/ {
        proxy_pass http://127.0.0.1:8088/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

博客前台

language 复制代码
location / {
         try_files $uri $uri/ /index.html =404;
    }

    # MinIO文件访问(必须走HTTPS反代,否则浏览器混合内容全拦)
    # 注意:剥掉/minio-file/前缀转发到根,桶名blog已经在URL里,别再加
    location ^~ /minio-file/ {
        proxy_pass http://127.0.0.1:9000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
        proxy_buffering off;
    }

    # 第三方登录接口(后端OauthController自带/api前缀,这里不能剥)
    location /api/oauth/ {
        proxy_pass http://127.0.0.1:8088;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # 邮件里的友链申请回调(后端LinkController在根路径/link)
    location /link/ {
        proxy_pass http://127.0.0.1:8088;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # 其余后端接口(剥掉/api前缀转发)
    location /api/ {
        proxy_pass http://127.0.0.1:8088/;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # 一言接口(自己部署的hitokoto,根路径)
    location /yiyan {
        proxy_pass http://127.0.0.1:9090/;
    }

    # 音乐接口
    location /wapi/ {
        proxy_pass http://127.0.0.1:3000/;
    }

    # 配置错误页面
    error_page 404 /404.html;
    location = /404.html {
        internal;
    }

音乐模块

language 复制代码
  location /api/ {
        proxy_pass http://127.0.0.1:3000/;
    }
相关推荐
网易云信1 小时前
企业级 IM,不是功能更多,而是场景更对
人工智能·后端
程序员天天困1 小时前
Arthas mc + retransform 实战:线上改完代码不用重新发版
jvm·后端
洛卡卡了2 小时前
从 vibe coding 到 spec coding:我用 Trellis 的实践总结
人工智能·后端·agent
名字还没想好☜2 小时前
Go 结构体内存对齐:调整字段顺序,同样的字段省下 40% 内存
开发语言·后端·golang·go·内存对齐
颜进强2 小时前
从零搭建私人 RAG 实战:用 Markdown 沉淀技术决策与业务决策
前端·后端·ai编程
用户37899822121282 小时前
别再「凭感觉」写代码了:我用 Qoder 花一天时间,从 0 到 1 真正掌握了 Vibe Coding(附完整踩坑实录)
后端
码农进化录2 小时前
Java 程序员的 AI 进化论 | AI 加 Postman 跑接口测试,省了三天活
java·后端·openai
旺仔学长 哈哈3 小时前
基于SpringBoot的在线招聘测评系统的设计与实现----附源码35253+数据库文档
数据库·spring boot·后端·在线招聘
Ivanqhz3 小时前
Rust #[derive(Serialize)]浅析
开发语言·后端·rust