콘텐츠로 이동

내 서버·VM 연결하기

Markdown 으로 보기

내 Linux 서버나 VM 을 에이전트의 endue Computer 로 줄 수 있습니다. 그 기기에서 설치 명령 한 줄을 실행하면, 그때부터 에이전트의 파일과 프로그램이 그곳에 있습니다.

그 기기에만 있는 것이 작업에 필요할 때 씁니다. 사내망 접근, 이미 설치해 둔 도구와 데이터, 기본보다 많은 CPU·디스크, 내가 고른 지역의 기기 같은 것입니다. 내가 관리하는 Linux 기기라면 무엇이든 됩니다. Vultr 의 VPS, AWS 의 EC2 인스턴스, 사내 서버 모두 됩니다.

이런 사정이 없다면 이 페이지는 필요 없습니다. 에이전트는 처음 필요할 때 endue 클라우드에 endue Computer 를 자동으로 받습니다. 디바이스를 보세요.

  • x86_64 또는 aarch64 의 Linux. 프로그램이 정적 바이너리 하나라 배포판은 상관없습니다.
  • systemd.
  • sudo 로 얻는 root 권한.
  • 밖으로 나가는 인터넷 연결. endue Computer 가 보안 WebSocket 으로 endue 에 먼저 연결하므로 들어오는 포트를 열 필요가 없습니다.
  1. 좌측 사이드바에서 리소스 › 디바이스를 열고 endue Computer 묶음의 내 기기·서버에 설치를 누릅니다.

    에이전트 빌더에서 에이전트 하나를 열었다면 리소스 › 디바이스 › 내 서버에 연결이 그 에이전트로 같은 일을 합니다.

  2. 에이전트를 고르고, 필요하면 목록에 보일 기기 이름(예: build-server-01)을 적습니다. 설치 명령 만들기를 누릅니다.

    에이전트에 이미 endue 클라우드의 endue Computer 가 있으면, 그것과 그 안의 파일을 먼저 삭제할지 묻습니다. 취소하면 아무것도 바뀌지 않습니다. 에이전트의 endue 클라우드 Computer 를 내 서버로 바꾸기를 보세요.

  3. 명령을 복사해 서버에서 실행합니다. 모양은 이렇습니다.

    Terminal window
    curl -fsSL https://download.endue.ai/computer/install.sh | sudo sh -s -- \
    --endpoint <endpoint> --token <token> --instance <agent-id>

    명령에는 이 에이전트의 연결 토큰이 들어 있고, 한 번만 보입니다. 복사하기 전에 창을 닫았다면 명령을 새로 만드세요.

  4. 연결됨을 기다립니다. 명령이 끝나고 몇 초 뒤 창과 디바이스 목록이 연결됨으로 바뀝니다.

  1. 아키텍처를 판별해 endue Computer 를 내려받고 SHA-256 체크섬을 대조합니다. 맞지 않으면 아무것도 설치하지 않습니다.

  2. 커널이 어떤 프로필을 지원하는지 확인합니다.

  3. 로그인할 수 없는 시스템 사용자 endue 를 만듭니다.

  4. 에이전트마다 다음을 만듭니다.

    경로소유·권한담는 것
    /etc/endue-computer/<agent-id>.envroot, 0600접속 주소, 토큰, 고른 설정
    /var/lib/endue-computer/<agent-id>/workspaceendue에이전트의 워크스페이스. 에이전트가 일하는 폴더
    /var/lib/endue-computer/<agent-id>/stateendue체크포인트와 저장한 파일. 워크스페이스 밖에 둡니다
  5. 에이전트의 systemd 서비스 endue-computer@<agent-id> 를 켜고 시작한 뒤, 연결됐는지 알려 줍니다.

에이전트가 할 수 있는 일 정하기

섹션 제목: “에이전트가 할 수 있는 일 정하기”

설치 명령 끝에 옵션을 붙입니다.

Terminal window
curl -fsSL https://download.endue.ai/computer/install.sh | sudo sh -s -- \
--endpoint <endpoint> --token <token> --instance <agent-id> \
--allow-exec git,python3 --no-network
옵션기본값효과
--allow-exec <목록>git,node,npm,npx,python3,pip3,curl에이전트가 실행할 수 있는 프로그램. 쉼표로 구분하고 경로 없이 씁니다. --allow-exec "" 는 프로그램 실행을 모두 끕니다.
--no-network네트워크 허용에이전트가 실행한 프로그램이 네트워크를 쓰지 못합니다.
--no-delete삭제 허용에이전트가 워크스페이스의 파일을 지우지 못합니다. git·npm 같은 도구는 잠금·임시 파일을 지우므로 sandboxed 프로필에서는 실패합니다.
--profile auto|sandboxed|managedauto쓸 프로필.

목록에 있지만 서버에 설치되지 않은 프로그램은 설치 때 알려 줍니다. 에이전트가 그것을 실행하려 하면 “설치되지 않음” 을 받습니다.

