お知らせ

現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。

WindowsからのRDP接続を前提として主にSSDブート、リモート環境構築、Let's Encrypt、LAMP、Nodeの環境構築を行う

🌏 環境

Windows側の環境は省略

環境 バージョン
Raspbian 2020-05-27-raspios-buster-arm64
acme.sh 2.8.7
PHP 7.3.19-1
MariaDB 10.3.23
phpMyAdmin 5.0.2
Node.js 10.21.0
npm 5.8.0
Yarn 1.22.4

📜 Raspberry Pi 4をUSB SSDからブートする

まずはここから

📞 リモート環境の構築

本体操作によるセットアップ

Headlessでできるならよしなにしてもいい気はする

  1. ラズパイにモニタ、キーボード、電源の通ったUSB-Cケーブルを接続
  2. 数分待つとセットアップウィザードが出てくるので適当に進める
    1. この途中でWiFiルーターに繋がるように設定しておく
  3. セットアップウィザードが終わったらWinKeyでメニューを出し設定> Raspberry Piの設定でSSHとVNCを有効
  4. シャットダウンする
  5. 電源USB以外を全部抜く

パッケージ情報の更新

  • sudo apt-get update

XRDPのインストール

Windows10からのRDP接続で現状操作不能だが一応書いておく

  1. sudo apt-get install xrdp
  2. Windows 10のリモートデスクトップ接続から接続確認

SSHD設定

待受ポートの変更と認証方式の変更

待受ポートの変更と外部接続
  1. sudo nano /etc/ssh/sshd_config
  2. Port 22を適当なポートに変更
認証方式の変更
  1. RLoginの機能で認証キーを生成
  2. sudo nano /etc/ssh/sshd_configで以下の設定に変更
   PubkeyAuthentication yes
   AuthorizedKeysFile      .ssh/authorized_keys
   PasswordAuthentication no
   PermitEmptyPasswords no
  1. ~/.ssh/authorized_keysを作る
mkdir ~/.ssh/
nano ~/.ssh/authorized_keys
  1. 公開鍵をコピーして~/.ssh/authorized_keysの一行目に貼り付ける
  2. sudo /etc/init.d/ssh restartでSSHDを再起動
  3. RLoginから再接続できたらOK
AndroidからSSH接続
  1. RLoginから秘密鍵を吐く
  2. JuiceSSHで秘密鍵を読む
  3. 終わり

Uncomplicated Firewallのインストールと設定

  1. sudo apt install ufw

  2. systemctl start ufw

  3. sudo ufw enableでFirewallを有効化

  4. SSHの穴をあける

    1. sudo ufw allow SSHのポート番号
  5. VNSの穴をあける

    1. WindowsRDPからラズパイに接続

    2. 蹴られるのでcat /var/log/ufw.logでログを見る

    3. 蹴られているDPT3389だったのでsudo ufw allow 3389

      1. help.ubuntu.comによるとSPTがSource Port、DPTがDestination Portということらしい
  6. sudo ufw status numberedで設定内容を確認

  7. SSHとRDPの接続確認

🔐 Let's Encrypt! DDNS Challenge

💡 LAMP環境構築

MariaDB, Apache, PHPのインストール

この環境でのApacheはphpMyAdminを動かすためだけに使用(外部公開しない)

  • sudo apt install -y mariadb-server apache2 php php-mysql libapache2-mod-php

MariaDBの設定

外部接続しないケース
  1. sudo mysql_secure_installation
  2. sudo mysql
  3. CREATE USER 'id'@'localhost' IDENTIFIED BY 'pw';
  4. GRANT ALL PRIVILEGES ON *.* TO 'id'@'localhost' WITH GRANT OPTION;
外部接続するケース
  1. sudo mysql_secure_installation

  2. sudo mysql

  3. CREATE USER 'id'@'%' IDENTIFIED BY 'pw';

  4. GRANT ALL PRIVILEGES ON *.* TO 'id'@'%' WITH GRANT OPTION;

  5. quit

  6. sudo nano /etc/mysql/my.cnfで最終行に以下を追加

