自宅サーバーで分散型SNS「Bluesky」のPDSを建てる方法

今回は自宅サーバーで分散型SNS「Bluesky」のSandboxのPersonal Data Server（PDS）を建てる方法を書いていきたいと思います。
Sandboxは開発者向けのテスト的なサーバーでデータが消える可能性があるそうです。
ご注意下さい。
今回書いたこの方法はどちらかというとBlueskyのPDSをインストールするというよりも、ポート開放やドメインの設定などの自宅サーバーを建てる全体の流れを分かって欲しくて記事を作りました。
PDS自体は公式のシェルスクリプトで自動でインストールするので、それらを手動で行いたい人にはこの記事は向いておりません。何卒ご了承下さい。

## 環境

### ルータ
光BBユニット

### 自作PC（※）
自作のWindows11のPC（マザーボードはA10N-9830E）
※サーバー本体とは別にPCを用意します。

### サーバー本体
Jumper EZbox i3

### サーバーのOS
Ubuntu 22.04

## Ubuntuをインストールする

### 準備するもの

・初期化しても可能なUSBメモリ

今回フォーマットするので、初期化しても可能なUSBメモリーを用意して下さい。

### UbuntuのISOファイルをダウンロードする

Ubuntu Japanese TeamのページからISOファイルをダウンロードします。

Homepage | Ubuntu Japanese Team
https://www.ubuntulinux.jp/home

### USBメモリをPCに挿入する

USBメモリをWindows PCに挿します。

### Rufusをダウンロードする

インストールUSBを作成可能なRufusというソフトをダウンロードします。

Rufus - 起動可能なUSBドライブを簡単に作成できます
https://rufus.ie/ja/

### Rufusを起動する

Rufusをダブルクリックで起動します。

### Rufusで挿入したUSBメモリになっていることを確認

Rufusでデバイスがちゃんと今回挿入したUSBになっていることを確認します。

### RufusでISOファイルを選択する

先程ダウンロードしたISOファイルを選択から選びます。

### スタートをクリック

スタートをクリックします。

### Rufusを終了

緑のプログレスバーが右まで行ってちゃんとインストールメディアが作成されたことを確認してRufusを終了します。

## BIOSの設定

### サーバー本体にUSBメモリを挿入
サーバー本体に先程作成したUSBメモリを挿入します。

### サーバーを起動時にDeleteキーを押す

サーバー本体の電源を入れる時にDeleteキーを押しながら起動します。
※メーカーによってBIOS起動するキーは異なります。

### BootのUSBの起動順位を1番目に変更

Bootメニューで先程挿入したUSBメモリの起動順位が1番目になるように変更します。

### F4で保存して終了する

Save&Exitと書いてあるF4キー（一般的なPCではF10キー）を押して保存して終了します。

## IPアドレスを固定

### サーバーにログイン

サーバー本体にログインします。

### 設定を開く

設定を開きます。

### ネットワークのメニューを開く

ネットワークのメニューを選択します

### 設定ボタンをクリック

それぞれ接続しているネットワークの有線または無線の右にある設定ボタンをクリックします。

### IPアドレスをコピーする

IPv4アドレスをコピーします。

### デフォルトルートを覚えておく

デフォルトルートのアドレスを覚えておきます。
これはのちのゲートウェイを入力するときに使います。

### 自動接続するのチェックを外す

自動接続するのチェックを外します。

### IPv4タブをクリック

IPv4タブをクリックします。

### 手動にする

自動（DHCP）から手動に設定します。

### コピーしたIPアドレスを貼り付ける

先程コピーしたIPアドレスを貼り付けます。
例として僕の環境では`192.168.3.16`です。

### ネットマスクを入力する

ネットマスクを入力します。
これは`255.255.255.0`で基本的に大丈夫です。

### ゲートウェイを入力する

ゲートウェイを入力します。
これはデフォルトルートと覚えておいたアドレスを入れて下さい。
例として僕の環境の場合は`192.168.3.1`と入力します。

### 適用をクリック

右上の適用をクリックします。

## ポート開放する

### ルーターのページにアクセスする

Softbank光のルーターのページであるhttp://172.16.255.254/ にアクセスする。

### ルーターのユーザー名とパスワードを入力する

Softbank光の場合はユーザー名は`user`、パスワードも`user`です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652436/9046879b-1666-16b8-ad59-32b9637f3e4f.png)

### 詳細設定モードをクリック

セットアップメニューのページが開いていることを確認して、詳細設定モードをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652436/9c19ae76-0a72-6188-19ff-17b176eedc83.png)

### ポート転送を開く

左のメニューからポート転送を開きます。

