グループウェアAipo8をRockyLinux上に構築

Linux

フリーのグループウェア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

アクセス先:

http://192.168.0.123
ID/PASSWORD: admin/admin 起動方法: /usr/local/aipo/bin/startup.sh 停止方法: /usr/local/aipo/bin/shutdown.sh

モジュールを入れ忘れていた場合は、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サーバーを構築すれば、インターネットからもセキュアにアクセスすることが出来ます。

とても素晴らしいソフトですので長く使おうと思います。