ブラウザからAlpine Linuxの管理 - Webmin, portainer

May 17, 2023

linuxAlpineLinux

はじめに

Alpine Linuxが稼働するPC本体には、ディスプレイもキーボードもマウスも接続せず、ルータの隣に常時稼働させて放置しておき、ァイルサーバ等で使用することを想定しています。

サーバの設定は、Webブラウザから出来るようにと、Webminをインストールします。 Webminではdockerの稼働管理は行えませんので、Webブラウザからdockerの稼働管理を行うPortainerもインストールします。

本記事は、Alpine LinuxにWebmin, Portainerをインストールした際の手順の備忘録です。

Webminのインストール

Alpine LinuxではWebminはapkパッケージには無いので、以下のようにインストールします。

まず、Perlをインストールします。

# apk add perl

Webminを取得しインストールします。webmin-1.890をインストールしましたが、これは最新ではありません。

# cd /etc/
# wget https://sourceforge.net/projects/webadmin/files/webmin/1.890/webmin-1.890.tar.gz

# tar xvzf webmin-1.890.tar.gz

# mv webmin-1.890 webmin
# rm webmin-1.890.tar.gz

Webminのセットアップ

# cd /etc/webmin
# ./setup.sh

Config file directory [/etc/webmin]:
Log file directory [/var/webmin]:
Full path to perl (default /usr/bin/perl):
Operating system: 45
Version: 8
Web server port (default 10000):
Login name (default admin):
Login password:********
Password again:********
Start Webmin at boot time (y/n): y

以上でWebminサーバが起動します。ここで「Operating system:」に対して、「45) Debian Linux」を応答しました。本来はAlpine Linuxを応答すべきなのですが、選択肢の中にAlpine Linuxはない!

そこで、CharGPTに、

  1) Pardus Linux           2) SmartOS                3) Sun Solaris
  4) Lycoris Desktop/LX     5) Caldera OpenLinux eS   6) Caldera OpenLinux
  7) Asianux Server         8) Asianux                9) Whitebox Linux
 10) Tao Linux             11) CentOS Linux          12) Springdale Linux
 13) Virtuozzo Linux       14) Scientific Linux      15) Gralinux
 16) NeoShine Linux        17) Endian Firewall Linu  18) Oracle Enterprise Li
 19) Oracle VM             20) XenServer Linux       21) CloudLinux
 22) MostlyLinux           23) Cloudrouter Linux     24) Sangoma Linux
 25) Redhat Enterprise Li  26) Redhat Linux Desktop  27) AlphaCore Linux
 28) X/OS Linux            29) Haansoft Linux        30) cAos Linux
 31) Wind River Linux      32) Amazon Linux          33) Redhat Linux
 34) Fedora Linux          35) White Dwarf Linux     36) Slamd64 Linux
 37) Slackware Linux       38) Xandros Linux         39) APLINUX
 40) BigBlock              41) Ubuntu Linux          42) Mepis Linux
 43) Devuan Linux          44) Linux Mint            45) Debian Linux
 46) SuSE OpenExchange Li  47) SuSE SLES Linux       48) SuSE Linux
 49) United Linux          50) Corel Linux           51) TurboLinux
 52) Cobalt Linux          53) Mandrake Linux Corpo  54) pclinuxos Linux
 55) Mageia Linux          56) Mandrake Linux        57) Mandriva Linux
 58) Mandriva Linux Enter  59) Conectiva Linux       60) ThizLinux Desktop
 61) ThizServer            62) MSC Linux             63) SCI Linux
 64) LinuxPPC              65) Trustix SE            66) Trustix
 67) Tawie Server Linux    68) TinySofa Linux        69) Cendio LBS Linux
 70) Ute Linux             71) Lanthan Linux         72) Yellow Dog Linux
 73) Corvus Latinux        74) Immunix Linux         75) Gentoo Linux
 76) Secure Linux          77) OpenNA Linux          78) SoL Linux
 79) Coherent Technology   80) Playstation Linux     81) StartCom Linux
 82) Yoper Linux           83) Caixa Magica          84) openmamba Linux
 85) FreeBSD               86) DragonFly BSD         87) OpenBSD
 88) NetBSD                89) BSDI                  90) HP/UX
 91) SGI Irix              92) DEC/Compaq OSF/1      93) IBM AIX
 94) SCO UnixWare          95) SCO OpenServer        96) Mac OS X
 97) Darwin                98) OpenDarwin            99) Cygwin
 100) Sun Java Desktop Sys  101) Synology DSM          102) Generic Linux
 103) Windows
