ミニPCにUbuntu24.04を入れ、Wikiサーバー化する

Linux

NiPoGiのAK1PLUSというミニPCを持っているのだが、このPCの特徴として合体パーツに2.5インチSSDを増設できるというものがある。
Amazonのセールで250GBのSSDを購入、Ubuntuとのデュアルブート環境を構築してUbuntuをサーバーとして使う。
すでにNASを持っていること、購入したSSDの容量が少ないことからファイルサーバーはやりません。
ひとまずGROWIをインストールし、自分用のローカルWiki用にします。マシンパワーに余裕があるようなら別の機能も持たせるかもしれませんが、現時点では未定です。

使用機材

ミニPCですが、私は去年の12月に買いました。
だからでしょうね、AmazonからN100搭載モデルが消えてます。
N95とかN150はあっても、N100がありません。

ミニpc n95 mini pc 動作より安定最大3.4GHz 4C/4T 小型pc 8GB LDDR5 256GB M.2 SSD

SSDはセール中の値段だけで決めました。

JNH SSD 250GB 3D NAND SATA3 6Gbps 内蔵 2.5インチ 7mm 550MB/s アルミ製筐体

SSD増設

NiPoGi AK1PLUSの底面にあるロックを外します。
(この時に気が付きました。ゴム足1つ失くしてますね・・・どこいったし)

ロックを外すと取り外し可能になります。

PC本体と増設用ケースに分離するので、増設用ケースの底面のねじを外します。
内部に2.5インチのSSDを搭載できるので、はめ込みました。
ねじ止めとかはありませんが、蓋裏に細長いクッションが貼ってあり、それで押し付けられているのでまぁはずれないでしょう。

あとは逆の手順でもとに戻すだけです。

Ubuntu 24.04 LTSのインストール