### IPアドレスやポート番号を設定

ローカルIPアドレスやポート番号を設定します。
No.1とNo2を無効から有効にし、プロトコルをTCPにします。

#### No.1を設定する
No.1は
WAN側ポート番号は`80 - 80`
LAN側ポート番号も`80 - 80`
転送先IPアドレスはサーバー本体のローカルIPアドレスを設定します。
例として僕の環境の場合は`192.168.3.16`です。

#### No.2を設定する
No.2は
WAN側ポート番号は`443 - 443`
LAN側ポート番号も`443 - 443`
転送先IPアドレスはサーバー本体のローカルIPアドレスを設定します。
例として僕の環境の場合は`192.168.3.16`です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652436/07303bd7-0db9-5f02-7e7b-e4092800202b.png)

## ドメインの設定をする
ドメインの設定をします。
今回はCloudflareで設定をします。

### Cloudflareを開く

Cloudflareのダッシュボードを開きます。

### ドメインを選択する

購入したドメインを選択します。

### DNSをクリック

左側のメニューからDNSをクリックして開きます。

### レコードその1の設定をする

#### レコードの追加をクリック

レコードの追加をクリックします。

#### Aレコードになっていることを確認

Aレコードになっていることを確認します。

#### 名前には@と入力する

ドメイン名と同じルートに設定するため、名前には@と入力します。

#### コンテンツを設定

コンテンツにはグローバルIPアドレスを設定します。

グローバルIPアドレスは以下のページで確認出来ます。

アクセス情報【使用中のIPアドレス確認】
https://www.cman.jp/network/support/go_access.cgi

#### 保存する

以上のことを確認して保存します。保存します。

### レコードその2の設定をする

#### レコードの追加をクリック

レコードの追加をクリックします。

#### Aレコードになっていることを確認

Aレコードになっていることを確認します。

#### 名前には*と入力する

Blueskyでユーザーがアカウントを作れるようにするため、名前には*と入力します。

#### コンテンツを設定

コンテンツにはグローバルIPアドレスを設定します。

グローバルIPアドレスは以下のページで確認出来ます。

アクセス情報【使用中のIPアドレス確認】
https://www.cman.jp/network/support/go_access.cgi

#### 保存する

以上のことを確認して保存します。

## PDSをインストールする

### 端末を開く

サーバー本体でCtrl+Alt+Tで端末を開きます。

### シェルスクリプトをダウンロード

シェルスクリプトをダウンロードします。

```
wget https://raw.githubusercontent.com/bluesky-social/pds/main/installer.sh
```

### シェルスクリプトを起動

シェルスクリプトを起動します。

```
sudo bash installer.sh
```

後は画面の指示に従ってドメイン名を入力したりして下さい。
ドメイン名を入力する際は`https://`はいりません。
`example.com`形式で入力して下さい。

### 終了後、ステータスを確認する

PDSのインストール終了後、statusコマンドでpdsのステータスを確認します。

```
sudo systemctl status pds
```

### 招待制から自由登録出来るようにする

初期状態では招待制となっています。
招待制から自由登録可能にするには、pds.envの編集します。

```
sudo apt install vim
sudo vim /pds/pds.env
```

iキーを押して挿入モードにします。
矢印キーで移動し、一番下の行に以下を追記します。

```pds.env
PDS_INVITE_REQUIRED=false
```

Escキーを押して以下のコマンドで保存して終了します。

```
:wq
```

そしてpdsを再起動します。

```
sudo systemctl restart pds
```

## アカウント登録をする

Blueskyの公式Webクライアントでアカウントを登録しましょう。

### 公式Webクライアントにアクセスする

以下のURLから公式Webクライアントにアクセスします。

Bluesky
https://bsky.app/

### ホスティングプロバイダーでOtherを選択

ホスティングプロバイダーでOtherを選択します。

### 自分のドメインを入力

自分のドメインを入力して次をクリックします。

![スクリーンショット 2024-01-06 184433.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/652436/4ccabce7-68e1-0093-e66e-944d183f8fa5.png)

### アカウント情報を入力する

メールアドレス、パスワード、生年月日をそれぞれ入力して次へ進みます。

### ハンドルを入力する

ユーザーハンドルを入力します。
任意の文字列を入れて下さい。
ユーザー名は他の人と被ってはいけません。
次に進みます。

### アカウントの作成完了

アカウントが作成されたことを確認して終わります。
試しに投稿してみましょう。

## ■参照サイト

第708回　GUIでネットワーク設定を行う | gihyo.jp
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0708

bluesky-social/pds: Bluesky PDS (Personal Data Server) container image, compose file, and documentation
https://github.com/bluesky-social/pds