INDEX
Lubuntuを使う背景
- 使用する機器がApple Inc. Intel® CPU MacBook Pro。
- Minecraft統合版サーバーUbuntu版を使う。
- セットアップで🖧有線LAN環境が確保できなかった。
- 同理由でUbuntu Serverのインストールが簡単にできない。
- LubuntuはUbuntuの軽量版。
Apple Inc. T2チップ搭載機とApple Inc. siliconへのLubuntuインストールの説明は行いません。
Minecraft統合版
Minecraft統合版のサーバーソフトウェアはWindows版とUbuntu版があります。Ubuntu版に関しては、調べても試してもない憶測ですが他のディストリビューションでも動かせるかも。
サーバー版OSとデスクトップ版OS
Ubuntuにはデスクトップ版とサーバー版があります。デスクトップを使わないならサーバー版が適しているのですが、セットアップ時にインターネット接続が必要になります。今回は諸事情により🖧有線接続を使うことができなかったので、Bluetoothが簡単に使えたデスクトップ版を使いました。
LubuntuとUbuntu
LubuntuはUbuntu公式の派生(フレーバー)で、UbuntuがGNOMEというデスクトップシステムを使っているのに対し、LubuntuはLXQtと呼ばれる軽量なデスクトップシステムを採用しています。色々KDEなものがいっぱい入ったのでKDEなデスクトップシステムになります。UbuntuよりLubuntuの方が動作が軽くなっています。
機器
機器はmacOSのサポートが切れてしまったがゆえにセキュリティの問題がある。という理由で使っていなかったMacBook Pro13 2012Midを使います。macOSのサポートは切れてもLinuxが使える機種なので、Ubuntu版のMinecraft統合版サーバーで運用します。Windowsは有料かつ高額なので今回は見送りました。
準備
サーバーを外部に公開する場合はルーターの設定を間違えないよう十分に注意して下さい。
確認
推奨動作環境
アーキテクチャ
AMD64
クロック
512[MHz]以上
メモリー(主記憶)
512[MB]以上
空き容量
6[GB]以上(OSのみ)
ネットワーク
インターネット接続環境
CPU
AMD64
Lubuntuの動作条件はAMD64のCPUで、512[MHz]以上推奨です。ですので、Intel® x86系64ビットでAMD64をサポートしたものとなります。同じintel® 64ビットCPUでもIA-64はAMD64とは互換がありません。公式ではCore™ 2、Athron 64より新しければいいようです。なので、Intel® Core™ iシリーズ以降やAMD Ryzenシリーズなら確実に動作します。問題はIntel® Celeron™とIntel® Pentium™ですが64ビットのWindowsを使っていれば、おそらくという条件付きで動くでしょう。
Apple silicon
Apple siliconの場合はmacOSのゲストOSでなら動作しますがネイティブでは動作しません。
Intel®CPUでもApple T2チップ搭載機は無理かも
Apple T2チップ搭載機へのLinuxインストールはあまりいい話を聞きません。
AMD64以外でも一応・・・
ちなみにLubuntuはUbuntuの公式な派生(フレーバー)なので、ARMやPowerPCなど他のアーキテクチャ版のUbuntuを入れてからLubuntuに切り替えることが可能です。
Memory
メモリー(主記憶)は512[MB]以上を推奨していますが、これではOSが動くだけなので他のソフトが動けるように1[GB]以上は必要なようです。
Storage
インストール先に必要な容量は6[GB]以上推奨とありますが、Minecraft統合版サーバーのデーターは数[GB]になりますのでその分と、他の各種アプリが使用する分も考慮します。さらに、メモリーが足りない場合はスワップファイルが作成されるのでその分も考慮します。メモリーが8[GB]の環境ではスワップはなかなか発生しないようです。なお今回はzramという仕組みを使っていますのでスワップは圧縮されてメモリー内に留まりますが、それでも溢れたらスワップファイルが作成されるのかは知りません。
Network
インターネット接続環境が必要です。インストールはインターネット接続は必ずしも必要ありませんし、インターネットに繋がない運用も可能ですが、運用はインターネットに繋がる別の端末とデーターを渡すためのメディアが必要です。
Boot
インストールメディアからブートできる装置が無いとインストールができません。
インストールメディアの準備
使用可能なインストールメディア
- ブート可能
- 4[GB]以上
- 書き込み可能
- 中のデータはすべて消される
今回使用するメディア
- USB2.0メモリー
- 4[GB]
インストールメディアの準備
使用可能なインストールメディア
- ブート可能
- 4[GB]以上
- 書き込み可能
- 中のデータはすべて消される
今回使用するメディア
- USB2.0メモリー
- 4[GB]
インストールメディアの用意
ブート
コンピューターの電源が投入されたあとOSを起動することをブートといいます。このブートを変更するとOSをはじめとした認証済みソフトウェアを任意の記録メディアから起動することができます。今回はUSBメモリーからLubuntuというOSを起動してインストール作業をします。
メディア
インストールメディアとはブートの機能を使ってOSをSSDやHDDにセットアップするためのソフトウェアを入れるメディアです。なのでブートが出来るメディアである必要があります。
装置
当たり前ですが機器にメディアを読むことができ、ブートが可能な装置が搭載されている必要があります。要はDVDをインストールメディアにしても、DVDドライブが付いてなかったらインストールできないということです。
種類
インストールメディアは書き込み可能でブート可能なものであれば何でも構いません。書き込みはインストールメディアを作るときの1回なので新品の📀DVD±RやBD-Rなどでも構いません。容量は4[GB]以上の 空 のメディア、または全てのデーターが消えてしまっても良いメディアを用意しましょう。
Example
例えばUSBメモリーなど。カードスロットがあればSDカードでもいいですし、DVDやBlu-rayドライブがあれば📀DVD±RやBD-Rなどのディスクメディア、ブートできるならネットワークドライブでも何でも構いません。
- USBメモリー
- USB SSD
- DVD±R(内蔵ドライブ、外付けドライブ両方可)
- BD-R(内蔵ドライブ、外付けドライブ両方可)
- SDカード
- Thunderbolt SSD
今回
今回は手元にUSBメモリーがあったのでこれを使いました。USBメモリーとUSB SSDは似ていますがわざわざ名称が違うことからもわかるように別物と認識されます。
Lubuntuの⮋ダウンロード
- Lubuntu公式サイトから
- iso(イメージファイル)形式
- 2[GB]を超える
ダウンロード
Lubuntuの⮋ダウンロードは公式サイトからできます。
ファイル形式
ファイル形式はイメージファイルのiso形式です。容量は2[GB]を超えますので回線によっては気長に待つことになります。
保存先
適当な🗀フォルダーやディレクトリに保存してください。ブータブルメディア作成アプリによっては⮋ダウンロードしながらメディアに書き込めるものもあります。お好みの方法でよろしいと思います。
💿インストールメディア作成
アプリ紹介
ブータブルメディア作成アプリを使ってインストールメディアを作成します。
ブータブルメディア作成アプリの一例として、
- Rufus
- Etcher
- UNetbootin
- Universal-USB-Installer
- 📀DVD±Rはアプリを使わずにインストールメディアにできます。
- Etcher
- UNetbootin
- 📀DVD±Rはアプリを使わずにインストールメディアにできます。
- Brasero
- Etcher
- UNetbootin
などがあります。
💿インストールメディア作成
アプリ紹介
ブータブルメディア作成アプリを使ってインストールメディアを作成します。
ブータブルメディア作成アプリの一例として、
- Rufus
- Etcher
- UNetbootin
- Universal-USB-Installer
- 📀DVD±Rはアプリを使わずにインストールメディアにできます。
- Etcher
- UNetbootin
- 📀DVD±Rはアプリを使わずにインストールメディアにできます。
- Brasero
- Etcher
- UNetbootin
などがあります。
📀DVD±R(BD-R)の場合
⮋ダウンロードしたイメージファイルからインストールメディアを作るには、ブータブルメディア作成アプリが必要です。ただし、メディアが📀DVD±Rなどのディスクメディアの場合、アプリの機能がOSに取り込まれているため、別途アプリを用意しなくても大丈夫です。
Windowsではイメージファイルを右クリックしてディスク イメージの書き込みを選ぶ。またはその他のオプションの表示→ディスク イメージの書き込みを選びます。 ボタンを押せば書き込みが始まります。
macOSではイメージファイルを右クリックしてディスクを作成を選びます。 ボタンを押せば書き込みが始まります。
📀DVD±R(BD-R)以外
ディスクドライブ以外での書き込みはアプリを使います。見た目や機能はアプリごとに異なりますが、おおかた次のように操作すればインストールメディアを作成できます。
- ブータブルメディア作成アプリを起動します。
- 空のメディア、またはデーターが消されても構わないメディアをセットします。
- イメージファイルを⮋ダウンロードしたイメージファイルを選択します。または、イメージファイルをアプリのウインドウにドラッグ・アンド・ドロップします。 や するボタンが大抵の場合付いてるので、それを押して
- 書き込み先を選ぶ選択リストや ボタンがあるので、メディアをセットしたドライブやマウントを選択します。
- や 、 、 などといったボタンを押します。
- データーがすべて削除されますと言った内容の警告が出ますので、 や 、 、 などといったボタンを押すとインストールメディアの作成が始まります。
- しばらくすると完了します。
インストール
インストールメディアから起動する。
インストールメディアをセットしてブート
- 予めインストールメディアをセットできるならセットする。
- ブート順序を変更する。
- インストールメディアがセットされていないならここでセットする。
- ⏻電源を落としてインストールメディアをセットし起動する。
する。または、 する。場合によっては
インストールメディアをセットしてブート
- 予めインストールメディアをセットできるならセットする。
- ブート順序を変更する。
- インストールメディアがセットされていないならここでセットする。
- ⏻電源を落としてインストールメディアをセットし起動する。 する。または、 する。場合によっては
ブート順序の変更
注意
この章ではBIOS
設定というものを扱う方法の記述があります。
BIOS
設定ではPCの重要な設定も変更できます。誤った設定をするとハードウェアが故障し部品交換を伴う修理が必要になります。注意して作業してください。
BIOS
以外の手段があるならそちらがいい
ブート順序やBIOS
設定をWindowsから変更できるアプリがメーカーから提供されている場合があります。低リスクで設定できるので先ずはこの方法を検討してください。
ブート順序だけ変更する機能を持つ機種が存在します。
BIOS
画面表示方法
BIOS
設定表示方法
機器
方法
備考
メーカーPC、相当古いPC、超廉価版マザーボードのPCなど
⏻電源ボタンを押してすぐに、特定のキーを連打する。
マニュアル参照。
BTO PC、ショップPC、自作PCなど
BIOS
設定画面に入るためのアプリがあるのでそれを使います。
大手のBTOだと、メーカーPCと同じ方法を採用している場合があります。
ブート順変更
BIOS
メニューからBOOTの順番を変更して
、インストールメディアから起動。
ブート順序の変更
注意
この章ではBIOS 設定というものを扱う方法の記述があります。
BIOS 設定ではPCの重要な設定も変更できます。誤った設定をするとハードウェアが故障し部品交換を伴う修理が必要になります。注意して作業してください。
BIOS 以外の手段があるならそちらがいい
ブート順序やBIOS 設定をWindowsから変更できるアプリがメーカーから提供されている場合があります。低リスクで設定できるので先ずはこの方法を検討してください。
ブート順序だけ変更する機能を持つ機種が存在します。
BIOS 画面表示方法
機器 | 方法 | 備考 |
---|---|---|
メーカーPC、相当古いPC、超廉価版マザーボードのPCなど |
⏻電源ボタンを押してすぐに、特定のキーを連打する。 |
マニュアル参照。 |
BTO PC、ショップPC、自作PCなど |
BIOS 設定画面に入るためのアプリがあるのでそれを使います。 |
大手のBTOだと、メーカーPCと同じ方法を採用している場合があります。 |
ブート順変更
BIOS メニューからBOOTの順番を変更して
、インストールメディアから起動。BIOS からブート順の変更
ブート
どのメディアから起動するかの順番をブート順といいます。この順番を変更する方法はいくつかありますが、BIOS 設定と呼ばれる画面で順番を変える方法が様々な機器で使えます。その場合はまずBIOS 設定を表示する必要があります。
BIOS 以外の方法があるならそちらがいい
BIOS 設定する前にWindows用のアプリでブート順序が変更できないか確認しましょう。Windows用のアプリを使ってブート順序を変更できたりBIOS 設定できる機種では、この方法が簡単かつ安全なのでWindowsが使えるならリスクが最も低い方法です。
DOS/V機(Windows機)
AMD64 CPUを搭載したPCはだいたいDOS/Vと呼ばれるシステムを採用しています。DOS/VでのBIOS 設定へ入る方法が前出の表です。ただし操作方法は規格化などされていないため、全く異なる方法やそもそもBIOS 設定ができないこともあります。BIOS 設定ができなくてもブート順序の変更はできるかもしれないのでマニュアルを確認して下さい。
マウスが使えない時は矢印キー
BTO PCやショップPC、自作PCなどはUEFIのUIも自由になる部分を活用しているためマウス操作で設定が可能ですが、メーカーPCや大手BTO PCの一部ではUEFIですがマウス操作ができないことがあります。その場合でもキーボードの矢印キー(←↑↓→)や⇥ Tab、⇧ Shift、⏎ Enterで操作ができます。
ブート順序変更の項目
BIOS 設定は基本設定、CPU設定、メモリー設定など項目にまとめられています。多くの場合、基本設定かマザーボード設定など全体の動作を設定できそうなところにブート順序の設定があります。
動かなくなっても戻せるように
まずは変更前のブート順序を📝メモしておきましょう。何故ならブートできない装置を先に読み込もうとして、PCが起動できなくなるのを防ぐためです。次にブータブルメディアを使う装置を一番最初に読み込むように順番を変えます。他の装置の順番が変わらないように注意しましょう。キーボードの場合、+キー、-キーやPageUp(PgUp)、PageDown(PgDn)で順番を変えます。コンパクトキーボードではキーが無い場合もあります。
装置名表記
ディスクドライブやSSDの場合は装置の名前や品番、容量が表示されています。表示内容からどのような装置なのか判断してください。
接続先
メディア | 選択項目 | 備考 |
---|---|---|
USBメモリー |
ドライブやCD-ROMなどディスクを連想する文字が無いUSB接続の項目 |
PCによってはUSBに接続する装置の種類を区別しないで、単にUSB接続なら何でもこの項目とするものもあります。 |
USB SSD |
USBのドライブ |
SSDのDはドライブのD |
PC本体内蔵のDVD(Blu-rayDisc)ドライブを使う |
DVD(Blu-rayDisc)ドライブの機種名 |
なんとなくそれっぽい名前が表示されています。 |
USB 外付けDVD(Blu-rayDisc)ドライブ |
USBのドライブ |
|
USB SDカードリーダーライター、その他メモリーカードリーダライター |
USBのドライブ |
USB以外も
USB以外にもThunderboltやFireWire(IEEE1394)、eSATAなども選ぶことができる機種もあります。
メディアをセット
ブートしたい装置やメディアが一番上になりましたら、
して起動する装置やメディアをセットし、 しましょう。設定したブータブルメディアから起動します(再起動を伴うこともあります)。機種によってはBIOS ではない事も
機種によってはそのままでは起動しない、もしくは、起動しても表示できない、操作できないなどの現象があるかもしれません。その場合はPCの機種とOSのディストリビューション、バージョンなどで調べてみます。また、類似の機種や一つ前のバージョン、類似のOSなどの情報でも試してみましょう。起動オプションの指定や設定ファイルの変更で動かせるかもしれません。 BIOS 設定の変更が必要な場合もあるので、注意して作業してください。もしかしたらオプションやスイッチ、 引 数 と呼ばれるものを付けるためにコマンド入力が必要になるかもしれません。
ブート順序を変更したら起動
先にインストールメディアをセット
BIOS 設定画面かブート順序変更画面でブート順序を変更した場合、次へ進む前にインストールメディアをセットします。
起動開始
BIOS 設定を
して 、またはブート順序変更を終了すると多くの場合は新しいブート順序で起動処理が進みますが、再起動が必要な場合もあります。アプリからの起動も先にインストールメディアをセット
アプリからブート順序を変更した場合はインストールメディアをセットして、アプリから
してください。インストールメディアを忘れた場合
もし、インストールメディアをセットし忘れたとしてもWindowsやLinuxなどが立ち上がった後にインストールメディアをセットして再起動します。
OSが動作できない場合などで起動できない場合はトレイ式やスロットローディング式でない場合、⏻電源を落としてからインストールメディアをセットします。そして⏻電源を投入します。トレイ式やスロットローディング式では通電さえすれば⏏ディスクを入れることができるので、入れてからハードウェアの再起動や⏻電源をOFFしてONします。
インストールメディアをセットして起動
macOSから起動ディスクの変更
インストールメディアをセットしたまま、システム設定から🖴起動ディスクを変更し 。
電源OFFから起動ディスクの変更
ディスク以外のメディアなら電源が落ちた状態でインストールメディアをセットし、⏻電源ボタンを押してすぐに⌥ option(alt)を押したままにして起動ディスク選択画面を表示する。
インストールメディアをセットして起動
macOSから起動ディスクの変更
インストールメディアをセットしたまま、システム設定から🖴起動ディスクを変更し 。
電源OFFから起動ディスクの変更
ディスク以外のメディアなら電源が落ちた状態でインストールメディアをセットし、⏻電源ボタンを押してすぐに⌥ option(alt)を押したままにして起動ディスク選択画面を表示する。
起動ディスクの変更
起動ディスク選択方法
機器
方法
mac全般(macOSが使える状態)
システム設定の一般の起動ディスク
Intel® CPU mac
⏻電源ボタンを押してすぐに、⌥ option(alt)キーを押し続ける。
Apple silicon mac
⏻電源ボタンを押し続ける。
起動ディスクの変更
機器 | 方法 |
---|---|
mac全般(macOSが使える状態) |
システム設定の一般の起動ディスク |
Intel® CPU mac |
⏻電源ボタンを押してすぐに、⌥ option(alt)キーを押し続ける。 |
Apple silicon mac |
⏻電源ボタンを押し続ける。 |
電源OFFから起動ディスク選択
最近の機種
Apple silicon macとT2 securityチップを搭載したIntel® CPU macは外付けドライブからの起動に制限があります。これらのmacへのLinuxのインストールは失敗のリスクが高くあまり推奨できません。
T2 securityチップ搭載のIntel® CPU mac、Apple silicon macは説明を省かせていただきます。
T2未搭載
T2 securityチップ非搭載のmacでは起動するデバイスを接続して、「システム設定」から起動ディスクを選び再起動後、または、⏻電源投入直後に⌥ option(alt)を押し続けると、起動できるデバイスの一覧と無線LANの選択項目が表示されるので、起動するデバイスの下の↑上矢印をクリックするだけでそのデバイスから起動します。
起動
起動中
macOSで起動ディスクを変更する場合はインストールメディアをセットしたまま再起動します。
電源OFFの場合
電源が落ちた状態なら、インストールメディアをセットしてから、⏻電源ボタンを押してすぐ⌥ option(alt)を押し続けます。この方法はスロットローディングのDVDドライブでは使えない方法です。スロットローディングを使う場合はとりあえず⏻電源を入れてメディアをセットしたら何らかの方法で⏻電源を落としましょう。
起動ディスク選択画面
しばらくすると、起動ディスクを選択する画面になりますので⌥ option(alt)キーを離してインストールメディアの下の↑上矢印を押します。
Lubuntuを起動する。