この中でAlpine Linuxに最も近いのはどれ

と聞いてみたところ、

Alpine Linuxに最も近いディストリビューションはSlackware Linuxです。

とのことだった。同じ質問をGoogle Bardにも聞いてみると、

The Linux distribution that is closest to Alpine Linux is Debian. 

とのことだった。こちらの答えのほうがましなように思えたので「Operating system:」の応答は「45) Debian Linux」にしました。

サーバ起動時にWebminを起動するための設定はsetup.shではうまくいかず、initスクリプトを登録する必要があった。

/etc/init.d/webminファイルを作成し、

/etc/init.d/webmin
#!/sbin/openrc-run
start() { /etc/webmin/start; }
stop() { /etc/webmin/stop; }

実行権限を付与

# chmod +x /etc/init.d/webmin

起動設定

# rc-update add webmin default

次に、Webブラウザで、
http://ホスト名:10000/
にアクセスすると、ログイン画面が出ます。

login.png

Username=root, password=ルートのパスワード, を入れてログインします。

Webmin >> Change Language and Theme

ChangeLanguage.png

Language Japanese(JA_JP,UTF-8) にすると、日本語でWebminダッシュボードが表示されます。

Dashboard.png

Webでのシステム管理例として、Sambaの管理をやってみます。

Webmin >> サーバー >> Samba Windows ファイル共有

SambaShareManager3.png

あとは直感的に操作できると思います。必要にして十分な設定機能なのですが、ぶっちゃけconfigファイルを直接さわるほうが手っ取り早い。

もしメニューに、

Webmin >> サーバー >> Samba Windows ファイル共有

が無かったら

Webmin >> 未使用のモジュール >> Samba Windows ファイル共有

にあるかもしれません。この場合は、ここでSambaのパスを正しく設定すれば、メニューの位置が「未使用のモジュール」から「サーバー」に 移動してくれます。

もう1つシステム管理例として、ファイアーウォールの管理をやってみます。

Webmin >> ネットワーク >> Linux ファイアーウォール

IPTables.png

これは

# iptables -n -L

をやっているだけなんだけど、GUIで個別にポートを開放したり閉じたりできるので地味に便利。

他にもシステム管理がWebからできちゃうので、セキュリティを心配しなくていい環境ならば便利といえば便利なんですが、ぶっちゃけconfigファイルを直接さわるほうが手っ取り早い。

Portainerのインストール

Portainerをdocker composeでインストールします。

"docker-compose.yaml"
version: '2'
services:
  portainer:
    image: portainer/portainer
    ports:
      - 9000:9000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
	  - ./data:/data
    restart: always

Portainerの起動

docker compose up -d

portainer1.png

参考

https://www.portainer.io/installation/ 公式ドキュメント

https://qiita.com/ao_log/items/d8ef847c826746f9e84b 自宅での技術検証がより楽しくなる? portainer で Docker コンテナ管理version: ‘2’

https://obel.hatenablog.jp/entry/20180816/1534391250 Docker を管理する Webアプリ Portainer を Docker Compose で起動する

nginxリバースプロキシの設定変更

本記事に従いインストールしたWebminとPortainerをアクセスするには、

ですが、

でアクセスできるようにnginxの設定を行います。

/etc/nginx/conf.d/default.conf
server {
    listen 80;

    server_name larkbox;
    client_max_body_size 128m;

    index index.html index.htm index.php;

    location /webmin/ {
        proxy_pass http://localhost:10000;
        rewrite /webmin/(.*)$ /$1 break;
        access_log off;
    }
    location /portainer/ {
        proxy_pass http://localhost:9000;
        rewrite /portainer/(.*)$ /$1 break;
        access_log off;
    }
    location / {
        proxy_pass http://localhost:8080/;
        access_log off;
    }

}

default.confを修正したら、nginxを再起動。

# rc-service nginx restart

Written by questions6768 who lives in Uji, Kyoto.