> ## Documentation Index
> Fetch the complete documentation index at: https://frp.xdr.ooo/llms.txt
> Use this file to discover all available pages before exploring further.

# 빠른 시작

> 서버 설치, 클라이언트 등록, 첫 SSH 연결까지 가장 짧은 경로

# 빠른 시작

이 가이드는 **stable v2.1.2** 기준으로 빈 서버에서 실제 원격 SSH 성공까지 따라갑니다.

## 만들게 될 구조

```mermaid theme={null}
flowchart LR
    U[내 PC]
    S[FRP Auto Deploy 서버]
    C[원격 Linux Client\nNAT/방화벽 뒤]
    SSH[sshd\n127.0.0.1:22]

    C -->|아웃바운드 터널| S
    U -->|ssh -p 배정포트| S
    S --> C
    C --> SSH
```

## 시작 전 준비

* 인터넷 공인 진입점으로 접근 가능한 Linux/systemd 서버
* 등록할 Linux/systemd 클라이언트
* 클라이언트에 이미 존재하는 SSH 계정
* 서버 측 방화벽/NAT 규칙
* 설치를 위한 `sudo`/root 권한

처음 구성한다면 **Ubuntu 24.04 x86\_64**가 가장 명확한 real-validated baseline입니다.

<Tip>
  고정 공인 IP나 별도 Linux 서버가 없다면 먼저 [OCI 무료티어 서버 준비](/ko/getting-started/oci-free-tier-server)를 따라 OCI Always Free 대상 VM + Reserved Public IPv4를 준비할 수 있습니다.
</Tip>

### Direct 기본 네트워크

| 방향              | 용도                            |        기본 TCP |
| --------------- | ----------------------------- | ------------: |
| Client → Server | FRP control                   |           443 |
| Client → Server | Enrollment / management HTTPS |          6099 |
| User → Server   | Published service             | 배정된 6000-6098 |

<Warning>
  FRP Auto Deploy는 AWS/OCI 보안 정책, 외부 방화벽/NAT, UFW/firewalld/iptables를 자동 변경하지 않습니다.
</Warning>

## 1. 서버 설치

```bash theme={null}
curl -fsSL \
  https://raw.githubusercontent.com/datarelay-labs/frp-auto-deploy/v2.1.2/dist/bootstrap-server.sh \
  | sudo bash
```

서버가 방화벽/NAT 뒤라면 [방화벽 & NAT](/ko/deployment/firewall-nat)를 먼저 확인하세요.

## 2. 서버 상태 확인

```bash theme={null}
sudo frpctl show version
sudo frpctl show status
sudo frpctl doctor
```

<Check>
  필요한 서비스가 active이고 `doctor`가 blocking 구성/신뢰 오류를 보고하지 않을 때 다음 단계로 진행하세요.
</Check>

## 3. 클라이언트 등록 생성

### 가장 쉬운 방식

```bash theme={null}
sudo frpctl
```

CLI 안에서:

```text theme={null}
create zero-touch
```

### SSH 프로필을 명시해서 생성

```bash theme={null}
sudo frpctl create enrollment \
  --one-line \
  --ssh \
  --ssh-user aella \
  --label branch-a
```

`aella`는 **원격 Linux 클라이언트에 이미 존재하는 SSH 계정**으로 바꾸세요.

## 4. 원격 클라이언트에서 생성된 명령 실행

서버가 출력한 **정확한 명령을 그대로** 원격 사용자에게 비공개 채널로 전달하고 한 번 실행합니다.

```mermaid theme={null}
sequenceDiagram
    participant A as 서버 관리자
    participant S as FRP 서버
    participant C as 원격 Client

    A->>S: create zero-touch / enrollment
    S-->>A: one-time bootstrap 명령
    A-->>C: 비공개 전달
    C->>S: HTTPS bootstrap + enrollment
    S-->>C: persistent identity + service config
    C->>S: outbound FRP control tunnel
```

## 5. 클라이언트 확인

```bash theme={null}
sudo frpctl show version
sudo frpctl show status
sudo frpctl show services
sudo frpctl show info
sudo frpctl doctor
```

## 6. 서버에서 등록과 포트 확인

```bash theme={null}
sudo frpctl show clients
sudo frpctl show enrollments
sudo frpctl show client <CLIENT-ID> services
```

SSH 서비스에 배정된 public port를 확인합니다.

## 7. 실제 SSH 접속

```bash theme={null}
ssh -p <public-port> aella@<FRP-server-public-IP>
```

Public hostname을 설정했다면:

```bash theme={null}
ssh -p <public-port> aella@fw.example.com
```

## 성공 기준

* `show clients`에 CLIENT ID가 보임
* SSH 서비스에 public port가 배정됨
* client `show status`가 정상
* 외부 방화벽/NAT가 해당 published port를 허용
* `ssh -p ...`가 실제 target SSH에 도달

## 안 되면

먼저 서버와 클라이언트 양쪽에서 `frpctl doctor`를 실행하고 [문제 해결](/ko/operations/troubleshooting)을 따라가세요. Registry, identity, PKI, generated FRP config를 먼저 수동 수정하지 마세요.

## 다음 단계

* [개념과 동작 원리](/ko/getting-started/concepts)
* [Linux 클라이언트](/ko/getting-started/linux-client)
* [Zero-Touch 등록](/ko/guides/zero-touch)
* [서비스 게시](/ko/guides/services)
