Ethereumサインインプラグイン

|||
-|-|-|
:information_source: | 概要 | DiscourseでSign-In with Ethereumを有効にする
:hammer_and_wrench::sob: - | 元のリポジトリ | GitHub - spruceid/discourse-siwe-auth: Discourse plugin for SIWE authentication
:hammer_and_wrench: :white_check_mark: | 動作中のリポジトリ | GitHub - communiteq/discourse-siwe-auth: Discourse plugin for SIWE authentication
:open_book: | インストールガイド | Discourseでプラグインをインストールする方法

機能

このプラグインは、DiscourseでSign-In with Ethereumを有効にします。

設定

要件

  • 自己ホスト型のDiscourseフォーラム、またはCommuniteqのようなサードパーティ製プラグインを許可するプロバイダーでホストされているもの。

注意

Sign-In with Ethereumプラグインでは、初回認証後にアカウントと関連付けるためのメールアドレスの入力が引き続き必要です。ユーザーがENSアドレスを所有している場合、それがデフォルトで選択されたユーザー名になります。メールアドレスが関連付けられると、ユーザーはいつでもSIWEオプションを使用してサインインできるようになります。

プラグインの有効化

自己ホスト型Discourseでプラグインをインストールして有効にするには、次の方法を使用します。コンテナのapp.ymlファイル(/var/discourse/ にあります)にアクセスします。

cd /var/discourse
nano containers/app.yml

プラグインのリポジトリURLをコンテナのapp.ymlファイルに追加します。

hooks:
  before_code:                             # <-- 追加
    - exec:                                # <-- 追加
        cmd:                               # <-- 追加
          - gem install rubyzip            # <-- 追加
  after_code:
    - exec:
      cd: $home/plugins
      cmd:
        - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git
        - sudo -E -u discourse git clone https://github.com/spruceid/discourse-siwe-auth.git   # <-- 追加

docker_manager.git行の既存の形式に従ってください。sudo -E -u discourseが含まれていない場合は、- git clone https://github.com/spruceid/discourse-siwe-auth.gitを挿入してください。

コンテナを再構築します。

cd /var/discourse
./launcher rebuild app

無効にするには、プラグインを削除するか、(Admin Settings → Plugins → discourse-siwe → discourse siwe enabled)でdiscourse siwe enabledのチェックを外します。

Discourse Plugins Enable plugin at settings

WalletConnectの有効化

WalletConnectサポートはInfura経由で提供できます。新しいInfuraプロジェクトを作成して、新しいInfuraプロジェクトIDを取得します。次に、設定(上記と同じ)に移動し、その場所にIDを貼り付けて、チェックマークをクリックします。 Add infura id to plugin settings

JSON RPC

または、以下に示すように、WalletConnectインスタンスをJSON RPCエンドポイントで構成することもできます。

これにより、WalletConnect専用のInfura ID構成オプションが上書きされます。Infura IDの他の用途には影響しません。

Add JSON RPC endpoints

メッセージステートメントの編集

デフォルトでは、メッセージに「Sign-in to Discourse via Ethereum.」というステートメントが追加されます。このステートメントを編集するには、設定(上記と同じ)にアクセスして更新します。 Add infura id to plugin settings

「いいね!」 14

ここに依存関係に関する議論があります Discourse can't find gems specified in the plugin

GitHubで見つけました。活発に開発されているようです。Web3ログイン(ウォレットでログインした後もメールアドレスが必要)ができるようです。

しかし、開発者はプラグインのインストールとその後のDiscourseのブートストラップを妨げる問題に直面しています。詳細は以下のIssueに記載されています。もしかしたら非常に簡単な問題で、誰かが開発者のためにPRを提出できるかもしれません。

「いいね!」 1

ビールを注いでくれ :wink:
GitHubのイシューに解決策があります。

「いいね!」 3

素晴らしいですね。今試してみます。開発者の方にも役立つことを願っています :grinning_face:

編集:gemがインストールされているように見えますが、同じエラーが発生しました。

version 2.3.0.
Successfully installed rubyzip-2.3.2
1 gem installed
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 777 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

これをしていただけますか?

「いいね!」 2

