PDS 자체 호스팅

Bluesky PDS를 자체 호스팅한다는 것은 ATProto 네트워크와 연동할 수 있는 Personal Data Server(PDS)를 직접 운영하는 것을 의미합니다.

목차

PDS 자체 호스팅을 위한 준비

Digital Ocean, Vultr 등과 같은 클라우드 제공업체에서 서버를 실행하세요.

서버에 SSH로 접속할 수 있으며 루트 권한이 있어야 합니다.

서버 요구 사항

  • 공인 IPv4 주소
  • 공인 DNS 이름
  • 포트 80/tcp 및 443/tcp에 대해 공인 인바운드 인터넷 접근 허용

서버 권장 사양

운영 체제Ubuntu 22.04
메모리 (RAM)1 GB
CPU 코어1
저장공간20 GB SSD
아키텍처amd64, arm64
사용자 수1-20

참고: 보안상의 이유로 SSH 접근(포트 22/tcp)을 본인의 공인 IP 주소로 제한하는 것이 좋습니다. 현재의 공인 IP 주소는 ifconfig.me에서 확인할 수 있습니다.

HTTP 및 HTTPS를 위한 클라우드 방화벽 열기

가장 흔한 문제 중 하나는 방화벽 포트가 올바르게 열려있지 않은 경우입니다. 이 단계를 반드시 다시 한 번 확인하세요.

클라우드 제공업체의 콘솔에서, 다음 포트가 공용 인터넷에서 인바운드로 접근 가능하도록 열려 있어야 합니다.

  • 80/tcp (TLS 인증서 검증에만 사용)
  • 443/tcp (모든 애플리케이션 요청에 사용)

참고: Caddy 웹 서버가 Docker compose 파일에 포함되어 있어 TLS 설정이나 포트 80에서 443으로 리다이렉션할 필요가 없습니다. Caddy가 이를 자동으로 처리합니다.

도메인에 대한 DNS 구성

DNS 제공업체의 제어판에서 도메인을 설정하고, 서버를 가리키는 레코드를 추가하세요.

이름유형TTL
example.comA12.34.56.78600
*.example.comA12.34.56.78600

참고:

  • example.com은 본인의 도메인 이름으로 교체하세요.
  • 12.34.56.78은 서버의 IP 주소로 교체하세요.
  • 일부 제공업체는 도메인의 루트를 나타내기 위해 @ 기호를 사용합니다.
  • 와일드카드 레코드는 PDS에서 사용자가 새 계정을 생성할 수 있도록 하기 위해 필요합니다.
  • TTL 값은 무엇이든 가능하지만, 600(10분)이 적당합니다.

DNS가 예상대로 작동하는지 확인하기

DNS Checker 같은 서비스를 사용하여 도메인이 올바르게 해석되는지 확인하세요.

확인할 예시 (A 레코드):

  • example.com
  • random.example.com
  • test123.example.com

모두 서버의 공인 IP를 반환해야 합니다.

Ubuntu 20.04/22.04 및 Debian 11/12에서 설치 프로그램 실행

SSH를 통해 서버에 접속한 후, 다음 명령어로 설치 스크립트를 다운로드하세요:

wget https://raw.githubusercontent.com/bluesky-social/pds/main/installer.sh

또는 curl을 사용하여 다운로드하세요:

curl https://raw.githubusercontent.com/bluesky-social/pds/main/installer.sh >installer.sh

그런 다음, bash를 사용하여 설치 프로그램을 실행합니다:

sudo bash installer.sh

PDS가 온라인 상태이며 접근 가능한지 확인하기

서버의 상태를 확인하려면 헬스체크 엔드포인트에 요청하여 확인할 수 있습니다.

브라우저에서 https://example.com/xrpc/_health에 접속하세요. 다음과 같이 버전 정보를 포함한 JSON 응답을 볼 수 있어야 합니다:

{"version":"0.2.2-beta.2"}

네트워크의 다른 부분에서 PDS의 콘텐츠를 가져갈 수 있도록 WebSocket이 정상적으로 작동하는지도 확인해야 합니다. 이를 테스트하려면 wsdump와 같은 도구를 설치한 후 다음 명령을 실행하세요:

wsdump "wss://example.com/xrpc/com.atproto.sync.subscribeRepos?cursor=0"

WebSocket에서는 PDS에서 이벤트가 생성되기 전까지 아무런 출력이 발생하지 않으므로, 설정이 올바르게 구성된 경우에도 위 명령어가 출력 없이 계속 실행될 수 있습니다.

pdsadmin을 사용하여 계정 생성

서버에 SSH로 접속한 후, 아직 계정이 없다면 pdsadmin을 사용하여 계정을 생성하세요.

sudo pdsadmin account create

초대 코드를 사용하여 계정 생성

서버에 SSH로 접속한 후, pdsadmin을 사용하여 초대 코드를 생성하세요.

sudo pdsadmin create-invite-code

앱을 통해 계정을 생성할 때 이 초대 코드를 입력하세요.

PDS와 함께 Bluesky 앱 사용하기

Bluesky 앱을 사용하여 PDS에 연결할 수 있습니다.

  1. Bluesky 앱 받기
  2. 본인의 PDS URL 입력 (예: https://example.com/)

참고: 서브도메인 TLS 인증서는 요청 시 생성되므로, 계정 핸들이 활성화되기까지 10~30초 정도 걸릴 수 있습니다. 첫 게시물이나 프로필이 보이지 않는 경우, 30초 후에 다시 시도해보세요.

PDS 업데이트하기

새로운 버전의 업데이트를 적용하지 않으면 서비스에 문제가 발생할 수 있으므로, PDS를 최신 상태로 유지하는 것이 좋습니다. pdsadmin 도구를 사용하여 업데이트할 수 있습니다.

sudo pdsadmin update

도움 받기