소개
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
배포
- 설정 파일을 가져옵니다.
CodeBlock Loading...
- 환경 변수를 생성합니다.
BASH
vi .env
- 다음 내용을 입력한 뒤
ESC키를 누르고:wq를 입력해 저장하고 종료합니다.
CodeBlock Loading...
백엔드를 시작합니다.
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를 입력합니다.