패키지로 설치
control plane과 각 데이터 노드를 apt 또는 dnf 패키지로 설치합니다. 저희가 보내 드린 파일이나 서명된 저장소에서 받을 수 있습니다.
패키지는 runlot-cp와 runlot-node 두 개이고, 세 번째인 runlot-eval은 두 패키지를 PostgreSQL, MinIO와 함께 한 대의 머신에 설치합니다. 모든 패키지는 동일한 설치 코어인 runlot-admin을 포함하며, 이 코어가 머신을 점검하고, 구성을 작성하고, 서비스를 시작합니다. postinstall은 이 명령입니다. 직접 실행할 수 없는 작업은 셸에서 일어나지 않습니다.
저장소
curl -fsSL https://packages.runlot.io/gpg/runlot-archive-keyring.gpg \
| sudo tee /usr/share/keyrings/runlot.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/runlot.gpg] https://<token>@packages.runlot.io/deb stable main" \
| sudo tee /etc/apt/sources.list.d/runlot.list
sudo apt updatesudo tee /etc/yum.repos.d/runlot.repo <<'EOF'
[runlot]
name=Runlot
baseurl=https://<token>@packages.runlot.io/rpm/el/x86_64
gpgcheck=1
gpgkey=https://packages.runlot.io/gpg/runlot-archive-keyring.gpg
EOF<token>은 라이선스와 함께 제공됩니다. 토큰은 누가 다운로드할 수 있는지만 결정하며, 다른 역할은 없습니다. 토큰이 없는 머신에 복사한 패키지도 똑같이 설치됩니다. 저장소 호스트가 운영되기 전까지는 패키지를 서명된 번들로 보내 드리며, 이 경우에도 설치 명령 이후의 단계는 아래와 같습니다. 번들 확인 방법은 에어갭을 참고하세요.
control plane
site.env에 값 입력
sudo mkdir -p /etc/runlot/license
sudo cp license /etc/runlot/license/license
sudo apt download runlot-cp && sudo dpkg --unpack runlot-cp_*.deb # unpacks the example without configuring
sudo cp /usr/share/runlot/site.env.cp-example /etc/runlot/site.env
sudo chmod 0640 /etc/runlot/site.env
sudoedit /etc/runlot/site.env예제에는 주석이 달려 있습니다. 다음은 기본값이 없는 키이며, 반드시 설정해야 하는 유일한 키입니다.
| 키 | 설명 |
|---|---|
RUNLOT_MASTER_KEY | openssl rand -hex 32. 저희에게는 사본이 없습니다. |
RUNLOT_DATABASE_URL | 데이터베이스를 소유한 역할로 접속하는 PostgreSQL 18 |
RUNLOT_OBJSTORE_ENDPOINT, _BUCKET, _ACCESS_KEY_ID, _SECRET_ACCESS_KEY | 사용 중인 오브젝트 스토어 |
RUNLOT_CP_PRIVATE_ADDR | 노드가 control plane에 접속하는 프라이빗 주소 |
RUNLOT_PUBLIC_URL, RUNLOT_ADMIN_HOST | 대시보드의 origin과 호스트 |
RUNLOT_ADMIN_EMAILS | 플랫폼 운영자입니다. 첫 번째 주소는 초대 없이 가입할 수 있는 유일한 주소이기도 합니다. |
RUNLOT_APP_DOMAIN, RUNLOT_WIRE_DOMAIN, RUNLOT_GIT_DOMAIN | 요구 사항에서 정한 이름 |
설치
sudo apt install runlot-cpsudo dnf install runlot-cppostinstall은 runlot-admin preflight cp를 실행하고, 이어서 runlot-admin install cp를 실행한 뒤 서비스를 시작합니다. 대시보드 URL과 노드용 join token을 출력합니다.
점검에 실패하면 아무것도 변경하기 전에 실패하며 문제가 된 값을 알려 줍니다. site.env를 수정한 뒤 다시 진행하세요.
sudo dpkg --configure -asudo /opt/runlot/bin/runlot-admin install cp --etc /etc/runlot --state /var/lib/runlotrpm의 postinstall은 실패해도 트랜잭션이 중단되지 않기 때문에 두 방식이 다릅니다. RHEL에서는 패키지가 설치되지만 실행 중인 것은 없으며, 설치 코어를 직접 다시 실행해야 합니다.
각 데이터 노드
site.env에 값 입력
sudo cp /usr/share/runlot/site.env.node-example /etc/runlot/site.env
sudoedit /etc/runlot/site.env| 키 | 설명 |
|---|---|
RUNLOT_NODE_ID | 설치 환경 내에서 고유해야 하며, 인증서와 lease에 이 값이 담깁니다 |
RUNLOT_CP_PRIVATE_ADDR | control plane의 프라이빗 주소 |
RUNLOT_NODE_JOIN_TOKEN | control plane의 postinstall이 출력한 값 |
RUNLOT_PRIVATE_ADDR | 이 머신의 프라이빗 주소 |
RUNLOT_FRONT_TLS_CERT, _KEY | *.apps 인증서를 지정하거나, RUNLOT_FRONT_TLS_ADDR를 비워 두고 자체 프록시에서 종단합니다 |
RUNLOT_WIRE_HOSTS | wire 인증서에 들어가는 이름: *.wire.acme.example,*.apps.acme.example |
설치
sudo apt install runlot-node # or: sudo dnf install runlot-nodejoin token은 정확히 두 번의 호출만 인증합니다. 하나는 CA 인증서와 노드가 스스로 만들어 낼 수 없는 공유 값을 가져오는 호출이고, 다른 하나는 노드에서 생성한 키로 노드 자체의 인증서를 등록하는 호출입니다. CA 개인 키는 control plane 밖으로 나가지 않으며, 머신 간에 수동으로 복사하는 것은 아무것도 없습니다.
모든 프로젝트가 실행되는 샌드박스인 런타임 artifact는 패키지 안에 들어 있습니다. 크기는 약 1 GB이며, 이 때문에 노드 패키지가 큽니다.
노드 위치 선언
노드는 자신의 리전이나 국가를 스스로 주장하지 않습니다. 등록은 노드가 직접 인증하는 방식이므로, 노드가 자신의 관할권을 선언하면 자신을 제약하는 사실을 스스로 주장하는 셈이 됩니다. 노드가 등록된 후 control plane에서 한 번 선언합니다:
sudo /opt/runlot/bin/runlot-admin bootstrap --nodes node-1=icn/KR/do,node-2=fsn/DEdo는 Durable Objects를 담을 수 있는 노드를 표시합니다. 모든 활성 노드가 선언되기 전에는 프로젝트의 첫 Durable Object 배포가 거부됩니다.
평가용 머신
sudo cp /usr/share/runlot/eval-site.env /etc/runlot/site.env
sudoedit /etc/runlot/site.env # the master key; the join token after the control-plane half installs
sudo apt install runlot-evalrunlot-cp, runlot-node, 그리고 배포판의 postgresql-18에 의존하며 MinIO 유닛을 함께 제공합니다. MinIO 바이너리는 재배포되지 않습니다. AGPL이므로 다운로드는 직접 하셔야 합니다. /opt/runlot/bin/minio에 두고 systemctl enable --now minio를 실행하세요. 파일이 없으면 postinstall이 이를 안내합니다.
머신 한 대, 디스크 하나, 모든 것이 loopback입니다. 프로덕션 구성이 아닙니다.
첫 로그인
RUNLOT_ADMIN_EMAILS에 있는 주소는 대시보드 URL에서 이메일과 비밀번호로 가입합니다. 기본값인RUNLOT_SIGNUP=invite에서는 이것이 허용되는 유일한 가입이며, 나머지 사용자는 대시보드에서 초대합니다.- 운영 콘솔은 같은 origin을 Host로 구분한 것이며,
RUNLOT_ADMIN_HOST로 지정합니다. 별도의 두 번째 주소는 없습니다. - CLI가 설치한 환경을 가리키도록 설정한 뒤 무언가를 배포하세요:
runlot login --api https://runlot.acme.example
npm create runlot@latest hello && cd hello && runlot deploy공개 플랜의 프로젝트 한도는 적용되지 않습니다. 자체 호스팅 설치에서 프로젝트 수의 유일한 상한은 라이선스의 max_projects이며, 기본값은 상한 없음입니다.