Mastodon 다중 인스턴스 알림을 푸시 알림

목적



마스트돈 복수 인스턴스의 각종 통지를 iPhone에 푸시 통지하고 싶다.
(이미 복수 인스턴스 대응의 앱이 나오고 있으므로 필요성은 희미해져 버렸지만 공부를 위해서.)

이용언어・서비스


  • Go 언어
  • mattn/go-mastodon - htps : // 기주 b. 코 m / 마 t / goma s와 don
  • AWS SQS
  • IFTTT(webhook/push)
  • moru3/mastodon-notifications-sqs (생성)
  • moru3/sqs-to-ifttt-webhook (작성)

  • 리포지토리



    이하의 2개로 나누어 실장. 하나로 정리해도 문제는 없을 것.

    mastodon-notifications-sqs



    다중 마스트돈 인스턴스에 대해 StreamingAPI를 이용하여 notifications를 기다린다.
    notification을 얻으면 AWS SQS 큐에 메시지를 푸시합니다.

    sqs-to-ifttt-webhook



    AWS SQS의 특정 대기열에서 정기적으로 메시지를 검색합니다.
    취득한 내용을 value1이라는 POST 데이터로서 IFTTT의 webhookURL에 대해 POST한다.

    아래 준비



    AWS SQS 대기열 준비



    AWS Management Console-> Simple Queue Service에서 큐를 생성합니다.
    설정 내용은 임의.
    작성 후 큐의 URL(예: https://sqs.ap-northeast-1.amazonaws.com/111111111/hogehoge )을 확인해 둔다. 이 URL에 대한 메시지를 POST/GET합니다.

    IFTTT 서비스 설정



    IFTTT의 maker webhooks를 이용 가능 상태로 하고,
    "webhook 수신 -> 푸시 알림"이벤트를 만듭니다.
    푸시 송신 내용은 이번에는 value1만을 지정한다.



    Webhook의 URL은 작성한 Webhook의 상세에 있는 URL에 대해서 브라우저로 액세스하면 이용 방법을 알 수 있다.
    URL의 일부에 event명, 쿼리에 비밀이 들어가서 인증하고 있다.
    [webhook-URL例]
    https://maker.ifttt.com/trigger/[event_name]/with/key/[secret_key]
    

    AWS 자격 증명 설정



    SQS가 이용할 수 있는 AWS의 IAM 사용자의 자격 증명을 서버의 ~/.aws/credentials에 기술한다.
    [default]
    aws_access_key_id = xxxxxxxxxxxx
    aws_secret_access_key =  xxxxxxxxxxxxxx
    

    알림을 받고자 하는 인스턴스의 자격 증명 가져오기



    moru3/mastodon-notifications-sqs의 README에도 기술하고 있지만,
    마스트돈의 API를 이용하기 위해서는 대상의 인스턴스에 대해 client_id와 client_secret를 취득할 필요가 있다.
    curl로 취득 가능.
    # 取得
    curl -X POST -sS https://xxxxxxxxxxxxxx/api/v1/apps \
       -F "client_name=xxxxxxxxxx" \
       -F "redirect_uris=urn:ietf:wg:oauth:2.0:oob" \
       -F "scopes=read write follow"
    
    # 結果
    {"id":1,"redirect_uri":"urn:ietf:wg:oauth:2.0:oob","client_id":"xxxxxxxxxxxxxx","client_secret":"xxxxxxxxxxxxxxxxxxxxx"}%
    
    

    사용



    실행 환경에서 다음을 실행합니다.
    실행하기 전에 setting.yml을 만듭니다.
  • moru3/mastodon-notifications-sqs
  • moru3/sqs-to-ifttt-webhook

  • 조금 움직여 본 소감


  • 알림 너무 많은 문제
  • 왠지 인증이 통과하지 않는 인스턴스가 있었다 (닫고 있어?)
  • 1 인스턴스에 대한 알림 모니터링이 중지되었을 수 있습니다
  • 좋은 웹페이지 즐겨찾기