ログを確認したところ、関連性があると思われるものを投稿します。

@moderators これについてトピックを分割していただけますか?このプラグインには公式トピックがなく、開発者はメタにいないと思います。

I, [2022-07-04T16:43:46.394301 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Gem::ConflictError: Unable to activate eth-0.5.1, because openssl-3.0.0 conflicts with openssl (~> 2.2)

現時点では他にエラーは見られません(または見落としている可能性があります。ログは長いです)。

「いいね!」 1

正直なところ、何が起こっているのかよくわかりません。:slightly_smiling_face: @RGJ@michaeld には分割する権限があるので、私がするよりも慎重に分割して管理してくれるかもしれません。:slightly_smiling_face::crossed_fingers:(または、分割する投稿を選び、移動先のカテゴリ名を指定して、タイトルを教えてくれれば :+1:

「いいね!」 1

ここから分割する提案です。

https://meta.discourse.org/t/web-3-0-features/203321/19?u=marcp

最も適切なカテゴリは Support または #plugins でしょう(確信はありませんが、Metaのメンバーによって開発されていないプラグインをどのように扱いますか?彼がMetaに参加するか、いつかGitHub経由でMetaに招待できるかもしれません)。

編集:

こちらが開発者のようですので、Metaにいるのでしょうか? @w4ll3

@michaeld が昨日これを PR ましたが、まだマージされていません。それまでの間は GitHub - communiteq/discourse-siwe-auth: Discourse plugin for SIWE authentication を使用できます。

「いいね!」 3

これは機能することを確認できます!マイケルさん、ありがとうございます。

「いいね!」 1

要約すると、イシュー Cannot Install Plugin on Self-Hosted Discourse server - rbsecp256k1 · Issue #15 · spruceid/discourse-siwe-auth · GitHub で説明されている before_code と、私が(現在マージされていない)PR を作成した eth gem の新しいバージョンの両方が必要です。

「いいね!」 5

SpruceチームのRoccoです。公式フォーラムでは少し遅くなりましたが、こんにちは。

修正していただきありがとうございます、@michaeldさん。おかげで問題は解決し、こちらでもドキュメントを更新しました。この件を取り上げていただき、重ねて感謝いたします。私たちは現在もSign-In with Ethereumに関する開発とメンテナンスを積極的に行っています。

また、お伺いしたいのですが、将来的にはこれが公式にサポートされるプラグインになる可能性はありますか? :grinning: Discourseは素晴らしいので、セルフホストされていないインスタンスにもこの機能拡張を検討したいと考えています。

「いいね!」 2

明確にするために、Communiteq はマネージドホスティングプランでもこのプラグインをサポートしており、Professional プラン以上で利用可能です。

「いいね!」 3

申し訳ありませんでした!

謝る必要はありません!公式ホスティングには(まだ?)ありません。これらのweb3プラグインへのコミットメントを強調したかっただけです。

「いいね!」 3

残念ながら、公式にはサポートされていないプラグインです。

しかし、Commiteq社のサポートには間違いなく称賛に値します!Web3ユーザーをサポートするためなら何でも素晴らしいことです。

こちら側では、Sign-In with Ethereumの採用をサポートするためのさまざまな方法に取り組んでおり、Discourseは常に私たちのリストのトップにありました。そのため、標準化EIP-4361後にプラグインを作成しました。もう一つ常に考えていたのは、それに他に何を追加するかということです。カスタムRPCプロバイダーが最初の要素の1つです。

「いいね!」 3

このプラグインが機能しません。プラグインのインストールに問題があり、インストールできません。どなたか代替案を共有していただけますか、またはこのプラグインについて手助けしていただけますか? @michaeld @RGJ

ヘルプが必要な場合は、詳細を共有する必要があります。

「いいね!」 1

@RGJ このプラグインをインストールしようとすると、次のようなエラーでリビルドが失敗します。

/var/www/discourse/plugins/discourse-siwe-auth/plugin.rb で gem rbsecp256k1 を指定していますが、存在しません!
探した場所: /var/www/discourse/plugins/discourse-siwe-auth/gems/2.7.6/specifications/rbsecp256k1-5.1.0.gemspec