SSD Nodes Learn 🎉 VPS $5.50/월부터
가이드 Matt Connor작성자 Matt Connor

Rakazo 셀프 호스팅: VPS 구축 및 하드웨어 사양 가이드

Node 22, pnpm, Postgres, Graphile Worker를 활용한 Rakazo 셀프 호스팅 방법을 설명합니다. 봇 구동을 위한 샌드박스 환경 설정과 1GB RAM 플랜이 부족한 이유를 포함한 실질적인 서버 권장 사양을 확인해 보십시오.

Rakazo 셀프 호스팅의 실제 구성

Rakazo를 셀프 호스팅한다는 것은 하나의 Linux 서버에서 PostgreSQL, Graphile Worker 프로세스, API, 웹 애플리케이션, 그리고 활성화된 각 봇을 위한 샌드박스 컨테이너 등 다섯 가지 요소를 실행함을 의미합니다. Rakazo는 elie222가 Apache 2.0 라이선스로 공개한 Grok Bot의 오픈 소스 대안입니다. 각 봇은 고유한 스레드, 컴퓨터 자원, 메모리, 기록을 가지며, 동료 봇이나 단기적인 하위 에이전트를 생성할 수 있습니다.

마지막 부분 때문에 이 서비스는 데스크톱이 아닌 VPS(가상 사설 서버)에서 운영해야 합니다. 메모리를 유지하고 예약된 작업을 수행하는 봇은 사용자가 잠든 사이에도 접근 가능해야 합니다. 절전 모드로 전환되는 노트북은 작업 큐를 중단시킵니다.

Rakazo는 2026년 8월 기준으로 초기 베타 단계이므로, 완성된 제품이라기보다 작동 가능한 설정으로 간주해야 합니다. 전체 스택은 TypeScript로 구성되어 있습니다. 웹 애플리케이션에는 React 19와 Vite, API에는 Hono, 데이터베이스에는 Prisma를 사용하는 Postgres, 계정 관리에는 Better Auth, 백그라운드 작업에는 Graphile Worker를 사용합니다. Graphile Worker는 큐를 Postgres 내부에 저장하므로 Redis나 별도의 데이터 저장소를 추가로 실행할 필요가 없습니다. .env.exampleWAKEUP_DRIVER=graphile을 설정하며, 이는 봇이 깨어나는 작업이 Postgres 기반으로 이루어짐을 의미합니다. Postgres를 중단하면 예약된 모든 봇 작업도 함께 멈춥니다. 타인의 제품을 실행하는 대신 직접 부품을 조립하여 에이전트를 구성하고 싶다면, 구성 요소로 직접 에이전트 만들기가 다른 대안이 될 수 있습니다.

1 GB 플랜으로 부족한 이유

프로세스 수를 세어 보십시오. Postgres가 하나, API가 Node 프로세스 하나, 워커가 둘째, 웹 앱이 셋째, 샌드박스 슈퍼바이저가 넷째입니다. 그 후 실행되는 모든 봇은 그래픽 Linux 데스크톱과 브라우저를 포함한 컨테이너를 하나씩 점유합니다.

이 프로젝트의 자체 호스팅 문서에는 정직한 수치가 하나 명시되어 있습니다. E2B가 봇 데스크톱을 담당할 때 API, 워커, Postgres를 구동하려면 2 vCPU와 4 GB RAM을 갖춘 머신이 필요하다는 것입니다. 이는 무거운 작업을 외부에서 처리하는 제어 평면(control plane)만을 위한 수치입니다. SANDBOX_PROVIDER=docker를 설정하여 해당 데스크톱들을 귀하의 VPS로 옮기면, 4 GB는 목표치가 아니라 최소 사양이 됩니다. 봇을 하나 이상 활성화할 계획이라면 8 GB에서 시작하고, 봇이 작동하는 동안 docker stats를 사용하여 실제 수치를 측정하십시오. 샌드박스 내부의 브라우저가 메모리 사용량을 결정하므로, 사양서만으로는 정확한 수치를 알 수 없습니다. 에이전트 작업을 위한 서버 크기 산정의 일반적인 방법은 에이전트 VPS에 실제로 필요한 RAM과 CPU 용량에서 자세히 다룹니다.

