ブラウザからAlpine Linuxの管理 - Webmin, portainer
May 17, 2023
linux AlpineLinuxはじめに
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ファイルを作成し、
#!/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/
にアクセスすると、ログイン画面が出ます。
Username=root, password=ルートのパスワード, を入れてログインします。
Webmin >> Change Language and Theme
Language Japanese(JA_JP,UTF-8) にすると、日本語でWebminダッシュボードが表示されます。
Webでのシステム管理例として、Sambaの管理をやってみます。
Webmin >> サーバー >> Samba Windows ファイル共有
あとは直感的に操作できると思います。必要にして十分な設定機能なのですが、ぶっちゃけconfigファイルを直接さわるほうが手っ取り早い。
もしメニューに、
Webmin >> サーバー >> Samba Windows ファイル共有
が無かったら
Webmin >> 未使用のモジュール >> Samba Windows ファイル共有
にあるかもしれません。この場合は、ここでSambaのパスを正しく設定すれば、メニューの位置が「未使用のモジュール」から「サーバー」に 移動してくれます。
もう1つシステム管理例として、ファイアーウォールの管理をやってみます。
Webmin >> ネットワーク >> Linux ファイアーウォール
これは
# iptables -n -L
をやっているだけなんだけど、GUIで個別にポートを開放したり閉じたりできるので地味に便利。
他にもシステム管理がWebからできちゃうので、セキュリティを心配しなくていい環境ならば便利といえば便利なんですが、ぶっちゃけconfigファイルを直接さわるほうが手っ取り早い。
Portainerのインストール
Portainerをdocker composeでインストールします。
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
参考
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をアクセスするには、
- Webminにアクセスするには、 http://サーバ名:10000/
- Portainerにアクセスするには、 http://サーバ名:9000/
ですが、
- Webmin http://サーバ名:10000/webmin/
- Portainer http://サーバ名:9000/portainer
でアクセスできるようにnginxの設定を行います。
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