無料ドキュメント管理 ～Alfresco Community Edition～を試す(その1)


こんにちは、株式会社ラクスのインフラ部門で働いています。
「特定サービスのインフラ」というよりも、改善などをメインに業務をしております。

早速ですが、今回のテーマは、「Alfresco Community Edition」というドキュメント管理Webアプリケーションです。

「Rundeck」というフリーの「エージェントレスSSHジョブスケジューラー」について書こうと思いましたが、Alfrescoをスモールスタートしてみようと考えているので、書きます。
今回は、そのインストール編です。
※Rundeckについては、いつか事例も含めて書きたいなと...。

# [Alfresco](https://www.alfresco.com/jp/products/enterprise-content-management/community)とは

一言で言うと、前述の通り、『ドキュメント管理Webアプリケーション』です。
もっと具体的に言うと、以下のことができる・特徴があります。(未確認部分有り)

 - Webブラウザからドキュメント管理(ファイル)をアップロード・閲覧・ダウンロード
 - サイト(＝ドキュメント管理の大きな単位)ごとに権限管理
 - ファイル検索可能(中身もメタデータとして保存しているため、検索可能)
 - エクセルなどオフィスソフトで作成したファイルもプレビュー可能(ただし、PDF化してプレビューしているため、印刷設定していないと、崩れる...)
 - ワークフローを作って、レビューなどの承認フローなどを組める
 - バージョン管理してくれる
 - そのドキュメントに対するアクション(誰が、いつ、作成／更新／参照／ダウンロードしたのか、など)がわかりやすい
 - (複数の)任意のタグをドキュメントに付けることができる(もちろん、被検索)
 - Community Editionは無償で利用でき、機能的にも有償版とそれほど遜色がない


# なぜ導入しようとしているのか

簡単に言うと、「**ドキュメントの価値を、より長く維持したいため**」です。

 - Alfrescoで何を解決したいのか
 - そのためにどう運用するのか

が重要ですが、それをサポートしてくれる無料のソフトウェアとしては、有効性が高そうです。


Alfrescoを活用し、上手に運用することで、**本当に必要なドキュメントが生き残り、不要な作業の軽減**につながればと考えています。


# インストール
## 環境
 - ローカルPC：Windows 10
 - 仮想化基盤：Hyper-Box
 - OS：CentOS Linux release 7.4.1708 (Core)
 - CPU：2 vCPU
 - メモリ：4.0 GB
 - HDD：8.0 GB
 - インターネット接続：あり

Javaベースのアプリケーションなので、LinuxでもWindowsでも動作します。
今回はお試しなので、自分PCのHyper-Box上にVMを作って試します。

本番運用では、仮想化基盤やクラウド上で運用する方がよいと思います。仕組み的に

 - WebからファイルアップロードやPDF変換など　→　CPUを消費
 - メタデータのインデックス基盤にSolrを、内部でLibreOfficeを利用　→　メモリを消費
 - ドキュメントファイルを蓄積　→　ディスクを消費

するため、求められるサーバーリソースはかなり必要そうです。

柔軟にサーバーリソースを変更できる方が、利用者メリットが高いと思います。
もし、クラウド上に構築した場合でも、夜間にインスタンスを停止しておくことで、クラウド費用は多少節約できるかと思います。