상황이 악화되는 것을 막는 설정이 하나 있습니다. .env.exampleSANDBOX_IDLE_MS=600000과 함께 제공되는데, 이 설정은 지정된 밀리초 동안 유휴 상태가 지속되면 E2B 컴퓨터를 일시 중지하거나 Docker 컨테이너를 중단시킵니다. 10분 동안 유휴 상태가 유지되면 컴퓨터가 제거됩니다. 허용되는 최소값은 30000입니다. 이 설정이 없다면, 실행했던 모든 봇이 메모리를 영구적으로 점유하게 됩니다.

디스크 용량도 중요합니다. 샌드박스 이미지, Node 모듈, Postgres 볼륨이 하나의 디스크를 공유하므로 40 GB를 시작점으로 잡는 것이 합리적입니다.

복제 전 버전 고정하기

Rakazo는 빠르게 변화하며 main은 정식 릴리스가 아닙니다. 2026년 8월 16일 기준으로 해당 저장소에는 2026년 8월 13일에 게시된 프리릴리스로 표시된 v0.1.0-beta 태그가 단 하나 존재합니다.

git clone https://github.com/elie222/rakazo.git
cd rakazo
git checkout 53b119a68d9ef843d23aa3b7e3719b6be7b51fdb
git log -1 --format='%H %ci'

해당 커밋은 v0.1.0-beta이 가리키는 지점입니다. 브랜치나 태그 대신 커밋을 고정하십시오. 브랜치는 다음 git pull 시점에 변경될 수 있으며, 태그는 관리자가 다른 곳으로 옮길 수 있는 가변적인 레이블이므로 두 방식 모두 나중에 다시 돌아갈 수 있는 특정 트리 상태를 보장하지 않습니다. 커밋 식별자는 변경되지 않습니다. 서버 관련 정보와 함께 해당 식별자를 기록해 두십시오. 업그레이드 후 문제가 발생했을 때 가장 저렴한 해결책은 git checkout <old commit>를 수행하고 다시 빌드하는 것인데, 이는 정상 작동하던 커밋을 알고 있을 때만 가능하기 때문입니다.

요구 사항: Node 22, pnpm 9 및 Docker

node -v
pnpm -v
docker --version

package.json"engines": { "node": ">=22" }"packageManager": "pnpm@9.15.0"를 선언하므로, node -vv22 이상의 버전을 출력해야 합니다. Ubuntu 아카이브의 Node 패키지는 일반적으로 이보다 구버전이므로 NodeSource나 nvm을 통해 설치하십시오. pnpm은 corepack을 통해 Node와 함께 제공됩니다.

corepack enable
corepack prepare pnpm@9.15.0 --activate

Docker Engine과 compose 플러그인이 나머지 요구 사항을 충족하며, 사용자는 데몬에 접근할 수 있어야 합니다. docker ps 명령의 결과가 permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock라면, 사용자를 docker 그룹에 추가한 뒤 새로운 로그인 셸을 여십시오. 먼저 이 권한이 무엇을 의미하는지 파악하십시오. docker 그룹 멤버십은 시스템의 root 권한과 동일합니다. 해당 그룹의 사용자는 호스트 파일 시스템을 마운트하는 컨테이너를 실행할 수 있기 때문입니다.

.env 파일 설정 및 Postgres 시작

cp .env.example .env
chmod 600 .env

네트워크에 서비스를 노출하기 전에 두 가지 값을 반드시 변경해야 합니다. .env.exampleBETTER_AUTH_SECRET=replace-with-32-plus-character-secretENCRYPTION_KEY=replace-with-64-char-hex-or-passphrase를 포함하여 배포됩니다. Rakazo는 개발 환경이 아닌 곳에서 해당 자리표시자(placeholder) 값을 사용하면 거부하므로, 저장소에 공개된 비밀 값을 그대로 사용하는 대신 설정이 완료되지 않은 배포는 즉시 실패하게 됩니다.

openssl rand -base64 48
openssl rand -hex 32

그런 다음 데이터베이스를 단독으로 실행하고 마이그레이션을 수행합니다.

docker compose --env-file .env -f infra/compose/docker-compose.yml up postgres -d
pnpm install
pnpm db:generate
pnpm db:migrate
pnpm sandbox:build

pnpm sandbox:buildpackage.jsondocker build -t rakazo/computer:local infra/sandboxes/computer로 정의된 봇 컴퓨터 이미지를 빌드합니다. 그래픽 이미지이므로 첫 빌드 시 많은 데이터를 내려받으며 시간이 소요됩니다. docker image ls rakazo/computer 명령으로 이미지가 생성되었는지 확인하십시오. 한 행이 출력되어야 합니다.