一番上の「*Try or Install Lubuntu
」を選択して⏎ Enterキーを押します。
しばらくするとLubuntuが起動してデスクトップ画面になります。なおこの時点ではLubuntuはインストールされていません。
ネットワークに接続します。
(MacBook Pro 2012Mid)
インストールのための仮の接続を行います。
ネットワークに接続します。
(MacBook Pro 2012Mid)
-
🖧有線接続(GUI)
接続
🖧有線LANはこの時点で使えるので、この方法が簡単です。インターネットに繋がるLANケーブルを接続して下さい。
手動でIPアドレスを設定
DHCPが使えない場合はデスクトップ右下のトレイからネットワークアイコン(nm-tray)を右クリックしてEdit Connectionをクリックします。
ネットワーク編集ウインドウが開くので Wired connection 1 をダブルクリックして設定を開きます。IPv4タブのMethodをManualにします。 ボタンを押しAddress/Netmask、Gateway、その下のDNSを設定して を押します。なお、接続速度が100[Mbps]に固定されていることがあるので、1[Gbps]対応の機器ならEthernetタブのLink negotiateをAutomaticにします。
-
🖧有線接続(cli)
設定
コマンドラインでIPを設定するにはnmcliを使って以下のようにします。
sudo nmcli connection modify "wired ethernet 1"🖧有線接続の接続名 ipv4.method manual ipv4.address 192.168.xxx.yyy/24割り当てるIPアドレスとサブネットマスク ipv4.gateway 192.168.xxx.1ルーターのIPアドレスなど ipv4.dns 192.168.xxx.1ISPから提示されたIPアドレスやルーターのIPアドレスなど ipv6.method disabled 802-3-ethernet.auto-negotiate yes
接続
設定ができたらネットワークを再起動します。
sudo nmcli connection down "wired ethernet 1"🖧有線接続の接続名 sudo nmcli connection up "wired ethernet 1"🖧有線接続の接続名
-
オフラインインストールは略
別の端末を用意してもインターネット接続は必要
インストールはオフラインでも可能です。ただし、インストール後にインターネット接続か、インターネットに接続できる別の端末が必要です。
別の端末とデーターの授受は必要
インターネットに繋がる別の端末を用意した場合はデーターを移すための媒体が必要です。もちろんどちらの端末もその媒体が使える必要があります。
-
Bluetoothテザリングという変態
🛜Wi-Fi以外のテザリング
今回は🖧有線LANが使えない環境ですが、Bluetoothテザリングが使えたので、詰まずにすみました。
USBテザリングというのもできるらしい。
テザリングなのに🛜Wi-Fiが使用可能
Bluetoothテザリングは🛜Wi-Fiテザリングと違って、🛜Wi-Fiが切断されませんので🛜Wi-Fi経由でインストールできます。
Bluetoothの接続
タスクバー左下のInternet-Add Bluetooth deviceを選択して、Bluetoothの画面を開きます。
からメニューを開き、スマートフォン側も登録画面にしておきましょう。
ペアリング
スマートフォンが見つかったら選択して
を行います。お互いに表示された番号が同じなら
しましょう。Bluetoothテザリング
スマートフォン側をBluetoothテザリングにしておきます。
デスクトップ右下のトレイからネットワークアイコン(nm_tray)をクリックしてBluetoothテザリングの接続を選択します。
🛜Wi-Fiドライバーのインストール
ドライバーの種類
Bluetoothだと遅いのでネットワークドライバーをインストールします。MacBook Pro13 2012MidはBroadcomのBCM4331というチップなので3種類のドライバーが使えます。
以下は個体差の可能性が非常に高いので全く逆のパターンになることがあるかもしれません。
- bcmwl-kernel-source
-
STAと呼ばれるドライバーでこちらだと802.11a/b/g/nが使えますが、b43より立ち上がりが不安定です。5[GHz]帯も不安定ですがb43はそもそも5[GHz]帯が使えません。
- b43
-
BCM4331だと802.11b/gしか使えない。要するに2.4[GHz]帯しか使えない。なぜか速度が出ません。
- Broadcom-wl
-
このドライバーの使用は推奨されていません。上のSTAもb43もだめなときに使うものとのことです。こちらもSTAと呼ばれています。802.11a/b/g/nが使えました。立ち上がりの安定性はSTAよりかいいが、5[GHz]帯のとき801.11aになることが多くものすごく遅いです。
ドライバー | 注 | 起動 | 2.4[GHz] | 5[GHz] |
---|---|---|---|---|
STA wl bcmwl-kernel-source | 不安定 | 安定 | 不安定 | |
b43 firmware-b43-installer | 安定 | 低速安定 | 不可 | |
Broadcom-wl broadcom-sta-dkms | 非推奨 | 若干不安定 | 安定 | 激低速安定 |
ドライバーのインストール
インストール時のドライバーは一時的なものなので、ダウンロード容量が少ないb43をとりあえずインストールします。
sudo apt install -y firmware-b43-installer
🛜Wi-Fiへ接続

ドライバーをインストールしたらデスクトップ右下のトレイからネットワークアイコン(nm_tray)をクリックして接続したい🛜Wi-Fiを選択します。パスフレーズを入力し🛜Wi-Fiに接続します。
再接続

ドライバーをインストールしても🛜Wi-Fiが認識しない場合はデスクトップ右下のトレイからネットワークアイコン(nm_tray)を右クリックしてEnable networkのチェックマークをつけ直して下さい。チェック状態なら一度チェックマークを外してチェックし直して下さい。または、次のコマンドを実行してみて下さい。
sudo modprobe -r b43 b43legacy ssb
sudo modprobe b43
sudo systemctl restart NetworkManager
Bluetoothテザリングの切断

デスクトップ右下のトレイからネットワークアイコン(nm_tray)をクリックしてBluetoothテザリングの接続をクリックすることで切断します。
インストールの開始
デスクトップのInstall Lubuntu 22.04 LTSアイコンからインストールします。

デスクトップにLubuntuをインストールするためのショートカットアイコンInstall Lubuntu 22.04 LTSがあるのでダブルクリックして起動します。
言語の選択
日本語の機種なら日本語になっています。

日本語のままでインストールしました。
タイムゾーン
日本の場合は東京です。
子午線ではなく天文台の位置

タイムゾーンはAsiaのTokyoにしました。
子午線近くや過去の子午線
明石や大阪は選択肢にありません。また西子午線は選択肢がありません。
キーボード
日本語の場合
- DOS/V 109ベース
-
- Apple純正
-
キーボード
日本語の場合
- DOS/V 109ベース
- Apple純正
Apple純正

日本語キーボードなら基本はJapanese-Default-Genericのままですが、Apple純正キーボードやMacBookではGenericをApple Aluminium(JIS)に変えます。
JIS106,108,109
キーボード問題はどのOSでもありますが、WindowsやmacOSよりも厄介なところがあります。Linuxそのものを構うのが目的でない限り厄介なので、キーボードはDOS時代の106配列にWindowsキー⊞(Win)が付いただけの108、109ものをお勧めします。
パーティション
今回は全消去
macOSサポート外の機器なので消去して作成を選びました。
パーティション
今回は全消去
macOSサポート外の機器なので消去して作成を選びました。
macOSを残す方法
macOSは消さずに別の領域にインストールしたほうがいいそうです。ファームウェアの更新と起動音の設定はmacOSからしかできないからだそうですが、今回のMacBook Pro 2012MidはmacOSのサポートがすでに切れており、起動音もそのままでよかったのでバッサリ消しました。macOSの分の容量もLinuxに使えてお得。
デフォルトの分け方

いろんな流儀がありますがデフォルトの分け方を選びました。ブート用の小さいfat32のパーティションと残り全て/でext4の最小構成です。
スワップファイルを使う方法
他にスワップ用のパーティションをメモリーの倍の容量で作る方法です。
再インストールを意識した分け方
/home/や/etc/を別パーティションにして再インストールしても設定やユーザーファイルはそのままにする方法です。たくさんの領域にする場合は仮想化をうまく使って後から容量の変更を可能にすると良いでしょう。
ユーザー登録
重要
rootは有効にしない派です。1枚でも壁は多い方がいいと思うから。rootがなければrootを乗っ取るのが大変になるから重要なことなのです。
ユーザー登録
重要
rootは有効にしない派です。1枚でも壁は多い方がいいと思うから。rootがなければrootを乗っ取るのが大変になるから重要なことなのです。
ユーザーID

