「SSH」タグアーカイブ

Raspberry Pi 4 Model BをDLNAで使えるNASにしてみる方法

せっかくRaspberry Pi 4 Model Bを買ったものの、正直使いこなせていないので、まずは初級編ということでDLNAが使えるNASを作ってみたいと思います。

Raspberry Pi 4 Model BはCPUが高速で、メモリも4GB(8GBモデルも新発売)と大容量なうえに、USB3.0とギガビットイーサまで装備しているのでNASを作るにはピッタリの条件が揃ってますね。

NASの速度はI/Oインターフェイスの性能に左右されるところが大きいので、Raspberry Pi 3(USB2.0/300Mbpsイーサネット)と比べても、劇的に性能が上がって実用的に使えるレベルになっているようです。

※注意!以下の設定はまだ検証中です。参考にはしないでください!
 特にユーザを変更してからの権限周りの設定がうまくいっていないのと、公開鍵秘密鍵の設定があと一歩です💧


■Raspberry Piの準備
Raspberry Pi 4 Model B 4GBを用意。

用意する周辺機器のポイントは
・5.1V 3.0AのUSB Type-C電源アダプターを確保すること
・熱くなるのでヒートシンクか、できればファン付きのケースを使うこと
・安定した運用をするためにそこそこのmicroSDカードを使うこと
ですかね?

では、さっそくOSやソフトウェアをセットアップしていきましょう。


■環境の用意
・RaspberyPi用のOS、Raspberry Pi OS (32-bit) with desktop and recommended softwareをダウンロード
 https://www.raspberrypi.org/downloads/raspberry-pi-os/

・SD FormatterでmicroSD(microSDXC)カードを初期化
 https://www.sdcard.org/jp/downloads/formatter_4/eula_windows/index.html

・Win32DiskImagerでmicroSD(microSDXC)カードにRaspberry Pi OSを書き込む
 https://ja.osdn.net/projects/sfnet_win32diskimager/

・microSD(microSDXC)カードをRaspberry Piに挿入

・USBキーボード、USBマウス、MicroHDMIケーブル、電源ケーブルを接続


■初期設定
・Raspberry Pi OSが立ち上がったら初期ウィザードを実行する。
地域とタイムゾーンとパスワード、Wi-Fiを設定する。

・左上のラズベリーボタンから「設定」、「Raspberry Pi」の設定を押し、インターフェイスからSSHをONにする。
※Wi-Fiではなく有線LANでもOK。

・右上のWi-Fiマークをマウスオーバーし、Raspberry PiのIPアドレスを調べる

・Windows10からTera Termを使ってSSH接続する
http://ttssh2.osdn.jp/

・Tera TermでRaspberry PiのIPアドレスを入力

・ログインする
# ユーザー名:pi
# パスワード:自分で決めたパスワード

・Raspberry Pi Software Configuration Tool(raspi-config)を起動

$ sudo raspi-config

・「7.Advanced Options」を選択(Enter)

・「1.Expand Filesystem Ensures that all of the SD card storage is available」を選択(Enter)

・[了解]を選択(Enter)

・Finishを選択して再起動する


■各種アップデートを実行する
・Tera Termでログインする

・Rasbianのパーケージを最新のものに更新する

$ sudo apt-get update
$ sudo apt-get upgrade
# Do you want to continue? [Y/n] と聞かれたら「Y」を入力する
$ sudo apt-get dist-upgrade

・本体のファームウェアのアップデートする

$ sudo apt-get install -y rpi-update
$ sudo rpi-update
# Would you like to proceed? [y/N] と聞かれたら「y」を入力する

・一度、再起動する

$ sudo reboot

■リモート接続のためのRemote Desktop Protocol (RDP) serverをインストールする

$ sudo apt-get install xrdp
# yes(Y)を入力

・RDPを再スタートする

$ sudo service xrdp restart

# これでWindowsアクセサリのリモートデスクトップ接続が使えるようになる。


■MiniDLNAをセットアップする

$ sudo apt-get install minidlna

・再起動する

$ sudo reboot

・設定ファイルを変更