compose 파일은 Postgres를 127.0.0.1:5433:5432로 게시하며, 이는 루프백(loopback) 전용입니다. 이 상태를 유지하십시오. 개발용 자격 증명은 rakazo:rakazo이며 저장소에 포함되어 있습니다. 인터넷에서 접근 가능한 Postgres 포트에 비밀번호가 설정되어 있으면 몇 시간 내에 스캐너에 의해 발견됩니다. 프로덕션용 compose 파일은 대신 POSTGRES_PASSWORD을 읽어오므로, 해당 단계에 도달하면 임의의 문자열로 설정하십시오.

첫 실행

pnpm dev

이 명령은 API(포트 3100), Graphile Worker, Vite 웹 앱(포트 5173), 샌드박스 감독자(포트 7091) 등 네 가지를 시작합니다. 앱은 http://127.0.0.1:5173에서 실행되며, 접속하면 로그인 페이지가 나타납니다.

VPS를 사용하는 경우 해당 장비 앞에 직접 앉아 있는 것이 아니므로, 5173 포트를 외부로 공개해서는 안 됩니다. 대신 본인의 로컬 장비에서 SSH(secure shell)를 통해 포트 포워딩을 수행하십시오.

ssh -L 5173:127.0.0.1:5173 -L 3100:127.0.0.1:3100 you@your-server

이 두 가지 실행 방식의 차이에 주의하십시오. pnpm dev은 Vite를 호스트에서 실행하며 로컬 인터페이스에만 바인딩합니다. 반면 compose 파일의 web 서비스는 5173:5173를 모든 인터페이스에 공개합니다. 공개된 VPS에서 전체 개발용 compose 스택을 실행하면 앱이 외부로 노출되므로, 상시 운영하는 서비스에는 반드시 프로덕션용 파일과 리버스 프록시를 사용하십시오.

서버에서 사용하기에 안전한 샌드박스 제공자는 무엇입니까?

이 설정은 반드시 올바르게 구성해야 합니다. .envSANDBOX_PROVIDER 설정은 네 가지 값을 가집니다.

  • docker은 기본값입니다. 각 봇은 pnpm sandbox:build가 생성한 이미지로부터 빌드된 고유한 컨테이너를 호스트 머신에서 실행합니다. 자체 호스팅 환경에서 가장 빠른 설정 방식입니다.
  • e2b은 E2B에서 봇 컴퓨터를 실행하며 E2B_API_KEY이 필요합니다. 이 방식은 봇 컴퓨터를 API와 데이터베이스가 실행되는 호스트와 분리하므로, 공개용 또는 다중 사용자 배포 환경에서 권장됩니다.
  • desktop는 봇의 명령어를 API 및 워커 호스트에서 직접 실행합니다. 저장소의 지침은 명확합니다. 공개 서버나 공유 서버에서는 절대 사용하지 마십시오.
  • fake은 테스트를 위한 프로세스 내 에뮬레이터입니다. 런타임 용도가 아닙니다.

데스크톱 관련 경고를 그대로 받아들이십시오. 데스크톱 모드에는 격리 경계가 전혀 없으므로, 봇은 API 프로세스를 실행하는 사용자의 권한으로 셸 명령어를 실행합니다. 이 경우 사용자의 홈 디렉터리, SSH 키, 클라우드 자격 증명 및 .env에 접근할 수 있게 됩니다. 봇이 읽는 웹 페이지의 텍스트가 서버의 명령어로 실행될 수 있습니다. 서버에서 데스크톱 모드를 사용하면 봇이 사용자의 자격 증명을 탈취하는 결과로 이어집니다. 이 모드는 직접 사용하는 개인용 머신에서만 사용하거나, 아예 사용하지 마십시오.

docker는 실질적인 경계 역할을 하지만 완벽하지는 않습니다. 각 봇은 고유한 컨테이너를 가지므로 다른 봇의 파일을 읽을 수 없습니다. 그러나 해당 컨테이너를 생성하는 슈퍼바이저는 /var/run/docker.sock을 마운트하며, 호스트 Docker 소켓에 대한 제어권은 곧 호스트 전체에 대한 제어권을 의미합니다. 따라서 슈퍼바이저는 비공개로 유지해야 합니다. .env.exampleSANDBOX_SUPERVISOR_TOKEN을 선택적인 별도 서비스 자격 증명으로 문서화하고 있으며, 비어 있을 경우 기본값은 BETTER_AUTH_SECRET입니다. 즉, 이 비밀 값을 기본값으로 두면 GitHub에서 누구나 읽을 수 있는 문자열로 컨테이너 생성 서비스를 보호하는 꼴이 됩니다. 두 값을 모두 설정하십시오. 여기서 가능한 가장 강력한 분리를 원한다면 e2b을 사용하거나, 다른 데이터가 없는 별도의 머신을 Rakazo에 할당하십시오. 이는 코딩 에이전트를 일회용 VM에서 실행하는 것과 같은 논리입니다. 에이전트가 잘못된 동작을 수행했을 때 피해를 최소화하는 가장 저렴한 방법은 해당 머신에 중요한 데이터를 두지 않는 것입니다.