最初のユーザーを登録します。このユーザーは管理者権限になることができます。管理者といってもrootではありませんしrootは有効化してはいけません。
パスワード
言うまでもありませんがパスワード管理はしっかりしてください。大小半角英字半角数値一部半角記号、要するにASCIIコードの文字が使えます。
フルネームの使用場所
フルネームはログイン画面に表示されることがあります。
コンピューター名
コンピューター名はHostnameとNetBEUIの両方に設定されますが後から各々別の名前に変更できます。
他のアカウント
マイクラの管理はマイクラ用のユーザーを、Webサイトの管理はWebサイト用のユーザーを後ほど作成して作業を行います。
インストール作業
インストール中の操作
エラーがなければ終わるまで操作はありません。
インストール作業
インストール中の操作
エラーがなければ終わるまで操作はありません。
待機

あとは待つだけです。
指示が出るまでインストールメディアを取り出さない


インストールメディアをセットしたまま⏎ ENTERキーを押すように指示が出るので、その時点でインストールメディアを⏏取り出します。
をします。再起動の途中でインストールメディアを取り除いてから各種ソフトウェアインストール・設定
ネットワークドライバー
クリーンアップ
接続設定の削除
インストール時の接続が残っているので、デスクトップ右下のトレイからネットワークアイコン(nm_tray)を右クリックしてEdit Networkを選びます。
インストール時の🛜Wi-Fiの接続を選び、右の-ボタンを押して消します。
もう一度Bluetoothテザリングをする
インストール時のドライバーはもう消えていて使えないので、またBluetoothテザリングでインターネットに接続して改めてネットワークドライバーをインストールします。
モジュールの無効化
念の為、下のコマンドを実行してドライバーの残骸を無効化しておきます。
sudo modprobe -r b43 b43legacy ssb
ドライバーのインストール
ドライバーをインストールします。
ネットワークドライバー
クリーンアップ
接続設定の削除
インストール時の接続が残っているので、デスクトップ右下のトレイからネットワークアイコン(nm_tray)を右クリックしてEdit Networkを選びます。
インストール時の🛜Wi-Fiの接続を選び、右の-ボタンを押して消します。
もう一度Bluetoothテザリングをする
インストール時のドライバーはもう消えていて使えないので、またBluetoothテザリングでインターネットに接続して改めてネットワークドライバーをインストールします。
モジュールの無効化
念の為、下のコマンドを実行してドライバーの残骸を無効化しておきます。
sudo modprobe -r b43 b43legacy ssb
ドライバーのインストール
ドライバーをインストールします。
bcmwl-kernel-source
今回はパフォーマンスをとってSTAドライバーのbcmwl-kernel-sourceを採用しました。
sudo apt install -y bcmwl-kernel-source
でインストールできます。
b43
数十[Mbps]未満でいいならb43の方が簡単です。
sudo apt install -y firmware-b43-installer
でインストールします。
ドライバーは排他です
両方のドライバーを入れないで下さい。WindowsやmacOSと違って両方インストールできて、両方とも同時に動かすこともできます。基本、片方しか動かないように設定されますが、設定だけなので意図しない設定になったとき両方とも動いて不安定になります。
アンインストール
STAドライバー
STAドライバーの場合
sudo apt purge -y bcmwl-kernel-source && sudo apt autoremove -y
です。
b43
b43ドライバーの場合
sudo apt purge -y firmware-b43-installer && sudo apt autoremove -y
です。
Bluetoothテザリングを切断
ネットワークに繋がったらデスクトップ右下のトレイからネットワークアイコン(nm_tray)をクリックしてBluetoothテザリングの接続を切断します。
システムアップデート
システムアップデートを早いうちにやります。
sudo apt update && sudo apt upgrade -y
システムアップデートは頻繁に行います。できれば今後毎日行います。脆弱性の修正などがあるのにアップデートしてないのはまずいので最新にしておきましょう。
基本はupdate
をしたあとにupgrade
しますが、ここでは初回なのでupgrade
ではなくfull-upgrade
でも構いません。
ネットワーク設定
ネットワーク概要
🖧有線接続と🛜Wi-Fiをボンドでくっつけます。🖧有線接続がオフラインのとき🛜Wi-Fiに切り替わるようにします。
-
bond
ID
bond0
IP
固定IP
mode
active-backup
-
🖧Ethernet
ID
bond Ethernet
master
bond0
slave-type
bond
-
🛜Wi-Fi 5[GHz]帯
SSID
5[GHz]帯のSSID
psk
5[GHz]帯のパスフレーズ
master
bond0のUUID
slave-type
bond
-
🛜Wi-Fi 2.4[GHz]帯
SSID
2.4[GHz]帯のSSID
psk
2.4[GHz]帯のパスフレーズ
master
bond0のUUID
slave-type
bond
上記構成をnmcli
で構築します。
ネットワーク概要
🖧有線接続と🛜Wi-Fiをボンドでくっつけます。🖧有線接続がオフラインのとき🛜Wi-Fiに切り替わるようにします。
-
bond ID bond0 IP 固定IP mode active-backup -
🖧Ethernet ID bond Ethernet master bond0 slave-type bond -
🛜Wi-Fi 5[GHz]帯 SSID 5[GHz]帯のSSID psk 5[GHz]帯のパスフレーズ master bond0のUUID slave-type bond -
🛜Wi-Fi 2.4[GHz]帯 SSID 2.4[GHz]帯のSSID psk 2.4[GHz]帯のパスフレーズ master bond0のUUID slave-type bond
-
上記構成をnmcli
で構築します。
Bond
🖧有線LANと🛜Wi-Fiには通常は別のIPアドレスが振り分けられます。無理矢理に同じIPアドレスをつけても衝突して正しく動作しません。しかし、サーバーとして動作させるには一つのIPアドレスに固定する必要があります。その機能の一つとしてのボンドを使います。
ボンドとは複数のネットワークインターフェースを束ねて全部に同じIPアドレスを付ける機能です。ボンドという名前は接着剤のそれです。チーミングともいいます。
-
ネットワークデバイス確認
nmcli
を使ってネットワークデバイス名を確認します。ネットワークデバイス名がわかるならnmcli
以外の方法でも構いません。sudo nmcli device status
DEVICETYPESTATECONNECTIONAA:BB:CC:DD:EE:FFbt接続済み俺様のすまほwlp2s0Wi-Fi利用不可--enp1s0f0ethernet利用不可--loloopback管理無し--elp〜やeth〜で始まるデバイスが🖧有線LANです。wlp〜やwlan〜で始まるデバイスが🛜Wi-Fiです。
-
bond作成
sudo nmcli connection add type bond autoconnect no ifname bond0任意の名前 connection.autoconnect-priority 98大きい番号が優先されます。この設定は任意です。 connection.autoconnect-slaves 1 connection.id bond0任意の名前 ipv4.method manual ipv4.address 192.168.xxx.yyy/24サーバーに設定するIPアドレス ipv4.gateway 192.168.xxx.1ルーターのIPアドレスなど ipv4.dns 192.168.xxx.1ISPから提示されたIPアドレスやルーターのIPアドレスなど ipv6.method disabled bond.options "mode=active-backup,miimon=0,arp_interval=600IPアドレスのチェックをする間隔[ms],arp_ip_target=192.168.xxx.1pingが届く近くのIP,primary=enp1s0f0優先するネットワークデバイス名"
bondのuuidを確認して📋コピーや📝メモなどします。
sudo nmcli connection
NAMEUUIDTYPEDEVICEbond0aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeebondbond0俺様のすまほbbbbtttt-aaaa-bbbb-cccc-ddddddddddddbtAA:BB:CC:DD:EE:FF今つなげているWi-Fiの接続名wwwwiiii-ffff-iiii-aaaa-bbbbbbbbbbbbWi-Fiwlp2s0有線接続eeeetttt-hhhh-eeee-rrrr-nnnneeeettttethernetenp1s0f0 -
🖧有線LAN
bondに🖧有線LANを追加します。
sudo nmcli connection add type ethernet autoconnect no ifname enp1s0f0🖧有線LANのデバイス名 connection.autoconnect-priority 97大きい番号が優先されます。この設定は任意です。 connection.id "bond Ethernet"任意の名前 connection.master aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeebondのuuid connection.slave-type bond 802-3-ethernet.auto-negotiate yes
-
🛜Wi-Fi 2.4[GHz]帯
bondに🛜Wi-Fiを追加しますが、すでにある接続を流用します。
現在つなげている🛜Wi-Fiを複製して変更します。今回は2.4[GHz]帯に繋がっていました。
sudo nmcli connection clone 2.4[GHz]帯の接続名今つなげているWi-Fiの接続名 "bond Wi-Fi g"任意の名前
sudo nmcli connection modify "bond Wi-Fi g"複製した新しい接続の接続名 autoconnect no connection.autoconnect-retries 0 connection.autoconnect-priority 96大きい番号が優先されます。この設定は任意です。 connection.master aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeebondのuuid connection.slave-type bond 802-11-wireless.powersave 2 802-11-wireless-security.psk 2.4[GHz]帯のパスフレーズもし、バンドステアリングで2.4[GHz]と5[GHz]が同じSSIDを使っている場合は以下をスキップしてください。
-
🛜Wi-Fi 5[GHz]帯
bondに5[GHz]帯の🛜Wi-Fiも追加します。追加した2.4[GHz]帯の接続を流用します。
たった今、変更した接続を複製してさらに変更します。
sudo nmcli connection clone "bond Wi-Fi g"変更した接続名 "bond Wi-Fi a"任意の名前
sudo nmcli connection modify "bond Wi-Fi a"更に変更する接続の接続名 autoconnect no connection.autoconnect-retries 0 connection.autoconnect-priority 95大きい番号が優先されます。この設定は任意です。 connection.master aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeebondのuuid connection.slave-type bond 802-11-wireless.ssid 5[GHz]帯のSSID 802-11-wireless.powersave 2 802-11-wireless-security.psk 5[GHz]帯のパスフレーズ -
🛜Wi-Fiテスト
優先順位が低い5[GHz]帯からテストしていきます。🖧有線接続をしている場合はLANケーブルを抜いておきましょう。🛜Wi-Fiはそのままでいいです。バンドステアリングの場合は周波数帯に関わらず接続できた時点でOKとします。
sudo nmcli connection up "bond Wi-Fi a"5[GHz]帯の接続の接続名
接続ができない場合は以下を実行してみて下さい。
sudo modprobe -r wl
sudo modprobe wl
sudo systemctl restart NetworkManager次に2.4[GHz]帯のテストをします。
sudo nmcli connection up "bond Wi-Fi g"2.4[GHz]帯の接続の接続名
🛜Wi-Fiはなかなか繋がらないので粘り強く
とにかく消しては作って、作る順番を変えたり、少しずつオプションを付けたり、繫がるまで粘るしかないです。
-
bondに切り替え
bond作成前までのbondに参加しない🖧有線接続とbondに参加しない🛜Wi-Fiの自動接続をOFFにして、bondが自動接続するように設定します。
sudo nmcli connection modify bondに参加しない🖧有線接続bond作成前の🖧有線接続 autoconnect no
sudo nmcli connection modify bondに参加しない2.4[GHz]帯のWi-Fibond作成前のWi-Fi接続名 autoconnect no
sudo nmcli connection modify bond0作成したbondの接続名 autoconnect yes
sudo nmcli connection modify "bond Ethernet"bondの🖧有線接続 autoconnect yes
sudo nmcli connection modify "bond Wi-Fi g"bondの2.4[GHz]帯Wi-Fiの接続名 autoconnect yes
sudo nmcli connection modify "bond Wi-Fi a"bondの5[GHz]帯Wi-Fiの接続名 autoconnect yesbondに繋がらない場合
自動で切り替わらない場合はNetworkManagerの再起動をしてみます。
sudo systemctl restart NetworkManager
ドライバーの再起動もしないと繋がらない場合もあるかもしれません。
sudo modprobe -r wl
sudo modprobe wl
sudo systemctl restart NetworkManagerbondのテスト
🖧有線LANのケーブルを挿して、🖧有線接続に自動で接続されることを確認します。
次に🖧有線LANのケーブルを抜いて、🛜Wi-Fiに自動で切り替わるのを確認します。
確認が終わったら🖧有線LANのケーブルを挿します。
🛜Wi-Fi再接続スクリプト作成
-
サービス化
スクリプトを開始するサービスを登録する.serviceファイルを作成。
-
定期実行スクリプト作成
十数秒から数十秒ごとにチェックスクリプトを実行する。
-
ネットワーク確認スクリプト作成
pingが到達しなかったら🛜Wi-FiドライバーとNetworkManagerの再起動をする。
サービス化
スクリプトを開始するサービスを登録する.serviceファイルを作成。
定期実行スクリプト作成
十数秒から数十秒ごとにチェックスクリプトを実行する。
ネットワーク確認スクリプト作成
pingが到達しなかったら🛜Wi-FiドライバーとNetworkManagerの再起動をする。
rootは禁止
/root/ディレクトリはcd
コマンドでは入れませんし、入れるようにrootユーザーを有効にするのは過去のやり方です。sudo nano /root/xxx.txt
やsudo ls -lh /root/
などのように外からアクセスします。
pingチェックとエラーのときのドライバー再起動
スクリプト作成
pingを近くのIPアドレス、例えば常に起動しているルーターのIPアドレスなどに1回だけ発行して応答がなければ、🛜Wi-Fiのドライバーを再起動するスクリプトを作成します。IPアドレスはルーターなど近くて常時起動しているものにするのがいいでしょう。
ファイル名は自由です。ここではwifi_reconnect.shとして、/root/に置きました。拡張子は.shとしました。
sudo nano /root/wifi_reconnect.sh
#!/bin/bash
ping -c 1 192.168.xxx.1監視をする対象のIPアドレス
if test $? -eq 1; then
modprobe -r wl cfg80211 && sleep 1 && modprobe wl cfg80211 && sleep 3 && systemctl restart NetworkManager
fi
実行属性付加
ファイル属性の所有者に実行属性を追加します。
sudo chmod u+x /root/wifi_reconnect.sh
sudo chmod go-rwx /root/wifi_reconnect.sh
テスト
テストの前に🖧有線LANのケーブルを抜いて下さい。
意図的にドライバーを止めてテストしてみます。
sudo modprobe -r wl
sudo /root/wifi_reconnect.sh
反応があるまで待ちます。接続されればOKです。
一定時間ごとにチェックをするスクリプト
スクリプト作成
分単位であればcrontabが使えますが60秒未満はループで対応します。
ファイル名は自由です。ここではwifi_check.shとして/root/に置きました。拡張子は.shにしました。
/root/ディレクトリはcd
コマンドでは入れませんし、入れるようにrootユーザーを有効にするのは過去のやり方です。sudo nano /root/xxx.txt
やsudo ls -lh /root/
などのように外からアクセスします。
sudo nano /root/wifi_check.sh
#!/bin/bash
sleep 20
while true; do /root/wifi_reconnect.sh; sleep 15実行間隔[s]; done
上の例ではWi-Fiのチェックが終わってから15秒後にWi-Fiチェックを行います。15秒ごとではなく15秒とチェックにかかった時間ごとに繰り返されます。
実行属性付加
ファイル属性の所有者に実行を追加します。
sudo chmod u+x /root/wifi_check.sh
sudo chmod go-rwx /root/wifi_check.sh
テスト
意図的にドライバーを止めてテストしてみます。
sudo modprobe -r wl
sudo /root/wifi_check.sh
反応があるまで待ちます。接続されればOKです。Ctrl + cを押して終了しましょう。
サービスを登録する.serviceファイル
Wait
ドライバーがしっかり動作を開始するまで、数秒待ってスクリプトを呼び出します。待ちすぎると次のサービス開始に支障が出ると同時に、全体の立ち上がりそのものが遅くなります。
サービス作成先
Lubuntu(Ubuntu)では次の場所に.serviceを作ります。
作成
ファイル名は自由ですが拡張子は.serviceにします。今回はwifi_check_init.serviceとしました。
sudo nano /etc/systemd/system/wifi_check_init.service
[Unit]
Description=Wi-Fi check startarこのサービスの説明書き
After=network.target
[Service]
Type=oneshot
ExecStart=/root/wifi_check.shWi-Fiチェックスクリプト
[Install]
WantedBy=multi-user.target
セットアップ
ファイル属性を所有者のみ読み書き可能とします。
sudo chmod go-rw /etc/wifi_check_init.service
サービスとして登録します。
sudo systemctl enable wifi_check_init.service
sudo systemctl start wifi_check_init.service
テスト
🛜Wi-Fiを切断して再接続されることを確認します。
sudo nmcli connection down "bond Wi-Fi g"現在接続中のWi-Fi
有線に戻す
一通りの確認が終わったら🖧有線LANのケーブルを挿します。
キーボードバックライト設定
brightnessctl
brightnessctlを使うと自動で調光、オン・オフは出来ませんが手動で調光、オン・オフできます。
キーボードバックライト設定
brightnessctl
brightnessctlを使うと自動で調光、オン・オフは出来ませんが手動で調光、オン・オフできます。
インストール
最初から入っていなさそうなアプリなのでインストールの確認をしないでインストールしましょう。もしすでにインストールされていてもaptを使っているなら問題ありません。
sudo apt install -y brightnessctl
操作方法
MacBook Pro13 2012Midでは次のようなコマンドで調光できます。
sudo brightnessctl -d *smc::kbd* set 20%
sudo | 管理者権限 |
---|---|
brightnessctl | ユーティリティー名 |
-d | デバイスの操作 |
*smc::kbd* |
キーボードバックライトのデバイス名。ワイルドカードが使用できます。 |
set 20% |
操作
|
値は最小値から最大値までの数値以外に数値の後ろに%を付けて割合、数値の前に+,-を付けて現在の値から増減ができます。
デバイス一覧
なお、デバイスの一覧は-l
オプションで表示できます。
ウォッチドッグタイマー
watchdogで監視
今回はsoftdogを使ってpingの監視をします。
ウォッチドッグタイマー
watchdogで監視
今回はsoftdogを使ってpingの監視をします。
セットアップ
インストール
watchdogをインストールする。
sudo apt install -y watchdog
ウォッチドッグタイマーデバイス
ハードウェアのウォッチドッグタイマーデバイスがあればそれを使います。今回はないのでソフトウェアのウォッチドッグタイマーデバイスであるsoftdogを使います。
監視対象
近くのIPアドレスへのpingが通らなければOSの再起動。
kernel panic
softdogで検知できないkernel panicの対策については下のようにする。
/etc/sysctl.confの一番下の行に以下を追加する。
sudo nano /etc/sysctl.conf
・・・
kernel.panic = 60
kernel.panic_on_oops = 1
有効にします。
sudo sysctl -p
sudo reboot
とはいえsoftdogはソフトウェアなのでシステムの不調内容によってはどうすることもできないこともあります。その場合はもう人の手による共棲強制再起動になります。
Wait
🛜Wi-Fiが安定するまでウォッチドッグタイマーを起動しないようにする
watchdogのsystemctlファイルのAfter
にnetwork-connect.target
を追加する。
🛜Wi-Fiが安定する前に再起動してしまう場合はExecStart
にsleepを入れてwatchdogを遅らせてみる。
設定
設定ファイル
watchdogの設定ファイルは/etc/default/watchdogと/etc/watchdog.confです。
/etc/default/watchdog
/etc/default/watchdogにウォッチドッグタイマの有効無効と監視対象を設定します。
sudo nano /etc/default/watchdog
# Start watchdog at boot time? 0 or 1
run_watchdog=1
# Start wd_keepalive after stopping watchdog? 0 or 1
run_wd_keepalive=1
# Load module before starting watchdog
watchdog_module="softdog""none"
# Specify additional watchdog options here (see manpage).
run_watchdog |
|
||||
---|---|---|---|---|---|
run_wd_keepalive |
|
||||
watchdog_module | ウォッチドッグタイマーのデバイス名 |
/etc/watchdog.conf
/etc/watchdog.confには監視の種類を設定します。
sudo nano /etc/watchdog.conf
・・・
# ====================== Other system settings ========================
#
# Interval between tests. Should be a couple of seconds shorter than
# the hardware time-out value.
#interval = 1
・・・
# ====================== Typical tests ===============================
#
# Specify any IPv4 numeric addresses to be probed.
# NOTE: You should check you have permission to ping any machine before
# using it as a test. Also remember if the target goes down then this
# machine will reboot as a result!
#ping = 172.16.0.1
#ping = 192.168.xxx.1監視するIPアドレス
・・・
interval | 監視間隔 |
---|---|
ping | pingで監視するときの監視対象IPアドレス |
watchdogサービス
サービスの改造
🛜Wi-Fiが安定するまでウォッチドッグタイマーが作動しないように/etc/systemd/system/watchdog.serviceファイルを変更します。
ネットワークが繋がったあとに起動させる設定。
sudo nano /etc/systemd/system/watchdog.service
[Unit]
Description=watchdog daemon
Conflicts=wd_keepalive.service
After=multi-user.target network-online.target
OnFailure=wd_keepalive.service
・・・
sudo reboot
network-online.target
を待つことでネットワークが繫がるまで処理が止まります。
サービス開始
OSを再起動します。
再起動の繰り返しを停止
もし、再起動が繰り返されるようなら、再起動したら素早くログインしてウォッチドッグタイマーを止めます。
sudo systemctl stop watchdog.service
sudo systemctl disable watchdog.service
再起動が繰り返される対策
更に以下のようにスリープして待つ対策をします。
sudo nano /etc/systemd/system/watchdog.service
・・・
[Service]
Type=forking
EnvironmentFile=/etc/default/watchdog
ExecStartPre=/bin/sh -c '[ -z "${watchdog_module}" ] || [ "${watchdog_module}" = "none" ] || /sbin/modprobe $watchdog_module'
ExecStart=/bin/sh -c '[ $run_watchdog != 1 ] || sleep 2m更に待つ時間 && exec /usr/sbin/watchdog $watchdog_options'
ExecStopPost=/bin/sh -c '[ $run_wd_keepalive != 1 ] || false'
TimeoutStartSec=360
・・・
再度サービス開始
OSを再起動してみます。流石に2分待っても再起動するのであれば別の問題がありそうです。
再起動が連発
再起動が連続してどうする事もできないなら⏻電源ボタン長押しなどで電源を落として、インストールメディアをセットしてLubuntuを起動します。/のパーティションに入れるならwatchdogの設定ファイルを書き換えるなどして復旧しましょう。この状態からなら再インストールという手段も取ることができます。
ファイアウォール
ufwを使う
ファイアウォールの設定はufwというツールを使います。
初期値を「全て破棄」に設定して、ファイアウォールを有効化します。
sudo ufw default deny
sudo ufw enable
ファイアウォール
ufwを使う
ファイアウォールの設定はufwというツールを使います。
初期値を「全て破棄」に設定して、ファイアウォールを有効化します。
sudo ufw default deny
sudo ufw enable
Linuxのファイアウォール
ファイアウォールの機能はipチェーンという最初からOSに内蔵されている機能です。すごく柔軟なシステムで高度な設定ができる反面、基本的な設定でも複雑な構文になるためufwというツールを使って簡単にipチェーンの設定をします。
ufwは外から中へのポートとプロトコルの許可、不許可とアドレスによるフィルターという基本的なことしか設定できませんが通常はこれで十分すぎるだけのことはできます。
ufwのインストール
インストールされているかチェックします。
dpkg -l ufw
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(R)要再インストール(状態,エラーの大文字=異常)
||/ 名前 バージョン アーキテクチ 説明
+++-==============-============-============-=========================================
un ufw <なし> <なし> (説明(description)がありません)
lines 1-6/6 (END)
左から二文字目がiならインストール済みです。それ以外ならインストールが必要です。
sudo apt install -y ufw
設定方針
基本はポートとプロトコルの通過、遮断を設定します。IPアドレスを細かく指定することもできます。
設定例
ポート9090番をTCPで開ける
sudo ufw allow 9090操作するポート番号/tcpプロトコル
sudo | 管理者権限 |
---|---|
ufw | ユーティリティー名 |
allow | 許可 |
9090ポート番号/tcpプロトコル | ポート番号/プロトコル |
IPアドレスを省略するとIPv4用とIPv6用の二つのルールが作成されます。
この場合は単純にポートが開くだけなので、このポートへのすべてのアドレスからのTCP通信を許可します。
ポート9090番をTCPでIPv4に対して開ける
sudo ufw allow from 0.0.0.0/0 to any port 9090操作するポート番号 proto tcpプロトコル
sudo | 管理者権限 |
---|---|
ufw | ユーティリティー名 |
allow | 許可 |
from 0.0.0.0/0 to any | IPv4 |
port 9090ポート番号 | ポート番号 |
proto tcpプロトコル | プロトコル |
fromがIPv4の文法なのでIPv4用のルールが作成されます。
ここで重要なのはサブネットマスクが/0のところです。/0ということは32ビット全て0、0とのANDは0なのでどのようなIPアドレスも0.0.0.0になります。0.0.0.0にはネットワークを表すアドレスが含まれていません。よってネットワークを識別できず全てのIPv4のアドレスが対象になります。
ポート9090番をTCPでIPv6に対して開ける
sudo ufw allow from ::/0 to any port 9090操作するポート番号 proto tcpプロトコル
sudo | 管理者権限 |
---|---|
ufw | ユーティリティー名 |
allow | 許可 |
from ::/0 to any | IPv6 |
port 9090ポート番号 | ポート番号 |
proto tcpプロトコル | プロトコル |
fromがIPv6の文法なのでIPv6用のルールが作成されます。
前述のIPv4と同じ理由でサブネットマスクが/0。よって全てのIPv6のアドレスが対象となります。
ポート19132番をUDPで特定のIPv4ネットワークに対して開ける
sudo ufw allow from 192.168.xxx.0/24対象にするネットワークアドレス to any port 19132操作するポート番号 proto udpプロトコル
sudo | 管理者権限 |
---|---|
ufw | ユーティリティー名 |
allow | 許可 |
from 192.168.xxx.0/24ネットワークを表すアドレスto any | ネットワークを表すアドレス |
port 19132ポート番号 | ポート番号 |
proto udpプロトコル | プロトコル |
サブネットマスクが24ビットなのでネットワークを表すアドレスは192.168.xxxの部分です。サブネットマスクが24ビットというのは左から24ビットが1で残りの右側が0。言い換えると上の桁から1を24ビット分、残りの下の桁は0というビット列で、このビット列とIPアドレスのANDの結果がネットワークを表すアドレスになるという意味です。
ポート60000から60100をTCPで開ける
sudo ufw allow 60000開始番号:60100終了番号/tcpプロトコル
sudo | 管理者権限 |
---|---|
ufw | ユーティリティー名 |
allow | 許可 |
60000開始番号:60100終了番号 | ポート番号範囲/プロトコル |
範囲のあるポート番号は開始番号:終了番号
という形で開始番号と終了番号の間に:を入れて繋ぎます。
ポート19132と19134をUDPでIPv4に対して開ける
sudo ufw allow from 0.0.0.0/0 to any port 191321つ目のポート番号,191342つ目のポート番号 proto udpプロトコル
sudo | 管理者権限 |
---|---|
ufw | ユーティリティー名 |
allow | 許可 |
from 0.0.0.0/0 to any | IPv4 |
port 191321番目の番号,191342つ目の番号 | 複数のポート番号 |
proto udpプロトコル | プロトコル |
複数のポート番号は1つ目の番号,2つ目の番号,3つ目の番号,...,n番目の番号
という形で,で繋げます。
アプリ名でポートを開ける
指定できるアプリ名は決まっているので何が指定できるか確認します。ufw app list
で確認できます。
sudo ufw app list
Apache
Apache Full
Apache Secure
OpenSSH
sudo ufw allow "Apache Full"
sudo | 管理者権限 |
---|---|
ufw | ユーティリティー名 |
allow | 許可 |
"Apache Full"アプリ名 | アプリ名 |
アプリをインストールすることでufwのアプリ一覧に登録されることがあります。登録された状態でないとルールの追加ができません。
アプリ名でポートをTCPで特定のIPv4ネットワークに対して開ける
sudo ufw allow from 192.168.xxx.0/24 to any app OpenSSHアプリ名 proto tcpプロトコル
sudo | 管理者権限 |
---|---|
ufw | ユーティリティー名 |
allow | 許可 |
from 192.168.xxx.0/24ネットワークを表すアドレスto any | ネットワークを表すアドレス |
app OpenSSHアプリ名 | アプリ名 |
proto tcpプロトコル | プロトコル |
アプリ名でIPアドレス設定する場合は 引 数 にappを指定します。
ポート名で指定してIPv4ネットワークに対して開ける
sudo ufw allow from 0.0.0.0/0 to any port ftpポート名 proto tcpプロトコル
sudo | 管理者権限 |
---|---|
ufw | ユーティリティー名 |
allow | 許可 |
from 0.0.0.0/0 to any | IPv4 |
port ftpポート名 | ポート名 |
proto tcpプロトコル | プロトコル |
いくつかのポートはポート名で指定可能です。ただwwwはアプリ名でApache、sshもアプリ名でOpenSSH。vsftpdは指定できなかつたのでftpは使える感じです。
ルールを消す
ルールを削除するにはルールの一覧と番号を知る必要があります。一覧を表示するにはstatus
オプションを付けます。
sudo ufw status
さらにnumbered
を付けると番号付きでルールの一覧が表示されます。
sudo ufw delete 999番号
削除と挿入の操作例
sudo ufw status numbered
状態: アクティブ
To
Action
From
--
------
----
[ 1]
OpenSSH
ALLOW
192.168.xxx.0/24
[ 2]
21/tcp
ALLOW
Anywhere
[ 3]
Apache Full
ALLOW
Anywhere
[ 4]
9090/tcp
ALLOW
Anywhere
[ 5]
3389/tcp
ALLOW
192.168.xxx.0/24
[ 6]
19132, 19134/tcp
ALLOW
Anywhere
[ 7]
60000:60100/tcp
ALLOW
Anywhere
[ 8]
19132, 19134/udp
ALLOW
Anywhere
[ 9]
Apache Full (v6)
ALLOW
Anywhere (v6)
[10]
9090/tcp
ALLOW
Anywhere (v6)
[11]
19133, 19135/udp (v6)
ALLOW
Anywhere (v6)
[12]
19132, 19134/udp (v6)
ALLOW
Anywhere (v6)
上記のルールの間違いを修正しながら削除と挿入の操作をしてみます。
仕様
- Minecraftのワールド1とワールド2の通信を通過させる。
- ポート番号はIPv4が19132と19134。IPv6が19133と19135。
- ワールド1は19132と19133。ワールド2は19134と19135に割り当てる。
- Minecraftはudpで通信する。
ワールド1 | ワールド2 | |
---|---|---|
IPv4 | 19132 | 19134 |
IPv6 | 19133 | 19135 |
何が起きてる?
- 19132と19134を開けたがtcpであることに気づいた。
- 慌てて19132と19134をudpで追加したがぐちゃぐちゃになった。
修正方針
[ 6]
が間違って登録したtcpのルールなのでこれを消す。[12]
はIPv6だが19132, 19134はIPv4のルールなのでこれも消す。[ 8]
は正しいが本来[ 6]
の位置なのでこれも消す。[11]
はIPv6のルールで正しいのでこのままにする。[ 6]
の位置に正しくルールを登録する。
-
[ 6]
を消す。sudo ufw status numbered
状態: アクティブ
ToActionFrom------------・・・[ 6]19132, 19134/tcpALLOWAnywhere・・・
削除:
allow 19132, 19134/tcp
操作を続けますか (y|n)? y
ルールを削除しました
sudo ufw status numbered
状態: アクティブ
ToActionFrom------------[ 1]OpenSSHALLOW192.168.xxx.0/24[ 2]21/tcpALLOWAnywhere[ 3]Apache FullALLOWAnywhere[ 4]9090/tcpALLOWAnywhere[ 5]3389/tcpALLOW192.168.xxx.0/24[ 6]60000:60100/tcpALLOWAnywhere[ 7]19132, 19134/udpALLOWAnywhere[ 8]Apache Full (v6)ALLOWAnywhere (v6)[ 9]9090/tcpALLOWAnywhere (v6)[10]19133, 19135/udp (v6)ALLOWAnywhere (v6)[11]19132, 19134/udp (v6)ALLOWAnywhere (v6)[ 6]
を消したあとにsudo ufw status numbered
を行って下さい。[ 6]
が無くなったことにより7→6,8→7,…,12→11とシフトするので次に行いたい操作のルールの番号が変わっている為、確認が必要です。 -
[11]
(最初12だったもの)を消す。sudo ufw delete 11
削除:
allow 19132, 19134/udp
操作を続けますか (y/n)? y
ルールを削除しました (v6)
sudo ufw status numbered
状態: アクティブ
ToActionFrom------------・・・[10]19133, 19135/udp (v6)ALLOWAnywhere (v6)[11]
は最後の項目なのでシフトは起きません。 -
[ 7]
(最初8だったもの)を消す。sudo ufw delete 7
削除:
allow 19132, 19134/udp
操作を続けますか (y/n)? y
ルールを削除しました
sudo ufw status numbered
状態: アクティブ
ToActionFrom------------・・・[ 6]60000:60100/tcpALLOWAnywhere[ 7]Apache Full (v6)ALLOWAnywhere (v6)[ 8]9090/tcpALLOWAnywhere (v6)[ 9]19133, 19135/udp (v6)ALLOWAnywhere (v6)[ 7]
を消したので8から後ろはシフトして一つ番号が低くなっています。 -
[ 6]
に19132, 19134を挿入する。最後尾に追加だけではなく途中に挿入することもできます。
sudo ufw insert 6 allow from 0.0.0.0/0 to any port 19132,19134 proto udp
sudo 管理者権限 ufw ユーティリティー名 insert 6 6番に挿入 allow 許可 from 0.0.0.0/0 to any IPv4アドレス port 19132,19134 ポート番号 proto udp プロトコル sudo ufw insert 6 allow from 0.0.0.0/0 to any port 19132,19134 proto udp
ルールを挿入しました
sudo ufw status numbered
状態: アクティブ
ToActionFrom------------・・・[ 6]19132, 19134/udpALLOWAnywhere[ 7]60000:60100/tcpALLOWAnywhere[ 8]Apache Full (v6)ALLOWAnywhere (v6)[ 9]9090/tcpALLOWAnywhere (v6)[10]19133, 19135/udp (v6)ALLOWAnywhere (v6)
SSHサーバー
OpenSSHを使う
インストールされていないならインストールします。今回は設定の変更はしていません。
ファイアウォールにLAN内からのOpenSSHへのアクセスを許可します。
SSHサーバー
OpenSSHを使う
インストールされていないならインストールします。今回は設定の変更はしていません。
ファイアウォールにLAN内からのOpenSSHへのアクセスを許可します。
インストール
インストールされているかチェックします。
dpkg -l openssh-server
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(R)要再インストール(状態,エラーの大文字=異常)
||/ 名前 バージョン アーキテクチ 説明
+++-==============-==================-============-=================================================================
ii openssh-server 1:8.9p1-3ubuntu0.7 amd64 secure shell (SSH) server, for secure access from remote machines
lines 1-6/6 (END)
左から二文字目がiならインストール済みです。それ以外ならインストールが必要です。
sudo apt install -y openssh-server
ファイアウォール
ファイアウォールを設定するufwは一部だけですがアプリケーション名で設定ができます。設定できるアプリケーションはapp list
オプションで確認できます。なお、新たにアプリケーションをインストールするとufwで設定できるアプリケーションが増えることがあります。そしてOpenSSHは一覧にあるアプリです。
sudo ufw app list
Apache
Apache Full
Apache Secure
OpenSSH
sudo ufw allow from 192.168.xxx.0/24LANのアドレスとサブネット to any app OpenSSH
sudo ufw reload
localhostでテスト
ターミナルからsshコマンドでアクセスしてみます。
ssh oresamaユーザーID@localhost
パスワード:
oresama@localhost:~$
logout
他の端末からテスト
他の端末からアクセスできるか確認します。
ssh oresamaユーザー名@192.168.xxx.yyyサーバーのIPアドレス
パスワード:
oresama@192.168.xxx.yyy:~$
logout
FTPサーバー
vsftpdを使う
今回はvsftpdにしましたが何でもいいです。
FTPサーバー
vsftpdを使う
今回はvsftpdにしましたが何でもいいです。
インストール
FTPサーバーとしてvsFtpdを入れます。
sudo apt install -y vsftpd
設定
FTPサーバーの設定をします。設定ファイルは/etc/vsftp.confにあります。
- IPv4で運用
- IPv6ではアクセス禁止
- 匿名でのアクセス禁止
- ホストユーザーでログイン
- テキストファイルの改行コードを考慮
- ファイル名はUTF-8
- パッシブモード(60000から60100までの100個)で運用
sudo nano /etc/vsftp.conf
・・・
# Run standalone? vsftpd can run either from an inetd or as a standalone
# daemon started from an initscript.
listen=YESNO
#
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
listen_IPv6=NOYES
・・・
# Uncomment this to enable any form of FTP write command.
#write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022
・・・
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
・・・
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
#chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
allow_writeable_chroot=YES
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
・・・
# Uncomment this to indicate that vsftpd use a utf8 filesystem.
#utf8_filesystem=YES
pasv_min_port=60000
pasv_max_port=60100
項目 | 内容 |
---|---|
listen | IPv4で待ち受け |
listen_IPv6 | IPv6は却下 |
write_enable | 書き込み許可 |
local_umask | 022 |
ascii_upload_enable | アップロードはテキストは改行を考慮 |
ascii_download_enable | ダウンロードもテキストは改行を考慮 |
chroot_local_user | 管理者はローカルユーザー |
chroot_list_enable | 管理者はホワイトリストを使う |
chroot_list_file | 管理者ホワイトリストのパス |
allow_writeable_chroot | 管理者書き込み可能 |
ls_recurse_enable | ディレクトリ再帰処理を許可 |
utf8_filesystem | ファイル名はUTF-8 |
pasv_min_port | パッシブモードで使うポートの開始番号 |
pasv_max_port | パッシブモードで使うポートの終了番号 |
ファイアウォール
ファイアウォールの設定を変更します。パッシブモードでFTPを動かすのでポート20(ftpdata)は破棄して、/etc/vsftpd.confに設定したポート60000〜60100設定した範囲を許可します。
sudo ufw allow from 192.168.xxx.0/24アクセスを許可するネットワークのIPアドレスとサブネットマスク to any port ftp proto tcp
sudo ufw allow from 192.168.xxx.0/24アクセスを許可するネットワークのIPアドレスとサブネットマスク to any port 60000:60100 proto tcp
sudo ufw reload
実行
FTPサーバーを再起動します。
sudo systemctl restart vsftpd.service
テスト
localhostからアクセスしてみます。
ftp oresamaログインするユーザー名@localhost
Trying [::1]:21 ...
Connected to localhost.
220 (vsFTPd 3.0.5)
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
quit
minecraft統合版サーバーUbuntu版
準備
構築先
/opt/bedrock/に構築します。
アカウント作成
マイクラサーバー用のユーザーを作成します。
sudo adduser minecraft任意のID
セットアップ
構築するディレクトリを作成し、所有者をマイクラサーバー用のユーザーに変更します。
cd /opt/
sudo mkdir bedrock
sudo chown minecraftマイクラサーバー用のユーザーID: bedrock/
tmux
tmux上でマイクラサーバーを実行しますのでtmuxをインストールします。
sudo apt install -y tmux
curl
ダウンロードするためのコンソール用ブラウザーをインストールします。今回はcurlを使いましたがwgetもよく使われます。
sudo apt install -y curl
ダウンロードと解凍
URL取得
minecraft統合版サーバーUbuntu版のURLを📋コピーや📝メモします。
ダウンロードと解凍
⮋ダウンロードして🗜解凍します。なお、この先しばらくはマイクラサーバー用のユーザーで作業します。
su - minecraftマイクラサーバー用のユーザーID
パスワード:
cd /opt/bedrock/
curl -L -O https://minecraft.azureedge.net/bin-linux/bedrock-server-x.xx.xx.xx.zip最新のminecraft統合版サーバーUbuntu版のファイルURL
unzip bedrock-server-x.xx.xx.xx.zip最新のminecraft統合版サーバーUbuntu版のアーカイブファイル名 -d bedrock構築先
unzip bedrock-server-x.xx.xx.xx.zip最新のminecraft統合版サーバーUbuntu版のアーカイブファイル名 -d x簡単なディレクトリ名
server.properties
サーバーの動作設定
minecraft統合版サーバーUbuntu版の設定ファイルserver.propertiesを変更します。
サーバー名、ゲーム難易度、視界距離、計算範囲、権限設定など基本的なことが設定できます。bedrock_server_how_to.htmlに設定できるすべての説明が英文であります。
- サバイバル
- Easy
- コマンド禁止
- ホワイトリスト
サーバー名 | OreSama Server | ||||
---|---|---|---|---|---|
ゲームモード | Survival | ||||
難易度 | Easy | ||||
コマンドの使用 | 不可 | ||||
制限人数 | 10キャラ | ||||
ホワイトリスト | 使用 | ||||
ポート番号 |
|
||||
表示距離 | 32チャンク | ||||
計算距離 | 4チャンク | ||||
強制切断タイムアウト | 無し | ||||
スレッド制限 | 無し | ||||
ワールド名 | OreSama World | ||||
クライアント補正 | 使用 |
cd bedrock/
nano server.property
server-name=§o§6OreSama§r ServerDedicated Server
# Used as the server name
# Allowed values: Any string without semicolon symbol.
gamemode=survival
# Sets the game mode for new players.
# Allowed values: "survival", "creative", or "adventure"
force-gamemode=truefalse
# force-gamemode=false (or force-gamemode is not defined in the server.properties)
# prevents the server from sending to the client gamemode values other
# than the gamemode value saved by the server during world creation
# even if those values are set in server.properties after world creation.
#
# force-gamemode=true forces the server to send to the client gamemode values
# other than the gamemode value saved by the server during world creation
# if those values are set in server.properties after world creation.
difficulty=easy
# Sets the difficulty of the world.
# Allowed values: "peaceful", "easy", "normal", or "hard"
allow-cheats=false
# If true then cheats like commands can be used.
# Allowed values: "true" or "false"
max-players=10
# The maximum number of players that can play on the server.
# Allowed values: Any positive integer
online-mode=true
# If true then all connected players must be authenticated to Xbox Live.
# Clients connecting to remote (non-LAN) servers will always require Xbox Live authentication regardless of this setting.
# If the server accepts connections from the Internet, then it's highly recommended to enable online-mode.
# Allowed values: "true" or "false"
allow-list=truefalse
# If true then all connected players must be listed in the separate allowlist.json file.
# Allowed values: "true" or "false"
server-port=19132
# Which IPv4 port the server should listen to.
# Allowed values: Integers in the range [1, 65535]
server-portv6=19133
# Which IPv6 port the server should listen to.
# Allowed values: Integers in the range [1, 65535]
enable-lan-visibility=true
# Listen and respond to clients that are looking for servers on the LAN. This will cause the server
# to bind to the default ports (19132, 19133) even when `server-port` and `server-portv6`
# have non-default values. Consider turning this off if LAN discovery is not desirable, or when
# running multiple servers on the same host may lead to port conflicts.
# Allowed values: "true" or "false"
view-distance=32
# The maximum allowed view distance in number of chunks.
# Allowed values: Positive integer equal to 5 or greater.
tick-distance=4
# The world will be ticked this many chunks away from any player.
# Allowed values: Integers in the range [4, 12]
player-idle-timeout=030
# After a player has idled for this many minutes they will be kicked. If set to 0 then players can idle indefinitely.
# Allowed values: Any non-negative integer.
max-threads=08
# Maximum number of threads the server will try to use. If set to 0 or removed then it will use as many as possible.
# Allowed values: Any positive integer.
level-name=OreSama worldBedrock level
# Allowed values: Any string without semicolon symbol or symbols illegal for file name: /\n\r\t\f`?*\\<>|\":
level-seed=
# Use to randomize the world
# Allowed values: Any string
default-player-permission-level=visitormember
# Permission level for new players joining for the first time.
# Allowed values: "visitor", "member", "operator"
texturepack-required=false
# Force clients to use texture packs in the current world
# Allowed values: "true" or "false"
content-log-file-enabled=false
# Enables logging content errors to a file
# Allowed values: "true" or "false"
compression-threshold=1
# Determines the smallest size of raw network payload to compress
# Allowed values: 0-65535
compression-algorithm=zlib
# Determines the compression algorithm to use for networking
# Allowed values: "zlib", "snappy"
server-authoritative-movement=server-auth-with-rewindserver-auth
# Allowed values: "client-auth", "server-auth", "server-auth-with-rewind"
# Enables server authoritative movement. If "server-auth", the server will replay local user input on
# the server and send down corrections when the client's position doesn't match the server's.
# If "server-auth-with-rewind" is enabled and the server sends a correction, the clients will be instructed
# to rewind time back to the correction time, apply the correction, then replay all the player's inputs since then. This results in smoother and more frequent corrections.
# Corrections will only happen if correct-player-movement is set to true.
player-position-acceptance-threshold=0.5
# Only used with "server-auth-with-rewind".
# This is the tolerance of discrepancies between the Client and Server Player position. This helps prevent sending corrections too frequently
# for non-cheating players in cases where the server and client have different perceptions about when a motion started. For example damage knockback or being pushed by pistons.
# The higher the number, the more tolerant the server will be before asking for a correction. Values beyond 1.0 have increased chances of allowing cheating.
server-authoritative-block-breaking=truefalse
server-authoritative-block-breaking-pick-range-scalar=1.5
# If true, the server will compute block mining operations in sync with the client so it can verify that the client should be able to break blocks when it thinks it can.
chat-restriction=None
# Allowed values: "None", "Dropped", "Disabled"
# This represents the level of restriction applied to the chat for each player that joins the server.
# "None" is the default and represents regular free chat.
# "Dropped" means the chat messages are dropped and never sent to any client. Players receive a message to let them know the feature is disabled.
# "Disabled" means that unless the player is an operator, the chat UI does not even appear. No information is displayed to the player.
disable-player-interaction=false
# If true, the server will inform clients that they should ignore other players when interacting with the world. This is not server authoritative.
client-side-chunk-generation-enabled=true
# If true, the server will inform clients that they have the ability to generate visual level chunks outside of player interaction distances.
block-network-ids-are-hashes=true
# If true, the server will send hashed block network ID's instead of id's that start from 0 and go up. These id's are stable and won't change regardless of other block changes.
disable-persona=false
# Internal Use Only
disable-custom-skins=false
# If true, disable players customized skins that were customized outside of the Minecraft store assets or in game assets. This is used to disable possibly offensive custom skins players make.
server-build-radius-ratio=Disabled
# Allowed values: "Disabled" or any value in range [0.0, 1.0]
# If "Disabled" the server will dynamically calculate how much of the player's view it will generate, assigning the rest to the client to build.
# Otherwise from the overridden ratio tell the server how much of the player's view to generate, disregarding client hardware capability.
# Only valid if client-side-chunk-generation-enabled is enabled
allow-outbound-script-debugging=false
# Allows script debugger 'connect' command and script-debugger-auto-attach=connect mode.
allow-inbound-script-debugging=false
# Allows script debugger 'listen' command and script-debugger-auto-attach=listen mode.
#force-inbound-debug-port=19144
# Locks the inbound (listen) debugger port, if not set then default 19144 will be used. Required when using script-debugger-auto-attach=listen mode.
script-debugger-auto-attach=disabled
# Attempt to attach script debugger at level load, requires that either inbound port or connect address is set and that inbound or outbound connections are enabled.
# "disabled" will not auto attach.
# "connect" server will attempt to connect to debugger in listening mode on the specified port.
# "listen" server will listen to inbound connect attempts from debugger using connect mode on the specified port.
#script-debugger-auto-attach-connect-address=localhost:19144
# When auto attach mode is set to 'connect', use this address in the form host:port. Required for script-debugger-auto-attach=connect mode.
server-name | 任意のサーバー名 | ||||||
---|---|---|---|---|---|---|---|
gamemode |
|
||||||
force-gamemode | クライアント側で設定を変更してもサーバーのゲームモードに戻される | ||||||
difficulty |
難易度
|
||||||
allow-cheats | チートの許可 | ||||||
max-players | プレイヤー制限人数 | ||||||
online-mode | Xbox Liveアカウントでログイン | ||||||
allow-list | ホワイトリストサーバーにする | ||||||
server-port | IPv4のポート番号 | ||||||
server-portv6 | IPv6のポート番号 | ||||||
enable-lan-visibility | LANに表示する | ||||||
view-distance | 描画距離 | ||||||
tick-distance | 計算距離 | ||||||
player-idle-timeout | 一定時間動作がないユーザーをログアウトするまでの時間。制限しない場合は0にする。 | ||||||
max-threads | スレッド数制限。制限しない場合は0にする。 | ||||||
level-name | ワールド名 | ||||||
level-seed | シード値。空白の場合はランダム | ||||||
default-player-permission-level |
|
||||||
texturepack-required | 必要なテクスチャーパックを入れていないといけない。 | ||||||
content-log-file-enabled | ログに残す | ||||||
compression-threshold | ネットワークデーター圧縮率 | ||||||
compression-algorithm | 圧縮方式 | ||||||
|
サーバーとクライアントのズレの補修方法 | ||||||
chat-restriction |
|
||||||
|
変更の必要なし、用途不明、内部で使用 | ||||||
disable-custom-skin | ユーザーカスタムスキンを禁止 |
ホワイトリスト
ホワイトリストを有効にする
ホワイトリストでの運用はserver.propertyでの設定のほかallowlist.jsonとpermissions.jsonへのユーザー登録が必要になります。
allowlist.json
allowlist.jsonにはゲーマータグとxuid(MCID)をjsonフォーマットで登録します。
nano allowlist.json
[
{
"ignoresPlayerLimit":falseプレイヤー制限人数へのカウント対象,
"name":"HogeHogeHageゲーマータグ",
"xuid":"1234567890123456xuid(MCID)"
},
]
[
ファイルの先頭はかぎ括弧[で始める。
{
1ユーザーごとに波括弧{で括る。{から},が1ユーザー分になります。
"ignoresPlayerLimit":
trueならユーザー制限人数の対象になります。ワールドの人数が制限人数に達している場合はワールドに入ることが出来ません。falseならワールドの人数が制限人数に達していてもワールドに入ることが出来ます。
"name":
Xbox Liveアカウントのユーザー名。マイクラ内からは設定にゲーマータグとして表示されます。
"xuid":
設定しなくても自動で設定されます。マイクラ内からは設定にMCIDとして表示されます。
},
1ユーザーの終わりは右波括弧とカンマ},で終わる。
{
次のユーザーの開始の波括弧。
・・・
]
ファイルの末尾はかぎ括弧]で終わる。
permissions.json
permissions.jsonにはxuid(MCID)の権限をjsonフォーマットで登録します。
nano permissions.json
[
{
"permission": "operator権限",
"xuid": "1234567890123456xuid(MCID)"
},
]
[
ファイルの先頭はかぎ括弧[で始める。
{
1ユーザーごとに波括弧{で括る。{から},が1ユーザー分になります。
"permission":
ゲーム内での権限を設定します。管理者の"operator"、ブロックの破壊が可能な"member"、ドアなどの操作のみ可能な"visitor"を設定します。
"xuid":
権限を変更するユーザーのxuidを設定します。マイクラ内からは設定にMCIDとして表示されます。
},
1ユーザーの終わりは右波括弧とカンマ},で終わる。
{
次のユーザーの開始の波括弧。
・・・
]
ファイルの末尾はかぎ括弧]で終わる。
操作用スクリプト作成
起動、停止、バックアップを行うスクリプトを作成します。ファイル名はminecraft.shとしました。
cd ../
sudo nano minecraft.sh
#!/bin/bash
#
# bedrock_server start/stop/backup script
#
# bedrock_server 実行ユーザ
USERNAME='minecraftマイクラサーバー用のユーザーID'
# session名
SESSION_NAME='bedrock_servertmuxでのセッション名'
# bedrock_serverインストールディレクトリ
BEDROCK_PATH='/opt/bedrock'
# LD_LIBRARY_PATH設定
LD_LIBRARY_PATH="$BEDROCK_PATH"
# 実行する bedrock_server
SERVICE="$BEDROCK_PATH/bedrock_server"
## バックアップ用設定
# バックアップ格納ディレクトリ
BK_DIR="/home/$USERNAME/bedrock_backup"
# バックアップ取得日時
BK_TIME=`date +%Y%m%d-%H%M%S`
# 完全バックアップデータ名
FULL_BK_NAME="$BK_DIR/bedrock_full_backup_${BK_TIME}.tar.gz"
# ワールドデータパックアップデータ名
WORLD_BK_NAME="$BK_DIR/bedrock_world_backup_${BK_TIME}.tar"
# 取得対象ワールドデータディレクトリ
WORLD_DIR="$BEDROCK_PATH/worlds"
# バックアップデータ保存数
BK_GEN="30"
cd $BEDROCK_PATH
if [ ! -d $BK_DIR ]; then
mkdir $BK_DIR
fi
ME=`whoami`
if [ $ME != $USERNAME ]; then
echo "Please run the $USERNAME user."
exit
fi
# 開始処理
start() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "$SERVICE is already running!"
else
echo "Starting $SERVICE..."
tmux new-session -d -s $SESSION_NAME
tmux send-keys -t $SESSION_NAME:0 "LD_LIBRARY_PATH=$LD_LIBRARY_PATH $SERVICE" C-m
fi
}
#停止処理
stop() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Stopping $SERVICE"
tmux send-keys -t $SESSION_NAME:0 "say サーバーを§l§65秒§r後に§l§4停止§rさせます。SERVER §4SHUTTING DOWN§r IN §65 SECONDS§r. Saving map..." C-m
echo "5s"
sleep 5
tmux send-keys -t $SESSION_NAME:0 "say §o§7サーバーは停まります。SHUTDOWN SERVER." C-m
tmux send-keys -t $SESSION_NAME:0 "stop" C-m
echo "wait 10s"
sleep 10
echo "Stopped bedrock_server"
else
echo "$SERVICE is not running!"
exit
fi
while :
do
if
pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "wait 10"
sleep 10
echo "Stopping $SERVICE"
else
tmux kill-session -t $SESSION_NAME
echo "Stoped $SERVICE"
break
fi
done
}
# ワールドバックアップ処理
w_backup() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Backup start minecraft world data..."
tmux send-keys -t $SESSION_NAME:0 "save hold" C-m
sleep 10
tmux send-keys -t $SESSION_NAME:0 "save query " C-m
tar cfv $WORLD_BK_NAME $WORLD_DIR
sleep 10
tmux send-keys -t $SESSION_NAME:0 "save resume" C-m
echo "bedrock_server world data backup compleate!"
gzip -f $WORLD_BK_NAME
find $BK_DIR -name "bedrock_world_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
else
echo "Backup start ..."
gzip -f $WORLD_BK_NAME
find $BK_DIR -name "bedrock_world_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
fi
}
# 完全バックアップ処理
f_backup() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Full backup start minecraft data..."
tmux send-keys -t $SESSION_NAME:0 "say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map..." C-m
sleep 10
tmux send-keys -t $SESSION_NAME:0 "stop" C-m
while :
do
if
pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "Stopping $SERVICE"
sleep 10
else
echo "Stopped bedrock_server"
echo "Full Backup start ..."
tar cfvz $FULL_BK_NAME $BEDROCK_PATH
echo "Full Backup compleate!"
find $BK_DIR -name "bedrock_full_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
break
fi
done
echo "Starting $SERVICE..."
tmux send-keys -t $SESSION_NAME:0 "$SERVICE" C-m
else
echo "Full Backup start ..."
tar cfvz $FULL_BK_NAME $BEDROCK_PATH
echo "Full Backup compleate!"
find $BK_DIR -name "bedrock_full_backup_*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
fi
}
# 起動状態確認処理
status() {
if pgrep -u $USERNAME -f $SERVICE > /dev/null; then
echo "$SERVICE is already running!"
exit
else
echo "$SERVICE is not running!"
exit
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
w_backup)
w_backup
;;
f_backup)
f_backup
;;
status)
status
;;
*)
echo $"Usage: $0 {start|stop|w_backup|f_backup|status}"
esac
chmod u+x minecraft.sh
chmod go-rw minecraft.sh
起動テスト
minecraft統合版サーバーUbuntu版を実行してみます。
./minecraft.sh start
tmux list-sessions
bedrock_server
bedrock_serverと表示が出れば動作しています。tmux上で動いているのが確認できたらminecraft統合版サーバーを停止して、サーバー用のユーザーからログアウトします。
./minecraft.sh stop
マイクラサーバー用のユーザーからログアウトします。ここからは管理者アカウントのユーザーに戻って作業を続けます。
ファイアウォール
ファイアウォールを設定します。server.propertiesで指定したポートを開けます。
sudo ufw allow from 0.0.0.0/0 to any port 13192IPv4のポート番号 proto udp
sudo ufw allow from ::/0 to any port 13193IPv6のポート番号 proto udp
サービスとして自動起動
.serviceファイル作成
サービスとして登録するために.serviceファイルを管理者アカウントで作成します。
ファイル名は自由ですが拡張子は.serviceにします。ここではminecraft_bedrock_server.serviceとしました。
sudo nano /etc/systemd/system/minecraft_bedrock_server.service
[Unit]
Description=Minecraft Bedrock Edition Oneko server
After=network.target local-fs.target
[Service]
Type=forking
User=bedrockadmin
ExecStart=/opt/bedrock/minecraft.sh start
ExecStop=/opt/bedrock/minecraft.sh stop
Restart=failur
TimeoutStartSec=300
[Install]
WantedBy=multi-user.target
登録・開始
サービスに登録して開始ます。
sudo systemctl enable minecraft_bedrock_server.service
sudo systemctl start minecraft_bedrock_server.service
動作テスト
Windowsやスマホからマイクラ統合版を起動してサーバーに接続できるか確認して下さい。
準備
URL取得
minecraft統合版サーバーUbuntu版のURLを📋コピーや📝メモします。
ログインしていないならログイン
マイクラサーバー用のユーザーで作業します。バージョンアップだけなら始めからマイクラサーバー用のユーザーでログインしてもいいです。
su - minecraftマイクラサーバー用のユーザーID
パスワード:
バックアップと停止
バックアップ
まずはバックアップをとります。バックアップはフルバックアップを行います。
cd /opt/bedrock
./minecraft.sh f_backup
停止
minecraft統合版サーバーUbuntu版を止めます。
./minecraft.sh stop
新しいバージョンのダウンロードと解凍
以下はOneko serverの場合です。アドオン関係は何も入れていない前提です。
新しいバージョンのminecraft統合版サーバーUbuntu版を⮋ダウンロードして🗜解凍します。まずはアーカイブ用ですがOneko serverではzipを一回🗜解凍して7zipにしてます。もう一度🗜解凍します。こちらは作業用のディレクトリです。作業用のディレクトリ名は簡単にしておくと作業が楽です。
curl -L -O https://minecraft.azureedge.net/bin-linux/bedrock-server-x.xx.xx.xx.zipマイクラサーバー統合版Ubuntu版のファイルURL
unzip bedrock-server-x.xx.xx.xx.zipマイクラサーバー統合版Ubuntu版のアーカイブファイル名 -d bedrock-server-x.xx.xx.xx後でバージョンがわかるファイル名
unzip bedrock-server-x.xx.xx.xx.zipマイクラサーバー統合版Ubuntu版のアーカイブファイル名 -d t作業用の簡単な名前のディレクトリ
削除
古いバージョンを削除します。
cd bedrock/
rm -r b*
rm -r c*
rm -r definition
rm -r r*
d*ではありませんので注意して下さい。
更新
新しいバージョンにします。mv
コマンドでファイルを移動するのはcp
コマンドでコピーをすると日付が変わってしまい管理がしにくくなるためです。バージョンアップの日付で管理する場合はcp
コマンドでコピーの方がいいとか、管理より作業効率とか自由です。
mv ../t/b* .
mv ../t/c* .
mv ../t/d* .
mv ../t/r* .
クリーンアップ
⮋ダウンロードしたファイルを消すかどうかは任意です。7zipに🗜圧縮し直す必要はあまりないです。一応zipの半分位まで小さくなります。zipをそのまま7zにせず一旦解凍してから7zで圧縮することでより小さくしています。
cd ../
rm -r t
7z a -mv=9 bedrock-server-x.xx.xx.xx.7z bedrock-server-x.xx.xx.xx
mv bedrock-server-x.xx.xx.xx.7z old/
rm -r bedrock-server-x.xx.xx.xx
動作テスト
実行します。
./minecraft.sh start
Windowsやスマホからマイクラ統合版を起動してサーバーに繋がるか確認します。
正常な動作が確認できましたらログアウトします。
logout
Webサーバー
今回はApacheを採用しました。PHPを使っているのでPHPを使うことができるWEBサーバーなら何でも可。
Webサーバー
インストール
インストールします。同時にPHPもインストールします。
sudo apt install -y apache2 php8.1
apache2の設定もパーティションと同じく流儀みたいなのがありますが、コンテンツが一つしかなくても仮想化する方法を採用してみました。
環境構築
SwitchUser
サイトを管理するユーザーで管理できるようにします。ユーザーアカウントがなければ作成します。
sudo adduser webmaster任意のID
セットアップ
ディレクトリ/var/www/の権限と所有者をサイトを管理するユーザーに変更します。
cd /var/
sudo chown -R webmaster:サイトを管理するユーザー www/
sudo chmod -R a=rX,u+w www/
sudo | 管理者 |
---|---|
chown | 所有者変更コマンド |
-R | ディレクトリー内も変更 |
webmasterサイトを管理するユーザー | 新しい所有者 |
: | 新しいグループ。ユーザー名とグループ名が同じ場合は:だけでいい。 |
www/ | 所有者を変更するディレクトリー、ファイル |
sudo | 管理者 |
---|---|
chmod | 属性変更コマンド |
-R | ディレクトリー内も変更 |
a=rX | User,Group,Otherを読み取り可能にする。ディレクトリーは実行も可能にする。 |
,u+w | ,で更に変更します。Userは書き込みも可能にします。 |
www/ | 属性を変更するディレクトリー、ファイル |
chmod
a=rとa=Xをまとめてa=rXと表現します。a=rのaはAllなのでUser,Group,Otherの全てを変更。=は上書きします。rはReadで読み取り可能にします。Xはディレクトリーなら実行可能にします。
u+wのuはUserなので所有者の属性を変更します。+は追加で属性を付与します。wはWrightで書き込み可能にします。
security.conf
セキュリティに関する設定をしてapacheに反映します。/etc/apache2/conf-available/security.conf
cd /etc/apache2/
sudo cp /lib/apache2/conf-available/security.conf conf-available/
sudo nano conf-available/security.conf
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of: Full | OS | Minimal | Minor | Major | Prod
# where Full conveys the most information, and Prod the least.
#ServerTokens Minimal
ServerTokens Prod
#ServerTokens Full
#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
ServerSignature Off
#ServerSignature On
#
# Allow TRACE method
#
# Set to "extended" to also reflect the request body (only for testing and
# diagnostic purposes).
#
# Set to one of: On | Off | extended
TraceEnable Off
#TraceEnable On
a2enconf security.conf
ServerTokens |
HTTPヘッダーに含める情報。OS種別やモジュールの情報
|
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ServerSignature |
サーバー、バーチャルホスト、ページの情報、エラーの詳細などの情報
|
||||||||||||
TraceEnable |
トレースの許可 falseにすることでクロスサイトスクリプティング(XSS)攻撃を防ぐことが出来ます |
minecraftサイト名.site
サイトの設定をしますがapache.confではなく各サイト用の設定ファイルを作成します。
sudo cp site-available/000-default.site site-available/minecraftサイト名.site
sudo nano site-available/minecraftサイト名.site
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerName onerou.mydns.jp:80
ServerAdmin webmaster@onerou.mydns.jp
DocumentRoot /var/www/html/minecraft
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
<VirtualHost *:443>
ServerName onerou.mydns.jp:443
ServerAdmin webmaster@onerou.mydns.jp
DocumentRoot /var/www/html/minecraft
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
-
ポート80番(http)へのアクセスの設定
<VirtualHost *:80>ディレクティブ ServerName サーバー名とポート番号 ServerAdmin 管理者の電子メールアドレス DocumentRoot このサイトのトップページ - ErrorLog
- CustomLog
ログファイルのパス -
ポート443番(https)へのアクセスの設定
<VirtualHost *:443>ディレクティブ ServerName サーバー名とポート番号 ServerAdmin 管理者の電子メールアドレス DocumentRoot このサイトのトップページ - ErrorLog
- CustomLog
ログファイルのパス
apacheに作成したサイトの設定を反映します。000-default.siteは今回は無効化します。
a2ensite minecraft.site
a2dissite 000-default.site
apache.conf
apacheそのものの設定をします。いつものapache.confを書き換えます。
sudo nano /etc/apache.conf
・・・
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
# Require all granted
Require all denied
</Directory>
<Directory /var/www/>
# Options Indexes FollowSymLinks
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
・・・
-
ルート/以下
<Directory /> Options FollowSymLinks ショートカット先をたどる AllowOverride None .htaccessを無視 Require all denied あらゆるアクセス禁止 -
共有ディレクトリー/usr/share/以下
<Directory /usr/share> AllowOverride None .htaccessを無視 Require all granted あらゆるアクセス禁止 -
Webサイトディレクトリー/var/www/
<Directory /var/www/> Options FollowSymLinks ショートカット先をたどる AllowOverride None .htaccessを無視 Require all granted アクセスを許可
ファイアウォール
ファイアウォールの設定をします。apacheはアプリケーション登録可能です。
sudo ufw allow app "Apache Full"
sudo ufw reload
リモートデスクトップ
xrdp
今回はxrdpを使いました。
サーバーの機能としては必要ありません。Oneko serverにはインストールしたというだけです。
リモートデスクトップ
xrdp
今回はxrdpを使いました。
サーバーの機能としては必要ありません。Oneko serverにはインストールしたというだけです。
標準リモートデスクトップではなくxrdpの理由
Ubuntu22.04LTSではWindowsリモートデスクトップ(RDP)に対応していますがデスクトップにログインした状態でないと使うことはできません。xrdpはログアウトした状態からアクセスできます。なのでxrdpを採用しました。
- xrdpはログアウト状態でも使える。
- xrdpはWindows RDP以外の方法も使える。
- xrdpはWindows RDPでは動作が遅い。
- xrdpへmacOSからアクセスするとローカルのキーボード設定を壊すことがある。
セットアップ
インストール
まずはインストールします。
sudo apt install -y xrdp
ファイアウォール
ファイアウォールを設定します。Windows RDPはポート3389をTCPで使います。
sudo ufw allow from 192.168.xxx.0/24 to any port 3389 proto tcp
設定
/etc/xrdp/xrdp.iniを変更することでポート番号、色数、セキュリティの変更ができます。
/etc/xrdp/xrdp_keyboard.intを変更することでキーボードの挙動を変更できます。
テスト
WindowsRDPでサーバーのIPアドレスを指定して接続します。RDPで接続できるならWindowsRDPである必要はありません。macOSやスマホにもMicrosoft純正のMicrosoftリモートデスクトップアプリがあります。
macOS版Microsoftリモートデスクトップで接続したとき、実はキーボードまわりがよくわかりません。リモートで使えるようにするとローカルがおかしくなったり、その逆になったりします。お互いに独立していないようですし復帰機能も無いようです。
ウェブリモート管理
Cockpitを使う
昔のWebMinみたいなものです。
ウェブリモート管理
Cockpitを使う
昔のWebMinみたいなものです。
セットアップ
インストール
インストールするだけです。
sudo apt install -y cockpit*
ファイアウォール
ファイアウォールを忘れないように開けましょう。9090/TCPです。
sudo ufw allow 9090/tcp
接続
アクセス
別の端末からhttps://192.168.xxx.yyyサーバーのアドレス:9090にアクセスします。
警告画面
証明書がないためセキュリティの警告ページで止まります。どこかに続行するためのリンクがあるのでそれを探して進んでください。
ログイン
ログインページになりますのでサーバーのユーザーとパスワードでログインします。
機能
-
システム
- 概要(リソースの使用率はここから)
- ログ
- ストレージ
- ネットワーキング
- Podman コンテナー
- 仮想マシン
- アカウント
- サービス
-
ツール
- アプリケーション
- ソフトウェア更新
- 開発
- 診断レポート
- 端末
ウイルス・マルウェア対策
ClamAV
ClamAVはウイルススキャンソフトです。フォアグラウンド版とバックグラウンド版があります。フォアグラウンド版はコマンドラインで動作します。またGUIからフォアグラウンド版を操作するユーティリティーもあります。
ウイルス・マルウェア対策
ClamAV
ClamAVはウイルススキャンソフトです。フォアグラウンド版とバックグラウンド版があります。フォアグラウンド版はコマンドラインで動作します。またGUIからフォアグラウンド版を操作するユーティリティーもあります。
インストール
clamavとそのdaemon、rar用のライブラリーを入れます。
sudo apt install -y clamav clamav-daemon libclamunrar9
フォアグラウンド版
実行
フォアグラウンド版はclamscan
コマンドを使います。
sudo clamscan -r -i -bell /opt/minecraftスキャンするパス
sudo | 管理者権限 |
---|---|
clamscan | clam anti virus |
-r | ディレクトリを再帰的にスキャン |
-i | 出力を感染情報だけにします |
-bell | ウイルス発見時にベルを鳴らします |
/opt/minecraftスキャンするパス | スキャンするディレクトリやファイル |
バックグラウンド版
実行
バックグラウンド版はclamdscan
で行います。
デフォルト設定取得
clamconf
を使って設定ファイルを作成します。
sudo clamconf -g clamd.conf > clamd.conf
設定
リアルタイムスキャンの有効化とスレッドの制限を行いました。
sudo nano clamd.conf
##
## clamd.conf - automatically generated by clamconf 0.103.11
##
# Comment out or remove the line below.
#Example
・・・
# Path to a local socket file the daemon will listen on.
# Default: disabled
#LocalSocket /tmp/clamd.socket
# Sets the group ownership on the unix socket.
# Default: disabled
#LocalSocketGroup virusgroup
# Sets the permissions on the unix socket to the specified mode.
# Default: disabled
#LocalSocketMode 660
・・・
# Maximum number of threads running at the same time.
# Default: 10
#MaxThreads 20
MaxThreads 6
・・・
# Run the daemon as a specified user (the process must be started by root).
# Default: disabled
#User clamav
User root
・・・
# This option specifies a directory or mount point which should be scanned on access. The mount point specified, or the mount point containing the specified directory will be watched, but only notifications will occur. If any directories are specified, this option will preempt the DDD system. It can also be used multiple times.
# Default: disabled
#OnAccessMountPath /
#OnAccessMountPath /home/user
・・・
# With this option you can whitelist specific UIDs. Processes with these UIDs
# will be able to access all files.
# This option can be used multiple times (one per line). Using a value of 0 on any line will disable this option entirely. To whitelist the root UID please enable the OnAccessExcludeRootUID option.
# Default: disabled
#OnAccessExcludeUID 0
・・・
# Enables extra scanning and notification after catching certain inotify events. Only works with the DDD system enabled.
# Default: no
#OnAccessExtraScanning yes
・・・
sudo apt install -y apparmor-utils
sudo aa-complain clamd
sudo systemctl stop clamav-daemon.service
sudo systemctl stop apparmor.service
sudo systemctl start apparmor.service
sudo systemctl start clamav-daemon.service
設定の反映
sudo mv clamd.conf /etc/clamav/
sudo clamd -c /etc/clamav/clamd.conf
GUIユーティリティー
インストール
GUIユーティリティclamtkは別途インストルが必要です。
sudo apt install -y clamtk
設定
ウイルスの駆除ができるようになるそうです。
・・・
use Encode 'decode';
use Locale::gettext;
use POSIX 'locale_h';
textdomain( 'clamtk' );
setlocale( LC_ALL, '' );
setlocale( LC_TIME, 'C' );
# setlocale( LC_ALL, 'C' );
bind_textdomain_codeset( 'clamtk', 'UTF-8' );
・・・
実行


