Raspberry Pi 3, Raspberry Pi Zero W を電源ケーブルだけでセットアップ 20180113 版

# 概要
Raspberry Pi 3, Raspberry Pi Zero W の初期設定 20180113 版. 後半はほぼ自分用メモ :)

1. つなぐのは電源だけ(イーサケーブルやキーボード等はつながない)
1. ssh と WiFi をあらかじめ有効にして初回起動
1. 最低限のセキュリティ設定(パスワード変更と ssh 関連)
1. Raspberry Pi 3 と Raspberry Pi Zero W でテスト済み

以下, セットアップ手順.

# PC での作業
## イメージをダウンロード
ブラウザで [Download Raspbian for Raspberry Pi](https://www.raspberrypi.org/downloads/raspbian/) にアクセスして `2017-11-29-raspbian-stretch-lite.zip` をダウンロード.

## microSD にイメージを書き込み
[Etcher](https://etcher.io/) で 書き込み. 書き込み終了後 microSD を抜き差しして再度マウント.

以下, `/Volumes/boot` は PC にマウントした microSD.

## ssh を初回起動から有効にする
ssh という空のファイルがあると初回起動時から ssh が有効になる.

```
touch /Volumes/boot/ssh
```

## WiFi を初回起動から有効にする
`/Volumes/boot/wpa_supplicant.conf` というファイルを作って `SSID` と `PASSWORD` を書いておく

`PASSWORD` については, 初回起動後に `wpa_passphrase` で平文からハッシュ値に修正予定. 他のマシンで `wpa_passphrase` してハッシュ値を書いておいても OK.

```/Volumes/boot/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
	ssid="SSID"
	psk="PASSWORD"
}
```

microSD を PC からアンマウント.

# 最低限のセキュリティ設定
ここから Raspberry Pi での作業.

## ssh で接続
microSD を Pi に挿して電源をつなぐ. 1 分くらい待って,

```
ssh pi@raspberrypi.local
```

デフォルトパスワードは `raspberry`. つながらない場合は PC での作業を再度確認.

## デフォルトパスワードの変更

```
passwd
```

## ~/.ssh を作る
ssh の公開鍵認証を有効にするため Pi 側に ~/.ssh フォルダを作っておく

```
ssh-keygen
```

## PC にある公開鍵を Pi にコピー
PC のターミナルを開いて scp で PC の公開鍵 `id_rsa.pub` を Pi の `authorized_keys` にコピー.

```
scp ~/.ssh/id_rsa.pub pi@raspberrypi.local:~/.ssh/authorized_keys
```

念のため `~/.ssh/*` のパーミッションや所有者が適切かどうか確認しておく.

## 公開鍵認証でログインできるか確認
一旦 Pi からログアウトして

```
ssh pi@raspberrypi.local
```

でパスワード入力なしでログインできれば OK.

## sshd の設定

```
sudo nano /etc/ssh/sshd_config
```

ポート変更とパスワード認証不可に設定. 該当する行のコメントアウトを外して修正.

```
Port 10022
```

```
PasswordAuthentication no
```

修正後 Pi を再起動

```
sudo reboot
```

Pi が起動するのを待って再度 PC からログイン. ただしポートは `10022`.

```
ssh -p 10022 pi@raspberrypi.local
```

## 無線 LAN ルータのパスワードが平文で書かれているのを修正

```
wpa_passphrase SSID
```

して `psk=英数字列` の行をコピーしておく.

```
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
```

して `psk="平文パスワード"` の行を消して, 先程コピーしておいた `psk=英数字列`に変更. Pi 再起動.

ひとまずアカウントとパスワード関連はここまで. 出来ればデフォルトユーザの `pi` も変えたほうがよい.

## `raspi-config` の設定

```
sudo raspi-config
```

`2 Network Options` - `N1 Hostname` で `pi3` や `pizero` などに変更.
`4 Localisation Options` - `I1 Change Locale` で `ja_JP.UTF-8` を選択. 次のページは `C.UTF-8` を選択(`ja_JP.UTF-8` でも OK).
`4 Localisation Options` - `I2 Change Timezone` で `Asia`, `Tokyo` を選択.
`7 Advanced Options` - `A1 Expand Filesystem` で microSD 全体を使えるようにする.
Pi 再起動.

`df -h` で使える microSD の容量が増えていることを確認.

ホスト名を変更したので, 再起動以後は以下のように接続(`pi3` の場合)

```
ssh -p 10022 pi@pi3.local
```

## システムのアップデート
とりあえずやっておく.

```
sudo apt-get update
sudo apt-get upgrade
```

# 通常の設定

## スワップを無効化

```
free
sudo swapoff --all
sudo apt-get remove dphys-swapfile
sudo reboot
```

再度ログインして `free` でスワップが無効化されていることを確認.

## /tmp を RAM ディスクにする

```
df -h
sudo nano /etc/fstab
```

`/etc/fstab` の末尾に以下を追加. とりあえず 256 MB くらいにして様子見.

```
tmpfs           /tmp            tmpfs   defaults,size=256m 0       0
```

Pi 再起動. 再度ログインして `df -h` で `/tmp` が `tmpfs` になっていることを確認.

## USB メモリを自動マウント (usbmount)

```
sudo apt-get install usbmount
sudo nano /etc/usbmount/usbmount.conf
```

`FS_MOUNTOPTIONS` を以下のように指定すると日本語ファイル名が表示可能.

```
FS_MOUNTOPTIONS="-fstype=vfat,iocharset=utf8,codepage=932,uid=pi,gid=pi,dmask=000,fmask=011"
```

`systemd-udevd.service` を修正.

```
sudo nano /lib/systemd/system/systemd-udevd.service
```

[このページ](https://www.raspberrypi.org/forums/viewtopic.php?t=192291#p1218216)によると, 以下のようにしないとマウントされないらしい.


```
MountFlags=shared
```

Pi 再起動. VFAT フォーマットの USB メモリを挿して `/media/usb0` にマウントされることを確認. 日本語のファイル名も見えてるはず.

# サーバ関連のインストール

## Samba のインストール

```
sudo apt-get install samba
sudo nano /etc/samba/smb.conf
```

末尾に以下を追加.

```
[pi3usb0]
path = /media/usb0
read only = No
guest ok = Yes
force user = pi
```

Pi 再起動. PC からゲストで接続できれば OK.

## apache2 のインストール
[このページ](http://g2-girichan.hatenablog.com/entry/2017/02/12/104321)を参考に.

```
sudo apt-get install apache2
sudo cp -p /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/default.conf
sudo nano /etc/apache2/sites-available/default.conf
```

以下を追加.

```
	#DocumentRoot /var/www/html
	DocumentRoot /media/usb0

	<Directory /media/usb0/>
	  Options Indexes FollowSymLinks
	  AllowOverride None
	  Require all granted
	</Directory>
```

`000-default` を無効にして `default` を有効にする.

```
sudo a2dissite # 000-default を入力
sudo a2ensite # default を入力
```

`/etc/apache2/sites-enabled` に `default.conf` だけがあることを確認.

```
ls -l /etc/apache2/sites-enabled
total 0
lrwxrwxrwx 1 root root 31 Jan 13 21:13 default.conf -> ../sites-available/default.conf
```

Pi 再起動. ブラウザから http://pi3.local/ で確認.

# クライアント関連のインストール

## GNU Screen のインストール
```
sudo apt-get install screen
nano ~/.screenrc
```

以下の内容でファイル作成.

```
# Encoding
defencodig utf-8

# Prefix Key
escape ^Jj

# set scrollback
defscrollback 1000000

# Delete start up screen
startup_message off

# Enable Auto detach
autodetach on

# alternate screen
altscreen on

# Enable mouse scroll
termcapinfo xterm* ti@:te@
```

`screen` を実行して `Ctrl-j d` でデタッチして `screen -r` でアタッチ出来ることを確認.

## GNU Emacs のインストール
Yes, I’m old school.

```
sudo apt-get install emacs
emacs ~/.emacs.d/init.el
```

以下を書き込む.

```
(set-language-environment "Japanese")

(setq inhibit-startup-message t)
(setq initial-scratch-message "")

(menu-bar-mode -1)
(tool-bar-mode 0)
```


以上