タグ: growi

ApacheによるGrowiサーバのリバースプロキシー化。

Growiの使い勝手が非常に良かったので、環境を整えました。

やりたいこと

  • 導入したGrowiサーバ、「IPアドレス:3000」ではなく「ドメイン名」でアクセスできるようにしたい。
  • 既にapacheで稼働しているLychee(フォトアルバム)やZabbixは平行稼働させたい。
  • ローカルとは言えSSL通信を行いたい。

やったこと

  1. hostファイル書き換え
  2. ローカルDNS登録
    1. これに即したSSL証明書をmkcertsで作成
  3. Apacheによるリバースプロキシー有効化
  4. 設定ファイル差し替え
  5. 動作確認

前提

以下の環境を導入済みです。

  • Kubuntu Linux 20.04
  • Apache 2.4
  • Growi 5.1

手順

※ディレクトリ、ドメインなどは個人の環境に読み替えてください。

host書き換え

sudo vi /etc/hosts
追記内容
127.0.0.1       localhost
127.0.0.1       paddington.corn.wall   paddington
# ※Ubuntuの環境では「127.0.1.1」となっていましたので、localhostと同じにします
127.0.0.1       chisataki.lyco.reco     chisataki
# ※別ドメインで通信を行いたいので、この行を追加しました

DNS登録

今回、新たに「lyco.reco」というローカルドメインを作成して「chisataki.lyco.reco」で名前解決できるようにしました。

参照:

mkcertsによるローカルSSL証明書発行

mkcertsを導入したサーバで、以下を発行します。

 mkcert -key-file lyco.reco.key.202208 -cert-file lyco.reco.cert.202208 lyco.reco chisataki.lyco.reco "*.lyco.reco"

この時に発行した証明書と秘密鍵をGrowiサーバの以下に格納します。

  • /etc/certs → 証明書
  • /etc/private → 秘密鍵

参照:

秘密鍵のシンボリックリンク化

証明書と秘密鍵を格納したサーバで

cd /etc/cets
sudo ln -s lyco.reco.cert.202208 lyco.reco.cert
​
cd /etc/private
sudo ln -s lyco.reco.key.202208 lyco.reco.key
# mkcertsの証明書は有効期限が3ヶ月と短いため、更新時にはリンクの貼り替えだけで済むようにあらかじめシンボリックリンクを設定します

としておきます。

リバースプロキシー有効化

sudo a2enmod proxy proxy_http proxy_wstunnel
sudo systemctl restart apache2.service

ログ格納ディレクトリ作成

sudo mkdir /var/log/apache/chisataki.lyco.reco
sudo chown -R www-data:www-data /var/log/apache/chisataki.lyco.reco

リバースプロキシー用apache設定ファイル作成

参考:

https://docs.growi.org/ja/admin-guide/getting-started/ubuntu-server.html

sudo vi /etc/apache2/sites-available/growi.conf
設定ファイル内容

※ServerNameやログなどは読み替えてください。

<VirtualHost _default_:80>
ServerName chisataki.lyco.reco
RewriteEngine On
      RewriteCond %{HTTPS} off
      RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost _default_:443>
ServerName chisataki.lyco.reco
CustomLog /var/log/apache2/chisataki.lyco.reco/access.log combined
ErrorLog /var/log/apache2/chisataki.lyco.reco/error.log
SSLEngine on
  SSLProtocol All -SSLv2 -SSLv3 -TLSv1
    SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
  SSLCertificateFile /etc/certs/lyco.reco.crt
  SSLCertificateKeyFile /etc/private/lyco.reco.key

  RewriteEngine On
  RewriteCond %{HTTP:Upgrade} websocket [NC]
  RewriteCond %{REQUEST_URI} ^/socket.io           [NC]
  RewriteCond %{QUERY_STRING} transport=websocket   [NC]
  RewriteRule /(.*) ws://localhost:3000/$1 [P,L]

  ProxyPass / http://localhost:3000/
  ProxyPassReverse / http://localhost:3000/

</VirtualHost>

設定ファイル有効化

sudo a2ensite growi

設定ファイル反映

sudo apache2ctl configtest
 # → syntax OK を確認します