## Alfresco Community Editionインストーラーのダウンロード
インストーラーは[ここ](https://www.alfresco.com/jp/products/community/download)にあります。

「後で行う」のリンクを押下し、「General Release」の下にある「Linux」のURLをコピーします。
それをwgetで取得します。

```bash
# whoami
root

# pwd
/root

# mkdir alfresco
# cd alfresco/

# pwd
/root/alfresco

# wget http://dl.alfresco.com/release/community/201711-EA-build-00038/alfresco-content-services-community-full-installer-6.0.0-ea-linux-x64.bin
(...割愛)
2017-12-11 22:47:06 (46.1 MB/s) - ‘alfresco-content-services-community-full-installer-6.0.0-ea-linux-x64.bin’ saved [888694313/888694313]

# ls -lrt *
-rw-r--r-- 1 root root 888694313 Nov 17 23:23 alfresco-content-services-community-full-installer-6.0.0-ea-linux-x64.bin
```

## Alfresco Community Editionインストーラーの実行
インストーラーにrootユーザーでの実行権限を付与して、実行します。
注意すべき点は、 ```インストールの種類``` で ```[2] 詳細設定``` を選ぶことです。なぜか ```[1] 簡易``` を選択すると、うまく起動しません。

長いですが、コマンドと出力全文を記載しておきます。

```bash

# chmod 755 alfresco-content-services-community-full-installer-6.0.0-ea-linux-x64.bin

# ./alfresco-content-services-community-full-installer-6.0.0-ea-linux-x64.bin 
Some or all of the libraries needed to support LibreOffice were not found on your system: fontconfig libSM libICE libXrender libXext libcups libGLU libcairo2 libgl1-mesa-glx
You are strongly advised to stop this installation and install the libraries.
For more information, see the LibreOffice documentation at http://docs.alfresco.com/search/site/all?keys=libfontconfig

Do you want to continue with the installation? [y/N]: y

Language Selection

Please select the installation language
[1] English - English
[2] French - Français
[3] Spanish - Español
[4] Italian - Italiano
[5] German - Deutsch
[6] Japanese - 日本語
[7] Dutch - Nederlands
[8] Russian - Русский
[9] Simplified Chinese - 简体中文
[10] Norwegian - Norsk bokmål
[11] Brazilian Portuguese - Português Brasileiro
Please choose an option [1] : 6
----------------------------------------------------------------------------
ようこそ Alfresco Content Services Community セットアップウィザードへ。

----------------------------------------------------------------------------
インストールの種類

[1] 簡易 - デフォルトの設定を使ってインストールします。
[2] 詳細設定 - サーバーのポートとサービスのプロパティを設定できます。: 追加でインストールするコンポーネントを選択してください。
オプションを選択してください [1] : 2

----------------------------------------------------------------------------
インストールするコンポーネントを選択してください。準備ができたら“次へ“をクリックしてください。

Java [Y/n] :Y

PostgreSQL [Y/n] :Y

LibreOffice [Y/n] :Y

Alfresco Content Services Community : Y (Cannot be edited)

Solr1 [y/N] : N

Solr4 [Y/n] :Y

Alfresco Office Services [Y/n] :Y

Web Quick Start [y/N] : Y

Google ドキュメントの統合 [Y/n] :n

上記選択部分が正しいことを確認してください。 [Y/n]: Y

----------------------------------------------------------------------------
インストール先フォルダ

Alfresco Content Services Community をインストールするフォルダを選択してください。

インストール先フォルダ: [/opt/alfresco-content-services-community-full]: 

----------------------------------------------------------------------------
データベースサーバーのパラメータ

データベースのポート番号を入力してください。

データベースサーバーのポート: [5432]: 

----------------------------------------------------------------------------
Tomcat のポート設定

Tomcat の設定パラメータを入力してください。

Web サーバードメイン: [127.0.0.1]: 172.100.100.121

Tomcat サーバー用ポート: [8080]: 

Tomcat のシャットダウン用ポート: [8005]: 

Tomcat の SSL ポート: [8443]: 

Tomcat の AJP ポート: [8009]: 

----------------------------------------------------------------------------
LibreOffice サーバーのポート

LibreOffice サーバーがリッスンするポート番号を入力してください。

LibreOffice サーバーのポート: [8100]: 

----------------------------------------------------------------------------
FTP ポート

統合された FTP サーバーに使用するポート番号を選択してください。

ポート: [21]: 

----------------------------------------------------------------------------
管理者のパスワード

Alfresco Content Services 管理者アカウントのパスワードを指定してください。

管理者のパスワード: :
パスワードの再入力: :
----------------------------------------------------------------------------
サービスとしてインストールする

Alfresco Content Services Community をサービスとして登録すると、マシンの起動時に自動的に Alfresco Content 
Services Community が開始されます。

Alfresco Content Services Community をサービスとしてインストールしますか? [Y/n]: Y


----------------------------------------------------------------------------
警告

この環境は Alfresco Content Services 
を適切に実行するのに十分な構成ではありません。インストールする前に、以下の問題をチェックしてください。

これらの問題があっても Alfresco Content Services 
は機能しますが、一部の製品機能が使用できないか、システムが適切に動作しない場合があります。

Not enough system RAM available
 (4.0GB+): 3.68GB
SMTP TCP port in use
: 25


続けるには [Enter] キーを押してください ： 

----------------------------------------------------------------------------
お使いのコンピュータに Alfresco Content Services Community をインストールする準備が整いました。

続けますか？ [Y/n]: Y

----------------------------------------------------------------------------
しばらくお待ちください。 Alfresco Content Services Community をお使いのコンピュータにインストール中です。

 インストール中
 0% ______________ 50% ______________ 100%
 #########################################

----------------------------------------------------------------------------
セットアップウィザードによる Alfresco Content Services Community のインストールが完了しました。

Readme ファイルを表示 [Y/n]: n

Alfresco Content Services Community を起動する [Y/n]: Y

waiting for server to start....#  done
server started
/opt/alfresco-content-services-community-full/postgresql/scripts/ctl.sh : postgresql  started at port 5432
Using CATALINA_BASE:   /opt/alfresco-content-services-community-full/tomcat
Using CATALINA_HOME:   /opt/alfresco-content-services-community-full/tomcat
Using CATALINA_TMPDIR: /opt/alfresco-content-services-community-full/tomcat/temp
Using JRE_HOME:        /opt/alfresco-content-services-community-full/java
Using CLASSPATH:       /opt/alfresco-content-services-community-full/tomcat/bin/bootstrap.jar:/opt/alfresco-content-services-community-full/tomcat/bin/tomcat-juli.jar
Using CATALINA_PID:    /opt/alfresco-content-services-community-full/tomcat/temp/catalina.pid
Tomcat started.
/opt/alfresco-content-services-community-full/tomcat/scripts/ctl.sh : tomcat started
```

## 必要な(必要そうな)パッケージのインストール
インストーラー実行時の最初の方に、パッケージに不足がある旨が表示されているため、追加でインストールします。
また、日本語でインストールしたため、表示されている以外にもlibreofficeの日本語ランゲージパックもインストールします。

```bash
# yum install -y fontconfig libSM libICE libXrender libXext libcups libGLU libcairo2 libgl1-mesa-glx
# yum install -y libreoffice-langpack-ja
```

再度、インストーラーを実行するとわかりますが、パッケージ不足のメッセージがなくなっているかと思います。


## Alfrescoの起動
もし、Alfresco.serviceがstartしていない場合は、起動します。

```bash
# systemctl status alfresco
● alfresco.service - SYSV: Alfresco Content Services Community
   Loaded: loaded (/etc/rc.d/init.d/alfresco; bad; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)

# systemctl start alfresco

# systemctl status alfresco
● alfresco.service - SYSV: Alfresco Content Services Community
   Loaded: loaded (/etc/rc.d/init.d/alfresco; bad; vendor preset: disabled)
   Active: active (exited) since Mon 2017-12-11 23:13:41 JST; 2s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2275 ExecStart=/etc/rc.d/init.d/alfresco start (code=exited, status=0/SUCCESS)

Dec 11 23:13:34 alfresco.local.hyper-v systemd[1]: Starting SYSV: Alfresco Content Services Community...
Dec 11 23:13:34 alfresco.local.hyper-v alfresco[2275]: /opt/alfresco-content-services-community-full/postgresql/scripts/ctl.sh : postgresql  (pid 1660) already running
Dec 11 23:13:39 alfresco.local.hyper-v alfresco[2275]: /opt/alfresco-content-services-community-full/tomcat/scripts/ctl.sh : tomcat (pid 1682) already running
Dec 11 23:13:41 alfresco.local.hyper-v systemd[1]: Started SYSV: Alfresco Content Services Community.
```

# Firewallの設定
CentOSインストール直後は、必要なポートが開放されていません。以下のコマンドでポート開放します。
本番環境であれば、Webサーバー(apacheやnginx)を立てて、プロキシーするのがベターですが、割愛します。

```bash
# firewall-cmd --zone=public --add-port=8080/tcp --permanent
success

# firewall-cmd --zone=public --add-port=8443/tcp --permanent
success

# firewall-cmd --reload
success

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 8080/tcp 8443/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
```



これで、インストールは完了です。
コマンド全文を記載しているので、長く＆難しいように見えますが、インストーラーの実行に記載した注意を守って進めば、成功します。


# ログイン確認
さて、インストールが成功したので、Webブラウザからアクセスしてみます。
以下のログイン画面が表示されます。

　Alfresco ログイン画面：https://{IPアドレス}:8443/share/page/

- ログイン画面
![AlfrescoLogin.png](https://qiita-image-store.s3.amazonaws.com/0/202425/7c8be85d-1033-9edc-8d38-bcbeba0af263.png)


ユーザーは ```admin``` で、パスワードはインストーラー実行中に入力したパスワードです。
ログインに成功すると、以下のダッシュボードが表示されます。

- ダッシュボード
![AlfrescoDashboard.png](https://qiita-image-store.s3.amazonaws.com/0/202425/b9d1791c-1f18-77b4-bec2-717b7e421da1.png)


# 最後に
次回以降は、以下をやっていこうと思っています。

- Webサーバーで受けるようにする
- 軽く使ってみる
- 機能詳細の把握＆利用機能の選定
- メリット・デメリットの整理
- 運用のイメージを作る


もし、既に利用している方や導入中で知見がある方がいらしたら、コメントいただけると嬉しいです！