나만의 마스토돈 서버를 만들고 운영해봅시다.

서버 만들기

마스토돈 서버를 만드려면 크게 두 가지 선택지가 있습니다.

운영하기

아직 내용이 없습니다


유용한 명령어들

운영을 하면서 유용하게 쓰이는 명령어들을 정리합니다.

주기적으로 돌려주면 좋은 명령들:

  • tootctl statuses remove
  • tootctl accounts cull -c 20
  • tootctl media remove-orphans

tootctl cache clear

마스토돈 버전을 업그레이드 한 후, 올바르지 않은 캐시가 있을 수 있기 때문에 반드시 돌려주어야 하는 명령입니다.


tootctl cache recount

마스토돈은 사용자의 게시물 수, 게시물의 부스트 수 같은 값을 빠른 응답을 위해 미리 계산해 캐시에 담아놓고 사용합니다. 오래된 서버의 경우 이 값이 맞지 않을 수 있기 때문에 한 번 돌려주면 카운트를 다시 계산해 값이 맞게 됩니다.


tootctl search deploy

마스토돈에 ES를 통한 텍스트 검색 기능을 새로 붙인 경우, 이 명령을 통해 기존 게시물들에 대한 인덱스를 생성할 수 있습니다. ES 데이터베이스가 깨져서 새로 생성한 경우에도 유용합니다. 주기적으로 돌려줄 필요는 없습니다.


tootctl media remove

마스토돈은 원격 서버의 미디어를 자신의 오브젝트 스토리지에 복사하여 저장해 로컬 사용자에게 제공합니다. 오래된 이미지들은 굳이 가지고 있을 필요가 없으므로 주기적으로 이 명령을 통해 제거할 수 있습니다. 만약 사용자가 다시 해당 원격 미디어를 요청한다면 그 때 다시 다운로드하여 제공하므로 안심해도 됩니다.

관리자 설정에 리모트 미디어 캐시 리텐션 옵션이 추가되어 이젠 수동으로 돌릴 필요가 없는 명령어입니다. 오브젝트 스토리지 이전시에 유용합니다.

사용법 예시: tootctl media remove --days=30


tootctl media remove-orphans

모종의 사유로 삭제되지 않았거나 불필요하게 생성된, 없어야 할 미디어 파일들을 찾아 삭제해 줍니다. 모종의 사유는 오브젝트 스토리지 접속 오류 등입니다.


tootctl preview_cards remove

서버에 생성된 링크 미리보기 카드 중 오랫동안 사용되지 않은 미리보기 카드를 삭제합니다. 다시 링크를 포함한 게시물이 생성된 경우 다시 미리보기 카드를 생성하기 때문에 안심해도 됩니다.

사용법 예시: tootctl preview_cards remove --days=180


tootctl statuses remove

로컬에 저장된 원격 게시물들 중에서 이젠 더이상 사용자가 팔로우 하지 않는 유저의 글 등, 더이상 존재할 필요가 없는 게시물들을 찾아 지워줍니다.

사용법 예시: tootctl statuses remove


tootctl accounts cull

연합이 잘 되지 않는 경우 가끔 삭제된 사용자가 로컬 데이터베이스에는 남아 있는 경우가 있습니다. 이때 accounts cull 명령으로 사용자가 실제로 존재하는지 다시 확인하여 404, 410이 반환되는 경우 데이터베이스에서 삭제합니다.

사용법 예시: tootctl accounts cull -c 20


tootctl domains purge

어떤 서버가 self-destruct 같은 명령을 사용하지 않고 그냥 연합우주에서 사라져 버린 경우, 해당 서버에서 작성된 게시물들은 로컬 서버에서 삭제되지 않습니다. 해당 서버의 모든 정보를 데이터베이스에서 삭제할 수 있습니다. 주의: 해당 서버가 정말로 완전히 삭제된 것인지 확인하세요. 그냥 잠시 다운되었을 경우엔 돌리지 않는 것이 좋습니다.

사용법 예시: tootctl domains purge [domains...]


tootctl self-destruct

마스토돈 운영을 그만두고 싶을 때 모든 사용자를 삭제한다는 ActivityPub 메시지를 만들어 현재까지 만났던 모든 서버에게 전달합니다. 이 과정을 거치지 않고 운영을 종료하면 다른 서버들에는 로컬 유저의 기록이 남아 있기 때문에 운영을 종료하기 전엔 반드시 돌려주는 것을 권장합니다.

주의 이 명령은 되돌릴 수 없습니다. 명령을 실행할 때 확인하는 과정이 들어있긴 하지만 절대로 운영 중인 서버에서 실험적으로 실행하지 마세요. 또한 이 명령은 단순히 유저를 삭제하라는 명령을 서버에 전달할 뿐 실제 데이터는 삭제하지 않습니다. sidekiq의 큐가 빈 것을 확인한 뒤 서버 데이터를 삭제하거나, 서버 자체를 삭제하여 데이터를 지울 수 있습니다.