Fedify는 주로 ActivityPub 서버를 구축하기 위한 프레임워크로 알려져 있지만, ActivityPub 구현을 디버깅하고 테스트하기 위한 강력한 커맨드라인 도구인 fedify
명령어도 함께 제공합니다. Fedify 프레임워크를 사용하지 않더라도 이 CLI 도구는 ActivityPub 개발에 매우 유용할 수 있습니다.
기능을 살펴보기 전에, 먼저 fedify
명령어를 설치해야 합니다. 다음과 같은 여러 가지 설치 방법이 있습니다:
npm(Node.js)을 사용하는 경우:
npm install -g @fedify/cli
Bun을 사용하는 경우:
bun install -g @fedify/cli
Deno를 사용하는 경우:
deno install -A --unstable-fs --unstable-kv --unstable-temporal -n fedify jsr:@fedify/cli
또는 릴리스 페이지에서 미리 빌드된 실행 파일을 다운로드할 수도 있습니다.
자세한 설치 방법과 요구 사항은 공식 문서를 참고하세요.
fedify lookup
명령어는 보이는 것보다 더 똑똑합니다. 같은 식별자의 다양한 형식을 처리할 수 있고, 여러 출력 형식을 제공하여 필요에 맞게 사용할 수 있습니다:
# 같은 액터를 조회하는 세 가지 방법:
fedify lookup @user@example.com
fedify lookup user@example.com
fedify lookup acct:user@example.com
# 원본 JSON 응답 보기:
fedify lookup --raw @user@example.com
# 간단한 JSON-LD 표현 보기:
fedify lookup --compact @user@example.com
# 완전히 펼쳐진 JSON-LD 보기:
fedify lookup --expanded @user@example.com
일부 ActivityPub 서버는 공개 콘텐츠에 대해서도 모든 HTTP GET 요청에 서명을 요구하는 authorized fetch(또는 “보안 모드”라고도 함)를 필요로 합니다. -a
/--authorized-fetch
플래그는 이런 경우에 도움이 됩니다:
fedify lookup --authorized-fetch @user@secure-instance.example
이 명령어는 임시 ActivityPub 서버를 실행하고 서버의 키로 요청에 서명합니다. 다음과 같은 경우에 특히 유용합니다:
fedify inbox
명령어는 연합을 테스트하는 빠른 방법을 제공할 뿐만 아니라, 수신되는 ActivityPub 액티비티를 검사하기 위한 강력한 웹 인터페이스도 함께 제공합니다. 액티비티를 수신하면 다음과 같은 요청의 모든 세부 정보를 보여줍니다:
다른 서버가 보내는 원본 HTTP 헤더를 볼 수 있어서 서명 검증 문제나 콘텐츠 협상 문제를 디버깅할 때 매우 유용합니다. 인터페이스는 액티비티를 다양한 형식으로 볼 수 있는 탭을 제공합니다:
이 명령어는 매우 유연하게 설정할 수 있어서 어떤 팔로우 요청을 수락할지 제어할 수 있습니다:
# 특정 액터의 팔로우만 수락
fedify inbox -a @specific@user.com -a @another@user.com
# 모든 팔로우 요청 수락
fedify inbox -a "*"
fedify node
명령어는 다른 인스턴스가 어떻게 구성되어 있는지 이해하는 데 도움이 되도록 NodeInfo 데이터를 보기 좋게 시각화합니다:
# 서버 아이콘과 함께 표준 NodeInfo 데이터 표시
fedify node mastodon.social
# 인스턴스가 노출하는 추가 메타데이터 포함
fedify node -m mastodon.social
# 표준을 완전히 준수하지 않는 NodeInfo 응답도 파싱 시도
fedify node --best-effort problematic-instance.social
# 더 빠른 결과를 위해 파비콘 가져오기 건너뛰기
fedify node --no-favicon mastodon.social
ActivityPub 구현을 로컬에서 테스트하기 위해 fedify tunnel
명령어를 사용하면 로컬 서버를 임시로 인터넷에 노출할 수 있습니다. 기본 서비스가 잘 작동하지 않는 경우 여러 터널링 서비스 중에서 선택할 수 있습니다:
# 기본 서비스 사용
fedify tunnel 3000
# 대체 서비스 사용
fedify tunnel --service serveo.net 3000
Bash, fish, zsh용 셸 자동 완성을 활성화하면 타이핑을 줄일 수 있습니다:
# bash용
source <(fedify completions bash)
# fish용
source (fedify completions fish | psub)
# zsh용
source <(fedify completions zsh)
User-Agent
지원곧 출시될 Fedify 1.3.0에는 사용자 정의 User-Agent
헤더를 설정하는 기능이 포함됩니다. 이는 서버 로그에서 자신의 요청을 추적하는 데 도움이 됩니다:
# lookup 명령어에 사용자 정의 User-Agent 설정
fedify lookup --user-agent "MyApp/1.0" @user@example.com
# NodeInfo 요청에 사용자 정의 User-Agent 설정
fedify node --user-agent "MyApp/1.0" mastodon.social
이러한 기능들은 Fedify CLI를 처음 사용할 때는 바로 눈에 띄지 않을 수 있지만, 연합 관련 문제를 디버깅하거나 ActivityPub 구현을 테스트할 때 매우 유용할 수 있습니다.