ここに題名を入れる

2024年6月18日17寺23分に期限が切れます。

トップ ブレボ 製作者 技術ブログ



< 戻る  進む >

🖥️ミニPCをもう一台買ってしまった話
(パッケージインストール編)

sudoとsshのインストール

さて,OSのインストールも完了したところで,ようやくこのマシンをサーバとして運用する準備に入ります.

まず最初に入れておきたいのが,sudoとssh.


#### sudoの封印を解け——力なき者に力を ####

DragonFly BSDのパッケージ管理はpkgコマンド.ここはFreeBSDと同じ感覚で使えます.

まずはターミナルで以下を実行

pkg install sudo

この時点ではまだ使えません.sudoは「誰でも彼でも使っていいよ〜」というものではないですからね.


ユーザーを wheel グループに追加する

というわけで,自分のユーザーをwheelグループに加えてあげます.コマンドは以下のとおり

pw usermod 自分のユーザー名 -G wheel

実行したら今度はvisudoと打って,sudoersの設定を確認・編集を行います.

↓この行がコメントアウトされているはずなので,先頭の # を削除します.

%wheel ALL=(ALL) ALL

これで,wheelグループに属するユーザーはsudoが使えるようになります🎉やったぜ!


ここまで設定が済んだら,いったんログアウトして,自分のユーザーで再ログインしましょう.

そして試しにこう打ってみます

sudo whoami

rootと返ってきたら成功!


#### SSHはすでにそこにいた——静かなる待機兵 ####

さて,sshの設定ですが……DragonFly BSDでは最初からインストールされていました.

そのため,やることはただひとつ

sudo service sshd start

これだけでSSHサーバが起動し,外部からの接続が可能になります.めちゃくちゃシンプル.

しかも設定ファイルは /etc/ssh/sshd_config にあるので,ポート変更や鍵認証オンリー設定もすぐに施せます.


#### tcshには任せてられない——Bash、指令を引き継げ ####

インストール直後のDragonFly BSDでは,シェルとしてtcshが設定されています.

ただ,私は圧倒的にbash派なので,さっそくデフォルトシェルをbashに変更していきます.

まずはインストール

sudo pkg install bash

これだけでbashが/usr/local/bin/bashにインストールされます.ちなみにLinuxのように/bin/bashではない点はちょっと注意が必要ですね.シバンの時とか.

/etc/shells にbashを登録

DragonFly BSDでは,有効なログインシェルとして使うには,シェルのパスが/etc/shellsに登録されている必要があります.私はインストールした時点で登録されていましたが,,

sudo echo /usr/local/bin/bash >> /etc/shells

chsh でデフォルトシェルを切り替える

準備が整ったら,ついにbashをデフォルトシェルに!

chsh -s /usr/local/bin/bash

「chsh」は“change shell”の略で,その名の通りログインシェルを切り替えるコマンドです.これで以後,ログイン時にbashが自動で起動されるようになります.

ログアウト → 再ログイン

設定はすぐに反映されますが,一度ログアウトして再ログインすれば,bashの歓迎が確認できます

echo $SHELL

出力が /usr/local/bin/bash になっていれば成功です🎉やったぜ!


#### 時を司る者,目覚める——ntpd ####

このミニPCをせっかく手に入れたので,ただの自宅サーバで終わらせるのももったいない。

どうせなら時間をも制御してしまおうじゃないかということで,このマシンを NTPサーバとして使ってみることにしました。

まずは現状を確認(いきなり時刻ズレてる)

インストール直後に気づいたのですが,システムの時刻がズレている..

原因はたぶん以下のコンボ

……結果、ログを見るたびに「これは未来予知ログか?」みたいな状態に。

ということで、まずはちゃんとしたNTPクライアントを入れて、正しい時刻を取り戻すところからスタートです。


🔍 ntpdは…いない?!

まずは既に ntpd がいるかどうかチェック

which ntpd

……結果:いない!

どうやらDragonFly BSDには標準でNTPデーモンが入っていないようなので、代わりにopenntpdを導入します。


📦 openntpdのインストール

さくっとインストール

sudo pkg install openntpd

🚀 自動起動の設定&起動

例によって /etc/rc.conf に以下を追記して、起動時に自動スタートするようにします

openntpd_enable="YES"

そして手動起動

sudo service openntpd start

これだけで NTPクライアントとしての機能はOK です。超簡単。

しかしこれだけでは正確な時刻は取得できていません.

NTPサーバとして利用するには,正確な時刻を取得することが必須です.


✏️ NTPサーバの設定

設定ファイル /usr/local/etc/ntpd.conf を編集します.内容は超シンプル

# 利用する上位NTPサーバ(好きなだけ追加可能)
server ntp.nict.jp
server ntp.jst.mfeed.ad.jp

これだけで、このマシンが「信頼できる時刻をもらってくる」ようになります。


✅ 状態の確認

openntpd では ntpctl というコマンドが利用できます。

ntpctl -s all        # すべて表示
ntpctl -s peers      # 上位NTPサーバの情報
ntpctl -s sensors    # ハードウェアクロックやセンサ情報(ない場合もある)
ntpctl -s status     # 状態のざっくり確認

all か statusを使用した結果内に

・・・ constraint offset 0s, clock synced, ・・・

といった表示があれば,同期されています🎉


💡 おまけ:このマシンをローカルNTPサーバとして使うには?

以下のようにLAN内の他のマシンに /etc/ntp.conf 等で指定しておけばOKです

server 192.168.xxx.xxx # マシンのローカルIPアドレス

(続く...)