모델 API 키는 어디에 설정합니까?

Rakazo는 관리형 모델 과금 기능을 제공하지 않습니다. 사용자가 직접 키를 준비해야 합니다. .env.examplePI_DEFAULT_PROVIDER=openrouter를 설정하므로, OPENROUTER_API_KEY이 일반적인 설정 위치이며 공급자 키도 동일한 설정을 통해 작동합니다.

키는 .env에 보관하고 git에 커밋하는 파일에는 포함하지 마십시오. 저장소의 모든 compose 명령어는 --env-file .env를 전달하므로, git이 추적하는 YAML 파일에 값을 기록하지 않고도 컨테이너에 값을 전달할 수 있습니다. 또한 OPENROUTER_API_KEY을 비워두고 온보딩 과정에서 앱에 키를 붙여넣을 수도 있습니다. 이는 ENCRYPTION_KEY에 기본 제공되는 자리 표시자 대신 실제 무작위 값을 사용해야 하는 또 다른 이유입니다.

봇이 키를 사용하기 전에 공급자 측에서 해당 키에 대한 지출 한도를 설정하십시오. 루프에 빠진 봇은 비용을 발생시키며, 키별 지출 한도는 사용자가 직접 모니터링하지 않아도 작동하는 유일한 안전장치입니다. 이 키에 고유한 이름을 지정하여 나중에 해당 키만 별도로 폐기할 수 있도록 하십시오.

개발 모드에서 상시 운영 환경으로 전환하기

이 저장소는 Postgres, API, 워커, 웹 앱, 그리고 TLS(전송 계층 보안) 인증서를 자동으로 획득하는 Caddy를 실행하는 프로덕션용 compose 파일을 제공합니다. 봇 컴퓨터를 위해서는 E2B가 필요합니다.

sudo DEPLOY_USER=deploy bash infra/compose/harden-host.sh
docker compose --env-file .env -f infra/compose/docker-compose.prod.yml up -d --build

harden-host.sh은 SSH 비밀번호 로그인을 비활성화하고, SSH, HTTP, HTTPS에 대한 UFW(uncomplicated firewall) 규칙을 설정하며, fail2ban을 켜고 AppArmor 프로파일을 적용합니다. 이 스크립트는 로그인 방식을 변경하므로 실행하기 전에 내용을 읽어보십시오. 스크립트가 실행되는 동안 두 번째 SSH 세션을 열어두십시오.

프로덕션용 .env는 개발용보다 더 많은 설정이 필요합니다. 셀프 호스팅 문서에 최소 요구 사항이 나열되어 있습니다.

NODE_ENV=production
RAKAZO_HOST=app.example.com
BETTER_AUTH_URL=https://app.example.com
WEB_ORIGIN=https://app.example.com
API_URL=https://app.example.com
POSTGRES_PASSWORD=<random>
BETTER_AUTH_SECRET=<random>
ENCRYPTION_KEY=<random>
E2B_API_KEY=<your key>
OPENROUTER_API_KEY=<your key>
SANDBOX_PROVIDER=e2b
AGENT_RUNTIME=pi
DATA_DIR=/data

첫 번째 up을 실행하기 전에 서버를 가리키는 A 레코드를 설정하십시오. Caddy는 RAKAZO_HOST에 지정된 도메인 이름으로 인증서를 요청하는데, 해당 이름이 이 서버로 연결되지 않거나 80번 포트가 외부로 닫혀 있으면 요청이 실패합니다.

또한 SIGNUP_ALLOWLIST=you@example.com를 설정하십시오. SIGNUPS_ENABLED=true이 기본값이므로, 공개 도메인에 인스턴스를 올리면 누구나 가입할 수 있고 모든 새 계정에 컴퓨터가 할당됩니다. 먼저 허용 목록(allowlist)을 사용하십시오. 원한다면 나중에 설정을 완화할 수 있습니다.

