LoginSignup
0
0

Raspberry Piのセットアップ

Last updated at Posted at 2024-02-28

自分がRaspberry Pi 3B+のセットアップした時の手順をメモしておく。

Raspberry Pi Imager のインストール

Ubuntuで rpi-imager をいれる。

Raspberry Pi Imager の実行

64-bit Ubuntu Server 22.04 を入れた。

USBメモリに焼き込む前に、Edit Settings から

  • ログインユーザー
  • ssh鍵
  • Wi-Fiの設定 (使わなかった)
  • タイムゾーンとキーボード配列

が設定できるので指定しておくと吉。

起動

LANケーブルとHDMIと電源を接続する。systemd-resolvedが2分くらいかかった上でFAILEDになってしまうが、その後待っているとインターネットにつながる。

ローカルIPの固定

ルータのBasic > Attached Devicesからラズパイを見つける。Device Nameはubuntuになっている。MACアドレスを控える。

Advanced > Setup > LAN SetupからそのMACアドレスにIPを割り当て、Applyを押す。LANケーブルを抜き差しするとIPが変わるので、それを使ってSSHするようにする。

ログのtmpfs化

sudo vi /etc/fstab で以下の設定を足し、再起動する。

LABEL=writable  /       ext4    discard,errors=remount-ro       0 1
LABEL=system-boot       /boot/firmware  vfat    defaults        0 1
tmpfs /tmp       tmpfs  defaults,size=128m,noatime,mode=1777 
tmpfs /run/log   tmpfs  defaults,size=32m,noatime,mode=0755 
tmpfs /var/tmp   tmpfs  defaults,size=16m,noatime,mode=1777 
tmpfs /var/log   tmpfs  defaults,size=32m,noatime,mode=0755 
tmpfs /var/cache tmpfs  defaults,size=256m,noatime,mode=0755 
tmpfs /var/spool tmpfs  defaults,size=32m,noatime,mode=0755 
tmpfs /home/k0kubun/.cache tmpfs defaults,size=32m,noatime,mode=0755 

可能な限り /tmp にファイルを書き込むようにする。/var/cache はwireguard-installでも128MB以上使うので結構必要。

~/.bashrc に以下の設定も追加しておく。

export HISTFILE=/tmp/.bash_history
export LESSHISTFILE=-

また、~/.vimrc を作って以下の設定を足す。

set viminfofile=NONE
let g:netrw_dirhistmax = 0

/root にも同じことをしておく。

systemd-networkd-wait-onlineを直す

デフォルトでは、 /run/systemd/network/10-netplan-eth0.network のせいで起動時に systemd-networkd-wait-online が失敗してしまう。一方、netplanの設定の削除およびcloud-initによるnetplanの実行自体を無効化を行なうと、今度はネットに繋らなくなる。

そのため、/etc/netplan/50-cloud-init.yaml (netplanの唯一の設定ファイル) で以下の部分を修正して、再起動しておくと良い。 (sudo netplan generate で設定をその場で変更)

network:
  ethernets:
    eth0:
      dhcp4: true
      # optional: true # ここをコメントアウト
  version: 2

Bluetoothの無効化

使わないので消しておく。

sudo apt-get purge bluez -y
sudo apt-get autoremove -y

ホストネームの変更

以下のようにすると再起動してもそのまま残る。

sudo hostnamectl set-hostname raspi

ユーザーの追加

自分が使うユーザー以外にもユーザーを予備で用意しておきたかったので作っておく。

sudo useradd raspi
sudo passwd raspi
sudo mkdir /home/raspi
sudo chmod 750 /home/raspi
sudo chown raspi:raspi /home/raspi
sudo usermod -aG sudo raspi
sudo chsh -s /bin/bash raspi

DDNSのセットアップ

sudo apt install ruby
sudo gem install aws-sdk-route53

手元の /opt/local/ddns-update~/.config/systemd/user/ddns-update.* をコピーしてくる。current に今の設定を書き、config.ymlのdomainを変更する。その後、

systemctl --user enable ddns-update.timer
sudo loginctl enable-linger k0kubun

をやっておく。なお、ログを見るために

WireGuardのセットアップ

# クライアントの追加に wireguard-install.sh が必要なので、HOMEに置いちゃう
cd ~
git clone --depth=1 https://github.com/angristan/wireguard-install
cd wireguard-install
chmod +x ./wireguard-install.sh
sudo ./wireguard-install.sh

"IPv4 or IPv6 public address" だけ一応実際のpublic IPに変えて始める (TODO: 後で変える必要ある?)。あとはデフォルト (Server WireGuard IPv4もデフォルトの適当な奴でいい)。ポートはランダム生成されるのでメモる。

最後にクライアントを1つ追加するが、クライアントの設定もClient WireGuard IPv4はデフォルトの適当な奴でいい。クライアントを追加するときは sudo ./wireguard-install.sh をやり直す。なお、一度使ったクライアント設定を他のデバイスから使い回すと接続の問題が生じる可能性がある。

デバッグには systemctl status wg-quick@wg0 など使う。/etc/wireguard に設定がある。HOMEにwg0-client-xxx.confができてそれが設定ファイル。FireTVにはWireless File Managerをインストールし、それ経由でこの設定ファイルを送る。ファイル名が長いとinvalid nameになるので、raspi.conf など適当に短くする。

~/update-endpoint というスクリプトでEndpointを修正しているのでそれを叩いた後、qrencode -t ansiutf8 < wg0-client-xxx.conf でQRにする。

HTTPプロキシのセットアップ

を適当に走らせ、クライアント側ではdnsmasqなどを使ってドメインごとにIPを差し替え、ポートは(必要なら)iptablesを使ってリダイレクトする。iptablesにはIPが変わるドメインを指定することもできるが、IPが変わったらiptablesを実行しなおす必要がある。

0
0
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
0
0