RaspberryPiにPleromaをインストールしてみる(下準備編)

技術

たまたま、浮いてるラズパイもあるしでやってみた記録を自分用にメモ。
但し、サーバー建ては初体験。

Raspbian Stretch Liteのインストール

Etcherを使ってimgファイルを書きこみ。

balenaEtcher - Home
A cross-platform tool for flashing images to SD cards & USB drives.

一度マウントが解除されるのでマウントし直して、ターミナルから次のコマンドで空ファイルを作り、SSHを有効にしておく(今のバージョンは無効になってるらしいので)

> touch /Volumes/boot/ssh
何度かやり直してるので面倒になってimgファイルに直接埋めこんだので、今は省略してる

ラズパイは有線LAN接続して、SDカードを入れ電源をONにする。

Raspbianの初期設定

アップデートと自動更新の設定

SSHで接続して、アップデート実施。

$ sudo apt-get update && sudo apt-get -y dist-upgrade && sudo apt-get -y autoremove && sudo apt-get autoclean
$ sudo rpi-update
rpi-updateはやらなくてもいいかもだけど、最終的に外部公開するのが目標なので念のため実施

次に、ソフトの自動更新するようunattended-upgradesを導入。

$ sudo apt-get install -y unattended-upgrades

このままでは動作しないようなので、/etc/apt/apt.conf.d/20auto-upgradesを再生成する。

$ sudo dpkg-reconfigure -plow unattended-upgrades

この画面で、「アップデートがあった場合、自動的にダウンロードとアップデートしていいか?」と聞かれるので<Yes>を選択。

次にこの画面になるので、画像にあるように次の内容に修正する。

"origin=${distro_id},codename=${distro_codename}";

最低限これで動作するはず。これ以外の設定は下記ページ参照。

Debian 系で unattended-upgrades を有効にする場合の追加設定 (メール通知, autoremove, autoclean, 再起動) - Qiita
何台か趣味のサーバ用に Ubuntu Server を動かしている。 趣味のサーバは時間が取れないことがあるので、手動アップデートだと忘れてしまうことがある。 unattended-upgrades を有効にすると、セキュリティ上重要...

IPアドレスの固定

/etc/dhcpcd.confを編集する。

sudo nano /etc/dhcpcd.conf

編集するのは次の箇所。

interface eth0
static ip_address=[固定するラズパイのIPアドレス]
static routers=[デフォルトゲートウェイ(基本的にルータのIPアドレス)]
static domain_name_servers=[DNSサーバアドレス(基本的にルータのIPアドレス)] 1.1.1.1

ルータ側で払い出しIPアドレスを固定することができるならそっちもしておいた方が、いざって時にいいかも。

セカンダリDNSに指定した1.1.1.1は、最近公開されたプライバシー重視らしいパブリックDNS。
詳しいことはこちら。

1.1.1.1 — インターネットで最速のプライバシー優先のDNSリゾルバー
✌️✌️ インターネット閲覧をより速く、よりプライベートに。
別に定番のGoogleのパブリックDNSである8.8.8.8でもいいと思う。

raspi-configの設定

raspi-configを起動して、設定を実施。

  • Change User Passwordでパスワードを変更
  • Localisation Options→Change Localeでja_JP.UTF-8を指定
  • Localisation Options→Change TimezoneでAsia→Tokyoを指定

ここまでは必須。以下は任意。

  • Overclock→Highに変更
  • Advanced Options→Expand FilesystemでSDカード全域を利用する(初回起動時に設定されてるぽい)

<Finish>を選択すると再起動するか確認されるので、再起動実施。

セキュリティ向上作業

最低限のセキュリティを確保するために、初期ユーザーであるpiのユーザー名を切り替えます。

そのままでは、当然変更できないので作業用ユーザ(temp)を作成する。

$ sudo useradd -M temp

そのままでは、sudoコマンドが利用できないので、作業用ユーザをsudoグループに追加し、パスワードを設定して、一度SSHから抜ける。

$ sudo gpasswd -a temp sudo
$ sudo passwd temp
$ exit

今度は、作業用ユーザでログインしてpiを新ユーザ名に変更する。

$ sudo usermod -l [新ユーザ名] pi

その後で、ホームディレクトリも新ユーザ名に合わせて作成し、piからデータを移動させる(でもここまでの作業でホームディレクトリは空なので必要ないかも)

$ sudo usermod -d /home/[新ユーザ名] -m [新ユーザ名]

さらに、piグループも新ユーザ名に変更してログアウト。

$ sudo groupmod -n [新ユーザ名] pi
$ exit

これで、piから新ユーザ名に切り替わったので、新ユーザ名でSSHでログインします。
その上で作業用ユーザを削除します。

$ sudo userdel temp

さらに、rootユーザも有効になっているため、ロックして無効化します(sudoつけるの面倒だけど、セキュリティ上無効にしておきたい)

$ sudo passwd -l root

これで最低限のセキュリティは確保できたはず。

秘密鍵を使ってssh接続する+パスワード入力を省略する

sshの秘密鍵を作ってsshの設定も済ませてしまう。

Mac側での作業

Macのターミナルで次のコマンドで鍵を作る。

