🤗

ラズパイを使ってチープなサイトを公開する

に公開

ラズパイをサーバーとして使いチープなサイトを公開する
安くて低性能なPCで遊ぶ

開発環境

ハードウェの環境

  • MacBook Air M1
  • ラズベリーパイ 3 model B V1.2
    • メルカリで4,000円で買った
  • 有線のマウス
    • ハードオフで500円で買った
  • バッファローの有線キーボード
    • ビックカメラで1,000円で買った
  • LAZOSのマイクロSDカード16GB
    • ハードオフで600円で買った
  • LAZOSのマイクロSDカードリーダー
    • (確か)ハードオフで1,000円で買った

ソフトウェアの環境

  • OSはRaspberry Pi OS Lite (64-bit)
    • フルバージョンで32GBとかを公式が推奨しているが、Liteは8GB以上を推奨してる

まずはラズパイにRaspberry Pi OSを書き込む

  1. 公式サイトでRaspberry Pi Imagerをインストールする
  2. Raspberry Pi Imagerのアプリケーションを起動
  3. 各データを入力
    • Imagerで選択
    • Deviceはラズベリーパイ 3を選択
    • OSはRaspberry Pi OS Lite (64-bit)を選択
    • Storageは接続しているAZOSのマイクロSDカードを選択
    • hostnameは任意で入力。usernameとpasswordも然り
    • Wi-Fiは自宅のSSIDとパスワード入力
    • SSHはEnable SSHをON
    • OSが書き込まれてFINISHになるまで待機
    • FINISHしたら、マイクロSDカードをmacから取り出す

SSH接続

  1. マイクロSDカードをラズパイに差し込む
  2. ラズパイに電源を入れる(keyringパスワードを設定した)


  1. 日本語入力ができるようにする
    • Language:ja(japanese)
    • Caountry:JP(Japan)
    • Character Set:UTF-8
    • だけ設定した。完了して再起動が自動で走った
    • けど、日本が入力できない
    • ので、sudo apt updateしてsudo apt upgradeで更新した
    • 空き容量に不安があるのでdf -hで容量を確認
      • /dev/piyo 14G 6.4G使用 6.9G空き 48%
        • 16GのマイクロSDカードを買ってるのに14GBしかない...🤔
        • 一気に残り容量が半分になったけど、これでいけるところまで行く
    • sudo rebootで再起動
      • まだ日本語入力できない、半角/全角が機能しない
    • 調べながら色々やってメモるの忘れた
    • とりあえずdone
  2. sudo systemctl statys sshでラズパイOSにSSH可能か設定を確認する
    • Active: active (running)の表記があればSSH可能な状態
  3. hostname -Iでホスト名を確認
  4. ssh piyopiyo@000.000.0.00を入力してパスワードを入力
    • これは作業用のmacで作業

SSH成功、おけまる

$ df -h *
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/piyo    14G  6.2G  7.1G   47% /

残りの容量も気にしながら進める

基本操作メモ

  • ラズパイ起動。電源を入れる
  • MacからSSH
    • ssh piyopiyo@000.000.0.00
  • 作業する
  • SSHしてるターミナルでexitを実行
  • ラズパイのターミナルでsudo shutdown newでシャットダウン
    • 再起動はrebootsudo rebootにする
  • ラズパイのLEDが消えたら差し抜く

基本的なアーキテクチャ

  • ラズベリーパイを物理Webサーバーとして利用する
    • OSはRaspberry Pi OS(Debianベース)
  • ドメインはお名前.comで購入済み
  • フロントエンドはreact
  • バックエンドはRails
  • データベースはMySQL
  • HTTPS化は必須
    • 無料のSSl証明書(Let's Encrypt)を登録
  • ネットワーク構成
    • CP/IP(ローカルIP)の固定、およびDDNS(ダイナミックDNS)の導入
  • セキュリティ
    • ファイアウォールは、UFWによるアクセス制限(80, 443, 作業用SSHのみ許可)
    • SSHは、パスワードログイン禁止(公開鍵認証必須)、ポート番号変更
  • バックアップ
    • ソースコードはGithub
    • DBは特に設定しない、これ割れてもいいので
  • ログ構成
    • googlebotのログだけは計測したい
次に作るもの

ゴール

ジャービスを自作する

バージョン1の体験

  1. 古いAndroidスマホに「ジャーヴィス!」と話かけると古いAndroidスマホが起動
  2. スマホのスピーカーから「ハイなんでしょう」とジャーヴィスの声(音声ファイル)を流す
  3. 「明日の天気は?」と問いかける
  4. 文字起こしをしてDBに保存
  5. Androidスマホにも文字起こしされたテキストを表示する

意図

  • アセンブラを使う
  • C言語を使う
  • ソフトウェア以外の領域を触ってみる

開発ディレクトリ作成

  1. githubでリポジトリを作成
  2. SSH先して、開発ディレクトリを作成
    • mkdir -p ~/development
      • 開発ディレクトを作成
    • 実作業をするmacにcloneする
  3. gitの有無を確認
    • git --version
    • 出力結果:git version 2.47.3
    • たぶん問題なし
  4. SSH先のラズパイにもcloneする
    • git clone git@github.com:piyo/piyo.git
    • Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.と出力されたのでラズパイのSSH鍵を作成
  5. ラズパイのSSH鍵を作成
    • ls -laでディレクトリの中身を確認
    • `ssh-keygen -t ed25519 -C "you@example.com"
    • 質問へは全てEnter
    • ls -la ~/.sshでsshのファイルが作れられてたらOK
  6. 公開鍵を表示
    • cat ~/.ssh/id_ed25519.pub
    • 出力された長い1行をコピー
  7. Githubに登録
    • ブラウザのgithubのsettingページに移動
    • SSH keysのNew SSH Keyをクリック
    • titleを入力して、先ほどcatで出力させた長い1行をペースト
    • Add SSH Keyのボタン(save)をクリックして登録
  8. 接続テスト
    • SSHしてるターミナルでssh -T git@github.comを実行
    • Hi yourname! You've successfully authenticated,と表示されたらOK
  9. 改めて、cloneする
    • git clone git@github.com:piyo/piyo.git
    • 成功したら、cdで移動
    • git statusをして、On branch main, No commits yetと出力されたらOK、問題なし

リポジトの初期設定をする

  1. Initial commitする
    • pwdで作成するサイトのディレクトリにいることを確認
    • nano README.md
    • 適当に記載
    • Ctrl+O
    • Enter
    • Ctrl+X
    • これで保存されて脱出できる
    • git statusUntracked fileにはREADME.mdだけあることを把握
    • git add README.md
    • git commit -m "Initial commit"
      • Please tell me who you areと聞かれたら、作業者を登録する
        • git config --global user.name "name"
        • git config --global user.email "mail"
        • git config --global --list
        • もう一度、git commit -m "Initial commit"
    • git push -u origin mainする
  2. .gitignoreを作る
    • nano .gitignore
    • お好きに記載
    • 適当に記載
    • Ctrl+O
    • Enter
    • Ctrl+X
    • これで保存されて脱出できる

Railsを導入する

  • 現状把握
    • ruby -v
    • rails -v
    • bundle -v
    • を実行して、全部コマンドがありません...まぁ予想通り...

Discussion