메인 콘텐츠로 건너뛰기 탐색으로 건너뛰기 푸터로 건너뛰기
디자인 파트너 프로그램: 무료로 가입하고 평생 BUSINESS 플랜 혜택을 누리세요

빠른 시작

몇 분 안에 서버에서 컨테이너화된 서비스를 실행합니다.

빠른 시작

자체 서버에서 암호화된 격리된 컨테이너 환경을 배포합니다. 클라우드 계정이나 SaaS 의존성이 필요하지 않습니다. 모든 것이 직접 제어하는 하드웨어에서 실행됩니다.


소개

핵심 개념

리포지터리(repo)는 디스크의 단일 암호화 파일입니다. 이동, 백업, 포크할 수 있습니다. 그냥 파일입니다. 마운트하면 전용 Docker 데몬과 앱 데이터가 들어 있는 폴더가 됩니다.

리포지터리를 USB 드라이브처럼 생각하세요. 손에 들고 있는 것으로, 꽂으면 시스템에서 보이고 접근 가능해집니다. 앱과 데이터는 완전히 이식 가능합니다. 모든 클라우드 공급자의 모든 머신에서 꽂고 실행합니다.

두 가지 도구, 두 가지 역할:

  • rdc = 노트북의 CLI (TypeScript, 전역 설치)
  • renet = 서버의 오케스트레이터 (Go 바이너리, 데몬/네트워크/격리 관리)
  • RDC는 config machine setup 중에 renet을 자동으로 프로비저닝합니다. 서버에서 수동 설정이 필요하지 않습니다.

아키텍처는 보안 모델을 설명합니다. rdc vs renet은 어느 도구를 언제 사용할지 설명합니다.

1. CLI 설치

curl -fsSL https://www.rediacc.com/install.sh | bash
rdc doctor     # 확인: Node, SSH 키, renet, Docker

Windows, Alpine, Arch: 설치를 참조하세요. 전체 시스템 요구 사항: 요구 사항.

2. SSH 키 설정

rdc는 SSH를 통해 연결합니다. rdc가 서버에 접근하려면 서버가 공개 키를 신뢰해야 합니다.

# 키 생성 (이미 있으면 건너뜁니다)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519

# 공개 키를 서버에 복사합니다 (비밀번호 입력 메시지가 표시됩니다)
ssh-copy-id -i ~/.ssh/id_ed25519 user@your-server-ip

# rdc에게 사용할 키를 알립니다
rdc config ssh set --key ~/.ssh/id_ed25519

이제 모든 rdc 명령은 이 키로 인증합니다. 비밀번호가 필요하지 않습니다.

3. 서버 추가

rdc config machine add --name my-server --ip 192.168.1.100 --user muhammed
rdc config machine setup --name my-server  # renet 프로비저닝 + 데이터스토어 생성

수행되는 작업: SSH 호스트 키 스캔, renet 바이너리 업로드, 서버에 암호화된 데이터스토어 초기화. 리포지터리 사용 준비 완료.

데이터스토어 크기 조정, Ceph RBD, 클라우드 공급자: 머신 설정. SSH 실패: 문제 해결.

4. Config 파일

rdc config show                            # 사람이 읽기 쉬운 요약
cat ~/.config/rediacc/rediacc.json         # 원시 JSON: 머신, 리포지터리, 스토리지, SSH 키

파일 하나 = 환경 하나. 다른 노트북에 복사하면 바로 사용할 수 있습니다.


리포지터리 작업

1. 리포지터리 생성

rdc repo create --name my-app -m my-server --size 2G  # 2 GB 암호화 리포지터리 생성

암호화 볼륨을 생성하고 마운트하며 Docker 데몬을 시작합니다. 리포지터리는 config에 등록되고 사용 준비가 됩니다.

크기 조정, 삭제, 검증: 리포지터리.

2. 템플릿 적용

rdc repo template list                                        # 내장 템플릿 표시
rdc repo template apply --name app-postgres -m my-server -r my-app  # docker-compose.yml + Rediaccfile 배포

템플릿은 docker-compose.yml, Rediaccfile, 지원 파일을 제공합니다. 템플릿(또는 자체 compose 파일) 없이는 시작할 것이 없습니다.

