서버 API

엔드포인트: /api/servers/servers/

Alpacon 워크스페이스에 등록된 서버를 관리합니다.

서버 목록 조회

등록된 서버 목록을 페이지네이션하여 가져옵니다.

GET /api/servers/servers/

쿼리 파라미터

파라미터타입설명
namestring서버 이름으로 필터링
versionstring에이전트 버전으로 필터링
enabledboolean활성 상태로 필터링
commissionedboolean커미션 상태로 필터링
ownerstring소유자 사용자명으로 필터링
groupsUUID그룹 ID로 필터링
exclude_groupUUID해당 그룹에 속한 서버 제외
is_connectedboolean연결 상태로 필터링
starredboolean즐겨찾기 상태로 필터링
firewall_backendstring방화벽 백엔드로 필터링 (iptables, nftables, firewalld, ufw)
firewall_managed_by_alpaconbooleanAlpacon 관리 방화벽으로 필터링
searchstring이름, 버전, IP, 소유자, 그룹명으로 검색
orderingstring정렬 순서 (예: name, -load, starred). 기본값: starred 우선, 이후 name
pageinteger페이지 번호
page_sizeinteger페이지당 결과 수 (기본값: 15, 최대: 100)

응답

{
  "count": 25,
  "next": "https://your-workspace.us1.alpacon.io/api/servers/servers/?page=2",
  "previous": null,
  "results": [
    {
      "id": "7e3984de-49ab-4cc6-bcdf-21fbd35858b8",
      "name": "web-server-01",
      "remote_ip": "203.0.113.10",
      "is_root": true,
      "is_connected": true,
      "commissioned": true,
      "starred": true,
      "platform": "debian",
      "cpu_physical_cores": 4,
      "cpu_logical_cores": 8,
      "cpu_type": "x86_64",
      "physical_memory": 8589934592,
      "os_name": "Ubuntu",
      "os_version": "22.04",
      "load": 0.45,
      "boot_time": "2024-01-10T08:00:00Z",
      "owner": {
        "id": 1,
        "name": "admin",
        "email": "admin@example.com"
      },
      "groups": [
        "b651cf10-9c48-5g14-9657-ee82d7c14430"
      ],
      "rules": [1, 2],
      "status": {
        "code": "online",
        "text": "Online"
      },
      "firewall_backend": "nftables",
      "firewall_backend_version": "1.0.6",
      "firewall_managed_by_alpacon": true
    }
  ]
}

서버 상세 조회

특정 서버의 세부 정보를 조회합니다. 상세 조회 응답에는 version, uptime, last_connectivity, started_at, added_at, updated_at 필드가 추가로 포함되며, starredstatus 필드는 포함되지 않습니다.

GET /api/servers/servers/{server_id}/

경로 파라미터

파라미터타입설명
server_idstring (UUID)조회할 서버의 ID

응답

{
  "id": "7e3984de-49ab-4cc6-bcdf-21fbd35858b8",
  "name": "web-server-01",
  "remote_ip": "203.0.113.10",
  "is_root": true,
  "is_connected": true,
  "commissioned": true,
  "platform": "debian",
  "cpu_physical_cores": 4,
  "cpu_logical_cores": 8,
  "cpu_type": "x86_64",
  "physical_memory": 8589934592,
  "os_name": "Ubuntu",
  "os_version": "22.04",
  "load": 0.45,
  "boot_time": "2024-01-10T08:00:00Z",
  "version": "3.2.1",
  "uptime": 864000,
  "last_connectivity": "2024-01-20T15:30:00Z",
  "started_at": "2024-01-10T08:00:00Z",
  "added_at": "2023-06-15T12:00:00Z",
  "updated_at": "2024-01-20T15:30:00Z",
  "owner": {
    "id": 1,
    "name": "admin",
    "email": "admin@example.com"
  },
  "groups": [
    "b651cf10-9c48-5g14-9657-ee82d7c14430"
  ],
  "rules": [1, 2],
  "firewall_backend": "nftables",
  "firewall_backend_version": "1.0.6",
  "firewall_managed_by_alpacon": true
}

서버 등록

새 서버를 워크스페이스에 등록합니다. 일회용 키와 설치 지침이 함께 반환됩니다. 기본 알림 규칙이 자동으로 추가됩니다.

POST /api/servers/servers/

요청 본문

{
  "name": "web-server-02",
  "platform": "debian",
  "groups": ["b651cf10-9c48-5g14-9657-ee82d7c14430"],
  "rules": [1]
}

요청 파라미터

필드타입필수설명
namestringYes서버 이름 (슬러그 형식, 최대 20자). 사용 불가 이름: join, localhost, null
platformstringYesOS 플랫폼 (debian 또는 rhel). 쓰기 전용
groupsarray[UUID]No할당할 그룹 ID
rulesarray[integer]No할당할 알림 규칙 ID

응답

{
  "id": "8f4985df-50bc-42e5-b827-32fcc46959a2",
  "name": "web-server-02",
  "platform": "debian",
  "key": "alpacon_server_key_xxxxxxxxxx",
  "instruction_1": "curl -fsSL https://repo.alpacon.io/install.sh | sudo bash",
  "instruction_2": "sudo alpacon-client setup --key alpacon_server_key_xxxxxxxxxx --endpoint your-workspace.us1.alpacon.io",
  "groups": ["b651cf10-9c48-5g14-9657-ee82d7c14430"],
  "rules": [1, 2]
}

key는 생성 시 한 번만 표시됩니다. 제공된 지침을 사용하여 서버에 Alpacon 에이전트를 설치하고 구성하세요.

서버 수정

서버 속성을 수정합니다. PATCH를 통한 부분 업데이트를 지원합니다.

PATCH /api/servers/servers/{server_id}/

경로 파라미터

파라미터타입설명
server_idstring (UUID)수정할 서버의 ID

요청 본문

{
  "name": "web-server-01-updated",
  "owner": "a540bf0f-8b37-4f03-8546-dd71c6b03329",
  "groups": [
    "b651cf10-9c48-5g14-9657-ee82d7c14430"
  ],
  "rules": [1, 3]
}

요청 파라미터

필드타입필수설명
namestringNo새로운 서버 이름 (슬러그 형식, 최대 20자)
ownerstring (UUID)No새로운 소유자 사용자 ID
groupsarray[UUID]No할당할 그룹 ID
rulesarray[integer]No할당할 알림 규칙 ID

응답

서버 상세 조회와 동일한 스키마로 업데이트된 서버 객체를 반환합니다.

서버 삭제

워크스페이스에서 서버를 제거합니다. 삭제 전 서버가 연결 해제 상태여야 합니다. ?auto=true 쿼리 파라미터를 사용하면 삭제 전 에이전트를 원격으로 제거합니다.

DELETE /api/servers/servers/{server_id}/

경로 파라미터

파라미터타입설명
server_idstring (UUID)삭제할 서버의 ID

쿼리 파라미터

파라미터타입설명
autobooleantrue일 경우, 삭제 전 에이전트를 원격으로 제거

응답

204 No Content

서버가 연결 상태이면 삭제할 수 없습니다. ?auto=true를 전달하여 에이전트를 원격으로 제거하거나, 수동으로 연결을 해제한 후 삭제하세요.

오류 코드

상태오류 코드설명
400INVALID_REQUEST잘못된 파라미터 (예: 연결된 상태에서 삭제 시도, 사용 불가 이름)
401UNAUTHORIZED유효하지 않거나 누락된 인증 정보
403FORBIDDEN권한 부족
404NOT_FOUND서버를 찾을 수 없음