본문으로 건너뛰기
runlot
셀프 호스팅패키지로 설치

패키지로 설치

control plane과 각 데이터 노드를 apt 또는 dnf 패키지로 설치합니다. 저희가 보내 드린 파일이나 서명된 저장소에서 받을 수 있습니다.

패키지는 runlot-cp와 runlot-node 두 개이고, 세 번째인 runlot-eval은 두 패키지를 PostgreSQL, MinIO와 함께 한 대의 머신에 설치합니다. 모든 패키지는 동일한 설치 코어인 runlot-admin을 포함하며, 이 코어가 머신을 점검하고, 구성을 작성하고, 서비스를 시작합니다. postinstall은 이 명령입니다. 직접 실행할 수 없는 작업은 셸에서 일어나지 않습니다.

저장소

Debian, Ubuntu
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 update
RHEL, Rocky
sudo 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에 값 입력

Terminal
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_KEYopenssl 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요구 사항에서 정한 이름

설치

Debian, Ubuntu
sudo apt install runlot-cp
RHEL, Rocky
sudo dnf install runlot-cp

postinstall은 runlot-admin preflight cp를 실행하고, 이어서 runlot-admin install cp를 실행한 뒤 서비스를 시작합니다. 대시보드 URL과 노드용 join token을 출력합니다.

점검에 실패하면 아무것도 변경하기 전에 실패하며 문제가 된 값을 알려 줍니다. site.env를 수정한 뒤 다시 진행하세요.

Debian, Ubuntu
sudo dpkg --configure -a
RHEL, Rocky
sudo /opt/runlot/bin/runlot-admin install cp --etc /etc/runlot --state /var/lib/runlot

rpm의 postinstall은 실패해도 트랜잭션이 중단되지 않기 때문에 두 방식이 다릅니다. RHEL에서는 패키지가 설치되지만 실행 중인 것은 없으며, 설치 코어를 직접 다시 실행해야 합니다.

각 데이터 노드

site.env에 값 입력

Terminal
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_ADDRcontrol plane의 프라이빗 주소
RUNLOT_NODE_JOIN_TOKENcontrol plane의 postinstall이 출력한 값
RUNLOT_PRIVATE_ADDR이 머신의 프라이빗 주소
RUNLOT_FRONT_TLS_CERT, _KEY*.apps 인증서를 지정하거나, RUNLOT_FRONT_TLS_ADDR를 비워 두고 자체 프록시에서 종단합니다
RUNLOT_WIRE_HOSTSwire 인증서에 들어가는 이름: *.wire.acme.example,*.apps.acme.example

설치

Terminal
sudo apt install runlot-node      # or: sudo dnf install runlot-node

join token은 정확히 두 번의 호출만 인증합니다. 하나는 CA 인증서와 노드가 스스로 만들어 낼 수 없는 공유 값을 가져오는 호출이고, 다른 하나는 노드에서 생성한 키로 노드 자체의 인증서를 등록하는 호출입니다. CA 개인 키는 control plane 밖으로 나가지 않으며, 머신 간에 수동으로 복사하는 것은 아무것도 없습니다.

모든 프로젝트가 실행되는 샌드박스인 런타임 artifact는 패키지 안에 들어 있습니다. 크기는 약 1 GB이며, 이 때문에 노드 패키지가 큽니다.

노드 위치 선언

노드는 자신의 리전이나 국가를 스스로 주장하지 않습니다. 등록은 노드가 직접 인증하는 방식이므로, 노드가 자신의 관할권을 선언하면 자신을 제약하는 사실을 스스로 주장하는 셈이 됩니다. 노드가 등록된 후 control plane에서 한 번 선언합니다:

On the control plane
sudo /opt/runlot/bin/runlot-admin bootstrap --nodes node-1=icn/KR/do,node-2=fsn/DE

do는 Durable Objects를 담을 수 있는 노드를 표시합니다. 모든 활성 노드가 선언되기 전에는 프로젝트의 첫 Durable Object 배포가 거부됩니다.

평가용 머신

Terminal
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-eval

runlot-cp, runlot-node, 그리고 배포판의 postgresql-18에 의존하며 MinIO 유닛을 함께 제공합니다. MinIO 바이너리는 재배포되지 않습니다. AGPL이므로 다운로드는 직접 하셔야 합니다. /opt/runlot/bin/minio에 두고 systemctl enable --now minio를 실행하세요. 파일이 없으면 postinstall이 이를 안내합니다.

머신 한 대, 디스크 하나, 모든 것이 loopback입니다. 프로덕션 구성이 아닙니다.

첫 로그인

  1. RUNLOT_ADMIN_EMAILS에 있는 주소는 대시보드 URL에서 이메일과 비밀번호로 가입합니다. 기본값인 RUNLOT_SIGNUP=invite에서는 이것이 허용되는 유일한 가입이며, 나머지 사용자는 대시보드에서 초대합니다.
  2. 운영 콘솔은 같은 origin을 Host로 구분한 것이며, RUNLOT_ADMIN_HOST로 지정합니다. 별도의 두 번째 주소는 없습니다.
  3. CLI가 설치한 환경을 가리키도록 설정한 뒤 무언가를 배포하세요:
Terminal
runlot login --api https://runlot.acme.example
npm create runlot@latest hello && cd hello && runlot deploy

공개 플랜의 프로젝트 한도는 적용되지 않습니다. 자체 호스팅 설치에서 프로젝트 수의 유일한 상한은 라이선스의 max_projects이며, 기본값은 상한 없음입니다.

이 페이지의 목차