3. 리포지터리 시작

rdc repo up --name my-app -m my-server  # Rediaccfile up() 실행
rdc repo list -m my-server                           # 머신의 모든 리포지터리 보기
rdc repo status --name my-app -m my-server  # 마운트 상태, Docker, 크기, 암호화

repo up은 필요하면 자동으로 마운트합니다. 플래그가 필요하지 않습니다.

4. VS Code

rdc vscode connect -m my-server -r my-app              # VS Code SSH를 열고 리포지터리 샌드박스 내부에 착지합니다

암호화된 볼륨 내부의 파일을 편집하고 있습니다. docker ps는 이 리포지터리의 컨테이너만 표시합니다. 저장하고, compose up하고, 반복합니다.

5. rdc repo up vs renet dev up

rdc repo uprenet dev up
실행 위치노트북 (CLI)VS Code 샌드박스 내부
수행하는 작업SSH → 자동 마운트 → Rediaccfile up() 실행Rediaccfile up()을 직접 실행
사용 사례CI/CD, 자동화, 원격 작업개발자 내부 루프
격리외부에서 오케스트레이션이미 샌드박스 내부

데모 흐름: rdc repo template applyrdc vscode connect -m my-server -r my-appdocker-compose.yml 편집 → renet dev up → 앱 실행 확인 → 반복.

Rediaccfile 구조: 서비스. 어느 도구를 언제 사용할지: rdc vs renet.

6. 격리 모델

  • 범용 사용자 (rediacc): 모든 머신에서 동일한 UID. 리포지터리를 다른 서버로 이동하면 파일 소유권이 그냥 작동합니다. chown 번거로움이 없습니다.
  • 리포지터리당 Docker 데몬: 각 리포지터리는 자체 격리된 Docker 데몬을 갖습니다. docker ps는 이 리포지터리의 컨테이너만 표시합니다.
  • Landlock + OverlayFS 샌드박스: VS Code 셸은 파일 시스템이 제한됩니다. 다른 리포지터리를 읽을 수 없습니다. $HOME 쓰기는 리포지터리별 오버레이입니다.

격리 작동 방식: 아키텍처. Rediaccfile 수명 주기: 서비스.

7. 터미널, 동기화 및 터널

터미널:

rdc term connect -m my-server -r my-app                            # 리포지터리 샌드박스로 SSH
rdc term connect -m my-server -r my-app -c "curl localhost:3000"   # 명령 실행 후 종료
rdc term connect -m my-server                                   # 머신으로 SSH (샌드박스 없음)

파일 동기화 (SSH를 통한 rsync):

rdc repo sync upload -m my-server -r my-app --local ./src                                   # 디렉터리 푸시
rdc repo sync upload -m my-server -r my-app --local ./config.yml --remote conf              # 단일 파일 푸시
rdc repo sync download -m my-server -r my-app --local ./backup                              # 디렉터리 풀
rdc repo sync download -m my-server -r my-app --remote-file conf/config.yml --local ./dl    # 단일 파일 풀
rdc repo sync download -m my-server -r my-app --local ./backup --dry-run                    # 먼저 미리 보기

터널 (컨테이너로의 SSH 포트 포워딩):

rdc repo tunnel -m my-server -r my-app -c app  # 앱 컨테이너에 대한 포트 자동 감지
rdc repo tunnel -m my-server -r my-app -c db --port 5432  # Postgres 터널
rdc repo tunnel -m my-server -r my-app -c db --port 5432 --local 15432  # 사용자 정의 로컬 포트

터널 실행 → 브라우저에서 localhost:3000 열기 → 원격 서버의 실제 앱.

동기화, 터미널, VS Code 세부 사항: 도구.


포크 및 백업

1. Grand 및 Fork 리포지터리

rdc repo fork --parent my-app -m my-server --tag experiment --up  # 즉각적인 CoW 클론 + 시작
rdc repo list -m my-server                                  # 표시: my-app (grand) + my-app:experiment (fork)
rdc repo delete --name my-app:experiment -m my-server  # 포크 삭제, grand는 그대로 유지

