Pleroma 인스턴스를 굴려 보려는 험난한 과정의 기록

마땅한 ActivityPub 인스턴스를 구하지 못한 친구들을 수용할 인스턴스를 만드려다가 수많은 바보짓의 결과로 험난한 길을 걷게 되었고 오늘 작업은 하나도 제대로 된 게 없다는 소식입니다.

지금은 그냥 어떤 바보짓을 해서 어떤 고생을 하고 있는지 대충 끄적여 놓고... 나중에 해결하고 나서 좀 더 정리하거나 지우던가 하려고요.

서버 마이그레이션을 하려고 하면 안 되었나

원래 쓰던 VPS는 엄청나게 돈이 없던 시절에 어떻게든 가장 저렴한 VPS를 찾다가 나온 건데, 무려 뉴욕에 있는 GalaxyGate 인스턴스였습니다. 우분투 16.04였나 뭔가로 오래 굴리다 보니 이미 여기저기 낡아서 헤어지고 있긴 했지만 대충 굴러가고 있긴 했는데, 여기서 SNS를 돌리려니 핑이 200ms가 넘게 뜬다는 문제가 있었죠.

그래서 우선 가까운 데로 서버를 옮기기로 했습니다.

오라클이 나를 버렸어

오라클 A1 인스턴스가 빠르고 공짜라길래 그걸 파려고 했는데, 오라클 클라우드 회원가입하려고 하는 데에 1시간을 넘게 쓰고 포기했습니다. 신용 카드를 등록하고 인증을 누르면 계정이 생길 것 같다가 거절이 뜨는데, 이렇게 거절을 한 번 당할 때마다 5분 동안 리퀘스트가 너무 많다면서 403 오류를 뿜습니다.

찾아보니 Billing Address가 불일치하면 결제수단 인증을 일단 거절하는 모양이더라고요. 그런데 저는 마스터카드에서 제 국민카드의 Billing Address가 뭐라고 생각하고 있는지 알 길이 없고, 심지어 국민카드는 해외결제 시 Billing Address를 따로 설정하는 방법을 제공하지 않습니다. 고객센터에 문의하면 “ㅇㅇ 그 주소 맞음” 인증서를 보내 준다고 하더라고요. 그런데 오늘은 일요일이죠.

무엇보다 가입 프로세스가 거절될 때마다 쿨타임 5분을 돌려야 할 만한 이유가 있다면, 그 곳의 클라우드 서비스를 이용하고 싶지는 않았습니다.

Vultr 인스턴스

Vultr에는 사실 좋은 기억이 없습니다. 도쿄 리전에서 VPS를 쓰다가 시스템 문제로 엄청 고생한 기억이 있죠. 하지만 서울 리전이 생겼다길래 도전해 보기로 했는데, 나름대로 빠르고 저렴하더라고요. 오랜 옛날에 쓰던 계정을 살려내서 우분투 인스턴스를 새로 팠습니다.

아무튼 뭔가 대단히 잘못됨

Pleroma가 안 돌아감

Pleroma 설치 과정은 되게 쉬웠는데, OpenSSL 1.1 디펜던시 해결이 안 되더라고요. 우분투 22.04의 패키지 매니저에 문제가 있어서 (의도적인 건지 실수인지는 모르겠지만) OpenSSL 1.1이 설치되지 않습니다. 데비안 레포지토리에서 받아서 어떻게 설치해 봤는데 이번엔 버전이 안 맞다고 하길래 그냥 포기하고 도커를 올렸습니다.

그런데 Pleroma는 설정 파일이 Elixer로 되어 있고 이걸 실행 시에 컴파일한다는 사실을 알고 계셨나요? 저는 몰랐습니다. 아무튼 그런 이유로 도커파일 레포지토리를 보니 빌드 결과를 레포지토리로 제공할 수는 없고 직접 빌드해야 한다고 하더라고요. 그래서 또 도커를 깔고 docker compose build 하는 데에 10분이 넘게 걸렸습니다.

이번엔 SSL이 안 됨

Nginx 설정 파일을 옮기는 게 지난한 과정일 줄은 알고 있었지만, 간단한 실수로 시간을 엄청나게 날리게 될 줄은 몰랐습니다. DNS 설정에서 CNAME 레코드를 써야 하는 곳에 A 레코드를 쓰는 바람에 제가 Pleroma 인스턴스에 쓰려던 호스트네임이 동작하지 않고 있었고, 이 상태에서 certbot을 돌렸다가 어라 왜 안되지? 하면서 몇 번 더 돌렸더니... 한 시간 안에 5회 이상 인증에 실패했다면서 certbot도 쿨타임이 걸렸습니다. 아직도 기다리는 중이에요. 이제 다 기다리긴 했는데...

DNS 문제인 줄 알았는데

DNS 레코드도 고쳤고 쿨타임 한 시간도 돌았는데 certbot이 또 안 되더라고요. 뭔가 잘못된 것 같아서 ssh에서 curl mydomainname.tld를 해 보니까 connection refused가 뜨고요. 알고보니 우분투는 기본 방화벽(ufw)에서 80번, 443번 포트를 따로 허용해 주지 않으면 안 되는 거였어요. 아니 왜 4000번 포트 같은 건 멀쩡히 연결되면서 왜

설정은 어떻게 하는겨

도커 레포의 README.md가 무슨 소리인지 잘 모르겠어서 한참을 고민하다가 어떻게든 어드민 계정을 만들어서 들어가는 데는 성공했는데, 이거 설정을 어떻게 바꾸는 거죠? 수동 설정은 config-override.exs 파일을 쓰라고 되어 있어서 써 보고, 도커에 마운트도 해 봤는데 안 되더라고요. 일단 어드민 FE에서 설정을 바꿀 수 있도록 설정을 DB로 마이그레이션했는데 왠지 어드민 FE에서 설정을 바꾸고 저장하려고 하면 400: mkdir_p라는 이상한 오류만 띄워요. 구글에 검색해 봐도 안 나오는데 어떻게든 해결해 봐야죠.

어쨌든 돌아가고 있어요

인스턴스를 재시작했더니 어떻게 잘 돌아가고 있습니다. 종종 뭔가 꼬일 때마다 재시작을 한두 번 해 주면 되다 말다 하는 것 같은데, 항상 안 되는 것보단 가끔 되는 게 낫죠.

제 인스턴스는 여기에 있습니다. 지인들 위주의 초대제로만 운영됩니다만, 경험이 쌓이면 공개 인스턴스를 열어 볼지도 모르겠네요.

앞으로도 고생길이 펼쳐짐

그런데 생각해 보니 이 블로그라던가 이것저것을 새 VPS로 옮겨야 하잖아요. Nginx 설정 같은 게 문제가 아니라... GalaxyGate VPS를 너무 저렴하게 설정한 나머지 네트워크 속도가 업로드 500Mbps로 제한되어 있습니다. 초당 62.5메가바이트를 받아오는 속도로 수십 기가바이트를 받아와야 하는데, 이걸 아직 시작도 안 했어요.

앞으로 어떻게 해야 하나

아 모르겠다 어떻게든 시작한 김에 마이그레이션을 해야죠 아이고 돌겠네

체크리스트


Daniel Soohan Park (@heartade)

Follow this blog at Fediverse: @heartade@blog.heartade.dev

Follow my shorter shoutouts at Fediverse: @heartade@social.silicon.moe