Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update docs/self hosting #364

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions src/app/[locale]/guides/self-hosting/en.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@ Self-hosting a Bluesky PDS means running your own Personal Data Server that is c
* [Verifying that your PDS is online and accessible](#verifying-that-your-pds-is-online-and-accessible)
* [Creating an account using pdsadmin](#creating-an-account-using-pdsadmin)
* [Creating an account using an invite code](#creating-an-account-using-an-invite-code)
* [Setting up an SMTP server](#setting-up-an-smtp-server )
* [Using the Bluesky app with your PDS](#using-the-bluesky-app-with-your-pds)
* [Adding a top level domain name as your handle](#adding-a-top-level-domain-name-as-your-handle)
* [Using updateAccountHandle to update your handle](#using-update-account-handle-to-update-your-handle)
* [Debugging invalid.handle warning](#debugging-invalid-handle-warning)
* [Updating your PDS](#updating-your-pds)
* [Getting help](#getting-help)

Expand Down Expand Up @@ -143,6 +147,39 @@ sudo pdsadmin create-invite-code

When creating an account using the app, enter this invite code.

## Setting up an SMTP server

After setting up your PDS configure an SMTP server to recieve emails from Bluesky app, like the "verify your email address" email.

On your PDS server open the file `/pds/pds.env`

```bash
sudo nano /pds/pds.env
```

Add these lines with your specific setup:

```bash
PDS_EMAIL_FROM_ADDRESS="[email protected]"
PDS_EMAIL_SMTP_URL="smtps://[email protected]:<app-password>.gmail.com:465"
```

We recommend using Google's [Gmail SMTP server](https://support.google.com/a/answer/176600?hl=en) as a fast way to setup an SMTP server for users with a gmail account. You will need to generate an [app password](https://support.google.com/accounts/answer/185833?sjid=10418456355978061137-NC).

Restart your pds server after changing the environment variables in `/pds/pds.env`

_Note: To bypass SMTP setup for email verification you can query the sqlite table (email_token table) on your PDS._

```bash
sudo sqlite3 /pds/account.sqlite "SELECT * FROM email_token;"
```

_The token will be in the third column_

```bash
update_email|did:plc:someid|EMAIIL-TOKEN|2024-11-06T18:35:18.589Z
```

## Using the Bluesky app with your PDS

You can use the Bluesky app to connect to your PDS.
Expand All @@ -155,6 +192,69 @@ You can use the Bluesky app to connect to your PDS.

_Note: because the subdomain TLS certificate is created on-demand, it may take 10-30s for your handle to be accessible. If you aren't seeing your first post/profile, wait 30s and try to make another post._

_Note: Users with Squarespace hosted subdomains have reported having issues which resolved after switching to domain registrars with support for wildcard subdomains._

## Adding a top level domain name as your handle

* Create an account using a temporary bluesky handle
* In the Bluesky app go to Settings > Change Handle
* Choose "I have my own domain"
* Enter your domain name
* Add the provided TXT record to your DNS records
* Click "Verify DNS record"

_Tip: Before deleting your Bluesky account, change to a temporary handle if you want to reuse the TLD._

## Using updateAccountHandle to update your handle

Run the following curl command with your specific variables. See [updateAccountHandle](https://docs.bsky.app/docs/api/com-atproto-admin-update-account-handle) for docs.

```bash
curl --fail --silent --show-error \
--request POST \
--header "Content-Type: application/json" \
--user "admin:${PDS_ADMIN_PASSWORD}" \
--data "{\"did\": \"${DID}\", \"handle\": \"${HANDLE}\"}" \
"https://${PDS_HOSTNAME}/xrpc/com.atproto.admin.updateAccountHandle"
```

The variables you need can be found in `/pds/pds.env`

```bash
sudo cat /pds/pds.env
```



## Debugging invalid.handle warning

[Goat](https://github.com/bluesky-social/indigo/blob/d1686e9b80835948407fd7ad2428e92379298dac/cmd/goat/README.md) is a helpful tool for figuring out what's going on with your handle.

```txt
$ goat resolve wyden.senate.gov
{
"id": "did:plc:ydtsvzzsl6nlfkmnuooeqcmc",
"alsoKnownAs": [
"at://wyden.senate.gov"
],
"verificationMethod": [
{
"id": "did:plc:ydtsvzzsl6nlfkmnuooeqcmc#atproto",
"type": "Multikey",
"controller": "did:plc:ydtsvzzsl6nlfkmnuooeqcmc",
"publicKeyMultibase": "zQ3shuMW7q4KBdsFcdvebGi2EVv8KcqS24tF9Pg7Wh5NLB2NM"
}
],
"service": [
{
"id": "#atproto_pds",
"type": "AtprotoPersonalDataServer",
"serviceEndpoint": "https://shimeji.us-east.host.bsky.network"
}
]
}
```

## Updating your PDS

It is recommended that you keep your PDS up to date with new versions, otherwise things may break. You can use the `pdsadmin` tool to update your PDS.
Expand Down
121 changes: 110 additions & 11 deletions src/app/[locale]/guides/self-hosting/ja.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,15 @@ Bluesky PDS をセルフホスティングするということは、より広
* [PDS がオンラインでアクセス可能であることを確認する](#verifying-that-your-pds-is-online-and-accessible)
* [pdsadmin を使用してアカウントを作成する](#creating-an-account-using-pdsadmin)
* [招待コードを使用してアカウントを作成する](#creating-an-account-using-an-invite-code)
* [SMTP サーバーの設定](#setting-up-an-smtp-server)
* [PDS で Bluesky アプリを使用する](#using-the-bluesky-app-with-your-pds)
* [ハンドルとしてトップレベルドメイン名を追加する](#adding-a-top-level-domain-name-as-your-handle)
* [updateAccountHandle を使用してハンドルを更新する](#using-update-account-handle-to-update-your-handle)
* [invalid.handle 警告のデバッグ](#debugging-invalid-handle-warning)
* [PDS を更新する](#updating-your-pds)
* [ヘルプを取得する](#getting-help)

## セルフホスティング PDS の準備
<h2 id="preparation-for-self-hosting-pds">セルフホスティング PDS の準備</h2>

任意のクラウド プロバイダーでサーバーを起動します。[Digital Ocean](https://digitalocean.com/) と [Vultr](https://vultr.com/) は 2 つの一般的な選択肢です。

Expand All @@ -45,7 +49,7 @@ Bluesky PDS をセルフホスティングするということは、より広

**注:** セキュリティ対策として、インバウンド SSH アクセス (ポート 22/tcp) を自分のコンピューターのパブリック IP アドレスに制限することをお勧めします。現在のパブリック IP アドレスは、[ifconfig.me](https://ifconfig.me/) を使用して確認できます。

## クラウド ファイアウォールを HTTP および HTTPS 用に開く
<h2 id="open-your-cloud-firewall-for-http-and-https">クラウド ファイアウォールを HTTP および HTTPS 用に開く</h2>

最も一般的な構成ミスの原因の 1 つは、ファイアウォール ポートを正しく開いていないことです。この手順を必ず再確認してください。

Expand All @@ -57,7 +61,7 @@ Bluesky PDS をセルフホスティングするということは、より広

**注:** TLS を設定したり、ポート 80 から 443 にリクエストをリダイレクトしたりする必要はありません。Docker 構成ファイルに含まれている Caddy Web サーバーがこれを処理するためです。

## ドメインの DNS を構成する
<h2 id="configure-dns-for-your-domain">ドメインの DNS を構成する</h2>

DNS プロバイダーのコントロール パネルから、サーバーを指すレコードを含むドメインを設定します。

Expand All @@ -73,7 +77,7 @@ DNS プロバイダーのコントロール パネルから、サーバーを指
* ユーザーが PDS に新しいアカウントを作成できるようにする場合は、ワイルドカード レコードが必要です。
* TTL は任意の値にできますが、600 (10 分) が妥当です

## DNS が期待どおりに動作していることを確認します
<h2 id="check-that-dns-is-working-as-expected">DNS が期待どおりに動作していることを確認します</h2>

[DNS Checker](https://dnschecker.org/) などのサービスを使用して、ドメイン名を解決できることを確認します。

Expand All @@ -84,7 +88,7 @@ DNS プロバイダーのコントロール パネルから、サーバーを指

これらはすべて、サーバーのパブリック IP を返します。

## Ubuntu 20.04/22.04 および Debian 11/12 のインストーラー
<h2 id="installer-on-ubuntu-20-04-22-04-and-debian-11-12">Ubuntu 20.04/22.04 および Debian 11/12 のインストーラー</h2>

SSH 経由でサーバー上で、wget を使用してインストーラー スクリプトをダウンロードします:

Expand All @@ -104,7 +108,8 @@ curl https://raw.githubusercontent.com/bluesky-social/pds/main/installer.sh >ins
sudo bash installer.sh
```

## PDS がオンラインでアクセス可能であることを確認する

<h2 id="verifying-that-your-pds-is-online-and-accessible">PDS がオンラインでアクセス可能であることを確認する</h2>

> [!TIP]
> ライブ ネットワークで PDS コンテンツを使用する際に最もよく発生する問題は、提供された Caddy 構成を nginx、apache、または同様のリバース プロキシに置き換える場合です。 TLS 証明書、WebSocket、仮想サーバー名をすべて正しく取得するのは難しい場合があります。現在、その他の構成についてはテクニカル サポートを提供していません。
Expand All @@ -125,15 +130,15 @@ wsdump "wss://example.com/xrpc/com.atproto.sync.subscribeRepos?cursor=0"

イベントは PDS で作成されるまで WebSocket に出力されないことに注意してください。そのため、設定が正常であれば、上記のコマンドは出力なしで実行され続ける可能性があります。

## pdsadmin を使用してアカウントを作成する
<h2 id="creating-an-account-using-pdsadmin">pdsadmin を使用してアカウントを作成する</h2>

サーバーで ssh を使用して、`pdsadmin` を使用してアカウントを作成します (まだアカウントを作成していない場合)。

```bash
sudo pdsadmin account create
```

## 招待コードを使用してアカウントを作成する
<h2 id="creating-an-account-using-an-invite-code">招待コードを使用してアカウントを作成する</h2>

サーバーで ssh を使用して、`pdsadmin` を使用して招待コードを作成します。

Expand All @@ -143,7 +148,40 @@ sudo pdsadmin create-invite-code

アプリを使用してアカウントを作成するときは、この招待コードを入力します。

## PDS で Bluesky アプリを使用する
<h2 id="setting-up-an-smtp-server">SMTP サーバーの設定</h2>

PDS のセットアップ後、Bluesky アプリからの「メールアドレスを確認」などのメールを受信するために SMTP サーバーを設定します。

PDS サーバーで `/pds/pds.env` ファイルを開きます

```bash
sudo nano /pds/pds.env
```

以下の行を特定の設定で追加します:

```bash
PDS_EMAIL_FROM_ADDRESS="[email protected]"
PDS_EMAIL_SMTP_URL="smtps://[email protected]:<app-password>.gmail.com:465"
```

Gmail アカウントをお持ちの方には、簡単に SMTP サーバーを設定できる方法として、Googleの [Gmail SMTP サーバー](https://support.google.com/a/answer/176600?hl=ja)の使用をお勧めします。[アプリパスワード](https://support.google.com/accounts/answer/185833?sjid=10418456355978061137-NC)の生成が必要です。

`/pds/pds.env` で環境変数を変更した後、PDS サーバーを再起動してください。

_注: メール確認の SMTP 設定をバイパスするには、PDS の SQLite テーブル(email_token テーブル)を照会できます。_

```bash
sudo sqlite3 /pds/account.sqlite "SELECT * FROM email_token;"
```

_トークンは3列目にあります_

```bash
update_email|did:plc:someid|EMAIIL-TOKEN|2024-11-06T18:35:18.589Z
```

<h2 id="using-the-bluesky-app-with-your-pds">PDS で Bluesky アプリを使用する</h2>

Bluesky アプリを使用して PDS に接続できます。

Expand All @@ -155,15 +193,76 @@ Bluesky アプリを使用して PDS に接続できます。

_注: サブドメイン TLS 証明書はオンデマンドで作成されるため、ハンドルにアクセスできるようになるまでに 10 ~ 30 秒かかる場合があります。最初の投稿/プロフィールが表示されない場合は、30 秒待ってから別の投稿を行ってください。_

## PDS の更新
_注: Squarespace でホストされているサブドメインを使用しているユーザーは、ワイルドカードサブドメインをサポートするドメインレジストラに切り替えた後に解決された問題があると報告しています。_

<h2 id="adding-a-top-level-domain-name-as-your-handle">ハンドルとしてトップレベルドメイン名を追加する</h2>

* 一時的な Bluesky ハンドルでアカウントを作成する
* Bluesky アプリで設定 > ハンドルの変更に移動
* 「自分のドメインを持っている」を選択
* ドメイン名を入力
* 提供された TXT レコードを DNS レコードに追加
* 「DNS レコードを確認」をクリック

_ヒント: TLD を再利用したい場合は、Bluesky アカウントを削除する前に一時的なハンドルに変更してください。_

<h2 id="using-update-account-handle-to-update-your-handle">updateAccountHandle を使用してハンドルを更新する</h2>

以下の curl コマンドを特定の変数で実行します。詳細については [updateAccountHandle](https://docs.bsky.app/docs/api/com-atproto-admin-update-account-handle) のドキュメントを参照してください。

```bash
curl --fail --silent --show-error \
--request POST \
--header "Content-Type: application/json" \
--user "admin:${PDS_ADMIN_PASSWORD}" \
--data "{\"did\": \"${DID}\", \"handle\": \"${HANDLE}\"}" \
"https://${PDS_HOSTNAME}/xrpc/com.atproto.admin.updateAccountHandle"
```

必要な変数は `/pds/pds.env` で確認できます

```bash
sudo cat /pds/pds.env
```

<h2 id="debugging-invalid-handle-warning">invalid.handle 警告のデバッグ</h2>

[Goat](https://github.com/bluesky-social/indigo/blob/d1686e9b80835948407fd7ad2428e92379298dac/cmd/goat/README.md) は、ハンドルの問題を解決するのに役立つツールです。

```txt
$ goat resolve wyden.senate.gov
{
"id": "did:plc:ydtsvzzsl6nlfkmnuooeqcmc",
"alsoKnownAs": [
"at://wyden.senate.gov"
],
"verificationMethod": [
{
"id": "did:plc:ydtsvzzsl6nlfkmnuooeqcmc#atproto",
"type": "Multikey",
"controller": "did:plc:ydtsvzzsl6nlfkmnuooeqcmc",
"publicKeyMultibase": "zQ3shuMW7q4KBdsFcdvebGi2EVv8KcqS24tF9Pg7Wh5NLB2NM"
}
],
"service": [
{
"id": "#atproto_pds",
"type": "AtprotoPersonalDataServer",
"serviceEndpoint": "https://shimeji.us-east.host.bsky.network"
}
]
}
```

<h2 id="updating-your-pds">PDS の更新</h2>

PDS を新しいバージョンに更新しておくことをお勧めします。そうしないと、問題が発生する可能性があります。`pdsadmin` ツールを使用して PDS を更新できます。

```bash
sudo pdsadmin update
```

## ヘルプの取得
<h2 id="getting-help">ヘルプの取得</h2>

- [GitHub](https://github.com/bluesky-social/pds) にアクセスして、問題やディスカッションを確認してください。
- [AT Protocol PDS Admins Discord](https://discord.gg/e7hpHxRfBP) に参加して、インスタンスをホストしている他のユーザーとチャットし、PDS ディストリビューションに関する重要な更新情報を入手してください。
Loading