서버 API
엔드포인트: /api/servers/servers/
Alpacon 워크스페이스에 등록된 서버를 관리합니다.
서버 목록 조회
등록된 서버 목록을 페이지네이션하여 가져옵니다.
GET /api/servers/servers/
쿼리 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
name | string | 서버 이름으로 필터링 |
version | string | 에이전트 버전으로 필터링 |
enabled | boolean | 활성 상태로 필터링 |
commissioned | boolean | 커미션 상태로 필터링 |
owner | string | 소유자 사용자명으로 필터링 |
groups | UUID | 그룹 ID로 필터링 |
exclude_group | UUID | 해당 그룹에 속한 서버 제외 |
is_connected | boolean | 연결 상태로 필터링 |
starred | boolean | 즐겨찾기 상태로 필터링 |
firewall_backend | string | 방화벽 백엔드로 필터링 (iptables, nftables, firewalld, ufw) |
firewall_managed_by_alpacon | boolean | Alpacon 관리 방화벽으로 필터링 |
search | string | 이름, 버전, IP, 소유자, 그룹명으로 검색 |
ordering | string | 정렬 순서 (예: name, -load, starred). 기본값: starred 우선, 이후 name |
page | integer | 페이지 번호 |
page_size | integer | 페이지당 결과 수 (기본값: 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 필드가 추가로 포함되며, starred와 status 필드는 포함되지 않습니다.
GET /api/servers/servers/{server_id}/
경로 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
server_id | string (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]
}
요청 파라미터
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
name | string | Yes | 서버 이름 (슬러그 형식, 최대 20자). 사용 불가 이름: join, localhost, null |
platform | string | Yes | OS 플랫폼 (debian 또는 rhel). 쓰기 전용 |
groups | array[UUID] | No | 할당할 그룹 ID |
rules | array[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_id | string (UUID) | 수정할 서버의 ID |
요청 본문
{
"name": "web-server-01-updated",
"owner": "a540bf0f-8b37-4f03-8546-dd71c6b03329",
"groups": [
"b651cf10-9c48-5g14-9657-ee82d7c14430"
],
"rules": [1, 3]
}
요청 파라미터
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
name | string | No | 새로운 서버 이름 (슬러그 형식, 최대 20자) |
owner | string (UUID) | No | 새로운 소유자 사용자 ID |
groups | array[UUID] | No | 할당할 그룹 ID |
rules | array[integer] | No | 할당할 알림 규칙 ID |
응답
서버 상세 조회와 동일한 스키마로 업데이트된 서버 객체를 반환합니다.
서버 삭제
워크스페이스에서 서버를 제거합니다. 삭제 전 서버가 연결 해제 상태여야 합니다. ?auto=true 쿼리 파라미터를 사용하면 삭제 전 에이전트를 원격으로 제거합니다.
DELETE /api/servers/servers/{server_id}/
경로 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
server_id | string (UUID) | 삭제할 서버의 ID |
쿼리 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
auto | boolean | true일 경우, 삭제 전 에이전트를 원격으로 제거 |
응답
204 No Content
서버가 연결 상태이면 삭제할 수 없습니다.
?auto=true를 전달하여 에이전트를 원격으로 제거하거나, 수동으로 연결을 해제한 후 삭제하세요.
오류 코드
| 상태 | 오류 코드 | 설명 |
|---|---|---|
| 400 | INVALID_REQUEST | 잘못된 파라미터 (예: 연결된 상태에서 삭제 시도, 사용 불가 이름) |
| 401 | UNAUTHORIZED | 유효하지 않거나 누락된 인증 정보 |
| 403 | FORBIDDEN | 권한 부족 |
| 404 | NOT_FOUND | 서버를 찾을 수 없음 |