提示,如果需要多个域名访问一个前端,则需要在docker-compse里加上localhost,127.0.0.1
首先,安装一些必要的软件包:
然后加入 Docker 的 GPG 公钥和 apt 源:
国内机器可以用清华 TUNA 的国内源:
我们可以使用 Docker 官方发布的 Github 直接安装最新版本docker-compose:
此时可使用 docker-compose version 命令检查是否安装成功
当然可以用1panel点点点,也是可以的,我这里用的就是1panel
Warning默认配置数据库未使用密码,万不可放行数据库端口!若需要密码/或使用远程数据库,可根据官方文档自行配置
加密密钥:如果你不知道这是什么,那么不建议开启此功能,具体内容可参考 https://mx-space.js.org/usage/security.html
以1Panel+OpenResty为例
再次进入 https://api.example.cc/proxy/qaqdmin 即可
至此,Core内核已经部署完成
接下来就是前端的部署了
刷新系统包缓存与安装常用/必备软件包
进入 Mix Space 后台,进入「配置与云函数」页面,点击右上角的新增按钮,在编辑页面中,填入以下设置:
具体可以查看官方文档
复制 .env.example 为 .env并编辑 .env 文件
.env示例
若服务器所在区域无法访问NPM官方源,可能导致依赖安装失败而出现报错
解决:构建前手动修改项目 .npmrc 配置文件
构建完成后就能准备启动,建议是使用screen后台保活,以下给出screen启动方法
启动完成后 按 Ctrl+A+D即可退出并挂起 shiro 对话,完成Shiro后台运行。
玖月佬说是试过了,那就是能用!
可以参考玖月博客,我放在下面了,这里贴上(照抄)一个比较常见的字体下载错误的解决办法
解决:更改hosts文件,为fonts.googleapis.com / fonts.gstatic.com指定一个服务器可以Ping通的IP
可以用itdog查下字体域名的ip,然后服务器尝试ping一下,哪个ping的通就改哪个
感谢玖月,在我部署遇到问题的时候给我的帮助,犯了很多很蠢的错误,他都帮我耐心的解决了,之后有别的问题也问了他,是一个非常好的人,谢谢玖月哥。
apt update
apt upgrade -y
apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates
apt update
apt upgrade -y
apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates
curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
然后更新系统后即可安装 Docker CE
```bash
apt update
apt install docker-ce docker-ce-cli containerd.io
```
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
cd /opt && mkdir -p mx-space/core && cd $_
# 拉取 docker-compose.yml 文件
wget https://fastly.jsdelivr.net/gh/mx-space/core@master/docker-compose.yml
cd /opt/mx-space/core
vim docker-compose.yml
若开启加密,则需注意密钥长度必须为 64 位且只有小写字母和数字,不然会在初始化时报错。注意这是不可逆的,务必保存自己的秘钥。所以并不是非常推荐使用,除非你真的需要加密 API Key.
密钥可以通过openssl rand -hex 32
命令生成。请务必牢记。
docker compose up -d
## 反向代理开始,直接复制官方文档的
## WebSocket 地址
location /socket.io {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:2333/socket.io;
}
## API 地址
location /api/v2 {
proxy_pass http://127.0.0.1:2333/api/v2;
}
## 简读 render 地址
location /render {
proxy_pass http://127.0.0.1:2333/render;
}
## 前端地址
location / {
proxy_pass http://127.0.0.1:2323;
}
## 后台地址
location /proxy {
proxy_pass http://127.0.0.1:2333/proxy;
}
location /qaqdmin {
proxy_pass http://127.0.0.1:2333/proxy/qaqdmin;
}
## RSS 地址
location ~* \/(feed|sitemap|atom.xml) {
proxy_pass http://127.0.0.1:2333/$1;
}
## 反向代理结束
cd /opt/mx-space/core
docker-compose pull && docker compose up -d
apt update && apt install git curl vim wget git-lfs -y
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh |bash
source ~/.profile
nvm ls-remote
# 安装
nvm install 20.12.2
# 检查版本
node -v
npm install -g pnpm pm2
npm i -g sharp
pnpm add sharp
# 配置sharp环境变量
# export NEXT_SHARP_PATH=/root/node_modules/sharp
{
"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:[email protected]",
"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
}
}
}
}
cd /opt/mx-space
# 个人习惯在/opt/mx-space目录下部署Mx-Space与前端Shiro/Kami
# 所以此处./mx-space为mx后端/前端项目文件夹
git clone https://github.com/Innei/Shiro.git
cd /opt/mx-space/Shiro
mv .env.template .env
vim .env
# 后端API地址
NEXT_PUBLIC_API_URL=https://api.example.com/api/v2
# 后端网关地址
NEXT_PUBLIC_GATEWAY_URL=https://api.example.com
# TMDB信息获取
TMDB_API_KEY=
# GitHub token,用来获取前端版本哈希
GH_TOKEN=
cd /opt/mx-space/Shiro
pnpm i && pnpm build
cd /opt/mx-space/Shiro
vim .npmrc
# 1 ↑修改registry为taobao源(https://registry.npmmirror.com)或其他国内镜像源
# nrm use taobao
# 2 ↑若安装有nrm (npm 的镜像源管理工具)也可使用nrm
pnpm i && pnpm build
# 最后重新安装依赖、构建
apt install screen -y
# Debian/Ubuntu安装Screen
screen -R shiro
# 新建shiro会话
cd /opt/mx-space/Shiro
npx next start -p 2323
# pnpm prod:pm2
# 启动shiroi
# 进入工作目录
cd /opt/mx-space/Shiro
# 更新
git pull
# git push
screen -R shiroi -X quit
# nrm use taobao (根据服务器 位置 / 网络 情况选择是否换源)
# 安装依赖、构建
pnpm i && pnpm build
# 使用screen实现后台启动
screen -R shiroi
npx next start -p 2323