🍉
ミニPCでマルチサーバー構築 [GUI環境整備]
ミニPCでマルチサーバー構築シリーズのGUI環境整備の記録メモです。シリーズ最後の記事です。
シリーズ
- N100搭載ミニPCでマルチサーバーの構想と構築準備
- ミニPCでマルチサーバー構築 [OS等インストール]
- ミニPCでマルチサーバー構築 [Sambaコンテナ]
- ミニPCでマルチサーバー構築 [PostgreSQLコンテナ]
- ミニPCでマルチサーバー構築 [Nginxコンテナ]
- ミニPCでマルチサーバー構築 [Immichコンテナ]
- ミニPCでマルチサーバー構築 [VaultwardenコンテナとTailscale]
- ミニPCでマルチサーバー構築 [AdGuard Homeコンテナ]
- ミニPCでマルチサーバー構築 [GUI環境整備] この記事
簡単な要件
- 自動でログインする
- ログイン時に自動でブラウザを表示
- マウス,キーボード操作無し かつ iPadのみでも操作可能
- 基本はモニタを見て、操作時のみiPad使用
- モニタ表示はメインのため常時表示させる
- 操作は極力シームレスに行う
- 無料のソリューション
検討事項
- ソリューション選定
- モニタ常時表示のためRDPは使えない
- 操作時にいちいちログイン等もしてられない
- そのため他のリモートデスクトップを探す
- セルフホストも可能なRustDeskに一度決めたが断念
- 後日LXQtでは簡単に使用できない事が判明した
- 代わりに個人利用なら無料なAnyDeskに決定
- モニタ常時表示のためRDPは使えない
- 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
日本語入力の設定
- Fcitx5の設定を開く
- "入力メソッド"タブのキーボード一覧の中から"Mozc"を選択して左に追加する
- "グローバルオプション"タブで好きな設定に変更する
- 図等はこちらの記事を参照
注意点
- 自動ログイン後のBraveブラウザ自動起動時にはパスワード入力を求められる
- これを無効化する手立ては無い
- AnyDeskと自動認証スクリプト起動はパスワード無しで動作する
- 何故なのか不明
- そのためパスワードはiPadで接続して入力可能
- マウスレス,キーボードレス達成
Discussion