スタートメニューからアクセサリ-ClamTkを選ぶと起動します。

ClamTkのメイン画面から
をクリックします。
スキャン対象の選択をします。全てチェックをしていいと思います。

ClamTkのメイン画面から
をクリックします。
手動アップデートに切り替えてスケジュールした時刻にアップデートします。

ClamTkのメイン画面から
をクリックします。

ここでアップデートしておきます。

ClamTkのメイン画面から
をクリックします。

アップデートしてスキャンをする時刻をスケジュールします。

ClamTkのメイン画面から
をクリックします。


スキャンしてみます。
システム監査
Lynis
システムをスキャンし見直したほうがいいような設定などを探します。実行するとセキュリティ上修正が必要な箇所がいっぱい出てきますので、一つ一つ修正していきます。
システム監査
Lynis
システムをスキャンし見直したほうがいいような設定などを探します。実行するとセキュリティ上修正が必要な箇所がいっぱい出てきますので、一つ一つ修正していきます。
インストール
特に設定など無く実行した結果から不都合な部分を修正していきます。
sudo apt install lynis
実行
lynis audit system
[ Lynis 3.0.7 ]
################################################################################
Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it under the terms of the GNU General Public License.
See the LICENSE file for details about using this software.
2007-2021, CISOfy - https://cisofy.com/lynis/
Enterprise support available (compliance, plugins, interface and tools)
################################################################################
[+] Initializing program
------------------------------------
- Detecting OS... [ DONE ]
- Checking profiles... [ DONE ]
- Detecting language and localization [ ja ]
/usr/sbin/lynis: 612: [: -lt: unexpected operator
---------------------------------------------------
Program version: 3.0.7
Operating system: Linux
Operating system name: Ubuntu
Operating system version: 22.04
Kernel version: 6.5.0
Hardware platform: x86_64
・・・
結果
スキャン結果から不都合を出して修正します。
sudo grep -E "^warning|^suggestion" /var/log/lynis-report.dat
侵入検知
AIDE
ファイルの変更を検出します。これによってファイルの改ざんを見つける手助けになります。
侵入検知
AIDE
ファイルの変更を検出します。これによってファイルの改ざんを見つける手助けになります。
インストール
sudo apt install -y aide
設定
/etc/default/aideというファイルを変更します。
sudo nano /etc/default/aide
# These settings are mainly for the wrapper scripts around aide,
# such as aideinit and /etc/cron.daily/aide
# Main configuration file
CONFIG="/etc/aide/aide.conf"
# Set this to no to disable daily aide runs
#CRON_DAILY_RUN=yes
・・・
# This is the email address reports get mailed to
# default is root
# This variable is expanded before it is used, so you can use variables
# here. For example, MAILTO=$FQDN-aide@domain.example will send the
# report to host.name.example-aide@domain.example is the local FQDN is
# host.name.example.
MAILTO=onerou@quartz.ocn.ne.jproot
・・・
CRON_DAILY_RUN | 毎日スキャンするようにスケジューリングします。 |
---|---|
MAILTO | 結果送信メールアドレス。 |
初期化
システム全部をスキャンし、システム全部の構造のデータベースを構築します。構築したデータベースで既存のデータベースを置き換えます。
sudo aideinit
Running aide --init...
・・・
End timestamp: 2024-06-29 17:40:49 +0900 (run time: 51m 35s)
Overwrite /var/lib/aide/aide.db [yN]?
y
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
実行
システム全部をスキャンし、データベースに保存されている過去のスキャン結果と照らし合わせて変更点を得ることが出来ます。
sudo aide --check --config=/etc/aide/aide.conf
WARNING: get_file_status: lstat() failed for /run/user/1000/gvfs: Permission denied
WARNING: get_file_status: lstat() failed for /run/user/1001/gvfs: Permission denied
WARNING: get_file_status: lstat() failed for /run/user/1002/gvfs: Permission denied
Start timestamp: 2024-06-29 18:29:33 +0900 (AIDE 0.17.4)
AIDE found differences between database and filesystem!!
Ignored e2fs attributes: EIh
・・・
End timestamp: 2024-06-29 19:13:32 +0900 (run time: 43m 59s)
Rootkit検出
RKhunter
侵入されて改変されたことを見つけることで、侵入されたことを知ることが出来ます。
Rootkit検出
RKhunter
侵入されて改変されたことを見つけることで、侵入されたことを知ることが出来ます。
インストール
sudo apt install rkhunter
設定
設定ファイルは2種類です。/etc/default/rkhunterと/etc/rkhunter.confです。
/etc/default/rkhunterから。
sudo nano /etc/default/rkhunter
# Defaults for rkhunter automatic tasks
# sourced by /etc/cron.*/rkhunter and /etc/apt/apt.conf.d/90rkhunter
#
# This is a POSIX shell fragment
#
# Set this to yes to enable rkhunter daily runs
# (default: false)
CRON_DAILY_RUN="yes"
# Set this to yes to enable rkhunter weekly database updates
# (default: false)
CRON_DB_UPDATE="yes"
・・・
# Set this to the email address where reports and run output should be sent
# (default: root)
REPORT_EMAIL="webmaster@localhostメール送信先アドレスroot"
・・・
CRON_DAILY_RUN | 毎日スキャンするようにスケジューリングします。 |
---|---|
CRON_DB_UPDATE | 毎週データベースの更新をするようにスケジューリングします。 |
REPORT_EMAIL | 結果送信メールアドレス |
次は/etc/rkhunter.confを編集して初回スキャンを行います。
sudo nano /etc/rkhunter.conf
・・・
#
# If this option is set to '1', it specifies that when the '--update' option is
# used, then the mirrors file is to be checked for updates as well. If the
# current mirrors file contains any local mirrors, these will be prepended to
# the updated file. If this option is set to '0', the mirrors file can only be
# updated manually. This may be useful if only using local mirrors.
#
# The default value is '1'.
#
UPDATE_MIRRORS=10
#
# The MIRRORS_MODE option tells rkhunter which mirrors are to be used when
# the '--update' or '--versioncheck' command-line options are given.
# Possible values are:
# 0 - use any mirror
# 1 - only use local mirrors
# 2 - only use remote mirrors
#
# Local and remote mirrors can be defined in the mirrors file by using the
# 'local=' and 'remote=' keywords respectively.
#
# The default value is '0'.
#
MIRRORS_MODE=01
・・・
#
# The PKGMGR option tells rkhunter to use the specified package manager to
# obtain the file property information. This is used when updating the file
# properties file ('rkhunter.dat'), and when running the file properties check.
# For RedHat/RPM-based systems, 'RPM' can be used to get information from the
# RPM database. For Debian-based systems 'DPKG' can be used, for *BSD systems
# 'BSD' can be used, or for *BSD systems with the 'pkg' command 'BSDng' can be
# used, and for Solaris systems 'SOLARIS' can be used. No value, or a value of
# 'NONE', indicates that no package manager is to be used.
#
# The package managers obtain each file hash value using a hash function. The
# Solaris package manager includes a 16-bit checksum value, but this is not
# used by default (see USE_SUNSUM below). The 'RPM' and 'BSDng' package managers
# currently use a SHA256 hash function. Other package managers will, typically,
# use an MD5 hash function.
#
# The 'DPKG', 'BSD' and 'BSDng' package managers only provide a file hash value.
# The 'RPM' package manager additionally provides values for the inode, file
# permissions, uid, gid and other values. The 'SOLARIS' package manager also
# provides most of the values, similar to 'RPM', but not the inode number.
#
# For any file not part of a package, rkhunter will revert to using the
# HASH_CMD hash function instead. This means that if the HASH_CMD option
# is set, and PKGMGR is set, then the HASH_CMD hash function is only used,
# and stored, for non-packaged files. All packaged files will use, and store,
# whatever hash function the relevant package manager uses. So, for example,
# with the 'RPM' package manager, packaged files will be stored with their
# SHA256 value regardless of the value of the HASH_CMD option.
#
# NOTE: Whenever this option is changed 'rkhunter --propupd' must be run.
#
# The default value is 'NONE'.
#
# Also see the PKGMGR_NO_VRFY and USE_SUNSUM options.
#
# NONE is the default for Debian as well, as running --propupd takes
# about 4 times longer when it's set to DPKG
#
#PKGMGR=NONE
PKGMGR=DPKG
・・・
#
# The following option can be set to a command which rkhunter will use when
# downloading files from the Internet - that is, when the '--update' or
# '--versioncheck' option is used. The command can take options.
#
# This allows the user to use a command other than the one automatically
# selected by rkhunter, but still one which it already knows about.
# For example:
#
# WEB_CMD=curl
#
# Alternatively, the user may specify a completely new command. However, note
# that rkhunter expects the downloaded file to be written to stdout, and that
# everything written to stderr is ignored. For example:
#
# WEB_CMD="/opt/bin/dlfile --timeout 5m -q"
#
# *BSD users may want to use the 'ftp' command, provided that it supports the
# HTTP protocol:
#
# WEB_CMD="ftp -o -"
#
# This option has no default value.
#
WEB_CMD="""/bin/false"
・・・
sudo rkhunter --update
sudo rkhunter --propupd
UPDATE_MIRRORS=1 | |
---|---|
MIRRORS_MODE=0 | |
PKGMGR=DPKG | パッケージマネージャーを設定します。Ubuntu系はDebian形式のパッケージマネージャーを使っているのでDPKGにします。 |
WEB_CMD="" | curlが使える環境でも空文字列にした方が安定するようです。 |
実行
sudo rkhunter -c -sk
[ Rootkit Hunter version 1.4.6 ]
Checking system commands...
Performing 'strings' command checks
Checking 'strings' command [ OK ]
Performing 'shared libraries' checks
Checking for preloading variables [ None found ]
Checking for preloaded libraries [ None found ]
Checking LD_LIBRARY_PATH variable [ Not found ]
Performing file properties checks
Checking for prerequisites [ OK ]
/usr/sbin/adduser [ OK ]
・・・
冷却ファン制御
アクティブなファン制御
なぜかファン制御のアプリが別途用意されていたのでmacfanという古の雑誌名なアプリをインストールしました。
おそらくパッシブモードをアクティブモードにするというものだと勝手に思っています。
冷却ファン制御
アクティブなファン制御
なぜかファン制御のアプリが別途用意されていたのでmacfanという古の雑誌名なアプリをインストールしました。
おそらくパッシブモードをアクティブモードにするというものだと勝手に思っています。
インストール
sudo apt install -y macfan
このサービスを入れると高負荷のときにびっくりするくらいファンが回ります。そして結構熱い風が出ます。てことはこれを入れていない環境では高温で制限がかかって実力を発揮していない可能性もあります。
設定ファイルは存在しますがデフォルトで十分だと思います。