즉각적인 제로 카피 클론. CoW (copy-on-write). 마이크로초, 데이터 복사 없음. 한쪽이 쓸 때까지 블록이 공유됩니다.

사용 사례:

  • AI / ML: 프로덕션 데이터셋 포크, 실험 실행, 폐기 또는 프로모션
  • DevOps: 포크 → 마이그레이션 테스트 → 나쁘면 삭제, 좋으면 프로모션
  • 백업: 포크 = 즉각적인 스냅샷, 오프사이트 푸시

포크 수명 주기, 교차 머신 포크: 리포지터리.

2. 다른 머신으로 푸시

# 리포지터리를 다른 머신으로 푸시
rdc repo push --name my-app -m my-server --to backup-server

# 대상에서 자동 배포로 푸시
rdc repo push --name my-app -m my-server --to backup-server --up

# CRIU 체크포인트로 푸시 (라이브 마이그레이션, 메모리 상태 보존)
rdc repo push --name my-app -m my-server --to new-server --checkpoint --up

# 새 머신으로 푸시 (클라우드 공급자를 통한 자동 프로비저닝)
rdc repo push --name my-app -m my-server --to new-server --provision linode --up

3. 클라우드 스토리지로 푸시 (OneDrive, Google Drive, S3)

# rclone config를 스토리지 백엔드로 가져오기
rdc config storage import --file ~/rclone.conf

# 사용 가능한 스토리지 목록
rdc storage list

# 리포지터리를 클라우드 스토리지로 푸시
rdc repo push --name my-app -m my-server --to my-s3-backup

# 스토리지의 백업 목록
rdc repo backup list --from my-s3-backup -m my-server

--to는 대상이 머신인지 스토리지 백엔드인지 자동으로 감지합니다. 모든 rclone 지원 공급자와 작동합니다: S3, R2, B2, OneDrive, Google Drive, SFTP 등.

4. 원격에서 풀

# 클라우드 머신에서 로컬 서버로 리포지터리 풀
rdc repo pull --name my-app -m my-local-server --from cloud-server

# 클라우드 스토리지에서 풀
rdc repo pull --name my-app -m my-local-server --from my-s3-backup

# 풀하고 즉시 시작
rdc repo pull --name my-app -m my-local-server --from my-s3-backup --up

왜 풀인가요? 로컬 머신이 NAT 뒤에 있습니다. 클라우드가 푸시할 수 없습니다. 하지만 클라우드에는 접근할 수 있습니다. 풀은 리포지터리를 집으로 가져옵니다.

전체 사이클: 개발에서 생성 → 클라우드로 푸시 → 프로덕션에서 풀 → --up. 리포지터리 하나, 어떤 머신이든, 어떤 클라우드든.

예약, 자동화된 백업, 복원: 백업 및 복원.


프록시 및 SSL

1. 인프라 Config

rdc config infra set -m my-server  # 구성: 기본 도메인, 공용 IP, 포트 범위
rdc config infra show -m my-server  # 구성 검토
rdc config infra push -m my-server  # 원격에 프록시 config 푸시

라우팅 작동 방식:

  • Traefik이 rediacc.service_namerediacc.service_port 레이블을 통해 컨테이너를 자동으로 검색합니다.
  • 경로: {service}-{networkId}.{baseDomain} → 컨테이너 IP:포트
  • SSL: Cloudflare DNS-01 챌린지를 통한 Let’s Encrypt (자동 갱신, 와일드카드 인증서)

2. 프록시 템플릿

rdc repo template apply --name proxy -m my-server -r infra  # 리포지터리에 프록시 배포
rdc repo up --name infra -m my-server  # Traefik 시작

이제 Traefik이 이 머신의 모든 리포지터리로 외부 트래픽을 라우팅합니다. 모든 컨테이너는 자동으로 HTTPS 엔드포인트를 갖습니다.

# https://my-app.example.com으로 이동 → 컨테이너로 라우팅됨
# 데이터베이스용 TCP/UDP 포워딩:
#   rediacc.tcp_ports=3306,5432 → 자동 할당된 외부 포트

라우팅 규칙, DNS, TLS 구성: 네트워킹.


다음 단계