[mysqld]
skip-networking=0
skip-bind-address

Apacheの設定

  1. sudo nano /etc/apache2/apache2.confで既存の設定をコメントアウトして適当にルートを追加
<Directory /home/pi/Public/>
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>
  1. sudo nano /etc/apache2/sites-available/000-default.confも同様に変更
Apacheを動かすユーザーの変更
  1. sudo nano /etc/apache2/envvars
  2. export APACHE_RUN_USER=www-dataexport APACHE_RUN_USER=pi に変える
  3. sudo /etc/init.d/apache2 reloadでここまで反映

phpMyAdminのインストール

何故かaptでインストールできなくなってるので手動インストール。Windowsマシンからブラウザを利用して設定する

  1. https://www.phpmyadmin.net/ からphpMyAdminをダウンロード
  2. Apacheの公開ディレクトリに置く
  3. sudo ufw allow 80
  4. sudo ufw reload
  5. http://192.168.xxx.xxx/phpmyadmin/setupへアクセス
  6. 適当に設定し、ダウンロードボタンを押すと設定ファイルが落ちてくるのでphpmyadminのルートに置く
  7. http://192.168.xxx.xxx/phpmyadmin/setupへアクセスしエラーになることを確認
  8. http://192.168.xxx.xxx/phpmyadminへアクセスし、MariaDBのIDPWでログインできることを確認
    1. この環境では80番ポートは外部公開してないので問題ないが、外部公開する場合は.htaccessをおいてローカル以外のアクセスを蹴ると良い

📈 Node.jsのインストール

  1. sudo apt install -y nodejs npm
  2. sudo npm i -g n yarn

🎈 おまけ

  • Gitのインストール
    • sudo apt install -y gitで2.20.1が入ることを確認(微妙に古い)
  • composerのインストール
    • sudo apt install -y composerで1.8.4が入ることを確認(かなり古い)
投稿日:
ガジェット::ラズパイ言語::PythonOS::Linux

Pythonでデーモンを作ったので、その手順のメモ

確認環境

Env Ver
OS 2020-05-27-raspios-buster-arm64
Python 3.7.3
python3-systemd 234-2+b1

やったこと

  1. python-systemdのインストール
    1. sudo apt-get install python-systemd python3-systemd
  2. ~/foo.pyを以下の内容で作成
from systemd import journal
journal.send('Hello world')
journal.send('Hello, again, world', FIELD2='Greetings!', FIELD3='Guten tag')
journal.send('Binary message', BINARY=b'\xde\xad\xbe\xef')
  1. 実行権限を付与する
    1. chmod 755 ~/foo.py
  2. systemdの定義ファイルを次の要領で作成
    1. sudo nano /etc/systemd/system/foo.serviceとして以下の内容を書く
[Unit]
Description = Foo

[Service]
ExecStart = python3 /home/pi/foo.py
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target
  1. デーモンを有効化する
    1. sudo systemctl enable foo.service
  2. デーモンを開始する
    1. sudo systemctl start foo.service
  3. ジャーナルを見る
    1. systemctl status roomenv.service
  4. なんかログが出てれば成功
    1. ExecStartsudoを書くと動かない(root権限で動作する模様)
投稿日:
ガジェット::その他

Surface Pro 7

Surface Pro 7 PUV-00027、Core i5 1035G4 MEM 8GBモデルのお話です。

タブレットというよりノートPCとしてみた方が適切かなと言う印象です。まぁ中身は単なるWindows 10なので当然と言えばそうですね。

今の所の印象としてはラグジュアリーで長時間駆動可能なミドルエンド2in1ノートといったところです。

タブレットとして

開発機クラスの存在を持ち運べると言う意味では悪くありません。しかし敢えてSurfaceである必要があるのかと言うと今のところ明確な回答は出せないです。いわゆるタブレットととしてみるとどうしても微妙と言わざるを得ないという部分が率直な感想。

