Show HN: Eleven – Codespaces의 오픈 소스 대안
요약
Eleven은 GitHub Codespaces의 오픈 소스 대안으로, 사용자의 클라우드 계정 내 VM에서 실행되는 코드 샌드박스입니다. 자동 HTTPS와 장기 실행 프로세스를 지원하며 AWS 및 Hetzner 환경에서 원격 개발, 테스트, 앱 배포 용도로 사용할 수 있습니다.
핵심 포인트
- 사용자 클라우드(AWS, Hetzner) 내 VM 기반 샌드박스 제공
- 자동 HTTPS 지원 및 장기 실행 프로세스 관리 가능
- CLI를 통한 간편한 환경 초기화 및 에디터 연결
- 원격 개발 환경 구축부터 앱 배포까지 통합 지원
eleven aws init hello-world --runtimes node@18.7.0 --repositories eleven-sh/hello-world
<p align="center">
<img alt="Example of use of the Eleven CLI" src="./assets/eleven_cli.png" width="759">
</p>
<blockquote align="left">
... 이제 이 샌드박스가 생성되었으므로, 선호하는 에디터로 연결할 수 있습니다:
</blockquote>
eleven aws edit hello-world
<img width="1136" alt="VSCode opened in a Node.js application repository" src="./assets/vscode.png">
<blockquote align="left">
... 마지막으로, 애플리케이션 작업을 마쳤다면, 이를 배포하고 싶을 것입니다:
</blockquote>
me@home:~$ ssh eleven/hello-world # 또는 에디터의 통합 터미널(integrated terminal)을 사용하세요
eleven@hello-world:~/workspace/hello-world$ node index.js # 앱이 시작되는지 테스트합니다 (선택 사항)
Server running at http://127.0.0.1:8000/
^C (Control-C)
...
<blockquote align="left">
... 사용하려는 도메인에 대해 샌드박스의 공인 IP 주소(public IP address)를 가리키는 A 레코드를 추가한 다음, 다음을 실행하세요:
</blockquote>
me@home:~$ eleven aws serve hello-world 8000 --as hello.eleven.sh
Success! The port "8000" is now reachable at: https://hello.eleven.sh
...
목차
요구 사항 (Requirements)
Eleven CLI는 Linux 및 MacOS에서 테스트되었습니다. Windows 지원은 이론적인 단계입니다 (테스터가 필요합니다 💙).
Eleven을 사용하기 전에 다음 종속성 (dependencies)이 설치되어 있어야 합니다:
- OpenSSH Client (샌드박스에 접속하는 데 사용됩니다).
edit 명령어를 실행하기 전에 다음 에디터 중 하나가 설치되어 있어야 합니다:
- Microsoft Visual Studio Code (현재 유일하게 지원되는 에디터입니다).
설치 (및 업데이트) (Installation (and update))
Eleven CLI를 설치하는 데 필요한 과정은 운영 체제에 따라 다릅니다:
-
Linux 및 MacOS의 경우, 터미널에서 다음 명령어를 실행하는 것이 가장 쉬운 설치 방법입니다:
curl -sf https://raw.githubusercontent.com/eleven-sh/cli/main/install.sh | sh -s -- -b /usr/local/bin latest이 명령어는 그대로 실행하거나 다음과 같이 변경하여 실행할 수 있습니다:
-
/usr/local/bin을 **원하는 경로 (preferred path)**로 교체하여 설치 디렉토리를 변경할 수 있습니다. -
latest를 **특정 버전 (specific version)**으로 교체하여 설치할 버전을 변경할 수 있습니다.
-
-
Windows의 경우, 가장 쉬운 방법은 다음 Powershell 스크립트를 실행하는 것입니다:
irm https://raw.githubusercontent.com/eleven-sh/cli/main/install.ps1 | iex
완료되면, eleven 명령어를 실행하여 Eleven이 설치되었는지 확인할 수 있습니다:
eleven --help
업데이트 (Update)
Eleven을 설치할 때 사용한 명령어를 사용하여 다른 버전으로 업데이트할 수도 있습니다.
사용법 (Usage)
시작하려면 "eleven login" 명령어를 실행하여 GitHub 계정을 연결하세요.
그 이후의 가장 일반적인 워크플로우는 다음과 같습니다:
...
로그인 (Login)
eleven login
시작하려면 login 명령어를 실행하여 GitHub 계정을 연결해야 합니다.
Eleven은 다음과 같은 권한을 요구합니다:
-
샌드박스(sandbox)에서 저장소(repository)에 접근할 수 있도록 하는 "Public SSH keys" 및 "Repositories"
-
Git 설정을 위한 "Personal user data"
모든 데이터(OAuth 액세스 토큰 포함)는 오직 ~/.config/eleven/eleven.yml (또는 XDG_CONFIG_HOME이 설정된 경우 해당 경로)에 로컬로만 저장됩니다.
GitHub OAuth 흐름을 구현하는 소스 코드는 eleven-sh/api 저장소에 위치해 있습니다.
초기화 (Init)
eleven <cloud_provider> init <sandbox_name> [--instance-type=<instance_type> --runtimes=<runtimes> --repositories=<repositories>]
init 명령어는 새로운 샌드박스(sandbox)를 초기화합니다.
샌드박스를 실행할 인스턴스(instance) 유형을 선택하려면 --instance-type 플래그를 사용하세요.
샌드박스에 특정 런타임(runtime)을 설치하려면 --runtimes 플래그를 사용하세요.
샌드박스에 특정 GitHub 저장소들을 클론(clone)하려면 --repositories 플래그를 사용하세요.
--instance-type
--instance-type 플래그에 사용할 수 있는 유효한 값과 기본값은 사용하는 클라우드 제공자(cloud provider)에 따라 다릅니다. (자세한 내용은 해당 클라우드 제공자 저장소를 참조하세요).
--runtimes
다음 런타임들은 모든 샌드박스에 설치될 수 있습니다:
-
docker(최신 버전만 가능) -
php또는php@X.Y(예: php@8.1) -
java(최신 버전만 가능) -
node또는node@X.Y.Z(예: node@18.7.0) (nvm을 통해 설치) -
python또는python@X.Y.Z(예: python@3.1.0) (pyenv를 통해 설치) -
ruby또는ruby@X.Y.Z(예: ruby@3.1.2) (rvm을 통해 설치) -
rust또는rust@X.Y.Z(예: rust@1.64.0) (rustup을 통해 설치) -
go또는go@X.Y.Z(예: go@1.19.0) -
clang(최신 버전만 가능)
버전이 설정되지 않은 경우 모든 런타임 (runtimes)은 @latest를 기본값으로 사용합니다.
--repositories
저장소 (Repositories)는 전체 경로(예: eleven-sh/api)를 사용하거나 계정 이름 없이(예: my-repo) 사용할 수 있습니다. 계정 이름이 없는 저장소의 경우 사용자의 개인 계정으로 간주됩니다.
Examples
eleven aws init eleven-api
eleven aws init eleven-api --instance-type m4.large --runtimes node@18.7.0,docker --repositories repo,organization/repo
Edit
eleven <cloud_provider> edit <sandbox_name>
edit 명령은 사용자가 선호하는 에디터를 샌드박스 (sandbox)에 연결합니다.
Example
eleven aws edit eleven-api
Serve
eleven <cloud_provider> serve <sandbox_name> <port> [--as=<domain_name>]
serve 명령은 샌드박스의 특정 포트 (port)에서 TCP 트래픽을 허용합니다.
도메인 이름(HTTP(S)를 통해)으로 포트에 접속하려면 --as 플래그를 사용하세요.
하나의 포트에 대해 두 개 이상의 도메인을 사용하고 싶다면, 서로 다른 도메인 이름으로 serve 명령을 여러 번 실행할 수 있습니다.
Examples
eleven aws serve eleven-api 8000
eleven aws serve eleven-api 8000 --as eleven.sh
eleven aws serve eleven-api 8000 --as www.eleven.sh
Unserve
eleven <cloud_provider> unserve <sandbox_name> <port>
unserve 명령은 샌드박스의 특정 포트에서 TCP 트래픽을 차단합니다.
TCP 트래픽이 차단되면, 해당 포트는 외부에서 접속할 수 없게 됩니다.
Example
eleven aws unserve eleven-api 8000
Remove
eleven <cloud_provider> remove <sandbox_name> [--force]
remove 명령은 기존의 샌드박스를 삭제합니다.
샌드박스는 푸시(pushed)되지 않은 모든 작업물과 함께 영구적으로 삭제됩니다.
되돌릴 수 없으므로, 이 명령을 실행하기 전에 반드시 확인하십시오.
--force 플래그를 사용하면 확인 절차 없이 삭제할 수 있습니다.
예시
eleven aws remove eleven-api
eleven aws remove eleven-api --force
삭제 (Uninstall)
eleven <cloud_provider> uninstall
uninstall 명령은 사용자의 클라우드 제공업체(cloud provider) 계정에서 Eleven이 사용한 모든 인프라 구성 요소(infrastructure components)를 제거합니다. (자세한 내용은 해당 클라우드 제공업체 리포지토리를 참조하십시오).
이 명령을 실행하기 전에 반드시 모든 샌드박스(sandboxes)를 제거해야 합니다.
예시
eleven aws uninstall
장기 실행 프로세스 (Long running processes, Forever)
장기 실행 프로세스 관리 과정을 간소화하기 위해, 샌드박스 내부에서 사용할 수 있는 forever라는 이름의 CLI가 제공됩니다.
(이름을 제외하면, 이 CLI는 npm에서 제공되는 것과 공통점이 없습니다).
시작 (Start)
forever <command>
forever 명령은 전달된 명령을 <ins>현재 경로(current path)</ins>에서 시작하며, 프로세스가 종료되거나 인스턴스가 재시작된 경우 다시 실행합니다.
경로당 하나의 명령만 실행할 수 있습니다.
예시
forever node index.js
forever docker compose up
중지 (Stop)
forever stop
stop 명령은 <ins>현재 경로(current path)</ins>에서 시작된 명령을 중지합니다.
자주 묻는 질문 (Frequently asked questions)
> "코드 샌드박스(code sandbox)"란 무엇을 의미하나요?
Eleven의 문맥에서 "코드 샌드박스"는 사용자의 클라우드 제공업체 계정에서 실행되며, 설정이 완료되어 즉시 사용할 수 있는 VM(가상 머신)에 불과합니다.
그 안에서 실행되는 코드가 (컨테이너와 달리) 사용자의 로컬 컴퓨터로부터 100% 격리되어 있기 때문에 "코드 샌드박스"라고 불립니다.
> 내 클라우드 계정에 무엇이 생성되나요?
계정에 생성되는 인프라 구성 요소(infrastructure components)는 사용하는 클라우드 제공업체에 따라 달라집니다.
더 자세한 내용은 해당 클라우드 제공업체 저장소(repository)의 "Infrastructure components" 섹션을 참조하세요 (예: AWS의 경우 여기, Hetzner의 경우 여기).
> 비용이 얼마나 들까요?
Eleven은 100% 무료입니다. 하지만 귀하의 클라우드 제공업체 계정에서 VM(가상 머신)을 사용하는 것은 무료가 아닙니다.
더 자세한 내용은 해당 클라우드 제공업체 저장소(repository)의 "Infrastructure costs" 섹션을 참조하세요 (예: AWS의 경우 여기, Hetzner의 경우 여기).
라이선스 (License)
Eleven은 MIT License 조건에 따라 오픈 소스로 제공됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Code Generation의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기