ラズベリーパイを使ったWiFiローカルサーバーの作り方

![000.gif](https://qiita-image-store.s3.amazonaws.com/0/67734/1af133cc-bc93-9435-f218-30dd36341efe.gif)

[パソコンを使ったアニメ制作ワークショップ](https://qiita.com/danjiro/items/b9cde6e9d6e2a9fd6306)をやるときに、 各パソコンが同じドライブにつながっていると、作品を集めてすぐ上映会ができます。

ラズベリーパイをWiFiドライブにする方法を説明します。 WiFiを使ってラズベリーパイにデータを保存できます。電源ONで保存したアニメーションを自動再生する方法も説明しました。

## 作成するもの

- 教室やイベント会場の複数のパソコンからLANケーブルやWiFiでつなぐファイルサーバーを作る。
- 保存したアニメーションを自動再生する。
- 外部インターネットには接続しない。単体で動作する。


# ０．準備するもの



## ハードウェア

|項目|	値段|	必要数|	補足|
|:--:|:--:|:--:|:--:|
|ラズベリーパイ|	5000円程度|	１台|	Type 3B, 2B, 初期型（Type 1B）でも OK|
|スイッチングハブ(WiFiを使わない場合)|	2000円以下|1～2台	|安価なハブでよい。ルーター機能は不要。８ポート１台でパソコン７台接続できる。	|
|LANケーブル(WiFiを使わない場合)|	100円～|	パソコン台数 + １本|	100円ショップで売ってる巻き取り式が便利|
|ラズベリーパイ用電源ケーブル|	100円～|	１本|	100円ショップで売ってる巻き取り式が便利|
|マイクロSDカード（16GB）|	数100円～|	１個|	ラズベリーパイ初期型(Type1B)なら SDカードでもOK。|
|WiFiアダプタ（WiFiアンテナ）|	1000円～|	０または１個|	Pi 1B、Pi 2Bで WiFi接続する場合に必要。Pi 3B は不要。パソコンで使えても、動作しないものがある。  I-O Data WN-G300UA は、Busterで動作しなかった。|

## ソフトウェア(全部無料)

|項目|	補足|
|:--:|:--:|
|OS| Raspbian (Buster/Stretch/Jessie with PIXEL) <br>Jessie with PIXEL 以降には	VNC がはいっています。 起動時にネットワーク接続を待つオプションが設定できます。|
|samba(smbd)|	ファイルサーバー（共有フォルダを作る）|
|isc-dhcp-server|	DHCP サーバー（ネットワーク用アドレスを割り当てる）|
|hostapd、iptables-persistent	|WiFiアクセスポイント|

## ラズベリーパイ初期設定時に必要なもの

ラズベリーパイの最初の設定に以下のものが必要です。VNCを設定すると不要になります。

|項目|	値段|	補足|
|:--:|:--:|:--:|
|HDMI端子のあるディスプレイ||	　	多くの デジタルTV が使えます。|
|HDMIケーブル|	数100円|	デジタルTV と DVD などの接続ケーブルが使えます。|
|HDMI to VGA変換アダプタ<br>(パソコン用RGBディスプレイを持っている場合)|	1000円～|	HDMIがないパソコン用ディスプレイやプロジェクタとの接続用。 Amazonで1000円程度。パソコンで使えても、動作しないものがあるので注意。 お勧め Rankie R-1150|
|USBキーボード|	1000円～||	　
|USBマウス|	100円～|	パソコン用のものが使えます。|
|SDカードアダプタ|	数100円～|	SDカード書き込み用|
|インターネットにつながるパソコン||	　	このサイトをパソコンで見ているならOK|


## ローカルサーバー作成までのステップ

次のような手順になります。

1. microSD/SD に、ラズベリーパイ用OS（Raspbian(Buster/Stretch/Jessie)）を書き込む。
- ラズベリーパイにディスプレイ、キーボード、マウスをつないで起動。
- ラズベリーパイがインターネットにつながることを確認。 
- ラズベリーパイのIPアドレスを知る。
- Sambaを入れる。パソコンからラズベリーパイの中が見えることを確認。 
- VNCを設定、パソコンからラズベリーパイを遠隔操作できることを確認。 
- ラズベリーパイに割り当てる固定IPアドレスを何にするか決める。
- ラズベリーパイを固定IPアドレスにして、ちゃんと動作するか確認。 
- DHCPサーバー（isc-dhcp-server）を入れる。
- ラズベリーパイを再起動して、DHCPサーバーが起動しているか確認。
- ラズベリーパイとパソコンだけをスイッチングハブに接続し、 家のネットワークにつながなくてもパソコンからラズベリーパイの中が見えることを確認。
- 複数のパソコンをスイッチングハブに接続して動作確認、有線LANサーバーが完成
- WiFi用IPアドレスを決める
- WiFiアクセスポイント（hostapd）を入れる。
- WiFi動作テスト
- サーバーにアニメーションを保存してみる。
- 電源ONで、自動再生するプレーヤーを設定してみる。


# １．ラズベリーパイの設定

いろんなサイトで説明されています。[こちらの記事もどうぞ。](http://qiita.com/danjiro/items/a29fe4b670f1e504a717)

# 1-1．Buster の問題点と修正方法

- 2019年 Raspbian Buster のリリースが始まりましたが、apt-get update が失敗し、samba が入手できないなどの問題点がありました。その場合、次の命令でなおりました。

```shell-session
$ sudo apt -y update
```

- Busterは Pi3ではこの記事の方法で動作しましたが、Pi2 + WiFi アンテナ（WN-G300UA）は、動作しませんでした。
- [古いバージョン Stretch の入手はこちら](https://camp.isaax.io/ja/tips-ja/raspberry-pi/raspbian-buster-vs-stretch)に記事があります。

# ２．IPアドレス

- ラズベリーパイが無事起動し、ブラウザからインターネットが見えたとしたら、 ラズベリーパイには IPアドレスが割り当てられています。 

- IPアドレスは、(IPV4の場合)「192.168.99.10」といった４つの数字で、 「DHCP」という仕組みで自動的に割り当てられます。 

- 空いている番号を自動的に割り当てる機能が「DHCPサーバー」で、通常、 家からインターネットに接続するための機器がもっています。 

- 今回、ローカルサーバーを作るということは、
    - 最初は、家のネットワークに接続し、 ソフトウェアの設定を行う
    - 最終的に、家のネットワークから離れて、 自分自身がDHCPサーバーになる装置を作ることです。

- 家から離れてもIPアドレスを持つために、IPアドレスを固定にします。 しかし家のネットワークにつなぐために、でたらめな番号ではいけません。 まず、
    - 上位の３つの数字は、家のネットワークと同じ数字でなければなりません （ネットマスクが255.255.255.0 の場合）。
    - ネットワーク上に同じ番号が存在してはいけません。家のネットワークでは、 通常、若い空き番号から割り当てられていくため、今回作るサーバーには、 100番ぐらいを割り当てるとうまくいくようです。（厳密には、 家のインターネット接続機器と番号の調整をする必要があるでしょう。） 

IPアドレスの上の３つの数字が異なるネットワークには接続できないことを覚えておきましょう。

# ３．ローカルサーバーの設定

## 3-1 IPアドレスを知る

### ＜IPアドレスの取得＞
- メニューバーまたはメニュー＞アクセサリーから「Terminal（LXTerminal）」を実行

```shell-session
$ ifconfig
```
- 「eth0」の中にある 192.168.xxx.xxx 形式の IPアドレスをメモする。
- 得られた数字は、DHCPで割り当てられたもので、普通、最初の数字３つが環境によって決まっています。最後の数字は、毎回異なる値になる可能性があります。

## 3-2 samba（ファイル共有）
- パソコンから RaspberryPi のファイルを読み書きする
- （使用例）パソコンからRaspberryPiにデータを転送する。

### ＜インストール＞

```shell-session
$ sudo apt-get install samba samba-common-bin
``` 

### ＜設定ファイルの修正＞

- 念のためオリジナルをコピー

```shell-session
$ sudo cp /etc/samba/smb.conf smb.conf.org`
```

- 設定ファイルをエディタ「nano」で編集

```shell-session
$ sudo nano /etc/samba/smb.conf
```
- [global]の下に max protocol を１行追加（Windows10から見えるようにするために必要）

```
[global]
max protocol = SMB2 
```


- ファイルの途中の[homes]の下にある
    read only = yes
    はそのまま（shareフォルダ以外、書き込めないようにしておく。）

- ファイルの最後に次の[share]を追加。

```
[share]
comment = pi share
writable = yes
path = /home/share
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777
share modes = yes
```

- Ctrl+O で上書き保存
- Ctrl+X で「nano」を終了
- 共有フォルダ /home/share を作成

```shell-session
$ sudo mkdir /home/share
$ sudo chmod 777 /home/share
```

### ＜samba パスワードの設定＞

```shell-session
$ sudo smbpasswd -a pi

パスワードを２回入力する 
```

### ＜samba 再起動＞

```shell-session
$ sudo service smbd restart
    
※Failed to restart smbd と表示された場合
$ sudo service samba restart 
```

### ＜Macintoshとの接続＞

- Raspberry Pi で「ifconfig」を実行。<br>    `192.168.xxx.xxx` 形式の iｐアドレスをメモする。
- Macintosh の ファインダ＞「移動」＞「サーバーへ接続...」
- サーバーアドレスに<br>`smb://192.168.xxx.xxx`<br>    と入力し、「接続」をクリック
- 「share」を選んで「OK」をクリック
-  名前「guest」、パスワードは不要 

### ＜Windows との接続＞

- Raspberry Pi で「ifconfig」を実行。<br>    `192.168.xxx.xxx` 形式の iｐアドレスをメモする。
- Windows エクスプローラのアドレス欄に「`\\192.168.xxx.xxx` 」を入力し、開く
- 「share」フォルダをダブルクリック。



## 3-3 VNC（リモートデスクトップ）

- RaspberryPiの画面をパソコンにだす
- （使用例）RaspberryPiで実行させたプログラムの結果をパソコン画面で見る

1. Raspberryボタン＞Preferences＞Raspberry Pi Configuration をクリック<br>設定画面が開きます
2. Interfaces タブをクリック＞「VNC:」－「Enable」をクリック＞「OK」ボタンをクリック<br>タイトルバーに「V2」アイコンが追加されます。
3. タイトルバー「V2」アイコンをクリック＞VNC設定画面が開きます
4. Connectivity の下に、192.168.xxx.xxx といったアドレスが表示されます。この数値をメモしてください。
5. 右上の設定ボタン「三」をクリック＞「Options...」をクリック＞「Close」をクリック<br>VNC Server オプション設定画面が開きます
6. 「Security」項目＞「Authentication」を「Unix Password」から「VNC password」に変更
7. 「Users & Permissions」項目＞「Standard User(user)」＞「PassWord」ボタンをクリック<br>パスワードを設定（２回入力してOKボタン）
8. 一番下の「OK」ボタンをクリック


＜アドレスの取得(ターミナル)＞

```shell-session
$ ifconfig 
```

- 192.168.xxx.xxx 形式の iｐアドレスをメモする

### ＜Macintosh との接続＞

- Macintosh の ファインダ＞「移動」＞「サーバーへ接続...」
- サーバーアドレスに<br>    vnc://192.168.xxx.xxx<br>と入力し、「接続」をクリック<br>パスワードを入力     <br>RaspberryPi の デスクトップが画面に表示される。
- うまくいかない場合、<br>`vnc://192.168.xxx.xxx:5901 `<br>を試してみてください（tightvncserverを使っている場合）

### ＜Windows との接続＞

- 「 RealVNC Viewer 」をインストール（無料）。 
    - 日本語版ダウンロード： [http://www.vector.co.jp/soft/win95/net/se324464.html](http://www.vector.co.jp/soft/win95/net/se324464.html) 
    - 本家： [http://www.realvnc.com/download/viewer/](http://www.realvnc.com/download/viewer/)

- VNC Viewer を起動し、アドレスに<br>`192.168.xxx.xxx`<br>と入力し、「ＯＫ」をクリック<br>パスワードを入力<br>RaspberryPi の デスクトップが画面に表示されます。
- うまくいかない場合、<br>`192.168.xxx.xxx:5901 `<br>を試してみてください（tightvncserverを使っている場合）



#### VNC画面を大きくする方法

/boot フォルダの config.txt を修正すれば画面が大きくなります。

```shell-session
$ sudo nano /boot/config.txt
```

次の２行の先頭のコメント「#」をはずす

```text
framebuffer_width=1280
framebuffer_height=720
```

- Ctrl+O で上書き保存
- Ctrl+X で「nano」を終了
- 再起動

```shell-session
$ sudo reboot
```






## 3-4 固定IPアドレス
- パソコンと Raspberry Pi を LANケーブル1本でつなぐ
- ※LANケーブルはクロスでもストレートでもよい（自動判別）


- パソコンとケーブル１本でつなぐ場合、パソコンとRaspberry Pi の IPアドレスの上位３つの数字を共通にした固定アドレスにする必要があります。 
- 上位３つの値は家のネットワークと共通にしておくと便利。 
- 最後の１つは機器によって異なる数値にする。大きな数字がよい。 （ネットワーク上に同じIPアドレスがあるとつながらなくなる） 

以下の例は上位アドレスを「192.168.99」にした例です。★環境に応じて変更してください

### 固定IPアドレスの設定(Raspbian ( Buster / Stretch / Jessie PIXEL) の場合)

＜設定ファイルの修正＞
- 念のためオリジナルをコピー 

```shell-session
$ sudo cp /etc/dhcpcd.conf dhcpcd.org
```

- 設定ファイルをエディタ「nano」で編集 

```shell-session
$ sudo nano /etc/dhcpcd.conf
```

- 一番最後に以下の４行を加える。<br>※固定アドレス192.168.99.100に設定する例です。★環境に応じて変更<br>※/24 は、ネットマスク 255.255.255.0 のかわり（24=8bitx3）<br>※３、４行目の最初の数字３つは固定アドレスと同じ、最後は１ 

```
interface eth0
static ip_address=192.168.99.100/24
static routers=192.168.99.1
static domain_name_servers=192.168.99.1
``` 

- Ctrl+O で 上書き保存 
- Ctrl+X で「nano」を終了
- 再起動 


```shell-session
$ sudo reboot
```



### 固定IPアドレスの設定(古いRaspbian (Jessie) の場合)

＜設定ファイルの修正＞
- 念のためオリジナルをコピー 

```shell-session
$ sudo cp /etc/dhcpcd.conf dhcpcd.org
```

- 設定ファイルをエディタ「nano」で編集 

```shell-session
$ sudo nano /etc/dhcpcd.conf
```

- 一番最後に以下の４行を加える。<br>※固定アドレス192.168.99.100に設定する例です。★環境に応じて変更<br>※/24 は、ネットマスク 255.255.255.0 のかわり（24=8bitx3）<br>※３、４行目の最初の数字３つは固定アドレスと同じ、最後は１ 

```
interface eth0
static ip_address=192.168.99.100/24
static routers=192.168.99.1
static domain_name_servers=192.168.99.1
``` 

- Ctrl+O で上書き保存 
- Ctrl+X で「nano」を終了
- 再起動 


```shell-session
$ sudo reboot
```



## 3-5 isc-dhcp-server (DHCPサーバー) 
- IPアドレスを割り当てる

### ＜インストール＞
```shell-session
$ sudo apt-get install isc-dhcp-server 
```

### ＜DHCPの設定＞
- 念のためオリジナルをコピー 

```shell-session
$ sudo cp /etc/dhcp/dhcpd.conf dhcpd.org 
```

- 設定ファイル「/etc/dhcp/dhcpd.conf」をエディタ「nano」で編集 

```shell-session
$ sudo nano /etc/dhcp/dhcpd.conf
```

- ２行コメントアウト 

```
#option domain-name ... 
#option domain-name-servers ...
```

- １行復活 

```
authoritative;
```

- 最後に追加（上位 192.168.99 で、120-200をDHCP割り当ての場合 ★環境にあわせて数字の変更が必要） 

```
subnet 192.168.99.0 netmask 255.255.255.0 { 
range 192.168.99.120 192.168.99.200; 
option broadcast-address 192.168.99.255; 
option routers 192.168.99.1; 
default-lease-time 7200; 
option domain-name "local"; 
option domain-name-servers 8.8.8.8, 8.8.4.4; 
} 
```

- Ctrl+O で上書き保存
- Ctrl+X で「nano」を終了 

- 設定ファイル「/etc/default/isc-dhcp-server 」をエディタ「nano」で編集

```shell-session
$ sudo nano /etc/default/isc-dhcp-server 
```

- INTERFACESv4="" または INTERFACES="" <br>を<br> INTERFACESv4="eth0" または INTERFACES="eth0" <br> に変更

- Ctrl+O で上書き保存
- Ctrl+X で「nano」を終了

### ＜DHCPの自動実行＞
- DHCPサーバーの自動実行 

```shell-session
$ sudo update-rc.d isc-dhcp-server enable
```

- 起動時にネットワークがつながるまで待つ 

```shell-session
$ sudo raspi-config
```

- 「3.Boot Option」＞「Wait for Network at Boot」を実行 <br>「Yes」に設定 <br>※古いOSの raspi-config にはこの設定項目がありません。
- Buster / Stretch / Jessie PIXEL の場合は、Raspberry Pi ルートメニュー
＞ Preferences ＞ Raspberry Pi Configuration ＞ Systemタブにある「Wait for Network」にチェックを入れましょう

### ＜DHCPサーバーの動作確認＞
- 再起動 

```shell-session
$ sudo reboot
```

- DHCPが起動していることの確認 

※ネットワーク上で、ほかの DHCP が動いているとエラーになります。パソコンと Raspberry Pi を直接接続してテストするとよいでしょう。

```shell-session
$ /etc/init.d/isc-dhcp-server status 
```
「active(running)」と表示されればOK 

もし起動していなかったら 

```shell-session
$ sudo service isc-dhcp-server start 
または 
$ sudo service isc-dhcp-server restart 
```

で起動できるか確認

## 3-6 機器の接続 
- パソコンをLANケーブルで接続
- 接続は簡単で、スイッチングハブの各ポートに、 ラズベリーパイ、各パソコンとつなぐLANケーブルを接続します。 どこにつないでもかまいません。
- ８ポートのスイッチングハブ１個で７台のパソコンが接続できます。
- ８ポートのスイッチングハブ２個あれば、 スイッチングハブ同志を１本のLANケーブルで接続し、 のこりの１４ポートでラズベリーパイと１３台のパソコンをつなぐことができます。



# ４．WiFi アクセスポイントの設定

- 最近のノートパソコンには、LANケーブルの接続端子がなくなっており、 WiFiでの接続が一般的になってきました。 

- ローカルサーバーをアクセスポイントにして、 WiFiで接続できるようにする方法をまとめます。

## 4-1 機材（WiFi アンテナ）
- ラズベリーパイ Type 3B には、WiFi が内蔵されていますが、Type 2B / 1B では、WiFi アンテナが必要です。
- WiFiアンテナは、 機種によってはラズベリーパイとの接続が難しいものもあるようです。 接続実績が紹介されているものを使うことをお勧めします。ここでは、<br> I-O DATA WN-G300UA <br> を使いました（ラズベリーパイ Type 3B では不要です）

## 4-2 WiFi IPアドレスを決める
- 有線LANとは異なる上位番号のアドレスを決めます。<br> ここでは、192.168.88.1としました。

## 4-3 wlan0 の設定

### wlan0 IPアドレスの設定(Raspbian (Buster/ Stretch / Jessie) の場合)

＜設定ファイルの修正＞
- 設定ファイルをエディタ「nano」で編集 

```shell-session
$ sudo nano /etc/dhcpcd.conf
```

- 一番最後に以下の４行を加える。<br>※固定アドレス192.168.88.1 に設定する例です。★環境に応じて変更<br>※/24 は、ネットマスク 255.255.255.0 のかわり（24=8bitx3）<br>※３、４行目の最初の数字３つは固定アドレスと同じ、最後は１ 

```
interface wlan0
static ip_address=192.168.88.1/24
static routers=192.168.88.1
static domain_name_servers=192.168.88.1
``` 

- Ctrl+O で上書き保存 
- Ctrl+X で「nano」を終了
- 再起動 


```shell-session
$ sudo reboot
```



## 4-4 DHCPの設定
### ＜/etc/dhcp/dhcpd.conf の設定＞

- エディタ「nano」で編集 

```shell-session
$ sudo nano /etc/dhcp/dhcpd.conf
```

- ２行コメントアウト 

```
#option domain-name ... 
#option domain-name-servers ...
```

- １行復活 

```
authoritative;
```

- 最後に追加（上位 192.168.88 で、10-50 を DHCP 割り当ての場合 

```
subnet 192.168.88.0 netmask 255.255.255.0 { 
range 192.168.88.10 192.168.88.50; 
option broadcast-address 192.168.88.255; 
option routers 192.168.88.1; 
default-lease-time 600; 
max-lease-time 7200; 
option domain-name "local"; 
option domain-name-servers 8.8.8.8, 8.8.4.4; 
}
```

- Ctrl+O で上書き保存
- Ctrl+X で「nano」を終了


### ＜/etc/default/isc-dhcp-server＞

```shell-session
$ sudo nano /etc/default/isc-dhcp-server
```

INTERFACESv4 または INTERFACES を "eth0 wlan0"  に変更（WiFi とLANケーブルと同時にDHCPを動かす場合、もし、WiFiだけなら"wlan0"）


```
INTERFACESv4="eth0 wlan0"
```


有線、無線、両方に DHCP を割り当て。

- Ctrl+O で上書き保存
- Ctrl+X で「nano」を終了



## 4-5 hostapd（アクセスポイント）
### ＜インストール＞

```shell-session
$ sudo apt-get install hostapd
$ sudo apt-get install iptables-persistent

 yes を２回選んでEnter
```

### ＜/etc/hostapd/hostapd.conf の設定＞

- エディタ「nano」で編集

```shell-session
$ sudo nano /etc/hostapd/hostapd.conf
```

- 以下を入力。次の項目は適当に差し替えてください。 <br>「eva999」はアクセスポイントの名前 <br>「999999999」はパスワード 

```
interface=wlan0
driver=nl80211
#driver=rtl871xdrv
ssid=eva999
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase=999999999
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1
```

※WiFiアダプタの種類によっては、`driver=nl80211` を `driver=rtl871xdrv` に変更。 

- Ctrl+O で上書き保存
- Ctrl+X で「nano」を終了


### ＜/etc/default/hostapd の設定＞

```shell-session
$ sudo nano /etc/default/hostapd 
```

- 以下の行を探し、行頭の#をはずし、下のように修正 

```
DAEMON_CONF="/etc/hostapd/hostapd.conf"
```

- Ctrl+O で上書き保存、
- Ctrl+X で「nano」を終了

## 4-6 hostapd の修正（Pi3 の場合は不要、ドライバー rtl871xdrv の場合）
- 標準のOSに、ドライバー rtl871xdrvが はいっていないため、以下の作業を実行 <br>※Pi3 や nl80211 ドライバーの場合、この作業は不要です。

- adafruit から新しい hostapd をダウンロード 

```shell-session
$ cd ~ 
$ wget http://adafruit-download.s3.amazonaws.com/adafruit_hostapd_14128.zip 
$ unzip adafruit_hostapd_14128.zip
```

- オリジナルの hostapdをリネームしてから差し替え 

```shell-session
$ sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.org 
$ sudo mv hostapd /usr/sbin 
$ sudo chmod 755 /usr/sbin/hostapd
```

## 4-7 その他の設定

### ＜/etc/sysctl.conf の設定＞

```shell-session
$ sudo nano /etc/sysctl.conf
```

- 最後に以下の行を追加 

```
net.ipv4.ip_forward=1
```

- Ctrl+O で上書き保存、
- Ctrl+X で「nano」を終了

### ＜その他の設定＞

```shell-session
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" 
  sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
  sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
  sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT 
  sudo sh -c "iptables-save > /etc/iptables.ipv4.nat" 
  sudo mv /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service ~/
```

## 4-8 動作テスト

### 	＜hostapd の動作テスト＞

```shell-session
$ sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf 
```

- 設定エラーがなければ、サービス実行に進む 
- wlan0がないといわれた場合は<br> Ctrl＋Ｃキーを押して中断し、再起動

```shell-session
sudo reboot 
```

- サービスの実行 

```shell-session
$ sudo service hostapd start
$ sudo service isc-dhcp-server start 
```

- ノートパソコンやスマートフォンで、 WiFiアクセスポイントを表示させ<br>アクセスポイント「eva999」が表示されるかチェック<br>パスワード「999999999」 で接続できるかどうかを確認

もし「Failed to start hostapd.service: Unit is masked」エラーが出たら

```shell-session
$ sudo systemctl unmask hostapd 
  sudo systemctl enable hostapd 
  sudo systemctl start hostapd 
```




### ＜サーバーの状態を調べる＞

```shell-session
$ sudo service hostapd status
$ sudo service isc-dhcp-server status
```

## 4-9 自動実行

### ＜自動実行の設定＞

```shell-session
$ sudo update-rc.d hostapd enable 
$ sudo update-rc.d isc-dhcp-server enable
```

## 4-10 DHCP の起動を遅らせる

ネットワークよりもDHCPサーバーが先に起動する問題の対策で、時間待ちを入れます。

### ＜/etc/init.d/isc-dhcp-server の修正＞

```shell-session
$ sudo nano /etc/init.d/isc-dhcp-server
```

- Ctrl+W のあと、下の入力欄に`"Starting`と入力して検索
- log_daemon_msg “Starting 行の次に「sleep 10」１行を追加

```
test_config
log_daemon_msg “Starting $DESC” “$NAME”
sleep 10
```

- Ctrl+O で上書き保存、
- Ctrl+X で「nano」を終了





## 4-11 アドレスや名前を変更する場合、修正するファイル

### 固定IPアドレス(Raspbian (Buster/ Stretch / Jessie) の場合)

```shell-session
$ sudo nano /etc/dhcpcd.conf
```

interface eth0<br>static ip_address=**192.168.99**.100/24<br>static routers=**192.168.99**.1<br>static domain_name_servers=**192.168.99**.1

interface wlan0<br>static ip_address=**192.168.88**.1/24<br>static routers=**192.168.88**.1<br>static domain_name_servers=**192.168.88**.1



### DHCP割り当てアドレス

```shell-session
$ sudo nano /etc/dhcp/dhcpd.conf
```

subnet **192.168.99**.0 netmask 255.255.255.0 {
range **192.168.99**.120 **192.168.99**.200;
option broadcast-address **192.168.99**.255;
option routers **192.168.99**.1; 

subnet **192.168.88**.0 netmask 255.255.255.0 {
range **192.168.88**.10 **192.168.88**.50;
option broadcast-address **192.168.88**.255;
option routers **192.168.88**.1; 

### WiFiアクセスポイントの名前

```shell-session
$ sudo nano /etc/hostapd/hostapd.conf 
```

ssid=**eva999** <---アクセスポイントの名前<br>channel=6 <---６か３<br>wpa_passphrase=**999999999** <---パスワード



# ５．パソコンからサーバーに保存する方法

- サーバーのIPアドレスを指定して保存します。
    - LANケーブルで接続: 192.168.99.100 （★設定によって異なります）
    - WiFiで接続: 192.168.88.1（★設定によって異なります）

# 5-1 サーバーのフォルダを開く

### ＜Macintosh から接続＞
- Macintosh の ファインダ＞「移動」＞「サーバーへ接続...」
- サーバーアドレスに<br>`smb://192.168.xxx.xxx`<br>と入力し、「接続」をクリック
- OKをクリックし、名前に「guest」、パスワード不要

### ＜Windows から接続＞
- Windows エクスプローラで、アドレス<br>`\\192.168.xxx.xxx` <br>を入力し、開く
- 「share」フォルダをダブルクリック。

### ＜Linux (Ubuntuなど) から接続＞
- ファイルマネージャ＞「移動」＞「ネットワーク」をクリック
- アドレスに<br>`smb://192.168.xxx.xxx`<br>と入力
- 「share」フォルダをダブルクリック

# 5-2 アプリからサーバーに保存する

- アニメーションソフト 9VAeきゅうべえからアニメを保存するには、以下のようにします。

### ＜Macintosh から接続＞
- サーバーとの接続を実行すれば、左側にサーバー「192.168...」が表示されます。
- 9VAe きゅうべえ メニューバー＞「名前をつけて保存」
- 保存先のフォルダとして「192.168...」を選び、中に保存します。

### ＜Windows から接続＞
- 9VAe きゅうべえ メニューバー＞「名前をつけて保存」
- ファイル名にアドレス<br>`\\192.168.xxx.xxx` <br>を入力し「保存」
-「share」フォルダをダブルクリックし、中に保存します。

### ＜Linux (Ubuntuなど) から接続 (mount)＞
- 9VAe の開く画面に「smb://192.168.XXX.XXX」といった入力ができないため、 共有サーバーアクセス用のフォルダを作成します。 
- 例えば、ホームの下に「9va-up」という名前で作成するには以下のようにします。 

#### ＜アクセス用フォルダの作成＞

- アクセス用フォルダの作成 

```shell-session
$ cd ~ 
$ mkdir 9va-up
```

- 共有サーバーに割り当てる（マウントする）シェルスクリプトを nano で作ります。 

```shell-session
$ nano 9va-up/mount.sh
```

- 次のように入力します。太字の部分は適宜書き換えてください。 

```shell-session
#!/bin/sh 
sudo mount -t cifs //192.168.99.100/share /home/xxxx/9va-up -o user=guest,sec=ntlmssp,nounix,noperm,rw 
```

- 「192.168.99.100」はローカルサーバーのアドレスです。<br>「/home/xxxx」は自分のホームディレクトリです。★自分の環境にあわせてください。
- Ctrl+O で上書き保存
- Ctrl+X で「nano」を終了
- 実行可能にしておきます 

```shell-session
$ chmod +x 9va-up/mount.sh
```

#### ＜保存する前のマウント＞
- ホーム/9va-up/mount.sh を実行します。 
- ラズベリーパイの場合 <br>ホームアイコン＞9va-up＞mount.sh のダブルクリックでサーバーのフォルダが開きます。
- Ubuntu の場合は、ターミナルから <br>
9va-up/mount.sh <br>を実行します。管理者パスワードを入力します。

#### ＜保存＞
- 9va-pi きゅうべえで保存<br>ホーム＞9va-up を選べば、ローカルサーバーに保存できます。


# ６．サーバーの構成例
ローカルサーバー /home/share の中は自由ですが一例を示します。

- フォルダの作成はサーバーに接続したパソコン側から行いましょう。 
（※サーバーのラズベリーパイで作成すると、プロパティを変更しなければ、 他のパソコンから読み書きできなくなります。）

```
download … 9VAeきゅうべえを入れておき、デスクトップにコピーしてもらいます。 
　├ win … 9va-win 
　├ mac … 9va-mac (9VAe.app) 
　├ pi … 9va-pi (ラズベリーパイ) 
　└ ubuntu … 9va-pi(Linux x86版)
saveTo
　├ ここに作品を入れます 
　├ 9View-full.app … Mac版ビュア 
　├ 9view-full.exe … Winows版ビュア 
　├ 9view-pi-full … ラズベリーパイ版ビュア 
　└ 9view-full … Linux x86版ビュア 
```

- このようにしておけば、サーバーに接続した各パソコンから、 フォルダの中のビュアをダブルクリックすると作品上映ができます。 
- ビュアの名前に「-full」をつければ全画面再生します。


# ７．アニメーションの自動再生

- ラズベリーパイサーバーを立ち上げると、上の saveTo フォルダの中のアニメーションを自動再生するようにしてみましょう。
- ラズベリーパイの出力をディスプレイにつないでおけば、デジタルサイネージ（電子看板）として使えます。

## 7-1 9va をデスクトップに配置

### ＜9va-pi をダウンロード＞
- [ここから 9va-pi(ラズベリーパイ版) をダウンロード](https://drive.google.com/file/d/0B_jLDEPlHKVjd0RPOFVWbWxwZkU/view?usp=sharing) しデスクトップ上に保存
- ダウンロードした「9vapxxxx.zip」を右ボタンでクリック＞ ここで展開（Extract here）を実行 <br>「9va」フォルダができます
- 「9va」フォルダの中の「9view」がビュアです。これを右ボタンでクリックし、「9view-full」にリネームします。（※ワークショップのデータ保存用にする場合は、9va_data/_setpath.ini に共有フォルダを記載し、「9view」を「9view-full-lastday」にリネームします。） 

## 7-2 LXDE-pi（ビュアの自動実行）

### ＜~/.config/lxsession/LXDE-pi/autostart を設定＞

#### Raspbian buster の場合

~/.config/lxsession/LXDE-pi/autostart がないので次のようにして作成する

```shell-session
$ mkdir -p ~/.config/lxsession/LXDE-pi
$ cp /etc/xdg/lxsession/LXDE-pi/autostart ~/.config/lxsession/LXDE-pi/
```



<br>~/.config/lxsession/LXDE-pi/autostart があるか調べる

```shell-session
$ ls ~/.config/lxsession/LXDE-pi/autostart 
```
（古いOSの場合、LXDE/autostart） <br> autostart の存在が確認できたら

```shell-session
$ nano ~/.config/lxsession/LXDE-pi/autostart 
または
$ nano ~/.config/lxsession/LXDE/autostart 
```


- @xscreensaver -no-splash の上に9viewスタートを追加 

```
@/home/pi/Desktop/9va/9view-full /home/share/saveTo 
@xscreensaver -no-splash
```

9view-full-lastday を使う場合、

```
@/home/pi/Desktop/9va/9view-full-lastday 
@xscreensaver -no-splash
```




- Ctrl+O で上書き保存
- Ctrl+X で「nano」を終了
- フォルダの中に何かアニメーションがなければエラーになります。

## 7-3 画面をスリープさせない

### ＜/etc/lightdm/lightdm.conf を設定＞

```shell-session
$ sudo nano /etc/lightdm/lightdm.conf
```

- [SeatDefaults] の下に以下の行を入れる 

```
[SeatDefaults] 
xserver-command=X -s 0 -dpms
```

- Ctrl+O で上書き保存
- Ctrl+X で「nano」を終了

# ８．Amazon Fire タブレット

![anime-1koma.2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67734/e7198864-a0ab-d9af-7889-3911672e5160.gif)


## 8-1 setpath.svg

- １コマアニメーター？ Amazon Fire タブレット版を使いたい場合、共有フォルダに直接保存することができません。
- その場合、タブレットの Download > 1koma フォルダのなかに、「setpath.svg」という名前のテキストファイルを作成し、そこに「192.168.xxx.xxx」といったサーバーのネットワークアドレスをいれておけば、そこにむかって「POST」するようになります（アプリのダウンロード時にはこのファイルはなく自分で作成する必要があります。裏機能）

## 8-2 Python-Flask サーバー

- サーバー側に、[「FlaskをつかったGIF変換サーバー」](https://qiita.com/danjiro/items/0925b9864a5f09e729c6)を起動しておけば、タブレットから作品をサーバーに転送することができます。保存する場所は Python プログラムの中で指定します








# 参考にしたサイト

- ラズベリーパイをWiFiアクセスポイントにする
[https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software](https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software)
- プログラムの自動実行(buster) [https://www.raspberrypi.org/forums/viewtopic.php?t=249620](https://www.raspberrypi.org/forums/viewtopic.php?t=249620)
- プログラムの自動実行
[http://klee-arc.hatenablog.com/entry/2015/04/20/002157](http://klee-arc.hatenablog.com/entry/2015/04/20/002157)
- 画面をスリープさせない
[http://www.geeks3d.com/hacklab/20160108/how-to-disable-the-blank-screen-on-raspberry-pi-raspbian/](http://www.geeks3d.com/hacklab/20160108/how-to-disable-the-blank-screen-on-raspberry-pi-raspbian/)
- DHCPの起動を遅らせる [https://cgbeginner.net/raspi-dhcp-server/](https://cgbeginner.net/raspi-dhcp-server/)

## ラズベリーパイ・Linux 資料
1. [Raspberry Pi 設定メモ、ワコムペンタブレットのつなぎ方](http://qiita.com/danjiro/items/a29fe4b670f1e504a717)
2. [ラズベリーパイを使ったWiFiローカルサーバーの作り方](http://qiita.com/danjiro/items/28bb17ab3e2aaf79e572)
3. [Raspberry Piとペンタブレットで毛筆描画アプリを作る](http://qiita.com/danjiro/items/efcad069d8e5e3fd6e49)
4. [Xtra-PCを日本語化して使ってみた](http://qiita.com/danjiro/items/8ee08e7a06455d860cc2)
5. [OpenCV と Python を使ったアニメーション動画用紙のスキャン画像位置合わせ](http://qiita.com/danjiro/items/985afccd07722d4c21e9)