# 이더리움으로 로그인 플러그인

**URL:** https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897
**Category:** Plugin
**Tags:** web3
**Created:** [7월 4, 2022, 5:57오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897 "2022-07-04T17:57:27Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [7월 4, 2022, 5:57오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/1 "2022-07-04T17:57:27Z")

</div>

| | | |
| --- | --- | --- |
| ℹ | **요약** | Discourse에서 Ethereum 로그인 활성화 |
| 🛠 | **저장소** | [GitHub - signinwithethereum/discourse-siwe-auth: Discourse plugin for SIWE authentication · GitHub](https://github.com/signinwithethereum/discourse-siwe-auth) |
| 📖 | **설치 가이드** | [Discourse에 플러그인 설치하는 방법](https://meta.discourse.org/t/install-plugins-in-discourse/19157) |

[Sign-In with Ethereum (SIWE)](https://login.xyz) 표준을 사용하여 사용자가 Ethereum 지갑으로 인증할 수 있도록 하는 Discourse 플러그인입니다. 인젝션 지갑(MetaMask, Safe 등)은 추가 설정 없이 바로 사용할 수 있습니다. RPC 엔드포인트가 구성된 경우 ENS 이름과 아바타는 서버 측에서 해석됩니다.

### 요구 사항

- 서드파티 플러그인을 지원하는 [Communiteq](https://www.communiteq.com/)와 같은 제공업체를 통해 호스팅되거나 셀프 호스팅되는 Discourse 포럼.

### 설치

컨테이너의 `app.yml` 파일에 액세스합니다:

```bash
cd /var/discourse
nano containers/app.yml

```

플러그인의 저장소 URL을 `after_code` 후크에 추가합니다:

```yml
hooks:
  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/signinwithethereum/discourse-siwe-auth.git # <-- 추가됨

```

기존 `docker_manager.git` 줄의 형식을 따르십시오. `sudo -E -u discourse`가 포함되어 있지 않다면 대신 `git clone https://github.com/signinwithethereum/discourse-siwe-auth.git`를 사용하십시오.

컨테이너를 다시 빌드합니다:

```bash
cd /var/discourse
./launcher rebuild app

```

### 구성

설치 후 **관리자 \> 플러그인** 에서 해당 플러그인을 찾아 활성화되어 있는지 확인하십시오:

 ![installed-plugins](https://global.discourse-cdn.com/meta/original/4X/6/a/1/6a1248af32ca3ec9bb57805b9d340feb85981867.png)

플러그인을 구성하려면 **설정** 을 클릭하십시오:

 ![plugin settings](https://global.discourse-cdn.com/meta/original/4X/2/c/b/2cbfc60b74aa15ec8f4404410d95085a0ad7ec65.png)

여기서 로그인 문구를 사용자 정의하고 선택적으로 WalletConnect / Reown 프로젝트 ID를 추가할 수 있습니다. 프로젝트 ID가 없으면 인젝션 지갑(MetaMask, Safe 등)만 사용할 수 있습니다.

#### 설정

| 설정 | 설명 |
| --- | --- |
| **Discourse siwe enabled** | Ethereum 로그인 인증을 활성화하거나 비활성화합니다. |
| **Siwe ethereum rpc url** | _선택 사항._ ENS 이름/아바타 해석 및 EIP-1271 서명 검증(SAFE와 같은 스마트 컨트랙트 지갑에 필수)에 사용되는 Ethereum JSON-RPC 엔드포인트입니다. 전용 제공업체(Alchemy, Infura)를 권장합니다. 예: `https://mainnet.infura.io/v3/YOUR_KEY`. |
| **Siwe project ID** | _선택 사항._ WalletConnect / Reown 프로젝트 ID입니다. 이 값이 없으면 인젝션 지갑(MetaMask, Safe 등)만 사용할 수 있습니다. WalletConnect를 사용하려면 [dashboard.reown.com](https://dashboard.reown.com)에서 무료 프로젝트 ID를 생성하십시오. |
| **Siwe statement** | SIWE 메시지에서 표시되는 사람이 읽을 수 있는 문구입니다. 기본값은 "Sign in with Ethereum"입니다. |

### 작동 방식

사용자가 Ethereum 로그인 버튼을 클릭하면 플러그인이 전용 인증을 엽니다. 사용자는 지갑을 연결하고 SIWE 메시지에 서명하며, 서버 측의 OmniAuth 전략을 통해 인증됩니다.

첫 번째 로그인 후 사용자는 계정에 이메일 주소를 연결하도록 요청받습니다. RPC URL이 구성되어 있고 연결된 주소에 ENS 이름이 있는 경우, 해당 이름은 서버 측에서 해석되고 검증되며 기본 사용자 이름으로 제안됩니다. ENS 아바타는 ENS 메타데이터 서비스를 통해 가져와 프로필 사진으로 사용됩니다.

대신, 기존 사용자는 프로필 설정을 통해 Ethereum 계정을 연결할 수 있습니다.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [7월 4, 2022, 5:58오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/2 "2022-07-04T17:58:35Z")

</div>

의존성에 대한 논의가 여기 있습니다: [Discourse can't find gems specified in the plugin](https://meta.discourse.org/t/discourse-cant-find-gems-specified-in-the-plugin/219968)

---

<div class="post-metadata">

### Author: ![MarcP](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/marcp/32/160184_2.png) [@MarcP](https://meta.discourse.org/u/MarcP)
#### Post date: [7월 2, 2022, 11:25오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/3 "2022-07-02T23:25:41Z")

</div>

GitHub에서 이 프로젝트를 발견했는데, 활발하게 개발되고 있는 것 같습니다. 웹3 로그인을 지원하는 것 같지만, 지갑으로 로그인한 후에도 이메일 주소를 입력해야 합니다.

> **[GitHub - spruceid/discourse-siwe-auth: Discourse plugin for SIWE authentication](https://github.com/spruceid/discourse-siwe-auth)**
>
> Discourse plugin for SIWE authentication

다만, 개발자가 플러그인 설치 후 Discourse를 부트스트랩하는 것을 막는 문제를 겪고 있습니다. 자세한 내용은 아래 이슈에 나와 있습니다. 아주 단순한 문제일 수도 있으니, 여기 계신 누군가가 개발자를 위해 PR을 제출해 줄 수 있을지도 모릅니다.

> <https://github.com/spruceid/discourse-siwe-auth/issues/15>
>
> Using the latest docker image from Discourse we're seeing the error: 
> \`\`\`
> I, \[…2022-05-20T16:58:42.288275 #1\] INFO -- : \> cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
> ERROR: Error installing rbsecp256k1:
> ERROR: Failed to build gem native extension.
> 
> current directory: /var/www/discourse/plugins/discourse-siwe-auth/gems/2.7.6/gems/rbsecp256k1-5.1.0/ext/rbsecp256k1
> /usr/local/bin/ruby -I /usr/local/lib/ruby/site\_ruby/2.7.0 -r ./siteconf20220520-1530-cv5chg.rb extconf.rb
> Downloading libsecp256k1.zip (100%)
> \`\`\`
> Even after installing the required system-level dependencies of rbsecp256k1 our discourse server will not start. Our app.yml looks like: 
> 
> \`\`\`
> hooks:
> after\_code:
> - exec:
> cd: $home/plugins
> cmd:
> - git clone https://github.com/discourse/docker\_manager.git
> - git clone https://github.com/spruceid/discourse-siwe-auth.git
> \`\`\`
> 
> Any assistance would be appreciated!

---

<div class="post-metadata">

### Author: ![michaeld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaeld/32/1594_2.png) [@michaeld](https://meta.discourse.org/u/michaeld)
#### Post date: [7월 3, 2022, 7:21오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/4 "2022-07-03T19:21:05Z")

</div>

잠깐만 보세요 😉  
해결 방법은 GitHub 이슈에 있습니다.

---

<div class="post-metadata">

### Author: ![MarcP](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/marcp/32/160184_2.png) [@MarcP](https://meta.discourse.org/u/MarcP)
#### Post date: [7월 3, 2022, 7:24오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/5 "2022-07-03T19:24:48Z")

</div>

정말 멋지네요, 지금 바로 시도해 보고 있습니다. 개발자에게도 도움이 되길 바랍니다 😀

수정: 설치된 것처럼 보이지만 결국 같은 오류가 발생하는 것 같습니다:

```plaintext
version 2.3.0.
Successfully installed rubyzip-2.3.2
1 gem installed

```

```plaintext
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.

```

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [7월 4, 2022, 3:50오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/6 "2022-07-04T15:50:38Z")

</div>

> [@MarcP](#):
>
> `위쪽으로 스크롤하여 이전 오류 메시지를 찾아보세요`

이렇게 해주실 수 있나요?

---

<div class="post-metadata">

### Author: ![MarcP](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/marcp/32/160184_2.png) [@MarcP](https://meta.discourse.org/u/MarcP)
#### Post date: [7월 4, 2022, 5:04오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/7 "2022-07-04T17:04:39Z")

</div>

로그를 확인하면서 관련이 있을 것 같은 내용들을 올립니다.

[@moderators](https://meta.discourse.org/groups/moderators) 이 주제를 분할하는 것이 좋을까요? 이 플러그인에 대한 공식 주제가 없으며, 개발자가 meta에 있는 것 같지 않습니다.

```plaintext
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)

```

현재 다른 에러는 보이지 않습니다 (혹은 로그가 길어서 제가 놓치고 있는 것일 수도 있습니다).

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [7월 4, 2022, 5:21오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/8 "2022-07-04T17:21:01Z")

</div>

> [@MarcP](#):
>
> [@moderators](https://meta.discourse.org/groups/moderators) 이 건에 대해 주제 분리를 해보는 건 어떨까요? 이 플러그인에 대한 공식 주제가 없고, 개발자가 메타에 있는 것 같지도 않네요.

솔직히 여기서 무슨 일이 일어나고 있는지 핵심을 잘 파악하지 못하겠습니다. 🙂 @RGJ 님과 @michaeld 님이 분리를 할 권한이 있으니, 저보다 더 세심하게 처리해 주실 수 있을 것 같아 그분들이 직접 해주셨으면 좋겠습니다. 🙂🤞 (아니면, 분리를 시작할 게시물을 지정하고, 옮기고 싶은 카테고리를 알려주세요. 그리고 제목도 정해 주시면 제가 진행하겠습니다 👍)

---

<div class="post-metadata">

### Author: ![MarcP](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/marcp/32/160184_2.png) [@MarcP](https://meta.discourse.org/u/MarcP)
#### Post date: [7월 4, 2022, 5:26오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/9 "2022-07-04T17:26:45Z")

</div>

제 제안은 여기서 분리되었습니다:

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

가장 적합한 카테고리는 #Support 또는 #plugins일 것 같습니다 (확신이 없네요.. Meta 회원이 아닌 사람이 개발한 플러그인은 어떻게 처리하나요? 언젠가 그가 Meta에 합류하거나, GitHub를 통해 Meta에 초대할 수도 있겠죠?)

수정:

> [@RGJ](#):
>
> 의존성에 대한 논의는 여기 있습니다 [Discourse가 플러그인에 지정된 gems를 찾을 수 없음](https://meta.discourse.org/t/discourse-cant-find-gems-specified-in-the-plugin/219968)

이 사람이 개발자인 것 같으니, Meta에 있는 건가요? @w4ll3

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [7월 4, 2022, 6:01오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/10 "2022-07-04T18:01:29Z")

</div>

> [@MarcP](#):
>
> `Unable to activate eth-0.5.1, because openssl-3.0.0 conflicts`

@michaeld 님이 어제 이 문제에 대한 PR을 만들었지만 아직 병합되지 않았습니다. 그 사이에는 [https://github.com/communiteq/discourse-siwe-auth/](https://github.com/communiteq/discourse-siwe-auth/) 를 사용할 수 있습니다.

---

<div class="post-metadata">

### Author: ![MarcP](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/marcp/32/160184_2.png) [@MarcP](https://meta.discourse.org/u/MarcP)
#### Post date: [7월 4, 2022, 7:20오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/11 "2022-07-04T19:20:14Z")

</div>

> [@RGJ](#):
>
> 그동안 [GitHub - communiteq/discourse-siwe-auth: Discourse plugin for SIWE authentication](https://github.com/communiteq/discourse-siwe-auth/)을 사용할 수 있습니다.

이것이 작동하는 것을 확인했습니다! 마이클 감사합니다.

---

<div class="post-metadata">

### Author: ![michaeld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaeld/32/1594_2.png) [@michaeld](https://meta.discourse.org/u/michaeld)
#### Post date: [7월 4, 2022, 7:34오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/12 "2022-07-04T19:34:33Z")

</div>

요약하자면, 이슈 [Cannot Install Plugin on Self-Hosted Discourse server - rbsecp256k1 · Issue #15 · spruceid/discourse-siwe-auth · GitHub](https://github.com/spruceid/discourse-siwe-auth/issues/15#issuecomment-1173148592%EC%97%90) 설명된 `before_code`와 제가 PR(현재 미병합 상태)을 만든 새로운 버전의 `eth` gem이 모두 필요합니다.

---

<div class="post-metadata">

### Author: ![obstropolos](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/obstropolos/32/267502_2.png) [@obstropolos](https://meta.discourse.org/u/obstropolos)
#### Post date: [7월 19, 2022, 3:54오전 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/13 "2022-07-19T03:54:27Z")

</div>

공식 포럼에서 조금 늦게 인사드립니다. Spruce 팀의 Rocco입니다.

@michaeld, 수정해 주셔서 다시 한번 감사드립니다. 해당 문제가 해결되었고, 저희 측에서도 문서를 업데이트했습니다. 이 문제를 제기해 주셔서 감사합니다. 우리는 여전히 Ethereum으로 로그인(Sign-In with Ethereum) 관련 기능을 적극적으로 개발하고 유지보수하고 있습니다.

또한 궁금한 점이 하나 있습니다. 이 플러그인을 결국 공식 지원 플러그인으로 만들 수 있는 방법이 있을까요? 😀 - 우리는 Discourse를 정말 좋아하며, 자체 호스팅되지 않은 인스턴스에도 이 기능을 확장하는 방법을 찾고 있습니다.

---

<div class="post-metadata">

### Author: ![michaeld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaeld/32/1594_2.png) [@michaeld](https://meta.discourse.org/u/michaeld)
#### Post date: [7월 20, 2022, 6:12오전 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/14 "2022-07-20T06:12:31Z")

</div>

> [@obstropolos](#):
>
> 자가 호스팅되지 않은 인스턴스로 이 기능을 확장하는 방법을 알려주세요

정확히 말씀드리면, Communiteq는 관리형 호스팅 플랜에서 이 플러그인을 _지원_하며, Professional 플랜 이상에서 사용할 수 있습니다.

---

<div class="post-metadata">

### Author: ![obstropolos](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/obstropolos/32/267502_2.png) [@obstropolos](https://meta.discourse.org/u/obstropolos)
#### Post date: [7월 20, 2022, 3:14오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/15 "2022-07-20T15:14:41Z")

</div>

그 점에 대해 죄송합니다!

---

<div class="post-metadata">

### Author: ![michaeld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaeld/32/1594_2.png) [@michaeld](https://meta.discourse.org/u/michaeld)
#### Post date: [7월 20, 2022, 4:30오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/16 "2022-07-20T16:30:58Z")

</div>

사과하실 필요 없어요! 공식 호스팅에는 아직 (아마도) 해당 기능이 없는 것 같습니다. 그저 이 웹3 플러그인에 대한 우리의 전념을 강조하고 싶었을 뿐입니다.

---

<div class="post-metadata">

### Author: ![obstropolos](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/obstropolos/32/267502_2.png) [@obstropolos](https://meta.discourse.org/u/obstropolos)
#### Post date: [7월 20, 2022, 4:51오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/17 "2022-07-20T16:51:37Z")

</div>

음 — 안타깝게도 공식적으로 지원되는 플러그인은 아닙니다.

하지만 Comuniteq의 지원에는 진심으로 감사드립니다! Web3 사용자를 돕는 모든 시도는 정말 훌륭합니다.

우리는 Ethereum 로그인(Sign-In with Ethereum) 채택을 지원하기 위해 다양한 방식을 연구하고 있으며, Discourse는 항상 우선순위 목록의 상위에 있었습니다. 그래서 [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361)을 표준화한 후 이 플러그인을 만들었습니다. 또한 이 플러그인에 무엇을 더 추가할지에 대한 고민도 계속되고 있는데, 커스텀 RPC 제공자 설정이 그 첫 번째 요소 중 하나입니다.

---

<div class="post-metadata">

### Author: ![Ashley87](https://avatars.discourse-cdn.com/v4/letter/a/2acd7d/32.png) [@Ashley87](https://meta.discourse.org/u/Ashley87)
#### Post date: [9월 21, 2022, 1:30오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/18 "2022-09-21T13:30:49Z")

</div>

이 플러그인이 제 환경에서는 작동하지 않습니다. 플러그인 설치에 문제가 있는 것 같은데, 대안을 공유해 주시거나 이 플러그인에 대해 도와주실 분 계신가요? @michaeld @RGJ

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [9월 21, 2022, 1:55오후 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/19 "2022-09-21T13:55:48Z")

</div>

> [@Ashley87](#):
>
> 플러그인 설치에 문제가 있습니다.

도움을 받으려면 세부 정보를 공유해야 합니다.

---

<div class="post-metadata">

### Author: ![Ashley87](https://avatars.discourse-cdn.com/v4/letter/a/2acd7d/32.png) [@Ashley87](https://meta.discourse.org/u/Ashley87)
#### Post date: [9월 22, 2022, 7:58오전 UTC](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897/20 "2022-09-22T07:58:46Z")

</div>

@RGJ 이 플러그인을 설치하려고 하면 다음과 같은 오류로 인해 재구성이 실패합니다.

```plaintext
You are specifying the gem rbsecp256k1 in /var/www/discourse/plugins/discourse-siwe-auth/plugin.rb, however it does not exist!
Looked for: /var/www/discourse/plugins/discourse-siwe-auth/gems/2.7.6/specifications/rbsecp256k1-5.1.0.gemspec

```

[다음 페이지](https://meta.discourse.org/t/sign-in-with-ethereum-plugin/231897.md?page=2)
