🍉

ミニPCでマルチサーバー構築 [GUI環境整備]

2024/05/23に公開


ミニPCでマルチサーバー構築シリーズのGUI環境整備の記録メモです。シリーズ最後の記事です。

シリーズ

  1. N100搭載ミニPCでマルチサーバーの構想と構築準備
  2. ミニPCでマルチサーバー構築 [OS等インストール]
  3. ミニPCでマルチサーバー構築 [Sambaコンテナ]
  4. ミニPCでマルチサーバー構築 [PostgreSQLコンテナ]
  5. ミニPCでマルチサーバー構築 [Nginxコンテナ]
  6. ミニPCでマルチサーバー構築 [Immichコンテナ]
  7. ミニPCでマルチサーバー構築 [VaultwardenコンテナとTailscale]
  8. ミニPCでマルチサーバー構築 [AdGuard Homeコンテナ]
  9. ミニPCでマルチサーバー構築 [GUI環境整備] この記事

簡単な要件

  • 自動でログインする
  • ログイン時に自動でブラウザを表示
  • マウス,キーボード操作無し かつ iPadのみでも操作可能
  • 基本はモニタを見て、操作時のみiPad使用
  • モニタ表示はメインのため常時表示させる
  • 操作は極力シームレスに行う
  • 無料のソリューション

検討事項

  • ソリューション選定
    • モニタ常時表示のためRDPは使えない
      • 操作時にいちいちログイン等もしてられない
      • そのため他のリモートデスクトップを探す
    • セルフホストも可能なRustDeskに一度決めたが断念
      • 後日LXQtでは簡単に使用できない事が判明した
    • 代わりに個人利用なら無料なAnyDeskに決定
  • AnyDesk接続時にリモート操作受入の認証が必要
    • 認証と言っても"Accept"ボタンを押すだけ
    • だがサーバー側で押さなければ操作不能
    • iPadの画面が消灯するたびに再接続=認証が必要
    • iPadから繋ぐ毎にサーバー側では"Accept"ボタンが前面に表示される
  • Acceptボタン押下の自動化
    • ローカルネットワークのためセキュリティ無視
    • いわゆるRPAは各ソフト独自路線すぎて使いたくない
    • PythonのPyAutoGUIが良さそうなので使用決定
    • 作成したスクリプトを常に動作させ続ける
      • 3秒おきに押下させる

ソフトインストール

レポジトリ追加

Ubuntu 24.04 LTSからdeb822形式が採用されたので、deb822形式に変換してレポジトリを追加する。

# Add brave repository
sudo curl -fsSL https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg -o /usr/share/keyrings/brave-browser-archive-keyring.gpg
sudo chmod 644 /usr/share/keyrings/brave-browser-archive-keyring.gpg
cat << EOF | sudo tee /etc/apt/sources.list.d/brave-browser-release.sources > /dev/null
Types: deb
URIs: https://brave-browser-apt-release.s3.brave.com/
Suites: stable
Components: main
Signed-By: /usr/share/keyrings/brave-browser-archive-keyring.gpg
Architectures: amd64
EOF

# Add anydesk repository
sudo curl -fsSL https://keys.anydesk.com/repos/DEB-GPG-KEY -o /etc/apt/keyrings/anydesk-keyring.asc
sudo chmod 644 /etc/apt/keyrings/anydesk-keyring.asc
cat << EOF | sudo tee /etc/apt/sources.list.d/anydesk.sources > /dev/null
Types: deb
URIs: http://deb.anydesk.com/
Suites: all
Components: main
Signed-By: /etc/apt/keyrings/anydesk-keyring.asc
Architectures: amd64
EOF

インストール

sudo apt update
sudo apt install -y \
  brave-browser \
  anydesk \
  python3-venv python3-pip python3-tk python3-dev \
  fcitx5-mozc
  # For Japanese input, install fcitx5-mozc

GUI操作スクリプト作成

仮想環境作成

mkdir ~/auto_gui
python3 -m venv ~/auto_gui
source ~/auto_gui/bin/activate
pip install pyautogui Pillow opencv-python
source ~/auto_gui/bin/deactivate

スクリプト作成

timeモジュールのsleep関数はCPUを浪費しません。

sample code
main.py
import pyautogui as gui
import pyscreeze
from time import sleep

def main():
    wait_img('~/auto_gui/anydesk_accept.png')

def wait_img(img_path):
    while True:
        try:
            if gui.locateOnScreen(f'{img_path}', confidence=0.8):
                click_img(img_path)
        except gui.ImageNotFoundException:
            pass
        sleep(3)

def click_img(img_path):
    x, y = gui.center(gui.locateOnScreen(f'{img_path}', confidence=0.8))
    gui.click(x, y, button='left')
    sleep(0.05)

if __name__ == '__main__':
    main()

ディレクトリ構成

  • 一部を抜粋
    • anydesk_accept.pngはAnyDeskの"Accept"ボタン画像
$ tree -L 1 ~/auto_gui/
~/auto_gui/
├── anydesk_accept.png
├── auto_gui.sh
└── main.py

auto_gui.sh

#!/bin/bash
source "~/auto_gui/bin/activate"
python3 -u ~/auto_gui/main.py

ディスプレイマネージャ等の設定変更

オートログイン設定

sudo cp -p /etc/sddm.conf /etc/sddm.conf.bk
sudo cat << EOF | sudo tee /etc/sddm.conf > /dev/null
[Autologin]
User=user1
Session=Lubuntu
Relogin=true
EOF

プログラムのログイン時自動起動

mkdir -p ~/.config/autostart/
cat << EOF > ~/.config/autostart/anydesk.desktop
[Desktop Entry]
Exec=anydesk
Name=anydesk
OnlyShowIn=LXQt;
Type=Application
Version=1.0
EOF
cat << EOF > ~/.config/autostart/brave.desktop
[Desktop Entry]
Exec=brave-browser --noerrdialogs --disable-notifications --enable-chrome-browser-cloud-management
Name=brave
OnlyShowIn=LXQt;
Type=Application
Version=1.0
EOF
cat << EOF > ~/.config/autostart/auto_gui.desktop
[Desktop Entry]
Exec=nohup ~/auto_gui/auto_gui.sh &
Name=auto_gui
OnlyShowIn=LXQt;
Type=Application
Version=1.0
EOF

日本語入力の設定

  1. Fcitx5の設定を開く
  2. "入力メソッド"タブのキーボード一覧の中から"Mozc"を選択して左に追加する
  3. "グローバルオプション"タブで好きな設定に変更する

注意点

  • 自動ログイン後のBraveブラウザ自動起動時にはパスワード入力を求められる
    • これを無効化する手立ては無い
  • AnyDeskと自動認証スクリプト起動はパスワード無しで動作する
    • 何故なのか不明
  • そのためパスワードはiPadで接続して入力可能
    • マウスレス,キーボードレス達成

参考文献

Discussion