$ nano /etc/minidlna.conf
# iを押下し、以下をペースト(は自分のIDに書き換える)
user=minidlna
media_dir=var/lib/minidlna
media_dir=V,/home//minidlna/Video
media_dir=P,/home//minidlna/Photo
media_dir=A,/home//minidlna/Music
inotify=yes
notify_interval=895
# ESCを押下
# :wq!を押下
$ sudo service minidlna force-reload

・設定ファイルを再読み込み

$ sudo systemctl stop minidlna
$ sudo systemctl start minidlna

■Sambaをセットアップする

$ sudo apt-get install samba samba-common-bin
# 途中なにか聞いてきたら「y」を入力

・再起動する

$ sudo reboot

・共有用フォルダの作成( /home//Share/)

$ sudo mkdir /home//Share

・Shareフォルダのプロパティでパーミッションのアクセス制限を
内容の閲覧 すべて
内容の変更 すべて
内容へのアクセス すべて
にする

/////////////////////////////////////////

共有フォルダへアクセスするユーザの作成
$ sudo useradd smbuser
# パスワードの設定
$ sudo passwd smbuser
# 権限変更
$ sudo chown smbuser:smbuser /var/samba/
# Sambaのアクセス設定
$ sudo pdbedit -a smbuser
# 共有フォルダの公開設定
$ sudo cp -p /etc/samba/smb.conf /etc/samba/smb.conf.org
$ sudo vi /etc/samba/smb.conf

////////////////////////////////////////////////

・設定を変更する

$ sudo vi /etc/samba/smb.conf

# パスワードを入力し、以下を追記

[share]
comment = Share Folder
browseable = yes
path = /var/samba
writable = yes
valid users = smbuser
force user = smbuser

・Sambaの再起動

$sudo samba restart

・pdbedit(SAMデータベース/Sambaユーザデータベースの管理

$ sudo pdbedit -L
$ sudo pdbedit -L -v

■rootのパスワードを設定する

$ sudo passwd root
# パスワード:自分で決めたパスワード

■ユーザー名を変更する
・Tera Termでログインする

・ユーザーを追加する

$ sudo adduser user_name(以下、user_nameを自分のユーザー名に置き換える)

# パスワードを入力し、パスワードを再入力する
# フルネームなどの入力を求められるので、Enterを数回おしてスキップする。
# 以上で正しいですか?[Y/n]と聞かれたら「y」を入力する。

・「pi」が所属しているグループを調べる

$ id pi

・以下のように出力される
id=1000(pi) gid=1000(pi) groups=1000(pi),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),105(input),109(netdev),999(spi),998(i2c),997(gpio)

・新しく作成したユーザーに「pi」と同じグループを追加する(最後のuser_nameの部分にユーザー名を入力)

$ sudo usermod -aG adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio user_name

・再起動する

$ sudo reboot

・新しく作成したユーザーとパスワードでTera Termを使ってログインする
ユーザー名:
パスワード:自分で決めたパスワード

・groupが追加されてことを確認する

$ groups

・以下のように出力されたらOK

: user_name adm dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio

・「pi」ユーザーを削除する

$ sudo userdel -r pi

# パスワードを入力する


■固定IPアドレスを設定する
・自分のIPを調べる

$ ifconfig

・IPを固定する

$ sudo nano /etc/dhcpcd.conf

# 下記4行を追記

interface wlan0
static ip_address=192.168.10.XXX/24 #自分のIPアドレス
static routers=192.168.10.1
static domain_name_servers=192.168.10.1

Ctrl + O で書き込み
Enter エンターで決定
Ctrl + X で終了

・再起動する

$ sudo reboot

・固定したIP(wlan0)を確認する

$ ifconfig

■SSHのログインをパスワード認証方式から公開鍵認証方式へ変更する
・Windows10のTera TermでSSH鍵を生成

Tera Term→設定→SSH鍵生成
# 鍵の種類=RSA
# ビット数=2048
# 生成を押下
# フレーズパスを入力
# フレーズパスを再入力
# 公開鍵の保存を押下
# 秘密鍵の保存を押下

・公開鍵をRaspberry Piに転送
WinSCPで公開鍵 id_rsa.pub をRaspberry Piの /home/user_name に転送
https://winscp.net/eng/docs/lang:jp

・Tera TermでSSH接続し、Raspberry Piに公開鍵を登録

$ cd /home/
$ mkdir .ssh
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
$ rm id_rsa.pub

・sshd_configの設定変更

$ sudo nano /etc/ssh/sshd_config

# Port 22
Port 60000

# PermitRootLogin prohibit-password root による ssh ログインを禁止する設定
PermitRootLogin no

# PubkeyAuthentication yes 公開鍵認証を許可 (SSH2のみ)
PubkeyAuthentication yes

# PasswordAuthentication yes パスワード認証を禁止する設定
PasswordAuthentication no

# ChallengeResponseAuthentication yes チャレンジレスポンス認証を無効化する設定
ChallengeResponseAuthentication no

# PermitEmptyPasswords no 空のパスワードを認めなくする設定
PermitEmptyPasswords no

# 以下を追記
Protocol 2

Ctrl+X
Y (Yes)
Enter
su

・SSHサーバを再起動

$ sudo systemctl restart ssh.service

■SSH接続クライアント(TeraTurm)の設定変更

ホスト名(IPアドレス)を入力
# 指定したポート番号を入力
# ユーザー名を入力
# パスフレーズを入力
# RSA/DSA/ECDSA/ED25519鍵を使う秘密鍵で秘密鍵を指定
# OKを押下

ログイン完了

・SSH接続クライアント(WinSCP)の設定変更
# SFTPを選択
# ホスト名(IPアドレス)を入力
# 指定したポート番号を入力
# ユーザー名を入力
# 設定→SSH→認証で秘密鍵を選択
# OpenSSH形式からPutty形式に変換
# パスフレーズを入力
# id_rsa.ppkファイルを出力

・SSH接続クライアント(Tera Turm)でログイン
# ログインを押下
# パスフレーズを入力
# ログイン完了


ファイル共有サーバへのアクセス

■Windows10
SMB 1.0 が無効になっているため、以下の手順でSMBのクライアントを有効にする。
1. コントロールパネルを開く
2. プログラムから、[Windows の機能の有効化または無効化]を開く。
3.[SMB 1.0/CIFS クライアント]をチェックを入れて、[OK]をクリックする。
4. エクスプローラーからネットワークで、¥¥<Raspberry PiのIPアドレス>:¥share¥にアクセスする。
5. smbuserの認証情報を入力。

■Mac
1. Finderの[移動]から、[サーバへ接続]を選択する。
2. [サーバアドレス]にsmb://を入力し、[接続]をクリック。
3. 登録ユーザを選択し、smbuserの認証情報を入力。

WordPressのバックアップ方法を変えました

このブログはWordPressというCMS(コンテンツ マネジメント システム)を使っています。

W3Techsが公開したデータによると、全世界のウェブサイトの29%がWordPressで作られているそうです。
世の中のサイトの29%もWordPressで作られてる?
すげーなWordPress…。

WordPressは静的なファイルを公開しているのではなく、動的にデータベースから記事を作り出しています。
ここで重要になるのが、サーバーのバックアップ。

これまでもWordPressのバックアップは定期的とっていましたが、完全にバックアップが完了しないときもありました。
なのでかなり試行錯誤して、いろいろ手を変え品を変え、今回のバックアップ方法にたどり着きました。

わりとまともに動くバックアップ方法は以下の通り。

1.ブログ記事やコメントなどのデータをエクスポートでバックアップ
2.プラグインやテーマなどのデータをSFTPでバックアップ
3.設定項目をコピーしてバックアップ

1.ブログ記事やコメントなどのデータをエクスポートでバックアップ
まずは1番大切な記事やコメントのバックアップを行います。
WordPressでは記事やコメントはデータベースに格納されてます。

WordPressにはこれらの記事をエクスポートする機能があります。
先日までエクスポートに失敗することが多発していたのですが、アドオンを一度全部停止にすることで、ダウンロードがスムーズに行えることが判明しました。
何回も失敗していたのでモヤモヤしていましたが、アドオンを停止することで解決して良かったです。

操作は、管理画面の左メニューの「ツール」から「エクスポート」を選択すればOK。

XML形式のファイルがダウンロードできるので、SSDやハードディスクなどに保存します。

データベースのバックアップがそれだけだとちょっと不安なので、バックアップが取れるプラグインを探しました。
WordPress Database Backup

今回は、上記サイトからWordPress Database Backup 2.2.4のZIPをダウンロードし、「プラグイン」の「新規登録」から「プラグインのアップロード」でインストールしました。

WordPressの管理画面からプラグインを探すほうがウイルス感染などのリスクは低くなると思うのですが、作成者のサイトからダウンロードしたほうが間違ったプラグインを入れる心配がありません。
WordPressって似たようなプラグインがたくさんあって紛らわしいのです…。

あとは管理画面の「ツール」から「バックアップ」を選ぶと、簡単にデータベースのバックアップ&ダウンロードができます。
また定期的にメールでバックアップデータを送信することもできます。

ボクは週に1度、自動的にバックアップを取ってメールで送る設定にしました。

あとせっかくなので、phpMyAdminを使ってデータベースから直接データをエクスポートもしておきました。
 1.サーバー上の phpMyAdmin にログイン。
 2.左ウィンドウで、WordPress データベースを選択。
 3.右ウィンドウに WordPress データベースに含まれるテーブルの一覧が表示されるので、タブメニューで「エクスポート」を選択する。
 4.「簡易」オプションが選択されていることを確認して、「実行」をクリック。
 5.すべてのテーブルが SQL 形式でエクスポートされるので、エクスポートされたファイルを保存する。

これだけやっておけば、ほぼデータベースのバックアップは万全でしょう。

2.プラグインやテーマなどのデータをSFTPでバックアップ
WordPressで使っている、写真や画像などをバックアップ(ダウンロード)します。

Webサーバーにあるファイルをダウンロードしますが、特に重要なのは、
・plugins(プラグイン)
・themes(テーマ)
・uploads(写真や画像など)
となります。

ただ、サーバーまるごとバックアップしようとすると、Cacheデータなどもダウンロードしちゃうのでオススメしません。

FTP(File Transfer Protocol)やFTPS(File Transfer Protocol over SSL/TLS)を使うと、サーバーからローカルにファイルをダウンロードしている間に途中で止まったりすることがありました。
なので、SFTP(SSH File Transfer Protocol)を使ったダウンロード(バックアップ)のほうがいいです。

今のところ、SFTPでダウンロードに失敗したことはありません。
安定しています。

しかし、すべてのサーバーがSSHを使えるわけではありません。
ロリポップだと、安価なプランではSSHが使えません。
月額500円~のスタンダードプランからのみSSHが利用可能になります。

SFTPを利用するためにWinSCPというオープンソースクライアントプログラムを使っています。

3.設定項目をコピーしてバックアップ
WordPressの設定の中の「更新情報サービス(ping)」と「パーマリンク設定」は重要なので、テキストにコピーして保存します。
まあ、これは一度コピー&保存しておけば、何度もバックアップしなくてもいいですね。

1.と2.でダウンロードしたファイルと3.のテキストをファイルを大切に保存しておきます。
ボクの場合はGoogle Driveに全部入れています。

ただし、ダウンロードしたファイルをそのまま全部Google Driveと同期を取ると、uploadsに入っている写真や画像などが自動的にGoogleフォトに入ってしまいます。
なので、uploadsをZIPで圧縮してからGoogle Driveにアップします。
そうするとGoogleフォトに勝手に画像があがりません。

と、ここまでのバックアップは手動でやらなくてはならないので、ちょっと不安です。
こんな作業を毎日、毎週、定期的にやるのは難しいので…。

ということで、結局、ロリポップのバックアップオプションに入ることにしました。
月額324円で過去7回分、7世代まで自動的にバックアップを取ってくれます。

バックアップオプションでは
(1)Webサーバー、データベースサーバーのバックアップ
(2)バックアップファイルのダウンロード
(3)Webデータ、データベースの復元機能
があって、バックアップ周期は手動/1日/3日/7日/15日/30日 より選べます。

ボクは3日毎にバックアップをとることにしました。
毎日バックアップ取りたいところですが、毎日にすると過去7日前までしか逆上れないので…バックアップの間隔、期間が短いのは不安です。
また、毎日毎日ブログを書いているわけではありませんし。

まあ、このように自動バックアップと定期的なバックアップをとっておけば安心かなーと。
そこそこアクセスもあるブログになってきているので、バックアップはとても大切だなーと思いました。

それでは、よいブログライフを…。