LoginSignup
5
4

【RaspberryPi】S3に無限に保存できるファイルサーバーを作った

Last updated at Posted at 2024-02-10

バックエンドがS3で、容量を気にせず無限に保存できるファイルサーバーが欲しかったので、ラズパイで作ってみました。
とはいえ、ラズパイを起動してからいちいち設定をするのは面倒なので、Packerを使ってラズパイOSイメージを自動生成できるようにしました。

構成はこんな感じ
※ Cassys(Cloud Attach Storage System) というのがこのツールの名前です。

architecture.drawio.png

ソースコードはこちら。

あとは使い方の解説を書いておきます。気が向いたら使ってみてください。

■ 使い方

1.前準備

# dockerのインストール

dockerをインストールしてください。

ログインユーザーからdockerコマンドを操作できるようにします。

# ログインユーザーをdockerグループに追加します。
LOGIN_USER=$(whoami)
sudo usermod -aG docker $LOGIN_USER

# このコマンドの実行に成功したら一度ログアウトします。
exit

# 再度ログインしてdockerコマンドを実行してみましょう
docker ps

# S3バケットとIAMユーザーの作成

  1. バックエンドとなるs3バケットを作成します。
  2. AmazonS3FullAccess ポリシーを持つIAMユーザーを作成します。
  3. 作成したIAMユーザーでアクセスキーを発行します。

# リポジトリのクローン

git clone https://github.com/ng3rdstmadgke/cassys.git

cd cassys

2. 設定ファイルの準備

ラズベリーパイイメージの生成に必要な設定ファイルを用意します。

# 設定ファイルをコピー
cp setting/sample.yml setting/my-setting.yml

# 設定ファイルの編集
vim setting/my-setting.yml

setting/my-setting.yml

---
mnt_bucket: "MY_BUCKET_NAME"  # マウントするS3バケット名
aws_credential:  # IAMユーザーのアクセスキー
  aws_accesskey_id: "xxxxxxxxxxxxxxxxxxxx"
  aws_secret_accesskey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
smb:  # sambaサーバの設定
  user: "cassys"  # sambaサーバに接続するユーザ名(任意)
  password: "xxxxxxxx"  # sambaサーバに接続するスワード(任意)
dhcpcd:
  ip: "192.168.50.110/24"  # ラズベリーパイのIPアドレス(任意)
  router_ip: "192.168.50.1"  # ラズベリーパイが参加するネットワークのルーターのIPアドレス

3. イメージ生成

ラズベリーパイイメージを生成します。
OSは64bit, 32bitから選択できます。

# 64bitOSのイメージ

# イメージ生成
# 30分程かかります
./bin/build.sh arm64 setting/my-setting.yml

# 出来上がったイメージ
ls .build/output-arm-image/arm64_cassys.img.xz

# 32bitOSのイメージ

# イメージ生成
# 30分程かかります
./bin/build.sh armhf setting/my-setting.yml

# 完成したイメージ
ls .build/output-arm-image/armhf_cassys.img.xz

4. SDカードにイメージを書き込む

イメージは Raspberry Pi Imager を利用して書き込みます。

# デバイスの選択

利用するラズベリーパイを指定します。

# OSの選択

OSを選択します。

「Use custom」をクリックして、先程生成したイメージを選択します。

# ストレージの選択

イメージを書き込むSDカードを選択します。

すべての項目を選択し終わったら「次へ」をクリック

# OSのカスタム設定

ラズパイOSの初期設定を行います。

  • ホスト名
    任意のホスト名を指定します。
  • ユーザー名とパスワードの設定
    ラズベリーパイにログインするための任意のユーザー名とパスワードを指定します。
  • Wi-Fiの設定
    ラズベリーパイが接続するWi-Fiを指定します。
  • ロケールの設定
    タイムゾーン: 日本にいるなら Asia/Tokyo を設定します。
    キーボードレイアウト: jis配列を利用しているなら jp を指定します。

設定を保存したら 「はい」を選択します。

すべての設定が完了したら書き込みを行います。

イメージの書き込みが終わったら、SDカードをラズパイに挿入し、電源を接続しましょう。
※ ラズパイの初回起動には5 ~ 10分ほどかかります。

5. 接続

Finder (windowsの場合はexplorer) を開いて、「ホスト名に設定した名前」をクリックし、「別名で接続」をクリックします。

setting/my-setting.ymlsmb.user smb.password に設定した情報を入力し、「接続」をクリックします。

share をクリックすると、S3バケット名が表示されます。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4