悪くはない解像度

2736 x 1824の解像度を持つディスプレイと言う事で、この点においては魅力的ですが、12.3インチしかないため初期設定のスケーリング200%で運用しています。

ちょっと大きすぎるかも

これは利点でもあるのですが、今のところ運用する上で最大のボトルネックになっているところです。

満員電車で使うのは割と憚れるサイズです。使えない事は無くはないとは思いますが後述する重量との兼ね合いで難易度は高いと感じました。

とにかく重い

重量が800g弱あるため垂直にしても水平にしても斜めにしてもどう持っても重いです。片手で持つのは辛く、両手で持つと横持ちは大きいため肩がこりました。縦持ちなら比較的マシという程度。

文字入力周りについて

ソフトウェアキーボード或いはタッチキーボードとでも呼ぶものでしょうか、要するに画面上で使うキーボードのことです。AndroidのGoogle日本語入力に慣れてると大変入力効率が悪く、取り敢えず入力が出来るレベルの代物にしか見えませんでした。

因みにタイプカバーを立って使うのはスペース的にも形状的にも難しいと思うので、あくまでタブレットとして使う場合、どうやってこのキーボードを使っていくかが鍵になりそうです。

特にIMEとキーボードが一体化している点が個人的に色々と難しいポインツで、これは知る限り切り離せません。まぁAndroidなんかもそうなので理解はできるのですが、利点かと思えばデメリットしかなく、大人しくMS-IMEを使おうとか言う内容になります。

Google 日本語入力

みんな大好きGoogle日本語入力はPCのときとよく似た振る舞いをしてくれるおかげで変換候補や入力中の文字が確認し辛い問題があります。

変換のしやすさ

変換候補が出てくる所がカーソルから離れていて見辛いです。

2020-02-19-2.png

キーボードの種類

二種類しかなく左右分割の英字キーボードか分割なしのキーボードだけです。フリック入力などありません。

2020-02-19-3.png

MS-IME

嫌われ者のIMEですが、こちらは入力方式に富んでいます。

まず入力中の文字や変換候補はキーボードの上側に表示されます。見やすくていいですね。

2020-02-19-4.png

キーボードの種類も多くフリック入力からフルキーボードまで選び放題です。但しフルキーボードは平置きにしないと使いづらいと思います。

2020-02-19-6.png

フリック入力

みんな大好きフリック入力!AndroidのGoogle日本語入力とはレイアウトが異なりますが、慣れれば十分使えそうな代物ではあります。

しかし英字モードをQWERTY方式に出来ないのは個人的にはマイナスです。

2020-02-19-7.png
2020-02-19-8.png

フルキーボード

ShiftやAltなどの制御キーがついており、コーディングなどで重宝しそうですが本体を持って使うには不向きに感じました。

2020-02-19-9.png

左右分割キーボード

最初に戻ってきましたが、結局のところこれが一番マシな選択肢に思えました。肩こりますけど。両手で持って両手で叩けます。肩こりについては慣れなのかなという気もしました。

2020-02-19-10.png

ノートPCとして

タイプカバーとマウスを使って開発をしていても8hくらいはバッテリーが持つため、ノートPCとしては優秀かなという気はします。

実業務とかにありがちな重くてまともに開発できないといったことはVSCode + MySQL + Laravelでは感じなかったです。それなりにサクサクという感じ。

Office一式が入っていることや、人によっては液タブとしても使える点とかを考慮すれば総合的なコスパはいいのかもしれませんが、ごく単純な開発機としてみた場合のコスパはあまり高くないような気もします。ぶっちゃけ開発しないならAndroidタブレットで十分でしょうし、開発するにしてもタイプカバーとマウスを含めれば1kgを超えるため余りお手軽に持ち運べる感はありません。

買って軽く数日使った程度では評価するのが難しいと悟ったので、また使い込めたらその頃になんか書きたいと思います。可能性はあるデバイスだと信じているので...。