sudo systemctl restart apache2.service

設定後、

「http://[ドメイン]」

にアクセスすることで

  • https通信へのリダイレクト
  • 指定したディレクトリにアクセスログが流れること

を確認しました。

GrowiとGmailの連携。

Wiki + Markdownが軽快で新たなツールとなったGrowi。

Gmailでメール送信ができるように設定しました。

前提

Growiは構築済みです。

こちらを元に、Gmailアカウントの設定から、アプリパスワードを発行します。

手順

すべてブラウザ上で行います。また、管理者権限でログインします。

メールの設定画面に遷移します。

管理画面>アプリ設定>メールの設定までs樹住みます。

設定を変更します。

以下の通り変更、入力します。

  • Fromアドレス:任意のアドレスを入力
  • 送信方法:SMTP
  • ホスト:smtp.gmail.com
  • ポート:587
  • ユーザー:Gmailアカウント
  • パスワード:設定したアプリパスワード

設定後、「更新」をクリックします。

メール送信を確認します。

更新後、「テストメールを送信」をクリックし、

こちらのようなメールを受信すれば設定完了です。

メモ帳、追加。(UbuntuにGrowi導入)

以前、Dockerでいじっていたツールが思いの外有用そうだったので、オンプレ環境で作りました。

導入:Growi

いわゆるナレッジベースツールです。すでに

すでにknowledgeベースは入れているものの

  • 階層化でWikiを作ってくれる
  • エディタ周りが高機能
  • 日々の記録に便利そう

ということで、早速入れてみます。

インストールした環境

  • Chuwi Herobox Pro

既に以下の環境を導入済み

  • Linux 20.04
  • Apache
  • MySQL
  • Zabbix
  • WebアルバムLychee

参考にした記事:
https://qiita.com/BigTree777/items/4a67d36c4111a1fb50e7

手順

Node.jsをインストールします。

cd /hoge/
curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
sudo apt install nodejs

npmを用いてyarnをインストールします。

sudo npm install -g yarn

Elasticsearchのインストール

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
sudo apt-get install apt-transport-https
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch

Elasticsearchのメモリ変更

sudo vi /etc/elasticsearch/jvm.options
設定ファイル
# 任意の行に以下を追加
-Xms256m
-Xmx256m

ElasticSearchの自動起動有効化

sudo su -
systemctl start elasticsearch
systemctl enable elasticsearch

GROWIに必要なプラグインのインストール

sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu

MongoDBのインストール

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt update
sudo apt install -y mongodb-org=4.4.13 mongodb-org-server=4.4.13 mongodb-org-shell=4.4.13 mongodb-org-mongos=4.4.13 mongodb-org-tools=4.4.13

MongoDBのバージョン固定

※これをやらないと全文検索がうまくいかないとのこと

echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections

GROWIのインストール

sudo git clone https://github.com/weseek/growi /opt/growi
cd /opt/growi

sudo git checkout -b v5.0.5 refs/tags/v5.0.5
sudo yarn

以降、参考にした記事:
https://qiita.com/hawk777/items/0916024c1bd7b24904ae

systemdスクリプトの作成

sudo vi /etc/systemd/system/growi.service
スクリプト内容
[Unit]
Description = growi
After=network-online.target mongod.service
ConditionPathExists=/opt/growi

[Service]
ExecStart=/opt/growi/growi-start.sh
Restart=no
Type=simple

[Install]
WantedBy=multi-user.target
chown root:root /etc/systemd/system/growi.service
chmod 644 /etc/systemd/system/growi.service

起動スクリプトの作成

sudo vi /opt/growi/growi-start.sh
スクリプト内容
#!/bin/sh
cd /opt/growi
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
MATHJAX=1 \
PASSWORD_SEED=[任意の文字列] \
npm start

権限変更

sudo chmod +x /opt/growi/growi-start.sh

デーモン化、起動確認

sudo systemctl daemon-reload
sudo systemctl start growi.service
sudo systemctl status growi.service

※起動するまで5分ぐらいかかりました。

起動後、http://[アドレス]:3000

でログインできました。

Powered by WordPress & Theme by Anders Norén