お知らせ

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

フルスクラッチで組むやつ

確認環境

Env Ver
Ubuntu 20.04.4 LTS
nginx 1.18.0 (Ubuntu)
MariaDB 15.1 Distrib 10.3.34-MariaDB
grafana-server Version 9.2.5 (commit: 042e4d216b, branch: HEAD)

前提

  • Windows側からhttp://grafana.test/としてアクセスする
  • DBにはMariaDBを使用

hostsの編集

Windows側のhostsに以下を追記

127.0.0.1 grafana.test

各種環境のインストール

sudo apt update
sudo apt install -y nginx mariadb-server

sudo apt-get install -y apt-transport-https software-properties-common wget
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana

nginxの設定

cat <<'EOF' | sudo tee /etc/nginx/conf.d/granafa.conf
map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

upstream grafana {
  server localhost:4000;
}

server {
  listen       80;
  server_name  grafana.test;
  access_log   /var/log/nginx/grafana.access.log;
  error_log    /var/log/nginx/grafana.error.log;


  location / {
    proxy_set_header Host $http_host;
    proxy_pass  http://grafana;
  }

  location /api/live/ {
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Host $http_host;
    proxy_pass http://grafana;
  }
}
EOF

sudo service nginx start

MariaDBの設定

ユーザー作成

idpwの部分は適当に変える

sudo service mysql start
sudo mysql
CREATE USER 'id'@'%' IDENTIFIED BY 'pw';
GRANT ALL PRIVILEGES ON *.* TO 'id'@'%' WITH GRANT OPTION;
quit

外部接続テスト

適当なRDBクライアントから繋げればOK

grafanaの設定

  1. sudo nano /etc/grafana/grafana.iniで適当にいじる
# The http port  to use
http_port = 4000

# The public facing domain name used to access grafana from a browser
domain = grafana.test
  1. sudo service grafana-server start
  2. http://grafana.test/ へアクセス
    1. IDPW共にadminが初期

DBの読み込み

  1. MariaDBに適当なDBとテーブルを作る
  2. Grafanaにログインする
  3. サイドバーからConfiguration -> Data sources
  4. DBの情報を入れて接続
  5. 後はよしなにやる

MSYS2

初回セットアップ

pacman -Syuu
# 一回落ちるのでもう一度起動して
pacman -Syuu

入れとくと便利なものたち

pacman

pacman -sS unzip
pacman -S --noconfirm unzip
pacman -sS diffutils
pacman -S --noconfirm diffutils
pacman -sS dnsutils
pacman -S --noconfirm dnsutils
pacman -sS openssh
pacman -S --noconfirm openssh
pacman -sS patch
pacman -S --noconfirm patch
pacman -sS perl
pacman -S --noconfirm perl
pacman -sS zsh
pacman -S --noconfirm zsh
pacman -sS git
pacman -S --noconfirm git
# prompt用に退避させる
mv /usr/bin/git /usr/bin/msys2_git

バイナリ追加

  • jq
    • chocoから入れる
  • dig
    • .x64.zipが入っているバージョンを/usr/binに突っ込む

dotfileの設定

https://github.com/Lycolia/my-dotfiles

Windows Terminal連携

{
  "defaultProfile": "{17da3cac-b318-431e-8a3e-7fcdefe6d114}",
  "profiles": {
    "defaults": {},
    "list": [
      {
        "commandline": "C:/env/msys64/msys2_shell.cmd -defterm -here -use-full-path -no-start -msys -shell zsh",
        "font": {
          "face": "Consolas",
          "size": 11
        },
        "guid": "{17da3cac-b318-431e-8a3e-7fcdefe6d114}",
        "icon": "C:/env/msys64/mingw64.ico",
        "name": "MINGW64 / MSYS2",
        "colorScheme": "VSCode"
      }
    ]
  },
  "schemes": [
    {
      "name": "VSCode",
      "background": "#1e1e1e",
      "foreground": "#d4d4d4",
      "black": "#000000",
      "blue": "#2472c8",
      "brightBlack": "#666666",
      "brightBlue": "#3b8eea",
      "brightCyan": "#29b8db",
      "brightGreen": "#23d18b",
      "brightPurple": "#d670d6",
      "brightRed": "#f14c4c",
      "brightWhite": "#e5e5e5",
      "brightYellow": "#f5f543",
      "cyan": "#11a8cd",
      "green": "#0dbc79",
      "purple": "#bc3fbc",
      "red": "#cd3131",
      "white": "#e5e5e5",
      "yellow": "#e5e510"
    }
  ]
}

msys2_shell.cmdのCLI Optionsの意味合い

-mingw32 | -mingw64 | -ucrt64 | -clang64 | -msys[2]

それぞれで実行環境が変わる
-msysで基本的に良い

-defterm | -mintty | -conemu

開くターミナルの指定

  • -defterm
    • 標準ターミナルで開く
    • Windows TerminalやVSCodeで開く場合はこれを指定する
  • -mintty
    • Minttyが起動する
  • -conemu
    • Conemuが起動する

-here

現在の作業フォルダをカレントディレクトリとして開く

-where DIRECTORY

指定ディレクトリをカレントディレクトリとして開く

-[use-]full-path

Windowsのパスを継承する

-no-start

新窓で開かない
指定しない場合startコマンドでシェルが起動する

-shell SHELL

ログインシェルを指定する
例えば-shell zshならzshがログインシェルになる
未指定の場合bashがログインシェルになる
msys2_shell.cmdを書き換えて実現することもできるが、アップデートで書き換えた内容が消えることがあるのでオススメしない

-help | --help | -? | /?

ヘルプの表示

手順

  1. xrdpが入っていなければxrdpをインストール
    1. Desktop版なら最初から入ってた気もする
  2. 3389ポートを開ける
    1. sudo ufw allow 3389
  3. オートログインを殺す
    1. sudo sed -ie 's/AutomaticLoginEnable=true/AutomaticLoginEnable=false/' /etc/gdm3/custom.conf
  4. あとは再起動してWindowsのリモートデスクトップから繋げて画面が映ればOK
    1. sudo reboot

トラブルシューティング

接続したけど画面が真っ暗

pkill gnome-sessionでログインセッションを殺す

左にあるDockが表示されない・設定に外観がない・その他物理接続時とデスクトップの表示が異なる

sudo nano /etc/xrdp/startwm.shして以下の内容を追記する

export DESKTOP_SESSION=ubuntu
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME

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が入ることを確認(かなり古い)