소개
1C1G 이상의 시스템을 사용하세요. 1G 메모리로는 프론트엔드 빌드 중 문제가 발생할 수 있습니다.
Ubuntu 등 최신 Linux 운영체제를 권장합니다. CentOS 7 같은 운영체제는 충분히 높은 버전의 Node.js를 설치할 수 없어 배포가 실패합니다.
백엔드 배포
Docker 설치
서버가 중국에 있다면 Aliyun의 미러 가속을 사용하는 것을 권장합니다. 설치 명령은 다음과 같습니다.
BASH
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
서버가 중국에 있지 않다면 공식 스크립트로 바로 설치할 수 있습니다.
BASH
curl -fsSL https://get.docker.com | bash -s docker
Docker와 Docker Compose가 정상적으로 설치되었다면 다음 명령으로 버전을 확인할 수 있습니다.
BASH
docker -v
docker compose version
배포
- 설정 파일을 가져옵니다.
BASH
cd && mkdir -p $HOME/mx-space/core && cd $_ # 拉取 docker-compose.yml 文件
wget https://fastly.jsdelivr.net/gh/mx-space/core@master/docker-compose.yml
- 환경 변수를 생성합니다.
BASH
vi .env
- 다음 내용을 입력한 뒤
ESC키를 누르고:wq를 입력해 저장하고 종료합니다.
ENV
JWT_SECRET= #JWT 密钥:需要填写长度不小于 16 个字符,不大于 32 个字符的字符串,用于加密用户的 JWT,务必保存好自己的密钥,不要泄露给他人。
ALLOWED_ORIGINS= #被允许的域名:需要填写被允许的域名,通常是前端的域名,如果允许多个域名访问,用英文逗号,分隔。
ENCRYPT_ENABLE= #如果你确定要开启加密,将 false 改为 true,开启加密后,你需要在下方填写加密密钥。
ENCRYPT_KEY= #如果你不知道这是什么,那么不建议开启此功能,具体内容可参考 https://mx-space.js.org/usage/security.html
백엔드를 시작합니다.
BASHdocker compose up -d
프론트엔드 배포
사전 준비
- 백엔드를 배포하고 실행합니다.
- Clerk 계정을 등록하고 공개 키와 비밀 키를 발급받습니다. 참고
- Node.js와 pnpm을 설치합니다.
배포
- 리포지토리를 가져옵니다. (Shiro 기준)
BASH
git clone https://github.com/Innei/Shiro $HOME/mx-space/Shiro && cd $HOME/mx-space/Shiro
- 환경 변수를 생성합니다.
BASH
vi .env
다음 내용을 입력한 뒤 ESC 키를 누르고 :wq를 입력해 저장하고 종료합니다.
NEXT_PUBLIC_API_URL=https://yourdomain/api/v2
NEXT_PUBLIC_GATEWAY_URL=https://yourdomain
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_XXXX
CLERK_SECRET_KEY=sk_test_XXXX
- 의존성을 설치하고 실행합니다.
BASH
sudo pnpm i
sudo pnpm build
npx next start -p 2323
- 위 과정이 정상적으로 실행된다면 pm2로 배포할 수 있습니다.
BASH
npm install -g pm2
pm2 start #
pm2 restart 0 #重新编译后用此命令重新部署,其中 0 为任务号
Nginx 리버스 프록시
도메인을 서버로 연결합니다.
이 글의 방법에 따라 인증서를 발급받습니다.
리버스 프록시를 설정합니다.
BASHvi /etc/nginx/nginx.conf아래 예시의 도메인과 인증서 경로를 수정한 뒤 설정 파일에 추가하세요.
업데이트
백엔드 업데이트 (Docker 배포)
core가 있는 폴더로 이동한 다음
BASH
cd $HOME/mx-space/core
docker compose pull && docker compose up -d
프론트엔드 업데이트
BASH
cd $HOME/mx-space/Shiro
git pull
sudo pnpm i
sudo pnpm build
pm2 restart 0
문제 해결
댓글 사용자 충돌 문제 해결
- PEM을 가져옵니다: https://clerk.com/docs/backend-requests/handling/manual-jwt
- id를 가져옵니다: Shiro에서 Clerk로 로그인한 뒤 콘솔에서 요청을 캡처합니다.

id 가져오기
검색 추가
- 가입: https://dashboard.algolia.com/users/sign_up
- New Application -> Create Application -> Create Index를 선택하고, 만든 Create Index를 기억해 두세요.
- API Keys에서 Application ID와 Admin API Key를 확인합니다.
- 관리자 페이지에 Index, Application ID, Admin API Key를 입력합니다.