Mix-Space后端Core使用远程数据库

文章适用于：你的 Mix-Space 后端 Core 使用远程 MongoDb / Redis 数据库，或者需要为 MongoDB / Redis 配置密码，可以参考此篇

|| 如果没有特别需要就不用瞎折腾了捏 ||

我的环境

服务器 A：部署 MongoDB 和 Redis

服务器 B：部署 Mix Space Core

MongoDB 配置

我使用 1Panel 商店安装的，默认创建 root 用户；mx-space 需要连接 mx-space 数据库，root 用户是无法直接使用的，我选择为 mx-space 数据库新建一个用户。

使用 root 用户连接 MongoDB

Copy
mongosh --host <host> --port <port> -u <admin_user> -p <admin_password> --authenticationDatabase admin
# 我是在MongoDB容器内执行，因此不需要--host , --port

切换到 mx-space 数据库

Copy
use mx-space

为 mx-space 数据库创建用户

Copy
db.createUser({
user: "UserName", // 用户名
pwd: "UserPassword", // 用户密码
roles: [
{ role: "readWrite", db: "mx-space" }, // 给用户 readWrite 权限
{ role: "dbAdmin", db: "mx-space" } // 给用户 dbAdmin 权限
]
})

验证与测试

Copy
show users
# 验证用户是否创建成功
mongo --username UserName --password UserPassword --authenticationDatabase mx-space
# 连接测试

MongoDB 有认证库和连接库，刚开始就是一直用 root 用户，导致 mx-space 一直连接不上；这两个库具体的我也不懂，但是挺重要的，可以了解了解（

Redis 配置

这个没什么特别的配置，我是安装在与 MongoDB 同服务器上了，应该能与 MongoDB 分离，但是我遇到问题：前端 auth 有问题，导致无法正确加载，所以就干脆与 MongoDB 部署到一块了

需要注意的是：这个 RDB 持久化，N 秒内插入 1 条数据，建议默认 3600 秒，或者更高，否则前端可能无法正确获取到 正在被 XX 人看爆

其他的 Redis 进阶配置我就不会了，懂的按需修改就行😢

Core yaml 文件配置

官方文档有更详细的参数说明，请配合使用：
https://mx-space.js.org/docs/core/extra

下面是我目前使用的 docker-compose.yml 配置示例

Copy
services:
app:
container_name: mx-server
image: innei/mx-server:latest
environment:
- TZ=Asia/Shanghai
- NODE_ENV=production
- DB_HOST=127.0.0.1 #数据库地址
- DB_USER=username #数据库用户名
- DB_PASSWORD=userpassword #数据库密码
- REDIS_HOST=127.0.0.1 #redis地址
- REDIS_PASSWORD=redispwd #redis密码
- ALLOWED_ORIGINS=www.example.com #允许的前端域名
- JWT_SECRET=xxxxxxxxx #JWT密钥
- ENCRYPT_ENABLE=true #数据库加密（按需开启）
- ENCRYPT_KEY=xxxxxxxxxxxxxxxx #数据库加密密码，如果丢失将无法从备份文件恢复，然后可以跑路了（x
volumes:
- ./data/mx-space:/root/.mx-space
ports:
- '2333:2333'

networks:
- mx-space
restart: unless-stopped
healthcheck:
test: ['CMD', 'curl', '-f', 'http://127.0.0.1:2333/api/v2/ping']
interval: 1m30s
timeout: 30s
retries: 5
start_period: 30s
networks:
mx-space:
driver: bridge

此文由 Mix Space 同步更新至 xLog
原始链接为 https://www.vlo.cc/posts/jc/MixSpace_backend_Core_uses_remote_database