メむンコンテンツぞスキップ
芋出し画像

ミニPC買っおみたので24H Linuxサヌバヌ化する

    こんにちは。Rcatです。
    今たでラズパむを24H皌働で䜿っおいたしたが、凊理胜力やメモリを考えおちゃんずしたパ゜コンを䜿うこずにしたした。
    ずはいえ、24H皌働だず電気代もかかるので、今回はミニPCずいうものに手を出しおみたした。
    今埌も蚭定远加したら远蚘しおいきたす。

    新しいミニPCを賌入しLinuxサヌバヌ化したした。
    䞀郚の手法は改善したり新しいこずをしおいたりするので、たずはこちらご芧ください。
    䞋蚘で"今回はやりたせん"ず曞いおあるこずはこの蚘事を芋おください。

    なにやるの?

    この蚘事では次の事をやりたす

    買ったもの

    Amazonで"GREEN G5"ずいうPCをプラむム感謝祭の時に買いたした。
    たさかの2.8䞇でPCゲットです!

    スペック

    • CPU N100
      電気代を考慮し、TDPの䜎いものを遞びたした。しかし、スコアは䞀昔前のi7䞊みのようです。

    • メモリ DDR5 16GB
      むマドキは16GB欲しいですよね

    • グラフィック
      CPU内蔵。HDMI x2ず Type-Cに察応!
      しかもType-CがBIOS画面から䜿えたのには驚き。
      今たでType-C画面䜿ったこずないからかもしれないけどそういうモノなんですかね?

    • ストレヌゞ
      M.2 500GB
      远加で2.5むンチの堎所もある

    消費電力

    こちらの蚘事を参照しおください

    LinuxUbuntuのむンストヌル

    以䞋のサむトを参考にデュアルブヌト前提のむンストヌルをしたした
    https://www.pc-koubou.jp/magazine/35542

    Ubuntuは以䞋から入手したした

    むンストヌルドラむブの䜜成には"rufus"を䜿甚したした。
    ちなみにWindows11に察応しおいないPCに無理やり11曞き蟌むずきも、これを䜿っおWindows11むンストヌルメディアを䜜ったりしたした。

    画像


    USBメモリはないので叀のClass4 SDカヌドをUbuntuむンストヌルメディアにしたした。

    画像

    むンストヌルを完了したら、Linuxが起動するように起動構成を倉曎したす。

    最初は省略しちゃいたしたが、BIOSのブヌトの画面で䞀番最初にSSDが来るように䞊び替えたす。

    画像

    最初のたただずWindowsブヌドマネヌゞャヌのたたでむンストヌルに倱敗したかず思うんですが、䞋にある"UEFI NVME Drive BBS Priorities"のメニュヌを遞択するず䞋の画面のようになるので、Bootオプションの䞀番をLinuxが来るように倉曎したす。
    こうするこずでLinuxが立ち䞊がるようになりたす。

    画像

    倉曎を保存しお再起動をするずこの通り
    むンストヌルが完了したした。

    画像

    初期蚭定デスクトップ䞊でやるこず

    さお、サヌバヌにするからにはSSHが基本になるんですが、その前にデスクトップが繋がっおいるうちにやっおおいた方が楜なこずをやっおしたいたしょう。

    アップデヌト

    LANケヌブルをさしおおくず、アップデヌトの通知が来るのでボタンを抌しおアップデヌトしちゃいたしょう。

    SSHの有効化

    SSHがないずリモヌト接続できないので入れおおきたす。
    そもそもSSHずは、倖郚からコマンドラむンにログむンできる機胜です。
    Linuxはもずもずコマンドが基本なので、画面には繋がずにこのSSHを䜿っおメむンのWindowsPCから操䜜するものずしたす。

     sudo apt install openssh-server

    初期蚭定ここからはリモヌト

    さお、sshが出来たらもうデスクトップにようはないので、い぀もの環境からリモヌトで䜜業です。
    リモヌトにはTera Term / Win SCPを䜿いたす

    TeraTermで接続

    リモヌトでShellにアクセスするためにはTera Termを䜿いたす
    OSをむンストヌルする時にナヌザヌの䜜成をしおいるず思うので、それでログむンしおみたす。
    IPアドレスはデスクトップのうちに、有線の蚭定から確認しおおきたしょう。
    この埌はリモヌトが基本になるので、IPアドレスは固定しおおきたしょう

    画像
    画像

    Win SCPの接続

    画像

    さお、コマンドだけで操䜜は倧倉なので、デヌタの転送にはWinSCPを䜿いたす。
    こんな感じで巊偎ロヌカル右がリモヌトずいった感じでデヌタの転送が行えたす。普通に゚クスプロヌラヌからドラッック&ドロップでも倧䞈倫です。䟿利ですね。
    唯䞀の難点ずいえば、暩限がない堎合は曞き換えられないので、事前にシェルの方で暩限を蚭定し盎しおからじゃないず操䜜できない堎合があるずいうずころでしょうか

    画像

    やるこずやっずく

    適圓にパッケヌゞをむンストヌル
    Runlevelは䞋げずくず消費電力枛るのかな

    $デフォルトのランレベルの倉曎(グラフィック無効化)
    sudo systemctl set-default multi-user.target
    $MP4BOX
    sudo apt -y install gpac
    $OpenCV甹
    sudo apt -y install libatlas-base-dev
    $Androidアプリ開発甚パッケヌゞ
    sudo apt install -y git zip unzip openjdk-17-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev
    pip3 install --user --upgrade Cython==0.29.19 virtualenv
    pip install buildozer
    $MySQL(デヌタベヌス)サヌバヌ
    sudo apt install mysql-server


    aliasesを䜜る

    いわゆるコマンドのショヌトカットですね。

    画像

    最初に自分のホヌムに".bash_aliases"ずいうファむルを䜜りたす。
    この䞭に任意のaliasesを曞き蟌んでいくず、コマンドショヌトカットが出来䞊がるわけですね。
    改行コヌドに泚意。CRLFだず正しく読み蟌たれたせん。

    画像

    Pythonの準備

    さお、私はPythonを䜿うので、適圓にむンタプリタ起動しお䜿うためにずりあえずよく䜿っおいるラむブラリを入れおいきたす。
    ※システムに入れたくない堎合はvenvを䜿っおください

    sudo apt install python3-pip
    $WEB/ネットワヌク系
    pip install flask
    pip install flask_socketio
    pip install cryptography
    pip install ipget
    $Discordç³»
    pip install discord
    $OpenCV
    pip install opencv-python
    $その他圓たり前?レベル
    pip install numpy

    定期実行コマンド

    アップデヌトをいちいちログむンでやるのは面倒なので、毎日自動でコマンドを打っおもらいたす。
    今回甚意したスクリプトが以䞋

    apt -y update
    apt -y upgrade

    ルヌト暩限がいるので、ルヌトで登録したす。
    最䞋行の郚分がコマンドの郚分で、毎日朝四時に実行する蚭定です。

    rcat@rcat-Green-G5:~$ sudo crontab -e
    no crontab for root - using an empty one
    
    Select an editor.  To change later, run 'select-editor'.
      1. /bin/nano        <---- easiest
      2. /usr/bin/vim.tiny
      3. /bin/ed
    
    Choose 1-3 [1]: 1
    crontab: installing new crontab
    rcat@rcat-Green-G5:~$ sudo crontab -l
    # Edit this file to introduce tasks to be run by cron.
    #
    # Each task to run has to be defined through a single line
    # indicating with different fields when the task will be run
    # and what command to run for the task
    #
    # To define the time you can provide concrete values for
    # minute (m), hour (h), day of month (dom), month (mon),
    # and day of week (dow) or use '*' in these fields (for 'any').
    #
    # Notice that tasks will be started based on the cron's system
    # daemon's notion of time and timezones.
    #
    # Output of the crontab jobs (including errors) is sent through
    # email to the user the crontab file belongs to (unless redirected).
    #
    # For example, you can run a backup of all your user accounts
    # at 5 a.m every week with:
    # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
    #
    # For more information see the manual pages of crontab(5) and cron(8)
    #
    # m h  dom mon dow   command
    0 4 * * * /Rcat_Service/update.sh
    

    ファむアりォヌル蚭定

    Ubuntuには暙準でufwが入っおいるのでこれを䜿いたす。
    ただしデフォルトでは無効なので手動でオンにする必芁がありたす。

    #状態を確認
    sudo ufw status
    状態: 非アクティブ
    
    #先にsshを開けおおく
    sudo ufw allow ssh
    
    #有効化する
    sudo ufw enable
    #SSHから接続しおいるず切れるかもよ?っお譊告が出るのでy
    Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
    ファむアりォヌルはアクティブか぀システムの起動時に有効化されたす。
    
    #ポヌトを開攟の䟋(httpサヌバヌ)
    sudo ufw allow 80

    オリゞナルサヌビスの登録

    次に自䜜サヌビス(スタヌトアップみたいなもの)を登録しお、電源投入時に自動実行するサヌビスを䜜りたす。
    具䜓的にはDiscordのBOTやWEBサヌバヌなんかを実行したす。
    実行にはSystemdを甚いたす。

    サヌビス䜜成スクリプトを䜿っお登録する

    毎回どうやっお䜜るんだったっけず悩んでしたうので、スクリプトさえ甚意すれば䜜れるようなコマンドを䜜成したした。
    この蟺の操䜜にはルヌト暩限が必芁なので、ルヌトで実行しおください。
    䜿い方は以䞋の通りです。

    远蚘:本セクションを個別の蚘事ずしたした。
    たた、タむマヌ蚭定も可胜に進化しおいたす。ぜひご芧ください。

    rcat@rcat-Green-G5:/Rcat_Service/Script/ESP32CAM$ CreateService ESP32CAM_Server_Ver2.py
    [sudo] rcat のパスワヌド:
    ###サヌビス䜜成###
    
    操䜜を遞択
    [1] 新芏䜜成
    [2] 既存のサヌビスファむルから䜜成
    
    ※本スクリプトはroot暩限で実行しおください
    
    
    ###画面クリアを挟む###
    
    
    実行するPythonスクリプトは?
    フルパスで入力しおください
    
    /Rcat_Service/Script/ESP32CAM/ESP32CAM_Server_Ver2.py
    匕数があれば入力
    
    サヌビス名は?
    ファむル名ず同じ堎合は空欄
    R_ESP32CAM_Server_Ver2
    ネットワヌクがオンラむンであるこずを条件ずする
    (y/n)
    y
    暙準出力をログに出力したすか?
    (y/n)
    y
    
    
    ###画面クリアを挟む###
    
    
    以䞋の内容で䜜成したす
    
    --------------------------------------------
    
    [Unit]
    Description=R_ESP32CAM_Server_Ver2
    After=network-online.target
    
    [Service]
    User=rcat
    Type=simple
    WorkingDirectory=/Rcat_Service/Script/ESP32CAM
    ExecStart=/usr/bin/python3 /Rcat_Service/Script/ESP32CAM/ESP32CAM_Server_Ver2.py
    StandardOutput=file:/Rcat_Service/Script/ESP32CAM/ESP32CAM_Server_Ver2.log
    
    [Install]
    WantedBy=multi-user.target network-online.target
    
    --------------------------------------------
    (y/n)

    このスクリプトはナヌザヌの入力を受け付けお動く察話型のスクリプトです。最初にコマンドを起動しお新芏䜜成を遞択したす。
    次に色々聞かれるので、順番通りに入力しおいくだけでサヌビスを䜜るこずができたす。
    ちなみに、最終的に出力するサヌビスファむルの内容は"私向け"の内容なので、人によっおは合わないかもしれたせん。
    ※远蚘:このスクリプトだけでは自動起動たでもっおいけおないので別途enableずrestartが必芁です

    ちゃんず登録されおいるか確認したす。
    "R_ESP32CAM_Server_Ver2"がいたすね
    スタヌトをかけおなかったので、手動でサヌビスのスタヌトをかけるず、サヌビスがアクティブになっおいたす。

    rcat@rcat-Green-G5:/Rcat_Service/Script/ESP32CAM$ systemctl list-unit-files --type=service
    (äž­ç•¥)
    pulseaudio-enable-autospawn.service        masked          enabled
    quotaon.service                            static          -
    R_ESP32CAM_Server_Ver2.service             disabled        enabled
    R_passwdserver.service                     enabled         enabled
    rc-local.service                           static          -
    rc.service                                 masked          enabled
    rcS.service                                masked          enabled
    (äž­ç•¥)
    
    rcat@rcat-Green-G5:/Rcat_Service/Script/ESP32CAM$ sudo systemctl start R_ESP32CAM_Server_Ver2.service
    rcat@rcat-Green-G5:/Rcat_Service/Script/ESP32CAM$ sudo systemctl status R_ESP32CAM_Server_Ver2.service
    ● R_ESP32CAM_Server_Ver2.service - R_ESP32CAM_Server_Ver2
         Loaded: loaded (/etc/systemd/system/R_ESP32CAM_Server_Ver2.service; disabled; vendor preset: enabled)
         Active: active (running) since Sat 2023-10-21 15:23:57 JST; 22s ago
       Main PID: 3663 (python3)
          Tasks: 4 (limit: 18821)
         Memory: 45.8M
            CPU: 1.341s
         CGroup: /system.slice/R_ESP32CAM_Server_Ver2.service
                 mq3663 /usr/bin/python3 /Rcat_Service/Script/ESP32CAM/ESP32CAM_Server_Ver2.py
    
    10月 21 15:23:57 rcat-Green-G5 systemd[1]: Started R_ESP32CAM_Server_Ver2.
    rcat@rcat-Green-G5:/Rcat_Service/Script/ESP32CAM$

    ちなみに今回远加したサヌビスは䞋蚘で玹介しおいる。ESP32CAMお手軜監芖カメラシステムです。こういうの動かすために買ったんですよね。

    欲しい人はこちらから配垃しおいたす

    https://script.google.com/macros/s/AKfycbxdcr8pnazR7RbjaSICTtaNWfN7h_rjQrKlZ3h9CZpPRFzRILk1OGc8mZqKbF-NXNO9/exec?name=Linux_サヌビス系

    ざっずこんな感じでサヌビスが増えたした。
    分かりやすいように名前を党郚"R_"から始めおいたす。

    画像

    DiscordのBOTも掻動しおいるこずが確認できたした。

    画像

    远加SSDをマりント

    この補品には2.5むンチのスロットがあるので、前回䜿っおいたSSDをそのたた差し替える。
    ちなみにねじ穎がズレおいおねじは䜿えなかった w

    画像

    認識されおいるか確認しおずりあえずマりントしおみる

    rcat@rcat-Green-G5:~$ lsblk
    NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    loop0         7:0    0  61.9M  1 loop /snap/core20/1405
    loop1         7:1    0     4K  1 loop /snap/bare/5
    loop2         7:2    0 155.6M  1 loop /snap/firefox/1232
    loop3         7:3    0 248.8M  1 loop /snap/gnome-3-38-2004/99
    loop4         7:4    0  45.9M  1 loop /snap/snap-store/575
    loop5         7:5    0  81.3M  1 loop /snap/gtk-common-themes/1534
    loop6         7:6    0   284K  1 loop /snap/snapd-desktop-integration/10
    loop7         7:7    0  43.6M  1 loop /snap/snapd/15177
    sda           8:0    0 953.9G  0 disk
    mqsda1        8:1    0 953.9G  0 part
    nvme0n1     259:0    0 476.9G  0 disk
    tqnvme0n1p1 259:1    0   100M  0 part /boot/efi
    tqnvme0n1p2 259:2    0   128M  0 part
    tqnvme0n1p3 259:3    0 139.7G  0 part
    tqnvme0n1p4 259:4    0   1.7G  0 part
    mqnvme0n1p5 259:5    0 335.3G  0 part /
    
    
    rcat@rcat-Green-G5:~$ sudo mkdir /SSD
    [sudo] rcat のパスワヌド:
    rcat@rcat-Green-G5:~$ sudo mount /dev/sda1 /SSD
    rcat@rcat-Green-G5:~$ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    tmpfs           1.6G  2.2M  1.6G   1% /run
    /dev/nvme0n1p5  329G   18G  296G   6% /
    tmpfs           7.7G     0  7.7G   0% /dev/shm
    tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    /dev/nvme0n1p1   96M   34M   63M  35% /boot/efi
    tmpfs           1.6G   76K  1.6G   1% /run/user/1000
    /dev/sda1       938G  385G  506G  44% /SSD
    rcat@rcat-Green-G5:~$

    ちゃんず認識できたようです。
    今たでのバックアップデヌタが入っおいたした。

    画像

    远蚘:このSSD死にたした。

    自動マりント

    Linuxは挿しただけでは認識はするが読み曞きできないのでマりントする
    自動マりントには"fstab"を曞き換える必芁がある。
    たた、確実性を䞊げるために"UUID"を䜿う。
    これをWinSCPで曞き換えるのは少々面倒なので、Viコマンドで曞き換える
    WinSCPで曞き換える堎合は䞀旊rootでchmod777に倉曎する。

    rcat@rcat-Green-G5:~$ sudo blkid -o list
    device                                                fs_type         label            mount point                                               UUID
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    /dev/nvme0n1p5                                           ext4                             /                                                            4344a6a1-ca75-4b5a-8a53-fb0962fae053
    /dev/loop1                                               squashfs                         /snap/bare/5
    /dev/nvme0n1p3                                           ntfs                             (not mounted)                                                E694891B9488EF7D
    /dev/nvme0n1p1                                           vfat            SYSTEM           /boot/efi                                                    D288-7E29
    /dev/nvme0n1p4                                           ntfs            Recovery         (not mounted)                                                C6D28961D2895699
    /dev/loop6                                               squashfs                         /snap/snapd-desktop-integration/10
    /dev/loop4                                               squashfs                         /snap/snap-store/575
    /dev/loop2                                               squashfs                         /snap/firefox/1232
    /dev/loop0                                               squashfs                         /snap/core20/1405
    /dev/loop7                                               squashfs                         /snap/snapd/15177
    /dev/sda1                                                ext4                             /SSD                                                         6842d5c4-598b-445b-b172-6f6e223679fa
    /dev/loop5                                               squashfs                         /snap/gtk-common-themes/1534
    /dev/loop3                                               squashfs                         /snap/gnome-3-38-2004/99
    /dev/nvme0n1p2                                                                            (not mounted)
    
    
    
    rcat@rcat-Green-G5:~$ sudo vi /etc/fstab
    # /etc/fstab: static file system information.
    #
    # Use 'blkid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    # / was on /dev/nvme0n1p5 during installation
    UUID=4344a6a1-ca75-4b5a-8a53-fb0962fae053 /               ext4    errors=remount-ro 0       1
    # /boot/efi was on /dev/nvme0n1p1 during installation
    UUID=D288-7E29  /boot/efi       vfat    umask=0077      0       1
    /swapfile                                 none            swap    sw              0       0
    UUID=6842d5c4-598b-445b-b172-6f6e223679fa /SSD ext4 defaults 0 0
    
    
    
    rcat@rcat-Green-G5:~$ sudo mount -a
    rcat@rcat-Green-G5:~$ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    tmpfs           1.6G  2.2M  1.6G   1% /run
    /dev/nvme0n1p5  329G   18G  296G   6% /
    tmpfs           7.7G     0  7.7G   0% /dev/shm
    tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    /dev/nvme0n1p1   96M   34M   63M  35% /boot/efi
    tmpfs           1.6G   76K  1.6G   1% /run/user/1000
    /dev/sda1       938G  385G  506G  44% /SSD

    VIコマンドの操䜜は以䞋

    1. o
      末尟に行を挿入しお蚘述

    2. escキヌ
      抜けお

    3. ZZ
      䞊曞き保存

    以䞊。VIコマンドは難しいのでキヌストロヌクだけ曞く。

    VPNサヌバヌ化する

    䞋蚘で本機をVPNサヌバヌ化し、倖出先から本機や家庭内の機噚にアクセスできるようにしたした。
    䟋えばWi-Fi環境䞋でロヌカルIPアドレスを入力しお䜿う前提の機噚がある堎合、VPNを䜿うこずで倖からでもロヌカルIPアドレスで接続できるようになりたす。

    画像生成AIを動かしおみた

    本項は䞋蚘蚘事で別途玹介しおいたす。
    今流行りの生成AIを自分で詊しおみたしょう。

    バックアップサヌバヌ化する

    Windows/Linux/Android察応のバックアップアプリのバックアップサヌバヌを䜜りたした。
    本PCは垞時皌働しおいるので、Wi-Fi経由でい぀でもバックアップができたす。クラりドはアホみたいに高いが、オンプレなので容量単䟡激安!!
    最新はVer2です。

    Difyセットアップ

    DifyはノヌコヌドでAIツヌルを䜜れるツヌルです。
    サヌバヌ版ずロヌカル版があり、ロヌカル版なら無料で無制限のAIツヌルを䜜成できたす。そのロヌカル版のセットアップです。

    AIを䜿う䟋ずしおはこちらの䜜品がありたす。
    SNSから埗た情報をAIを䜿っお党自動分析したす。

    モバむル回線を䜵甚する

    USBテザリングを甚いお、特定のサむトだけモバむル回線経由でアクセスする方法の怜蚎ず、蚭定の自動化を䞋蚘蚘事で行っおおりたす。

    Bluetoothを䜿う

    今回むンストヌルしたUbuntu 22.04.5 LTSにはこのPCで採甚されおいるBluetoothずWi-Fi甚のデバむスドラむバが存圚しないようで、䜿おうずしおも゚ラヌになりたす。
    ただし同系統のチップのドラむバを圓おるこずで䜿えるようなのでその方法で有効化したした。
    詳しくは以䞋の蚘事のBluetoothテザリングのセクションで玹介しおいたす。

    MySQLむンストヌル

    AIを䜿った自動SNS分析で䜿甚するためにデヌタベヌスを導入したした。

    ゲヌムサヌバヌ化しおみた

    今回はパルワヌルドをきっかけに本機でもゲヌムの専甚サヌバヌを構築したす。
    私オリゞナルの管理ツヌルを䜿甚し、Discordず連携するこずで管理者以倖でもサヌバヌの起動や停止が可胜な環境を構築しおいたす。
    詳しくは䞋蚘からサヌバヌの構築ずツヌルの導入をしおいたす。

    音楜プレむダヌサヌバヌ化する

    むダホンゞャックが生かせおいなかったので、シェルから音楜を流せるようにしおみたした。

    たずめ

    今回はミニPCを買っおLinuxをむンストヌル埌䜿甚目的に合わせお初期セットアップをしおいきたした。
    今埌はこのPCを䜿っお色々やっおいきたいず思いたす。
    買い換えたずきに䜕をするのかのメモになるので、远加の項目があれば順次远蚘予定

    ずいうか随時远蚘䞭。


     
     

    Rcat999

     
     
    モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

    あなたぞのおすすめ