Ubuntu + 宝塔面板安装 Mix Space(Docker 部署) + Shiro
分类:
编程
简介:壹・准备工作一台安装好宝塔面板的服务器,已经安装好 NodeJs系统要求Linux / macOSLinux 内核版本 >= 4.19Memory >= 1G1.1 安装 Docker使用官方脚本安装:curl fsSL https://get.docker.com | bash s docker
使用以下命令查看 Docker 与 Docker Compose 版本docker v
docker compose version示例:贰・开始安装Mix Space后端官方文档2.1 拉取配置文件# 根目录下创建 mx space/core 文件夹并进入
cd && mkdir p mx space/core && cd $_
# 拉取 docker compose.yml 文件
wget https://fastly.jsdelivr.net/gh/mx space/core@master/docker compose.yml2.2 修改docker compose.yml配置文件使用vim 或 nano 打开 mx space/core 下的 docker compose.yml 文件 # Vim 进入后按I开始编辑,修改完成后按ESC键输入 :wq 保存并退出
vim ~/mx space/core/docker compose.yml
编辑 environment 字段的内容,没有就加上JWT 密钥(JWT_SECRET):需要填写长度不小于 16 个字符,不大于 32 个字符的字符串,用于加密用户的 JWT,务必保存好自己的密钥,不要泄露给他人。被允许的域名(JWT_SECRET):需要填写被允许的域名,通常是前端的域名,如果允许多个域名访问,用英文逗号,分隔。是否开启加密(ENCRYPT_ENABLE):如果你确定要开启加密,将 false 改为 true,开启加密后,你需要在下方填写加密密钥。加密密钥(ENCRYPT_KEY):如果你不知道这是什么,那么不建议开启此功能,具体内容可参考 https://mx space.js.org/usage/security.html示例(注意yml的语法,该缩进的地方得缩进): environment:
TZ=Asia/Shanghai
NODE_ENV=production
DB_HOST=mongo
REDIS_HOST=redis
JWT_SECRET= 16 个字符
ALLOWED_ORIGINS=blog.meowo.moe,meowo.moe
ENCRYPT_ENABLE=false
ENCRYPT_KEY=
2.3 Core,启动!终端输入: cd ~/mx space/core/
docker compose up d这可能需要一点时间,请耐心等待。2.4 完成如果你完全按照我的方法,那一般都能成功,如果没有,请查看 官方文档 或从 壹 ・准备工作 重新操作2.5 更新后端控制台输入docker pull innei/mx server:latest
docker compose up d叁・配置反代注意:一定要先配置SSL证书检查Mix Space 后端是否正常运行打开宝塔控制面板,点击左边栏 Docker 选项,接着点击容器找到名为mx server的容器,找到状态一栏,如果为运行中,开始3.1操作如果为已停止点击启动,如果无法启动,请重新安装一遍3.1 双域名配置建议使用双域名,但这也看个人喜好,若想使用单域名,查看 官方文档3.1.1 后端配置打开宝塔控制面板,点击左边栏 网站 选项,点击添加站点,添加两个,以我为例(server.meowo.moe 和 blog.meowo.moe):后端域名:server.meowo.moe前端域名:blog.meowo.moe进入站点配置,反向代理,添加如图所示内容(代理名称随便填)点击配置文件,Ctrl + A 全选,删除,更改为以下内容 ## 反向代理开始
## WebSocket
location ^~ /socket.io {
proxy_pass http://127.0.0.1:2333/socket.io;
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 REMOTE HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_http_version 1.1;
add_header Cache Control no cache;
}
## Others
location ^~ / {
proxy_pass http://127.0.0.1:2333;
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 REMOTE HOST $remote_addr;
add_header X Cache $upstream_cache_status;
}
## 反向代理结束这样,后端就配置完成了3.1.2 前端配置跟后端差不多,注意目标URL的端口 这里放出前端反代配置server{
location ~* \.(gif|png|jpg|css|js|woff|woff2)$ {
proxy_pass http://127.0.0.1:2323;
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 REMOTE HOST $remote_addr;
expires 30d;
}
location ~* \/(feed|sitemap|atom.xml) {
proxy_pass http://127.0.0.1:2333/$1;
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 REMOTE HOST $remote_addr;
add_header X Cache $upstream_cache_status;
add_header Cache Control max age=60;
}
location / {
proxy_pass http://127.0.0.1:2323;
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 REMOTE HOST $remote_addr;
add_header X Cache $upstream_cache_status;
add_header Cache Control no cache;
proxy_intercept_errors on;
}
}
3.1.3 反代配置完成!开始安装前端吧( ̄︶ ̄)↗ 肆・安装Mix Space前端这里以Shiro主题为例,官方文档4.1 设置主题配置进入 Mix Space 后台,进入配置与云函数 页面,点击右上角的新增按钮,在编辑页面中,填入以下设置(内容自行更改):名称:shiro引用:theme数据类型:JSON数据内容:{
"footer": {
"otherInfo": {
"date": "2020 {{now}}",
"icp": {
"text": "萌 ICP 备 20236136 号",
"link": "https://icp.gov.moe/?keyword=20236136"
}
},
"linkSections": [
{
"name": "关于",
"links": [
{
"name": "关于本站",
"href": "/about site"
},
{
"name": "关于我",
"href": "/about"
},
{
"name": "关于此项目",
"href": "https://github.com/innei/Shiro",
"external": true
}
]
},
{
"name": "更多",
"links": [
{
"name": "时间线",
"href": "/timeline"
},
{
"name": "友链",
"href": "/friends"
},
{
"name": "监控",
"href": "https://status.innei.in/status/main",
"external": true
}
]
},
{
"name": "联系",
"links": [
{
"name": "写留言",
"href": "/message"
},
{
"name": "发邮件",
"href": "mailto:i@innei.ren",
"external": true
},
{
"name": "GitHub",
"href": "https://github.com/innei",
"external": true
}
]
}
]
},
"config": {
"color": {
"light": [
"#33A6B8",
"#FF6666",
"#26A69A",
"#fb7287",
"#69a6cc",
"#F11A7B",
"#78C1F3",
"#FF6666",
"#7ACDF6"
],
"dark": [
"#F596AA",
"#A0A7D4",
"#ff7b7b",
"#99D8CF",
"#838BC6",
"#FFE5AD",
"#9BE8D8",
"#A1CCD1",
"#EAAEBA"
]
},
"bg": [
"https://github.com/Innei/static/blob/master/images/F0q8mwwaIAEtird.jpeg?raw=true",
"https://github.com/Innei/static/blob/master/images/IMG_2111.jpeg.webp.jpg?raw=true"
],
"custom": {
"css": [],
"styles": [],
"js": [],
"scripts": []
},
"site": {
"favicon": "/innei.svg",
"faviconDark": "/innei dark.svg"
},
"hero": {
"title": {
"template": [
{
"type": "h1",
"text": "Hi, I'm ",
"class": "font light text 4xl"
},
{
"type": "h1",
"text": "Innei",
"class": "font medium mx 2 text 4xl"
},
{
"type": "h1",
"text": "👋。",
"class": "font light text 4xl"
},
{
"type": "br"
},
{
"type": "h1",
"text": "A NodeJS Full Stack ",
"class": "font light text 4xl"
},
{
"type": "code",
"text": "<Developer />",
"class": "font medium mx 2 text 3xl rounded p 1 bg gray 200 dark:bg gray 800/0 hover:dark:bg gray 800/100 bg opacity 0 hover:bg opacity 100 transition background duration 200"
},
{
"type": "span",
"class": "inline block w [1px] h 8 bottom 2 relative bg gray 800/80 dark:bg gray 200/80 opacity 0 group hover:opacity 100 transition opacity duration 200 group hover:animation blink"
}
]
},
"description": "An independent developer coding with love."
},
"module": {
"activity": {
"enable": true,
"endpoint": "/fn/ps/update"
},
"donate": {
"enable": true,
"link": "https://afdian.net/@Innei",
"qrcode": [
"https://cdn.jsdelivr.net/gh/Innei/img bed@master/20191211132347.png",
"https://cdn.innei.ren/bed/2023/0424213144.png"
]
},
"bilibili": {
"liveId": 1434499
}
}
}
}示例:点击右上绿色按钮保存4.2 正式安装前端进入Shiro主题官方Github仓库 https://github.com/Innei/Shiro在Releases中下载 release.zip 文件ssh登入服务器,终端输入 mkdir shiro
cd ~/shiro将release.zip 文件上传到此目录,并解压,得到node_modules 和 Shiro 两个文件夹,终端输入 cd ~/shiro/Shiro
wget https://raw.githubusercontent.com/Innei/Shiro/main/docker compose.yml
wget https://raw.githubusercontent.com/Innei/Shiro/main/.env.template
mv .env.template .env
vim .env在 .env 文件中填入以下内容(示例) NEXT_PUBLIC_API_URL=https://后端域名/api/v2
NEXT_PUBLIC_GATEWAY_URL=https://后端域名
TMDB_API_KEY=
GH_TOKEN=例:后端域名:server.meowo.moe前端域名:blog.meowo.moe之后,终端输入安装pm2, pnpm sudo apt install npm
npm install pm2@latest g
npm install g @pnpm/exe@latest 10接着,给前端添加守护进程,新建 ecosystem.config.js 文件 vim ~/shiro/Shiro/ecosystem.config.js
填入以下内容// ecosystem.config.js
module.exports = {
apps: [
{
name: 'Shiro',
script: 'npx next start p 2323',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '180M',
env: {
NODE_ENV: 'production',
},
},
],
};最后,终端输入 cd ~/shiro/Shiro
pnpm build && pnpm prod:pm2注意当使用npm构建时你的服务器内存过小可能会导致构建失败,如:宝塔面板提示断开连接届时可以添加 Swap/虚拟内存 来解决宝塔面板到软件商店搜索 "Linux工具箱" 打开设置 Swap/虚拟内存 至此,安装流程就结束了,浏览器打开 https://后端域名/proxy/qaqdmin 开始进行基础配置4.3 附 使用Docker Compose我并未成功,你可以试试,可能是我的问题链接mkdir shiro
cd shiro
wget https://raw.githubusercontent.com/Innei/Shiro/main/docker compose.yml
wget https://raw.githubusercontent.com/Innei/Shiro/main/.env.template .env
vim .env # 修改你的 ENV 变量
docker compose up d
docker compose pull # 后续更新镜像安装之后,可在宝塔面板管理伍・开始使用进入mix space后台,点击设定 ——系统 ——网站设置 填入你自己的信息API 地址为 https://server.example.com/api/v2前端地址为 https://www.example.comGateWay 为 https://server.example.com本地后台为 https://server.example.com/proxy/qaqdmin
自建东方project图片Api
简介:链接:https://api.meowo.moe/支持json格式输出,支持https访问接入栗次元亚太CDN,免费20GB套餐演示:直接调用:https://api.meowo.moe/api/示例: <img src="https://api.meowo.moe/api/">Json返回:https://api.meowo.moe/api/json示例:{
"url": "https://img.meowo.moe/images/2024/12/17/1115881.jpg",
"Ip": "192.168.100.145"
}
json返回: