이제 엄브렐OS에서 자신만의 릴레이 서버를 운영하고, 클라이언트에서 자신의 릴레이 서버에 연결하는 방법을 알아보자. 이렇게 하면 그 누구도 자신의 글을 검열할 수 없고, 포스트와 활동(이벤트)이 온전히 자신의 릴레이 서버에 보관된다.
프라이빗 릴레이 서버 운영하기
먼저 엄브렐의 앱스토어에 들어가 ‘Nostr Relay’를 설치한다. 설치가 다 되면 [열기]를 누른다.


처음 들어갔을 때 초록색 점과 함께 ‘Running’ 표시가 나오면 잘 실행되고 있다는 뜻이다.

이제 과거에 있었던 자신의 활동들을 전부 자신의 릴레이 서버에 백업하는 과정을 알아보자. ‘Sync from public relays’ 아래에 자신의 npub을 붙여넣고 옆에 있는 [+]를 누른다.

그러면 자신이 연결해놓은 퍼블릭 릴레이들에서 자신과 관련된 이벤트들을 동기화하고 백업한다.

로컬 네트워크에서 자신의 릴레이 서버에 연결하기
이제 클라이언트에서 자신의 릴레이 서버와 연결하는 방법을 알아보자. 먼저 로컬 네트워크에서 연결하는 방법을 알아볼 것이다. 로컬 네트워크에서의 연결이므로 릴레이 서버와 클라이언트가 실행되는 기기가 같은 네트워크에 있어야만 연결이 된다. 스마트폰이 엄브렐 기기와 연결된 공유기의 와이파이를 사용할 때만 릴레이 서버에 연결될 것이다.
따라서 외부에서 했던 노스터 활동들은 자신의 릴레이 서버에 기록되지 않다가, 집에 와서 같은 와이파이를 사용하면 그제서야 자신의 릴레이 서버에 저장될 것이다.
노스터 릴레이 오른쪽 상단에 로컬 네트워크 주소(192.168.???.???)와 포트 번호(:4848)가 나온다.

클라이언트는 다무스를 기준으로 설명하겠다. 다른 클라이언트도 크게 다르지 않다. 다무스 메뉴에서 [릴레이] → [릴레이 추가하기]를 누른 뒤, 앞에서 본 노스터 릴레이 주소를 붙여넣기한다. 이때 맨 앞의 ‘ws://’도 포함해서 붙여넣어야 한다.

로컬 네트워크에 있는 기기를 연결할지 물어보면 [허용]을 누른다. 그러면 자신의 릴레이 서버가 잘 연결된 것을 확인할 수 있다.

테일스케일을 이용해 원격으로 자신의 릴레이 서버에 연결하기
로컬 네트워크에서 연결하면 엄브렐 기기와 같은 네트워크에 연결되어야 릴레이 서버가 그동안의 이벤트들을 백업한다. 같은 네트워크가 아닐 때에도 원격으로 계속 연결을 하고 싶다면 테일스케일을 사용하면 된다.
먼저 테일스케일 앱을 켠다. 엄브렐 기기와 노스터 클라이언트(다무스 등)를 사용할 기기에 초록색 불이 들어와 있어야 한다.
엄브렐 기기 밑에 IP주소가 보일 것이다. 엄브렐 기기를 누르면 상세페이지가 나오는데, 거기서 IPv4 옆에 있는 문서 모양의 버튼을 누르면 이 IP 주소를 복사할 수 있다.

다무스에서 [릴레이 추가하기]를 누른 뒤 다음과 같이 입력한다.
ws://테일스케일에 있던 IP주소:4848
반드시 앞에 스킴인 ‘ws://’와 뒤에 포트 번호인 ‘:4848’을 붙여서 입력해야 한다. 그러고 [릴레이 추가하기]를 누르면 성공적으로 연결된 것을 볼 수 있다. 이제 테일스케일만 켜져 있다면 엄브렐 기기와 같은 네트워크 와이파이를 사용하지 않더라도 계속 릴레이 서버에 자신의 이벤트를 기록하게 될 것이다.

도메인을 연결해 퍼블릭 릴레이 서버로 만들기
엄브렐 기기에서 돌아가는 노스터 릴레이 서버에 도메인을 연결하고 퍼블릭 릴레이 서버로 만들 수도 있다. 이렇게 연결한 도메인 주소는 지인들에게 알려주고, 지인들이 자신의 릴레이 서버를 사용하게 할 수 있다.
지금은 도메인을 연결하는 방법을 알아보겠다. 클라우드플레어를 이용할 것인데, 앞에서 BTCPay Server 도메인이 클라우드플레어 터널링으로 이미 연결되어 있다면, 서브도메인을 하나 추가하여 릴레이 서버와 연결하는 것은 매우 간단하다. 클라우드플레어에 가입하고, 도메인을 구입하는 방법은 ‘4장. 라이트닝 노드 운영 가이드’의 ‘라이트닝 노드로 온라인 비트코인 결제 매장 구축하기’ 파트를 참고하라.
클라우드플레어 웹사이트에서 로그인을 하고 대시보드에서 [Zero Trust]를 누른다.
왼쪽 탭에서 [Networks] → [Tunnels] → [Public Hostname] → [+ Add a public hostname]을 누른다.

여기서 도메인을 선택하고, ‘Subdomain’에 BTCPay Server를 연결했던 서브도메인과는 다른 서브도메인을 입력하면 된다. 그러면 nostr.내 도메인.com으로 연결될 것이다. 그 아래에 있는 ‘URL’에는 엄브렐 기기의 로컬 네트워크 IP주소를 입력하고 뒤에 포트 번호 ‘:4848’을 붙인다. 그 다음 [Save hostname]을 눌러 저장한다.

이제 웹 브라우저 주소 창에 nostr.내 도메인.com을 입력해보면 나의 노스터 릴레이 서버로 접속이 되는 것을 알 수 있다. 오른쪽 상단에 연결할 수 있는 주소가 나온다. ssl 인증도 되었으므로 스킴이 ‘ws://’가 아니라 ‘wss://’가 되는 것을 알 수 있다. 아래에 ‘Private Relay’라고 나오는 것은 UI상에서만 그렇게 나오는 것이지, 이렇게 도메인을 연결하면 퍼블릭 릴레이 서버로 운영할 준비가 된 것이다.

노스터 클라이언트에서 [릴레이 추가하기]를 누르고 해당 주소를 입력한다. 이때 맨 앞에 프로토콜 스킴으로 ‘wss://’를 붙이고, 그 뒤에 서브도메인을 포함한 도메인 주소(nostr.내 도메인.com 등)를 적는다. 그 다음에 [릴레이 추가하기]를 누르면 도메인을 이용해 자신의 릴레이 서버에 잘 연결된 것을 알 수 있다.

엄브렐 앱스토어에서 설치한 노스터 릴레이 서버 앱으로 퍼블릭 릴레이 서버를 제대로 운영할 것이라면, config 파일에서 몇 가지 설정을 해야 한다. 엄브렐에서 [파일] 앱 → [앱] → [nostr-relay] → [data] → [relay] 폴더에 들어있는 ‘config.toml’에서 변경할 수 있다. 도메인 주소를 알고 있는 모두가 릴레이 서버에 연결할 수 있도록 허용할 것이 아니라면, [authorization] 섹션에서는 pubkey_whitelist에 연결을 허용할 계정들의 공개키를 배열로 입력해야 한다.
[info] 섹션에서는 ‘relay_url’을 제대로 명시하고, ‘name’(릴레이 서버 이름)과 ‘description’(릴레이 서버 설명), ‘pubkey’(관리자 노스터 공개키), ‘contact’(연락할 관리자 이메일) 등을 입력한다.
[limits] 섹션에는 스팸 계정이나 과도한 이벤트 요청, 과도한 트래픽으로 인한 서비스 거부 공격을 막기 위해 설정하는 옵션들이 있다. ‘messages_per_sec’는 1초에 몇 번의 이벤트를 생성할 수 있는지 제한하는 용도다. 2–5 정도면 적당하다. ‘subscriptions_per_min’ 옵션은 1분에 이벤트 검색을 몇 번 요청할 수 있는지 제한하는 용도다. 20 정도면 적당하다.
노스터에서는 이메일 형식의 사용자 이름과 npub을 연결할 수 있다. 이를 통해 인증된 npub을 식별할 수 있게 하려면 [verified_users] 섹션에서 ‘mode’를 ‘passive’로 변경해놓으면 된다.
[network] 섹션에서 ‘remote_ip_header’ 옵션은 ‘cf-connecting-ip’로 설정해놓으면 된다. 우리는 클라우드플레어 터널로 연결을 했기 때문에 기존 방법으로는 릴레이 서버에 연결하는 사용자들의 IP주소를 볼 수 없기 때문이다.
다른 옵션들도 config 파일에 주석을 보면 영어로 설명되어 있으니, 찬찬히 보고 설정할 수 있을 것이다. config 파일을 특별히 만지고 싶지 않다면 자신의 지인들에게만 도메인을 알려줄 수도 있다. 그러나 일단 자신이나 지인이 도메인을 통해 릴레이 서버에 연결하면 누구나 해당 도메인을 볼 수 있으므로, config 파일에서 신중하게 옵션들을 설정한 뒤 퍼블릭 릴레이 서버를 운영할 것을 권장한다.