インストールメディアの作成

    インストールメディアの作り方はざっくりいうと
    ・Ubuntuのisoを公式からダウンロード
    ・RufusでUSBに書き込む
    以上です。

    インストールメディアから起動

    NiPoGi AK1PLUSを起動し、Delキー連打でBIOS画面に入ります。
    BootタブのFIXED BOOT ORDER PrioritiesでUSB Deviceを最上位に移動させるか、Save & ExitのBoot Overrideでインストールメディアを選べばいける。

    起動したら「Try or Install Ubuntu」を選択して、Ubuntuを起動する。

    Ubuntuのインストール

    1. 言語選択で「日本語」を選択し、「次」をクリックする。
    2. 「Ubuntuのアクセシビリティ」設定画面は必要あれば変更し、「次」をクリックする。
    3. キーボードレイアウトは適切なレイアウトを選び、「次」をクリックする。
      ※自動的に検出されるので変更の必要はないはず。
    4. ネットワークに接続は「有線接続を使用」を選択し、「次」をクリックする。
      ※無線やオフラインでも可。
    5. インストーラのアップデートが適用できますでは「今すぐアップデート」をクリックする。
      ここでアップデートしないなら「スキップ」をクリックする。
    6. アップデートした場合は準備完了後に「インストーラを閉じる」をクリックする。
    7. デスクトップにインストーラーがあるので起動し、1.~4.まで繰り返す。選択済みなので「次」をクリックするだけでいいはず。
    8. インストール種類は「対話式インストール」を選択し、「次」をクリックする。
    9. アプリインストールは「既定の選択」を選択し、「次」をクリックする。
    10. プロプライエタリなソフトは「グラフィックスとWi-Fi機器用のサードパーティ製ソフトウェアをインストールする」にチェックを入れ、「次」をクリックする。
    11. インストール方法は「手動パーティショニング」を選択して、「次」をクリックする。
    12. ブートローダーをインストールするデバイスを選択で、インストール先のSSDを選択する。
      ※ミスるとディスクのデータが全ロスするので慎重に進める事。
    13. 空き領域を選択して「+」をクリックする。
    14. 使用方法を「Ext4」、マウントポイントを「/」にして、「OK」をクリックする。
    15. アカウントの設定は必須項目を入力して、「次」をクリックする。
    16. タイムゾーンは「Asia/Tokyo」を選択して、「次」をクリックする。
    17. これまでの選択を確認し、問題なければ「インストール」をクリックする。
    18. インストール完了後、「今すぐ再起動」をクリックする。
    19. しばらくすると「Please remove the installation medium, then press ENTER」と表示されるため、インストールメディアを外してエンターキーを押す。
    20. 再起動され、インストールされたUbuntuが起動する(かもしれない)。
      というのもBIOSの設定次第ではWindowsが起動する。
      まずはBIOSに入り、BootタブのUEFI Hard Disk Drive BBS Prioritiesを選択、Boot Option #1 をubuntu、#2をWindowsにする。

    Ubuntuの初期設定

    ソフトウェアの更新

    左下の「アプリを表示」から「ソフトウェアの更新」を選択し、クリックする。

    「今すぐインストールする」をクリックする。

    ClamTkのインストール

    Linuxでもセキュリティソフトはあったほうがいい。
    定番のClamAVはCUIであり、コマンド操作です。これをGUIで操作するソフトがClamTkです。
    ClamTkはメンテナンス終了がアナウンスされていますが、内部というか本体であるClamAVはサポートが続いているので大丈夫だと思います。
    以下のコマンドを端末で実行することでインストールできる。

    sudo apt install clamtk

    アプリを表示から「ClamTk」を起動します。
    まずは設定を選択します。

    すべてにチェックを付けます。

    チェックを付けたら、「戻る」をクリック。
    次にスケジュールを選択します。

    好みの時間を指定し、「+」を押して確定する。
    シグネチャのアップデートする時間のほうは、「アップデートアシスタント」で「コンピューターが自動的にアップデートを受信」が選択されているため、ここでは操作できません。時間を指定したい場合はまず、「アップデートアシスタント」画面で「自分でシグネチャをアップデート」に切り替える必要があります。

    ファイアウォール

    ファイアウォールはプリインストールされていますが、デフォルトでは無効化されています。
    gufwというソフトをインストールすることで有効化し、GUIで操作できるようにします。
    端末で以下のコマンドを実行してインストールします。

    sudo apt-get install gufw -y

    アプリを表示から「ファイアウォール設定ツール」を起動します。

    プロファイルは用意されていますが、Status:がデフォルトだとオフになっているのでオンに切り替えます。

    xrdp

    リモートデスクトップで接続するためのソフトです。
    サーバーマシンなのでモニターやキーボードなどを接続せず、メインPCなどから遠隔操作します。
    端末で以下のコマンドを実行してインストールと設定を行っていきます。

    sudo apt install xrdp

    インストール後にxrdpの自動起動の設定と起動を行う。

    sudo systemctl enable xrdp
    sudo systemctl start xrdp

    ファイアウォールにリモートデスクトップ用の設定を追加する。

    sudo ufw allow 3389

    ユーザー設定を追加します。エディタは好みですがここではnanoを使っています。

    sudo nano /etc/group

    以下の行に末尾(XXXXの位置)にユーザー名を追記します。

    xrdp:x:125:XXXX

    次にインターフェース周りの設定を変更します。
    というのもUbuntuマシンで起動した時と外部からリモート接続した時のUIが違うんです。なのでUbuntuを起動した時と同じになるように設定します。

    sudo nano /etc/xrdp/startwm.sh

    先頭に以下の2行を追加します。

    export GNOME_SHELL_SESSION_MODE=ubuntu
    export XDG_CURRENT_DESKTOP=ubuntu:GNOME

    他にも問題があるようなので、別ファイルも修正します。

    sudo nano /etc/gdm3/custom.conf

    「WaylandEnable=false」の前の#を消してコメントを外します。

    [daemon]
    # Uncomment the line below to force the login screen to use Xorg
    #WaylandEnable=false
    WaylandEnable=false

    編集後にUbuntuを再起動します。

    Windows11マシンの「リモートデスクトップ接続」を起動し、UbuntuマシンのIPアドレスを入力して接続する。
    ※私はルーター側でUbuntuマシンに固定IPを振る設定にしています
    ログイン画面が表示されるので、ユーザー名とパスワードを入力する。

    Ubuntuを起動した時と同じUIでリモート接続できます。

    ここからはモニターとキーボード、マウスを外し、リモート接続で使用します。

    GROWIをインストール

    別の記事にまとめているのでそちらを参照

    リバースプロキシの設定

    GROWIに対してリバースプロキシを行うための設定をしていく。

    Nginx のインストール

    下記のコマンドでインストールする。

    sudo apt update && sudo apt -y install nginx

    設定ファイルを作成するため、以下のコマンドを実行

    sudo nano /etc/nginx/sites-available/growi.conf

    以下の内容を書き込む。<server><cert_file><key_file>は各自で環境に合わせる。
    ※<server>についてはchatGPTがLAN内限定なら「growi.local」でいいんじゃない?って言ってた。
    ※<cert_file><key_file>はSSL、つまりはHTTPSを使うために必要な証明書にあたる。今回は自己証明書で対応し、方法は後述する。

    upstream growi {
        server localhost:3000;
    }
    
    map $http_upgrade $connection_upgrade {
        default Upgrade;
        ''      close;
    }
    
    server {
        listen 443 ssl;
        server_name <server>;
        ssl_certificate <cert_file>;
        ssl_certificate_key <key_file>;
    
        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://growi;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_read_timeout 900s;
        }
    }
    
    server {
        listen 80;
        server_name <server>;
        return 301 https://$server_name$request_uri;
    }

    シンボリックリンクを作る。
    上記の設定ファイルを適用させるような感じ。

    sudo ln -s /etc/nginx/sites-available/growi.conf /etc/nginx/sites-enabled/

    設定ファイルに問題がないか確認する。

    sudo nginx -t

    問題がなければ次のように表示される。

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

    恒例の起動と自動起動の設定

    systemctl start nginx
    systemctl enable nginx

    自己証明書の設定

    証明書と鍵を生成する。
    なお、chatGPTに教わった簡単な方法であり、私は詳しく理解してません。

    sudo mkdir -p /etc/ssl/private
    sudo openssl req -x509 -nodes -days 3650 \
      -newkey rsa:2048 \
      -keyout /etc/ssl/private/growi.key \
      -out /etc/ssl/certs/growi.crt \
      -subj "/CN=growi.local"

    Nginxの設定ファイルにパスを記載する。

    <cert_file> /etc/ssl/certs/growi.crt;
    <key_file> /etc/ssl/private/growi.key;

    パーミッション確認。

    sudo chmod 600 /etc/ssl/private/growi.key
    sudo chown root:root /etc/ssl/private/growi.key

    この方法では「信頼されない」とブラウザには怒られる。LAN内かつ自分のみしか使わないのでとりあえずスルーする。

    ファイアウォールの設定

    ufwに設定追加しないと別PCからのアクセスを拒否してしまう。
    ひとまずLAN内からは許可という内容で設定を追加する。
    以下のコマンドでいけるが、IPアドレスは各自の環境に合わせる必要がある。

    sudo ufw allow from 192.168.0.0/24 to any port 80
    sudo ufw allow from 192.168.0.0/24 to any port 443

    GROWIにアクセス

    これまでの設定がうまくいっていれば別PCからもアクセスできるはずだ。
    UbuntuマシンのIPアドレスを指定してアクセスすればログイン画面が表示される。

    https://192.168.0.XX

    あとはGROWIの設定を適当に済ませる。

    余談

    SSD増設用ケースを分離するとWindowsが起動します。
    SSD増設用ケースを合体させると、・・・Windowsが起動します。
    はい、合体後はもう一度BIOSの優先順位を変更する設定をしないとUbuntu優先にはなりません。
    合体分離で起動OS変わったらおもしろかったんだけどなぁ。

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