senooken JP Social
  • FAQ
  • Login
senooken JP Socialはsenookenの専用分散SNSです。
  • Public

    • Public
    • Network
    • Groups
    • Popular
    • People

Conversation

Notices

  1. sumiyaki (sumiyaki@plr.ph3j.com@plr.ph3j.com)'s status on Wednesday, 24-Apr-2019 00:42:23 JST sumiyaki sumiyaki
    • sumiyaki
    ノートパソコンのlocalhostにPleromaを新規に2つインストールして、Apache2の設定もして
    https://pleroma1/
    https://pleroma2/
    でアクセスできるようにした。それぞれにアカウントを作って、相互にフォローして、テスト記事を投稿できた。
    これで最小のオレオレfediverseができたかも。ActivityPubをいじくる準備ができた。いつか時間があったら、Mastodonもいれてみたい。

    ちょっと手こずったことは、

    Apache2で、mods-enableでssl.confとssl.loadがシンボリックリンクされてなかったこと。
    proxy.conf, proxy.loca, proxyhttp.loadもシンボリックリンク。_
    SSLの証明書はUbuntuにインストールされてたsnakeoilのまま。

    sites-available/default-ssl.confに
    <VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName pleroma2

    ProxyRequests off
    ProxyPass / http://localhost:4001/
    ProxyPassReverse / http://localhost:4001/
    ProxyPreserveHost On
    </VirtualHost>
    のようなものを、pleroma1とpleroma2の2つ分用意。

    /etc/hostsに
    127.0.1.2 pleroma1
    127.0.1.3 pleroma2
    これは
    127.0.0.1 pleroma1, pleroma2
    でも良いのかもしれない。

    pleroma2のconfig/prod.secret.exsには
    config :pleroma, Pleroma.Web.Endpoint,に
    http: [port: 4001],
    を挿入。

    #pleroma #fediverse #distsns #ActivityPub
    In conversation Wednesday, 24-Apr-2019 00:42:23 JST from plr.ph3j.com permalink

    Attachments




    • sumiyaki (sumiyaki@plr.ph3j.com@plr.ph3j.com)'s status on Saturday, 27-Apr-2019 01:15:26 JST sumiyaki sumiyaki
      in reply to
      ActivityPubを直接使ったサーバを試作したいと思ったけど、

      https://www.w3.org/TR/activitypub/
      https://www.w3.org/TR/activitystreams-core/
      https://www.w3.org/TR/activitystreams-vocabulary/
      ActivityPub W3C Editor's Draft 23 January 2018の翻訳があった
      https://argrath.github.io/activitypub/

      などをちらっと見てもなんだか全く分からない。
      #ActivityPub #Fediverse
      In conversation Saturday, 27-Apr-2019 01:15:26 JST permalink

      Attachments





    • sumiyaki (sumiyaki@plr.ph3j.com@plr.ph3j.com)'s status on Saturday, 27-Apr-2019 01:16:30 JST sumiyaki sumiyaki
      in reply to
      Mastodonにアカウントとして認識されるActivityPubを実装してみる
      https://qiita.com/wakin/items/94a0ff3f32f842b18a25
      Mastodonからフォロー出来て投稿が反映されるActivityPubを実装してみる
      https://qiita.com/wakin/items/28cacf78095d853bfa67
      を見ると、WebFingerとか書いてある。ややこしそう。

      そのQiitaの記事をまとめた成果物が

      RSS更新情報を配信するシンプルなActivityPubサーバ
      https://github.com/wakin-/simple_ap

      だそうで、参考になりそう。
      #ActivityPub #Fediverse #WebFinger #Mastodon
      In conversation Saturday, 27-Apr-2019 01:16:30 JST permalink

      Attachments

      1. wakin-/simple_ap
        from GitHub
        simple_ap - RSS更新情報を配信するシンプルなActivityPubサーバ
      2. Mastodonにアカウントとして認識されるActivityPubを実装してみる - Qiita
        from Qiita
        Mastodonの検索エリアにURLを突っ込んだ際にアカウント化(?)させるにはどういう実装が必要なのか、気になって調べて実装してみた。 # 結局 - ActivityPub対応 - WebFinger対応 - HTTPS化 で受...
      3. Mastodonからフォロー出来て投稿が反映されるActivityPubを実装してみる - Qiita
        from Qiita
        [前回の内容](https://qiita.com/wakin/items/94a0ff3f32f842b18a25)に引き続きさらにMastodonとやり取りが出来るようなActivityPubを書いてみる。 # Noteを返すA...
    • sumiyaki (sumiyaki@plr.ph3j.com@plr.ph3j.com)'s status on Saturday, 27-Apr-2019 01:17:15 JST sumiyaki sumiyaki
      in reply to
      SNS連合とActivityPubで通信できた
      https://blog.valerauko.net/2018/12/20/activitypub-with-the-sns-federation/
      も参考になる。
      「
      HTTP署名
      リクエストにHTTP署名をつけるのは決して楽な話ではない。規格を読みながら、マストドンの作者のブログを読みながら、実際のマストドンやプレロマのコードを見ながら実装してた。
      強いて言えば規格通りにやりゃええ。ただそこでひっかかるところが多い。
      」
      う〜ん、なんか大変そう。
      #ActivityPub #Fediverse
      In conversation Saturday, 27-Apr-2019 01:17:15 JST permalink

      Attachments

      1. No result found on File_thumbnail lookup.
        SNS連合とActivityPubで通信できた
        By Vale from valeblog
        タイトル通りではあるが、その言葉全部通じない人も少なからずいるし、そもそもどうやっては書いてない。まずは言葉の定義から順にする:ActivityPubって何、それを使った通信が一体どんなものか、SNS連合とは何なのか、そして最後どうやってそれと通信できたかを述べる。 ちょっと歴史から 遠い昔遥か彼方の銀河系でツイッターに飽きた民が、自由を手にするために独立を図った。GNU Socialなどのサービスが生まれて、GNUだけのオープンソースの自由ソフトウェアとしてある程度普及した。どっかの一つの大企業が運営するんじゃなく、ブログと似た感じで、一人個人でもサーバーさえあればお一人様だけのものが作れる。ブログと違ってそのソフトは他のサーバーと通信が可能。その独立したサーバーで成り立つゆるいネットワークがSNS連合。 それを可能にするには必須なのは共通言語であるプロトコル。自由ソフトあるあるの感じはするが、プロトコルだけでも数がある。GNU Socialが土台にしたOStatusの他にも、Facebookを代替しようと始まったdisapora*やHubzillaの裏になるZotなどなどある。これらは疎通はできないが、複数も対応してるサービスも実はある。 xkcd: Standards ActivityPubの登場 OStatusのStatusNetで満足できずもっともっといろいろなやりとり方を許容する方法が欲しいと、pump.ioが動き出した。そしていつの間にか、大手SNSがユーザーのデータを悪用するなど、イメージがだんだん悪化する中で、もっと正式なものがあった方が情弱の人にも近づきやすいだろうと。いつの間にかSNSプロトコルの開発がW3Cの中で正式になって、つい2018年の頭ActivityPubとしてリリースされた。 Mastodonの作者はOStatusにいろいろ不満あってリリース前からActivityPubに関わっていて、W3Cの推奨になる前からMastodonがその対応はしていた。そこから一年間経った今で俺の見解は、diaspora*でさえActivityPub対応が検討されてる以上、新しいサービスはActivityPub対応すればほとんど通じるだろう。 コンコン ツイッタの闇に疲れて去年からマストドンをメインとして使うようにしてる。マストドンの民けっこう自由意識が高く、だれにも指図されない環境求める人が多い印象がある。そして技術力もそれなりにあって、使ってるサービスになんかの不満があると、ぶつぶつ言いながら(主要SNSみたいに)耐えるではなく、自分のを作るのがよく目にする。そこにマストドンと実際に疎通ができるPleromaやMisskeyをみて、俺も作りたくなった。それがキツネの始まり。 APIはSwaggerを使って確立して、その上に完全に分離したフロントをつけるのは計画。ただ自分のモチベーションを保つために定期的に何らかの成果物が必要。ちょこちょこと裏の機能だけ追加するでは物足りない。そこで目標としたのは他サーバーのユーザーとフォローし合えること。 必要なもの HTTPS WebFinger ActivityPubの形式のJSON-LD HTTP署名 HTTPS HTTPSは以外と問題になる。ローカルで開発して、外部のサーバーと通信しようとすると、ローカルにもちろんHTTPSでつなげない。対策は3つある。 1つ目は、通信する相手もローカルにたててHTTPS要求しないようにソースをいじる。ActivityPub対応のサービス基本的にオープンソースなのでできる。俺は開発するのは基本的にdocker-composeの仮想ネットワークの中なので、そこにマストドンやプレロマが入ったコンテナを追加する。プレロマは元からそういう想定でdocker-compose.ymlまであるけど、マストドンはドッカーをデプロイ用にしか使ってないのでローカルで動かせるのは二苦労。プレロマの方が通信の確認が厳しいし、それがおすすめ。 2つ目は、ngrokやlocaltunnelでHTTPSのドメインをもらう。両方とも設定がすごく簡単で、localtunnelはサブドメイン指定も無料でできるのですごく便利。それで物足りなくなったらsshの逆ポート転送 (reverse ssh port forwarding)で自分のHTTPS可能サーバーを使ってつなげることも可能。 3つ目は、素直にサーバーにブツを上げてHTTPS可能にする。Let’s Encryptがある以上、証明書にお金かかる心配もないし、一瞬でできる。その代わりにサーバーにデプロイする手間が、ローカル開発と比べて圧倒的。 俺はこの順番で3つとも使っている。開発のデバグ多い最初のフェーズで完全ローカルのドッカーの仮想空間で、そのあとlocaltunnelで外部と通信して、最後はサーバーにあげて本番ぽく。 もう一個HTTPS関係でひっかかるのは、TLS1.3。自分で鯖缶になろうと思う人はどうしても技術力ありがちなんで、新しいTLS1.3「のみ」対応するサーバーもある。それが最新のJVMじゃないと通信できないし、Nettyを使うAlephはそれでもやり方まだ不明。 WebFinger WebFingerはusername@hostの形をした覚えやすい(そしてOStatusでも使われてる)ユーザー名からそのユーザーのプロフィールなどの情報を取得する方法。中身がほとんど確定しているのはホストのメタデータを提供するエンドポイント。 ユーザーの情報を問い合わせできるのはresourceエンドポイントで、大体の形は決まっている。大体と言うのは、ほとんどの情報フィールドが任意で、通信相手のサービスが何を求めるかで増えたり減ったりする。 最初はキツネの中で作ったが、単一責任の法則うんぬんかんぬんで別のライブラリに切り分けた。WebFingerは全体的にXMLとJSON両方とも対応するプロトコルで、XMLの出力と解読で若干苦労した。 ActivityPub形式のJSON-LD APIが最初からJSONで動いているのでActivityPub対応というのは、 @contextのお決まりのフィールドに適切な値を置いて、標準にないフィールドを使うとその名前空間もちゃんと @contextに追加するぐらい。 マストドンは内部でこのコンテキストのやりとりとか算出をライブラリ使って本格的にやっているが、こだわりがなければマストドンのコンテキストをそのままコピペして使っても支障がない。一方コンテキストが欠けていると、マストドンがそのJSONを不正と認識して無視するので注意。 俺はまだマストドンのコンテキストでいいや、となってるから優先順位的に3の次やけど、余裕ができたらJSONLD-JAVAというライブラリと遊んで、そのラッパを作ることになるかもしれない。ルビーなどにも似たようなライブラリは存在する。 HTTP署名 リクエストにHTTP署名をつけるのは決して楽な話ではない。規格を読みながら、マストドンの作者のブログを読みながら、実際のマストドンやプレロマのコードを見ながら実装してた。 強いて言えば規格通りにやりゃええ。ただそこでひっかかるところが多い。 Base64の文字列は=でpaddingされちゃだめなのか、逆にするべきなのかとか。 規格では keyIdは基本なんだっていいけど、実際のサービスはそれがユーザー名と部分一致しないといけないとか。 算出する時にDateヘダーの月日の数値が一桁になるとだめで、RFCの日付形式としてそれでいいのに二桁じゃないとマストドンと通信できないとか。おそらく向こうのnginxが勝手にヘダーを変えてる推測。ソースにはそれらしいものは見当たらないので。 一応実際の通信ができる、できなかったら速攻直すライブラリは出した。ドキュメントは余裕があったら書く。(笑) 実際の通信 最後に実際のフォローし合うという流れを軽く説明しよう。 相手を検索する。WebFingerでusername@hostからありそうなところをたどって、そのユーザーのActivityPub用のエンドポイントと受信箱のURLを探り出す。 相手の受信箱に、正しく形成されたActivityPubのFollowをPOSTで投げる。このリクエストはHTTP署名が必須で、ないもしくは不正であれば401で断られる。 相手がフォローを承認したら(ロックなしのユーザーは自動承認)向こうからこっちの受信箱にAcceptがPOSTされる。 逆もそんな感じ:Followが飛んできたらAcceptを返せば関係成立。Acceptを返さないと、向こうがFollowが承認待ち状態と見る。フォローを拒否する意味のRejectを返すかは実装次第で、AP的には返さなくてもいい。 …
    • sumiyaki (sumiyaki@plr.ph3j.com@plr.ph3j.com)'s status on Saturday, 27-Apr-2019 01:18:25 JST sumiyaki sumiyaki
      in reply to
      ActivityPub compliance
      https://docs.joinmastodon.org/development/activitypub/
      にある
      HTTP signatures と Linked Data Signatures は両方必要なのだろうか?

      #ActivityPub #Fediverse #Mastodon #LDS #linked_data_signatures
      In conversation Saturday, 27-Apr-2019 01:18:25 JST permalink

      Attachments

      1. No result found on File_thumbnail lookup.
        What objects and properties of the ActivityPub spec Mastodon supports
    • sumiyaki (sumiyaki@plr.ph3j.com@plr.ph3j.com)'s status on Saturday, 27-Apr-2019 09:55:46 JST sumiyaki sumiyaki
      • のえる :cava_red: DTP鯖管
      @noellabo
      ありがとうございました。
      なるほど、
      https://docs.joinmastodon.org/development/activitypub/
      「Mastodon also supports Linked Data Signatures for forwarded payloads.」
      のforwarded payloadsってそういうことなんですね。

      Pleromaのソースをちょっとだけgrepしてみたとき、
      pleroma/lib/pleroma/web/http_signatures とか見つかったけど、
      LDSらしいところはみつからなかったのは、使われていなかったのですね。

      #LDS #linked_data_signatures #Pleroma #Mastodon #ActivityPub
      In conversation Saturday, 27-Apr-2019 09:55:46 JST permalink

      Attachments

      1. No result found on File_thumbnail lookup.
        What objects and properties of the ActivityPub spec Mastodon supports
    • sumiyaki (sumiyaki@plr.ph3j.com@plr.ph3j.com)'s status on Tuesday, 30-Apr-2019 01:24:26 JST sumiyaki sumiyaki
      Mastodon Golden Week Calendar
      https://gw-advent.9wick.com/calendars/16
      の4日目?

      @zunda
      2019年04月29日に更新
      macOSでお手軽Mastodon開発
      https://qiita.com/zunda/private/5f8a0a8ee1e7c297dcd4

      がノートパソコンにMastodonをインストールするときに参考になりそう。
      まだ直ぐにMastodonをインストする予定はないけど。

      関係ないけど、このカレンダーは登録するときにTwitterのアカウントを必要としているみたい。
      Mastodonとか、ではないのか。

      #mastodon #localhost
      In conversation Tuesday, 30-Apr-2019 01:24:26 JST permalink

      Attachments

      1. Mastodon Golden Week Calendar | GWアドベントカレンダー
        ゴールデンウィークの10連休に行うアドベントカレンダーです
      2. macOSでお手軽Mastodon開発 - Qiita
        from Qiita
        せっかくの連休なので、さっくりと、Mastodonの改造をやってみたいと思います。こっちには連休無いけどな!この記事では、macOSでざっくりと開発環境を整え、Mastodonのコードを取得してmacOSで走らせられるようにして、特に...

Feeds

  • Activity Streams
  • RSS 2.0
  • Atom
  • Help
  • About
  • FAQ
  • TOS
  • Privacy
  • Source
  • Version
  • Contact

senooken JP Social is a social network, courtesy of senooken. It runs on GNU social, version 2.0.2-beta0, available under the GNU Affero General Public License.

Creative Commons Attribution 3.0 All senooken JP Social content and data are available under the Creative Commons Attribution 3.0 license.