OpenWrt GUI webmin

:warning:Japanese notation

# はじめに
::: note
### 初心者対応構成
- スクリプトでの自動設定
- UCIとLuCi及びWinSCPにて比較しながら作業がおススメ
:::

::: note
### デバイスアクセス
#### [PowerShell](https://learn.microsoft.com/ja-jp/powershell/scripting/what-is-windows-powershell?view=powershell-7.4)の開始
- キー入力：**`Win`+`x` > `a` > `はい`**

#### [UCI（SSH）アクセス](https://openwrt.org/docs/guide-quick-start/sshadministration)
```powershell:powershell:初期設定用
ssh -o StrictHostKeyChecking=no -oHostKeyAlgorithms=+ssh-rsa root@192.168.1.1
```
- root@192.168.1.1's password:`初期値：パスワード無し`

<details><summary>OpenSSHのインストールが無い場合:exclamation:</summary>

- 機能の確認
※Windows 10 Fall Creators Update(1709)以降標準搭載
```powershell:powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
```
- 機能のインストール
```powershell:powershell
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
```
---

:::

# [webmin](https://github.com/webmin/webmin)

::: note
### 前提条件
- フラッシュ容量350MB以上（Google Wifi、ncp-hg100等おすすめ）
- 動作確認バージョン：webmin 2.110 
- 動作確認デバイス : [BPI-R3](https://qiita.com/site_u/items/4c3363f7c1ce2b7b3bfa)/ [NCP-HG100](https://qiita.com/site_u/items/e07cd5b6326039e45fde)
- 動作確認クライアント：Windows11


:::

::: note
### インフォメーション

- [Webインターフェースの概要](https://openwrt.org/docs/guide-user/luci/webinterface.overview)
- [ウェブミンとは何ですか?](https://webmin.com/)

![Dashboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/c8779571-7433-8738-4bdf-9b24a84c526b.png)


### Perlインストール

```sh
opkg update && opkg install tar gzip unzip shared-mime-info openssl-util coreutils coreutils-install coreutils-stty coreutils-df make gawk fdisk patch diffutils objdump
opkg list | grep perlbase-| awk '{print $1}' | xargs opkg install
opkg install perl-test-warn
opkg install perl-test-harness --force-overwrite

```

### webminインストール
※インストールディレクトリ(DIR)及びログファイルディレクトリ(LOG)：任意
```sh
DIR="/usr/libexec/webmin" # インストールディレクトリ
LOG="/lib/webmin" # ログファイルディレクトリ ※/var(=tmp)以外
sed -i "/bin:x:2:/d" /etc/group
echo bin:x:2: >> /etc/group
mkdir -p ${LOG}
wget --no-check-certificate -O /tmp/webmin.tar.gz https://www.webmin.com/download/webmin-current.tar.gz
mkdir -p ${DIR} && tar xzvf /tmp/webmin.tar.gz -C ${DIR} --strip-components 1
sed -i -e "s@/var/webmin@${LOG}@g" ${DIR}/setup.sh
sed -i -e "s/atboot=1/atboot=0/g" ${DIR}/setup.sh # xinetd利用時コメントアウト
sed -i "/makeboot=1/d" ${DIR}/setup.sh # xinetd利用時コメントアウト
RANDA8="head /dev/urandom | env LC_CTYPE=C tr -dc 'A-Za-z0-9'| cut -b -8"
RANDA2="head /dev/urandom | env LC_CTYPE=C tr -dc 'A-Za-z0-9'| cut -b -2"
RANDB8="tr -dc A-Za-z0-9 </dev/urandom | head -c 8"
RANDB2="tr -dc A-Za-z0-9 </dev/urandom | head -c 2"
sed -i -e "s@${RANDB8}@${RANDA8}@g" ${DIR}/setup.sh
sed -i -e "s@${RANDB2}@${RANDA2}@g" ${DIR}/setup.sh
${DIR}/setup.sh ${DIR}
```

### 設定値入力
※ユーザー名、パスワードなど、ログイン後変更可
※**太字**は入力必須
- Config file directory [/etc/webmin]:
- Log file directory [~~/var/webmin~~ /lib/webmin/]: `インストール時設定変更済` :warning:
- Full path to perl (default /usr/bin/perl):
- Operating system: **`Generic Linux`** :warning:
- Please enter the version of Generic Linux you are running Version: 例:**`5.15.150`** :warning:
- Web server port (default 10000):
- Login name (default admin): `任意`
- Login password: `任意`
　Password again: 
　The Perl SSLeay library is not installed. SSL not available.
- Start Webmin at boot time (~~y/n~~ n) `インストール時設定変更済` :warning:
- Webmin has been installed and started successfully.

### サービス修正

```sh
#! /bin/sh
/etc/webmin/stop
cp /etc/init.d/webmin /etc/init.d/webmin.old
chmod 644 /etc/init.d/webmin.old
sed -i "/session=1/d" /etc/webmin/miniserv.conf
SERV=`grep 'port=' /etc/webmin/miniserv.conf | cut -d'=' -f2`
echo -e "webmin\t\t${SERV}/tcp" >> /etc/services
cat << "EOS" | sed -i '/END INIT INFO/r /dev/stdin' /etc/init.d/webmin

START=98
STOP=01
EOS
cat << 'EOS' | sed -i '/case/r /dev/stdin' /etc/init.d/webmin
boot)
        $START
        RETVAL=$?
        if [ "$RETVAL" = "0" ]; then
                touch $LOCKFILE >/dev/null 2>&1
        fi
        ;;
EOS


service webmin enable
service webmin start

```

### サービス
- 確認
```sh
service webmin status

```
- 開始及び停止
```sh
# 有効
service webmin enable
# 開始
service webmin start
# 停止
service webmin stop
# 無効
service webmin disable

```

### 起動

- [192.168.1.1:10000](http://192.168.1.1:10000) ※初期値ポート
ログイン
　ユーザー: `admin` ※設定したユーザー
　パスワード:

### 日本語化

![webmin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/5a211bbf-685a-f812-4f6f-35172fdd89c4.png)

:::

::: note warn

### 既知の問題
#### インストール
- 修正済み
~~以下のエラーが出る~~
```sh
Creating web server config files ..
tr: write error: Broken pipe
tr: write error: Broken pipe
.. done
```

#### サービス
  - inetd=1を書くとリロードしなくなる
（テーマ、パスワード設定などリロードしない、リスタートで正常化）
```sh
echo inetd=1 >> /etc/webmin/miniserv.conf

```
  - inetd=1を書かないとリロードするが、まれにエラーを吐き出す（他正常）
`エラー: 404 File not found - /stats.cgi?xhr- stats=general`
```sh
sed -i "/inetd=1/d" /etc/webmin/miniserv.conf

```

#### [Perlモジュールインストール](https://github.com/Entware/Entware-ng/wiki/Self-installation-of-perl-modules)

Net::SSLeayインストール不可の為、SSL暗号化及びwebminアップグレード利用不可

![compile.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/db98c48b-12b0-eb32-1cae-1b423e7ab5c1.png)

[CPANの使用](https://github.com/Entware/Entware-ng/wiki/Self-installation-of-perl-modules#using-cpan)
[CPAN-DistnameInfo-0.12](https://metacpan.org/release/GBARR/CPAN-DistnameInfo-0.12/view/lib/CPAN/DistnameInfo.pm)
```sh
wget --no-check-certificate -O /tmp/CPAN-DistnameInfo-0.12.tar.gz https://cpan.metacpan.org/authors/id/G/GB/GBARR/CPAN-DistnameInfo-0.12.tar.gz
mkdir -p /tmp/CPAN-DistnameInfo && tar xzvf /tmp/CPAN-DistnameInfo-0.12.tar.gz -C /tmp/CPAN-DistnameInfo --strip-components 1
(cd /tmp/CPAN-DistnameInfo && perl Makefile.PL && make && make install) 
mkdir -p /tmp/perl_cash
HOME=/tmp/perl_cash perl -MCPAN -e shell
```
- `yes`

- `install HTTP::Date`

上記を繰り返す

- `install Net::SSLeay` :warning:不可
- `y`

- `bye`

#### Perlコンパイル

[perl5](https://github.com/Perl/perl5/tree/blead)

[Perl Source](https://www.cpan.org/src/)

OpenWrt上でのコンパイルはdumpが無い為、不可
```sh
opkg install coreutils-split coreutils-chmod coreutils-comm

```

https://github.com/Entware/Entware-ng/wiki/Self-installation-of-perl-modules

https://pkg.entware.net/binaries/other/mipsel.add/
:::

::: note alert

### 削除

```sh
service webmin stop
rm -rf /etc/init.d/webmin
rm -rf /etc/init.d/webmin.old
sed -i "/bin:x:2:/d" /etc/group
sed -i "/webmin/d" /etc/services
/etc/webmin/uninstall.sh
```

:::

:::

# 参考資料（感謝:relaxed:）

- [Webmin Openwrt の公式サポート](https://forum.openwrt.org/t/webmin-official-support-for-openwrt/166472)

- [OpenWrtにWebmin](https://qiita.com/Kamosandroid/items/1ff68f89e088399d0988)

# あとがき

- インストール後再起動すると、webminが起動しなくなったが、
デフォルトの/tmp(/ver)にログファイルディレクトリ指定していた為必要ファイルが消えていたからだ笑

- cat << "EOS" | sed　で書き出してみると、tabが入らない
sedなのだからspaceで良かった。。。

- Net::SSLeayが入らないからSSL暗号化は使えない、さて
config_h.SHが無いと言うので/usr/lib/perl5/5.28/COREに入れてみた
今度はperl.hが無いと言うので入れてみた
config_h.Sを入れたがconfig.hが無いと言われた　ひゃ～
環境用意して移植するかな・・・