저장소 내의 docs/self-host.md를 프로덕션 설정의 기준으로 삼으십시오. 코드가 변경됨에 따라 이 파일도 함께 변경되며, 본 가이드는 그렇지 않기 때문입니다. Compose가 작업을 수행하므로 일반적인 규칙이 적용되며, VPS를 위한 Docker Compose 기초 문서에서 스택을 장기간 운영할 때 왜 --env-file와 명명된 볼륨(named volumes)이 중요한지 다룹니다.

백업

Postgres와 data/ 디렉터리가 인스턴스의 전부입니다.

./scripts/backup.sh
./scripts/restore.sh backups/BACKUP_TIMESTAMP

backup.sh은 Postgres를 덤프하고 data/을 아카이브합니다. 의존도가 높은 서버라면 저장소에서 제공하는 타이머를 사용하여 infra/compose/backup-prod.sh/usr/local/sbin/rakazo-backup으로 설치하십시오. 그러면 별도의 조치 없이도 로테이션이 수행됩니다. 데이터베이스와 동일한 디스크에 저장된 백업은 백업이라 할 수 없으므로, 반드시 외부로 복사해 두어야 합니다. 또한, 실제 복구가 필요한 상황이 오기 전에 예비 서버에서 미리 복구 테스트를 한 번 수행하십시오.

실패 원인과 확인 방법

pnpm db:migrate이(가) 데이터베이스에 연결할 수 없습니다. 마이그레이션 과정에서 127.0.0.1:5433의 데이터베이스 서버에 접근할 수 없다는 오류가 발생합니다. Postgres 컨테이너가 실행되지 않았거나, 실행 중이지만 아직 준비되지 않은 상태입니다. docker compose --env-file .env -f infra/compose/docker-compose.yml ps을(를) 실행하여 postgres 서비스가 정상(healthy) 상태인지 확인하십시오. compose 파일에 3초마다 실행되는 상태 확인(health check) 설정이 포함되어 있습니다. 컨테이너가 반복적으로 재시작된다면, 보통 pgdata 볼륨이 다른 자격 증명으로 생성되었기 때문입니다. docker compose ... down -v을(를) 실행하면 해당 볼륨이 초기화되며, 이 과정에서 데이터도 함께 삭제됩니다.

포트가 이미 사용 중입니다. 5433 포트를 다른 프로세스가 점유하고 있으면 Postgres 실행 시 bind: address already in use 오류가 발생합니다. 대부분 이전에 실행한 Rakazo 스택을 종료하지 않았을 때 발생합니다. sudo ss -lntp | grep 5433을(를) 실행하면 해당 프로세스 이름을 확인할 수 있습니다.

봇이 컴퓨터를 할당받지 못합니다. SANDBOX_PROVIDER=docker이(가) 설정되어 있으나 rakazo/computer:local 이미지가 없으면 시작할 대상이 없습니다. docker image ls rakazo/computer을(를) 실행하면 한 줄로 상태를 확인할 수 있으며, pnpm sandbox:build을(를) 실행하면 문제를 해결할 수 있습니다. supervisor가 Docker 소켓에 접근할 수 없어도 컨테이너를 생성할 수 없으며, 이때 오류 메시지에 permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock 경로가 표시됩니다.

긴 명령어가 중간에 종료됩니다. .env.example이(가) SANDBOX_COMMAND_TIMEOUT_MS=300000을(를) 설정하므로, 봇 컴퓨터 내부의 단일 명령어는 5분이 지나면 중단됩니다. 샌드박스가 충돌했다고 가정하기 전에 빌드 속도가 느린 경우 이 값을 높이십시오.

pnpm install이(가) 알 수 없는 이유로 중단됩니다. 다른 작업을 수행하기 전에 node -v을(를) 먼저 확인하십시오. 워크스페이스는 >=22을(를) 선언하며, Node 버전이 낮으면 버전 관련 메시지 대신 의존성 코드에서 오류가 발생합니다.

로컬에서는 로그인이 되지만 도메인을 통하면 되지 않습니다. BETTER_AUTH_URL, WEB_ORIGIN, API_URL 모두 주소창에 입력된 것과 동일한 퍼블릭 오리진(스키마 포함)을 가지고 있어야 합니다. 세션이 유지되지 않는 일반적인 원인은 이 중 하나에 남아 있는 오래된 http://127.0.0.1:5173 때문입니다.

고정된 체크아웃 업데이트하기

자체 호스팅 문서의 업그레이드 경로는 간단합니다. 새로운 소스를 pull하고, 데이터베이스 마이그레이션을 실행한 뒤, API와 워커를 재시작하면 됩니다.

