フリーのグループウェアAipo8(現在は公開終了)をRockyLinux上に構築しました。
Aipo8は、長らくESXi5上のCentOS7で動かしていたのですが、マシン自体も老朽化しているため、Proxmox8 VE + RockyLinuxの環境へ移行することにしました。
構築環境
Aipo8の構築環境は以下の通りです。
- ハードウェア:自作PC(CPU:Core i7-10700, MEM:16G)
- VM:Proxmox8 VE
- ゲストOS:RockyLinux(RHEL系)
- Aipo8バージョン:8.1.1(最終バージョン)
最初は、Ubuntu22.04LTSでの構築を試みていたのですが、20.04->22.04でzlib-develに仕様変更がなされているようで、シェルスクリプトによるデータベースの初期構築が出来ません。
調べて対処もできそうでしたが、RHEL系のRockyLinuxで構築してみたところ、あっさりインストール出来ました。
Aipo8の入手先について
AipoはOpenSourceのグループウェアソフトウェアとして人気がありましたが、開発元が2018年3月にサポート終了を宣言され、ダウンロードサイトを閉じておられることから、ソースパッケージはミラーサイトから入手が前提になります。
AIPO8のライセンス自体は AGPLv3ですので、仮想上のLinuxに構築さえしておけば長く使えます。
構築準備作業
AipoのようなWebサーバーアプリは1OS1サーバー機能で構築が安定して動きます。
今回は、Proxmox上にRockyLinuxを新規構築し、その上にAipoを実装する形で進めます。
Proxmox上に仮想ゲストOS作成
Proxmoxのコンソールから新規VM作成を行い、RockyLinuxマシンを作成します。
仮想ゲストOS構築はこちらの記事を参照してください。
aipoの動作はとても軽いことから、ハードリソースはvCPU:1 MEM:2GBを割り当てました。
スケジュール管理やタイムカード程度の利用であれば、従業員50人程度になっても処理能力的な問題は発生はしていませんでした。
OSアップデート
ProxmoxコンソールでRockyLinuxの端末を開き、OSをアップデートします。
# sudo su # yum update
CentOS系の初回updateはそこそこの時間がかかります。
作業時間は余裕を見ておいたほうがいいでしょう。
OSのIPアドレスを固定する
AipoのWebアクセス先を固定するため、OSのIPアドレスをDHCPから固定IPに変更します。
RockyLinuxのアクティビティ(左上)→設定→ネットワーク→有線で設定ダイアログを開き、IPv4固定アドレス、ゲートウェイ、DNSを指定します。
ネットワークアドレスを変えた後、g.co(google.com)にpingを行い、DNSが機能していることを確認します。
root@localhost ~]# ping g.co PING g.co (142.250.206.238) 56(84) bytes of data. 64 バイト応答 送信元 kix06s10-in-f14.1e100.net (142.250.206.238): icmp_seq=1 ttl=117 時間=2.50ミリ秒 64 バイト応答 送信元 kix06s10-in-f14.1e100.net (142.250.206.238): icmp_seq=2 ttl=117 時間=3.35ミリ秒 64 バイト応答 送信元 kix06s10-in-f14.1e100.net (142.250.206.238): icmp_seq=3 ttl=117 時間=3.39ミリ秒
参考までにDNSは先日構築したSamba4 Active Directoryに設定しています。
このADは、期限なく使える上に、Windows Serverとほぼ同等の機能動作をしてくれます。
WindowsPCからteraterm接続
構築作業は終始コマンド操作となりますが、Proxmox上のコンソール操作ではコピペが出来ません。
そのため、Windowsからteratermでssh接続し、コピペが出来る環境で作業するようにします。
RockyLinuxのGUI版はopensshが含まれていましたので、個別にsshのインストールは不要でした。
参考:もし最小構成でインストールしていた場合は、以下コマンドでsshをインストールしてください。
# yum install openssh-server
構築準備作業は以上で完了です。
構築作業
OS構築と事前準備が完了し、インターネットに繋がることが確認できましたら、以下手順で構築を進めます。
ファイル入手とコンパイル
Aipo8をミラーサイトからダウンロードし、カレントディレクトリに展開します。
最終リリースのファイル名はaipo-8.1.1-linux-x64.tar.gz(64bit版)です。
参考:tarは「テープアーカイバ」、gzは「gzipによる圧縮」という意味です。どちらも'80-'90年のunix時代に開発されたソフトウェアです。
# wget https://ftp.iij.ad.jp/pub/osdn.jp/aipo/64847/aipo-8.1.1-linux-x64.tar.gz # tar zxvf aipo-8.1.1-linux-x64.tar.gz
Aipo構築に必要なモジュールをインストールします。
# yum install gcc nmap lsof unzip readline-devel zlib-devel
RockyLinux9では、lsofの場所が「/usr/sbin/」から「/usr/bin/」に変更されていますので、validate.shの設定を修正します。
テキストエディタはviに慣れていないため、いつもnanoを使っています。(emacsが好みの方はnanoがいいでしょう)
# cd aipo-8.1.1-linux-x64/bin # nano validate.sh //変更箇所 /bin/validate.sh の/usr/sbin/lsof -> /usr/bin/lsofに修正
シェルスクリプトを起動して、インストール作業をします。
コンパイル作業を含むため、数分の時間がかかります。
たくさんのログが出ますので、エラーが発生していないかを確認します。
# sh installer.sh /usr/local/aipo gcc OK. nmap OK. lsof OK. unzip OK. readline-devel OK. zlib-devel OK. jre1.8.0_73/ jre1.8.0_73/THIRDPARTYLICENSEREADME-JAVAFX.txt jre1.8.0_73/THIRDPARTYLICENSEREADME.txt ~~(中略)~~ ============================================= Aipo のインストールが完了しました。 バージョン : 8.1.1.0 インストール先 : /usr/local/aipo PostgreSQLユーザー : aipo_postgres PostgreSQLパスワード: e79NQXSCDRUT アクセス先:ID/PASSWORD: admin/admin 起動方法: /usr/local/aipo/bin/startup.sh 停止方法: /usr/local/aipo/bin/shutdown.shhttp://192.168.0.123
モジュールを入れ忘れていた場合は、installer.shが中断されますので、エラー状態を確認・対処してから再試行すれば大丈夫です。
実行ファイルが/usr/local/aipoにコピーされてから停止した場合は、installer.shが動作しませんので、以下のように/usr/local/aipoを削除してからinstaller.shを実行します。(当然ですがAipoが動作している環境では実施しないでください。全部消えちゃいます。)
# rm -rf /usr/local/aipo # sh installer.sh
以上でAipoの構築作業は完了です。
Firewall穴あけと起動チェック
RHEL系OSはFirewallによりデフォルトでポートがほぼ閉じられているため、穴あけ作業が必須になります。(ubuntuは初期状態でFirewall(ufw)が入っておらず全通しになっています。)
今回は、httpとhttpsのポートを開けておき、systemctl restartで有効化します。(Linux初級者の方はこの仕組みを知らずにハマることが多い。)
# firewall-cmd --add-service=http --zone=public --permanent # firewall-cmd --add-service=https --zone=public --permanent # systemctl restart firewalld
シェルスクリプトを起動してaipoを起動します。カレントディレクトリでシェルスクリプト起動する場合は、「./startup.sh」と入力します。
# /usr/local/aipo/bin/startup.sh
WindowsのWebブラウザから「http://(ipアドレス)」でアクセスし、ログイン画面が出ることを確認します。
初期ID/PWはadmin/adminです。
起動シェルスクリプト「/usr/local/aipo/bin/startup.sh」は、cronで自動起動にするようにしてもよいのですが、Aipo自体は滅多にリブートするものではないので、手動起動のままでも特に不便はないと思います。
Aipoバックアップとリストアについて
Aipoはバックアップファイルを作成し、他のシステムへコピー出来る機能があります。
バックアップするには/usr/local/aipo/bin/backup.shを起動します。
root@localhost ~]# cd /usr/local/aipo/bin [root@localhost bin]# ls backup.sh func.conf restore.sh shutdown.sh startup.sh [root@localhost bin]# ./backup.sh Aipo のバックアップを開始します。 Tomcat を停止しています。 Aipo をバックアップしています。 Tomcat を開始しています。 Aipo のバックアップが完了しました。 [root@localhost bin]# ls /usr/local/aipo/backup/ 2024091520250 dump1.log dump2.log xreg
バックアップファイルは、/usr/local/aipo/backupにバックアップ日付ディレクトリが生成されて入ります。
[root@localhost bin]# ls /usr/local/aipo/backup/ 2024091520250 dump1.log dump2.log xreg
リストアは/usr/local/aipo/restore.shを起動します。
root@localhost bin]# ./restore.sh Aipo のリストアを開始します。 [1] 2024年09月15日20時25分 [0] キャンセル バックアップファイルを選んで番号を入力してください。 1 Version 8.1.1.0 Tomcat を停止しています。 Aipo をリストアしています。 Tomcat を開始しています。 Aipo のリストアが完了しました。
別マシンにbackupディレクトリごとコピーすれば、データ移動も簡単です。
Aipoは小規模の企業であれば、イントラネット内で動かして、グループウェアとして十分に活躍してくれます。
Proxmox上にVPNサーバーを構築すれば、インターネットからもセキュアにアクセスすることが出来ます。
とても素晴らしいソフトですので長く使おうと思います。