허용한 프로그램이 그 프로그램이 하는 일까지 제한하지는 않습니다. node 나 python3 를 허용하면, 에이전트는 프로필의 경계 안에서 그것들로 어떤 코드든 실행할 수 있습니다.

프로필조건에이전트가 실행한 프로그램이 할 수 없는 것
sandboxedLinux 6.12 이상 (Landlock ABI 6)워크스페이스 폴더 밖의 파일을 읽거나 쓰지 못합니다. managed 의 제한도 모두 받습니다.
managed그 밖의 커널. Ubuntu 22.04(5.15), Ubuntu 24.04 GA 커널(6.8) 등root 가 되거나 권한을 얻지 못합니다. systemd 가 /home·/root·다른 에이전트의 폴더를 숨기고 나머지 시스템을 읽기 전용으로 둡니다. 파일시스템 샌드박스는 없어서 endue 사용자가 읽을 수 있는 파일은 읽습니다.

auto 는 커널이 지원하면 sandboxed 를, 아니면 안내와 함께 managed 를 고릅니다. 지원하지 않는 커널에서 sandboxed 를 지정하면 설치하지 않고 끝납니다. managed 는 에이전트 전용 서버나 VM 에서만 쓰세요.

같은 서버에 에이전트 추가하기

섹션 제목: “같은 서버에 에이전트 추가하기”

서버 하나에 에이전트를 여럿 붙일 수 있습니다. 리소스 › 디바이스에서 서버 행의 메뉴를 열어 에이전트 추가를 누르고, 에이전트를 고른 뒤 새 명령을 같은 서버에서 실행합니다.

에이전트마다 서비스·설정 파일·폴더가 따로 생기고, 프로그램과 endue 사용자는 함께 씁니다. managed 프로필에서 에이전트끼리 서로의 폴더를 못 보게 하는 것은 systemd 입니다.

<agent-id> 는 명령의 --instance 뒤에 있는 값으로 바꿉니다.

Terminal window
sudo systemctl status endue-computer@<agent-id> # 돌고 있는지
sudo systemctl start endue-computer@<agent-id> # 켜기
sudo systemctl stop endue-computer@<agent-id> # 끄기
sudo journalctl -u endue-computer@<agent-id> -f # 로그 따라 보기

서비스가 멈춰 있는 동안 디바이스는 꺼져 있음으로 보이고, 에이전트는 켜 달라고 알려 줍니다. endue 가 대신 클라우드 Computer 를 만들지 않습니다.

같은 --instance 로 설치 명령을 다시 실행하면 토큰을 포함한 설정을 바꾸고 서비스를 다시 시작합니다.

에이전트의 서버가 연결돼 있는 동안에는 새 명령을 만들 수 없습니다. 서버에서 서비스를 먼저 멈춘 뒤 명령을 다시 만드세요.

Terminal window
curl -fsSL https://download.endue.ai/computer/install.sh | sudo sh -s -- \
--uninstall --instance <agent-id>

에이전트의 서비스를 멈추고 끄고, 설정 파일을 지웁니다. 워크스페이스와 state 폴더는 --purge 를 붙일 때만 지웁니다. --instance 없이 실행하면 서버의 모든 에이전트를 제거합니다. 남은 에이전트가 없으면 프로그램과 서비스 정의도 지웁니다.

서버에서 제거해도 endue 의 디바이스는 지워지지 않고, endue 에서 지워도 서버의 설치는 남습니다. 둘 다 하세요. 여기서 제거하고, 기기 행 메뉴에서 그 에이전트를 떼기 합니다. 디바이스 지우기를 보세요.

  • x86_64·aarch64 의 Linux 만 됩니다. macOS·Windows 판은 아직 없습니다.
  • 에이전트당 endue Computer 한 대입니다. 내 서버에 있는 에이전트는 endue 클라우드에 따로 가질 수 없고, 이미 다른 서버에 있는 에이전트는 거기서 먼저 떼야 합니다.
  • endue 는 내 서버나 서비스를 켤 수 없습니다. 둘 중 하나가 꺼져 있으면 에이전트는 그것 없이 일합니다.
  • 에이전트는 서비스가 연결돼 있는 동안만 서버의 도구를 씁니다. 에이전트가 백그라운드로 띄운 프로그램은 서비스가 멈추면 함께 멈춥니다.
  • 일부 컨테이너처럼 systemd 가 없으면 --no-systemd 를 붙입니다. 설치 스크립트가 파일만 두고 직접 실행할 명령을 출력합니다. 이때는 위의 systemd 보호가 적용되지 않습니다.
  • 서비스가 status=226/NAMESPACE 로 시작하지 못하면 그 기기가 마운트 네임스페이스를 만들 수 없는 것입니다. 일부 LXC·OpenVZ 컨테이너에서 생깁니다. 온전한 VM 을 쓰거나 --no-systemd 를 씁니다.