./scripts/backup.sh
git fetch --all
git checkout NEW_COMMIT_SHA
pnpm install
pnpm --filter @rakazo/db migrate
docker compose --env-file .env -f infra/compose/docker-compose.prod.yml up -d --build

먼저 백업을 수행하십시오. 마이그레이션은 앞으로만 진행되며, 베타 버전에서는 신뢰할 수 있는 되돌리기 경로를 제공하지 않습니다. 업데이트를 진행하기 전에 현재 고정된 SHA와 새로운 SHA 사이의 커밋 내용을 확인하십시오. 이처럼 초기 단계의 프로젝트는 예고 없이 환경 변수 이름을 변경하는 경우가 많으며, 누락된 변수는 서비스가 시작되었다가 즉시 종료되는 현상을 유발합니다. Rakazo를 운영하는 것이 적절한 선택인지 아직 고민 중이라면, 자체 호스팅 AI 에이전트 요약에서 이 범주에 속하는 다른 대안들과 각각의 유지 비용을 확인할 수 있습니다.

FAQ

1 GB VPS에서 Rakazo를 실행할 수 있습니까?

아니요. Postgres, API, 워커, 샌드박스 슈퍼바이저, 웹 앱이 동시에 실행되며, SANDBOX_PROVIDER=docker를 사용하면 활성화된 각 봇이 그래픽 데스크톱과 브라우저를 포함하는 컨테이너를 추가로 생성합니다. 프로젝트 공식 문서에서는 E2B가 봇 데스크톱을 호스팅하는 경우에만 API, 워커, Postgres를 위해 2 vCPU와 4 GB RAM이 충분하다고 명시합니다. 컨트롤 플레인 최소 사양을 4 GB로 잡고, 데스크톱을 직접 호스팅할 경우 그보다 높은 사양을 준비하십시오.

서버에서 데스크톱 샌드박스 제공자를 사용하는 것은 안전합니까?

아니요. desktop은 해당 프로세스를 실행하는 사용자의 권한으로 API 및 워커 호스트에서 봇의 명령을 직접 실행하며, 이 과정에서 해당 사용자의 파일과 자격 증명에 접근할 수 있습니다. 저장소에서는 공용 서버나 공유 서버에서 이 기능을 사용하지 말라고 경고합니다. 봇당 하나의 컨테이너를 생성하려면 docker를 사용하고, 여러 사용자가 로그인하는 환경이라면 e2b를 사용하십시오.

Rakazo의 어떤 버전을 설치해야 합니까?

2026년 8월 16일 기준으로 2026년 8월 13일에 게시된 프리릴리즈 태그인 v0.1.0-beta이 유일합니다. main을 추적하기보다는 해당 태그가 가리키는 커밋인 53b119a68d9ef843d23aa3b7e3719b6be7b51fdb을 체크아웃하십시오. 브랜치는 계속 변경될 수 있고 태그는 재지정될 수 있으므로, 두 방식 모두 특정 시점의 소스 코드를 보장하지 않습니다. 롤백은 정상 작동했던 버전을 정확히 알 때만 가능하므로 커밋 해시를 기록해 두십시오.

OpenRouter API 키는 어디에 입력합니까?

.env 파일 내 OPENROUTER_API_KEY 항목에 입력하며, 버전 관리 시스템에 커밋하는 compose 파일에는 절대 포함하지 마십시오. 저장소의 두 compose 명령어 모두 --env-file .env을 전달하므로, YAML 파일에 기록하지 않고도 컨테이너에 값을 전달할 수 있습니다. 값을 비워두고 앱 초기 설정 단계에서 직접 키를 붙여넣을 수도 있습니다. 봇이 루프에 빠져 모델을 계속 호출할 경우를 대비해 제공자 측에서 사용량 제한을 설정하십시오.

도메인 이름과 TLS가 필요합니까?

단순 테스트를 넘어선 운영 환경이라면 반드시 필요합니다. 프로덕션용 compose 파일은 Caddy를 실행하여 자동으로 인증서를 발급받으며, RAKAZO_HOST, BETTER_AUTH_URL, WEB_ORIGINAPI_URL는 모두 동일한 공개 HTTPS 오리진을 사용해야 합니다. 초기 확인 단계에서는 도메인 없이 진행할 수 있습니다. pnpm dev을 실행하고 포트를 외부로 노출하는 대신 SSH를 통해 5173 포트를 포워딩하십시오.