概要
社内Wikiを検討していました。面白そうなOSSがあったためご紹介します。
※画面とかは後々アップロードすると思う。
要件
要件とその理由は以下の通りです。
- Markdown記法が使える:楽に記述できる環境が欲しい
- クラウドサービスではない:クラウドサービス利用は会社での稟議が厳しい
- ユーザ管理ができる:誰が何を書いたかがわかる
- バックアップや復旧が容易(ソフトウェア or インフラにて):データが消えたら困る
候補
いくつか調査しました。どれを選んでも良いとは思いますし一長一短だなと思いました。
- GROWI →今回の紹介,ElasticSearchを用いた検索可能
公式HP:https://growi.org/ja/ - Outline →NotionのようなWiki。よさそうだがユーザ管理にハードル有
公式HP:https://www.getoutline.com/ - DokuWiki →有名どころだが、MarkDownでは記述できない
公式HP:https://www.dokuwiki.org/ja:dokuwiki - Knowledge →Qiitaみたいに使える。開発が結構前に止まっており脆弱性などの管理が怖い
公式HP:https://information-knowledge.support-project.org/ja/#google_vignette
環境(マシン)
PromoxVEの上に以下スペックの仮想マシンを構築しました。
- OS:Ubuntu 24.04 LTS
- CPU:2 コア(host:Ryzen7 4750 ※MongoDBにはAVXが要)
- メモリ:4 GB
- ストレージ:32 GB
環境(ソフトウェア)
公式ドキュメントにも記載されています。私の環境では以下のバージョンで導入しました。
- node.js 20.15.0
- npm 10.7.0
- yarn 1.22.22
- MongoDB 4.4 以上 (6.0 以上を推奨)
導入作業(各種ソフトウェア導入)
Node.js
公式URL:https://deb.nodesource.com/
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt-get install -y nodejs
sudo npm install -g yarn
sudo yarn global add turbo
ElasticSearch
本体のインストール
公式ホームページの通りに行えばインストールできる。JDKのインストール方法は以下で可能だが、場合によっては別途インストールが必要かもしれない。(java -version
でインストール済みか確認できる)
公式URL:https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html
sudo apt install openjdk-17-jdk sudo bash -
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
sudo echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update && sudo apt install elasticsearch
dpkg -l elasticsearch #インストール後のバージョン確認
+++-==============-============-============-=====================================================
ii elasticsearch 8.14.2 amd64 Distributed RESTful search engine built for the cloud
JVMヒープサイズの設定
ヒープサイズは、そこまで大きくなくてよい。
sudo vim /etc/elasticsearch/jvm.options
# IMPORTANT: JVM heap size のコメントブロックの後に追記
# 以下は1GBのヒープサイズに設定
-Xms1G
-Xmx1G
TLSの無効化
# 以下ファイルを編集する。
/etc/elasticsearch/elasticsearch.yml
# 編集個所は三か所
# 1. Xpackのセキュリティ設定無効化
xpack.security.enabled: true
↓
xpack.security.enabled: false
# 2.HTTPSのAPIを無効化
enabled: true
↓
enabled: false
# 3.クラスタノード間の相互認証を無効化
enabled: true
↓
enabled: false
ElasticSearchプラグインのインストール
# analysis-kuromoji のインストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
# analysis-icu plugin のインストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
ElasticSearchの起動
sudo systemctl enable --now elasticsearch
# うまく起動しているか確認
$ curl http://localhost:9200/
{
"name" : "localhost.localdomain",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "_na_",
"version" : {
"number" : "8.13.3",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "617f7b76c4ebcb5a7f1e70d409a99c437c896aea",
"build_date" : "2024-04-29T22:05:16.051731935Z",
"build_snapshot" : false,
"lucene_version" : "9.10.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
MongoDBのインストール
公式URL:https://www.mongodb.com/docs/v6.0/tutorial/install-mongodb-on-ubuntu/
curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \
--dearmor
# Ubuntu 22.04(LTS)のコマンド
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl enable --now mongod
GROWIのインストール
# git-lfsの導入
sudo apt update && sudo apt install git-lfs
sudo mkdir -p /opt/
cd /opt/
sudo git clone https://github.com/weseek/growi /opt/growi
cd /opt/growi
sudo git tag -l
=======
1.0.0-RC3
@growi/core-styles@1.0.0
@growi/core@1.0.0
@growi/pluginkit@1.0.0
v1.0.0
・
・
・
v7.0.7
v7.0.8
v7.0.9
v7.0.x-base
=====
# RC がついていない最新版を利用(上記だと7.0.9)
sudo git checkout -b v7.0.9 refs/tags/v7.0.9
cd /opt/growi
sudo yarn
# yarmでビルドを行う。そこそこ時間がかかる
sudo yarn app:build
起動確認:
sudo \
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
yarn app:server
# 以下のメッセージが表示されるまでしばらく待つ
{"name":"growi:crowi","hostname":"growi-server","pid":29259,"level":30,"msg":"[production] Express server is listening on port 3000","time":"2024-04-30T21:50:05.549Z","v":0}
GROWIへの接続
http://<hostname or ip address>:3000 にアクセスして初回セットアップ画面が出ることを確認する。
管理者ユーザを作成する。
systemdによる自動起動の設定(公式サイトと相違有)
公式で紹介されているsystemdのユニットファイルは、CentOSをもとに紹介されている。Ubuntuの場合、相違点があるのでサンプルとして記載しておく。
sudo vim /etc/systemd/system/growi.service
Ubuntuの場合、ユニットファイルは以下のようになる。
[Unit]
Description=Growi
After=network.target mongod.service
[Service]
WorkingDirectory=/opt/growi
Environment=PORT=3000\
MONGO_URI=mongodb://localhost:27017/growi\
ELASTICSEARCH_URI=http://localhost:9200/growi
ExecStart=/usr/bin/yarn app:server
[Install]
WantedBy=multi-user.target
・GROWIの起動
sudo systemctl start growi
・自動起動の有効化
sudo systemctl enable growi
インストールについてはここまで。以降は、作業していて気づいたことを記載する。
雑メモ:(気づいたこと)
・GROWIには、draw.io
で記入した図を挿入できる。ただしこれにはサーバがインターネットにつながっている必要がある。
・MongoDBは、AVXが必要。そのため、CPUがAVXに対応していないCPU(kvm64)だと起動に失敗する。(エラー文は失念したが、AIに確認するとWARNING: MongoDB 5.0+ requires a CPU with AVX support, and your current system does not appear to have that!
と表示されるらしい)
・APIも対応しているので、今後使い方を考えようと思う。
参考URL
GROWI公式ドキュメント:
https://docs.growi.org/ja/admin-guide/