> ssh-keygen -t rsa

作成する際、次の3つの質問があるが全部Enterキーで空入力する

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/tool-lab/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

※今回はラズパイ1台だけなのでkeyファイル名はデフォルトのままにしてるだけ。複数台で鍵の使い分けが必要なら1行目のkeyファイル名の指定は必須。

出来上がった.ssh/id_rsa.pubをラズパイへコピー。

> scp .ssh/id_rsa.pub pi@raspberrypi.local:

ラズパイ側での作業

ログインして、次のコマンドでkeyファイルを~/.sshディレクトリへ移動と名前を変更する。

$ mkdir .ssh
$ cat id_rsa.pub >> .ssh/authorized_keys

外部からのアクセスを禁止するためパーミッションの変更を実施し、~/id_rsa.pubを削除。

$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
$ rm id_rsa.pub

鍵の準備ができたので、sshサーバーの設定を変更するため、/etc/ssh/sshd_configを編集する。

$ sudo nano /etc/ssh/sshd_config

※エディタはviでもemacsでもvimでもご自由に。Raspbianのデフォルトがnanoで使いやすいからなだけ。

編集箇所と編集内容は次の通り。
基本的にはコメントアウトされてるので解除してyes/noに変更するだけ。

Port [任意のポート番号(10000〜65535)]
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no

Portは、22番から任意の番号に変更する。
変更後、次のコマンドでsshdの再起動をして変更を反映する。

$ sudo systemctl restart ssh

新しくターミナルを開いて、ログインがうまく行くことを確認する。
うまくいかない時はやり直し。

SSHのクライアントのConfigファイルの設定

このままだとSSHを起動する時にオプションやらつけて入力が面倒なのでMacに~/.ssh/configファイルを作る。内容は次の通り。

Host [任意の名前]
 HostName [ラズパイのIPアドレス]
 User [新ユーザ名]
 Port [ラズパイの/etc/ssh/sshd_config内のPortで指定した番号]
 IdentityFile ~/.ssh/id_rsa

これで、任意の名前でSSHログイン可能になる。

DDNSの設定

DDNSには、No-IP.comを利用しました。

Free Dynamic DNS - Managed DNS - Managed Email - Domain Registration - No-IP

DUC(Dynamic Update Client)のインストール

ドメイン名を確保したら、以下のページにある手順でDUCをインストールしてグローバルIPの変更に対応できるようにする。

How to Install the Linux Dynamic Update Client on UbuntuSupport | No-IP Knowledge Base
Read this guide for step by step instructions for installing No-IP's Linux Dynamic Update Client on Ubuntu.

実際のコマンドは次の通り。

$ cd /usr/local/src
$ sudo wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
$ sudo tar xzf noip-duc-linux.tar.gz
$ cd noip-2.1.9-1
$ sudo make install

※ディレクトリ名は執筆時当時のものなので確認して実行すること。

make installするときにエラーが出るけど、問題がないので無視してOK。
make installを実行したら、No-IP.comのID(メールアドレス)とパスワードを聞かれるので入力。
次に更新間隔を分単位で入力するので、短めの時間(3〜5分)で一度設定。入力しない場合は30分間隔で更新する。

Please enter an update interval:[30]

その後

Do you wish to run something at successful update?[N] (y/N)

と、更新成功時に何か実行するかと聞かれるけど、実行するものもないのでそのままEnter。

終了したら、次のコマンドでDUCを起動して様子見。

$ sudo /usr/local/bin/noip2

指定した時間が過ぎたら、

$ sudo /usr/local/bin/noip2 -S

でIPが取得されているか確認。

$ sudo /usr/local/bin/noip2 -U 30
$ sudo /usr/local/bin/noip2 -S

これを実行して、更新間隔を30分にして、更新間隔が30分になっていることを確認。

DUCをサービス登録する

再起動した時に自動的に起動できるよう、サービス登録をする。
ググって見つけてきたこちらの設定ファイル(下のコード)を利用。

$ sudo nano /etc/systemd/system/noip2.service

で、コードをコピペして保存したら、コードに記載されているコマンドを実行してサービスに登録→再起動。

$ sudo systemctl enable noip2
$ sudo systemctl start noip2
$ sudo reboot

再起動後に、ちゃんと動いていることを確認しておく。

$ sudo systemctl status noip2
$ sudo /usr/local/bin/noip2 -S

後は30日に1回メールが来るはずなので、その都度ログインして更新しておく。

参考にしたサイト

以下のページを参考にしました。

Raspbianのインストールと最強の初期設定 | 純規の暇人趣味ブログ
Raspberry Piをサーバにして使っています@HimaJyunです。(ヨカッタラツイッタフォロシテネ)Raspberry Piで使うDebian系Linuxの「Raspbian」、セットアップの時にやってる「インストールしたらこれをやるリスト」が肥大化してきたので、ここでまとめてご紹介します。
ツール・ラボ » Raspberry Piに公開鍵認証を使ってssh接続する
身のまわりの便利なガジェットなどのツールの使いこなし、製作を行うためのいろいろな情報を集めたサイトです。

コメント

タイトルとURLをコピーしました