現在、研究室では情報共有のツールとして、Google Groups、Google Sites、Google Drive、GItHub、Slackあたりを使っています。だいたい十分だと思っていたんですが、細かいけど残しておきたい知見を共有する手段がありませんでした。
そこで、Qiita的な何かがアレば良いなと思い、ローカルで動かせるQiitaクローンソフトウェアを探してみると、無料でOSSのものがいくつか見つかりました。それぞれを比較すると、こんな感じです。
名前 | GitHub Star数 | master(release)の最終コミット日 | Commit数 |
---|---|---|---|
Knowledge | 296 | 5日前 | 1008 |
Lodge | 455 | 163日前 | 435 |
ShareDocs | 156 | 121日前 | 68 |
miita | 108 | 1589日前 | 36 |
Lodgeが人気ですが、Knowledgeのほうがメンテナンスされており活発そうなので、こちらを採用することにします。
研究室のサーバーに構築しますが、Proxy環境下なので、ちょいちょい設定が必要です。プロキシ環境下でDockerがうまく使えないので、JavaやTomcatを入れて手動でインストールします。また、共有サーバなため、リバースプロキシの設定も必要です(ただしサブドメインが使えないのでディレクトリで)。なお、研究室の環境はCentOS7です。
基本的に、公式のマニュアルを見ながら進めていきます。
コマンドは全てroot権限で実行します。
Java 8 Install
OpenJDKのJava 8をインストールします。
# yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
# JAVA_HOME=$(echo $(readlink $(readlink $(which java))) | sed -e s/jre\\/bin\\/java//g)
# echo << EOS >> /etc/profile
export JAVA_HOME=$JAVA_HOME
export PATH=\$PATH:\$JAVA_HOME/bin
export CLASSPATH=.:\$JAVA_HOME/jre/lib:\$JAVA_HOME/lib:\$JAVA_HOME/lib/tools.jar
EOS
Tomcat Install
Tomcatをインストールします。
# yum install tomcat
# systemctl start tomcat
# systemctl enable tomcat
Knowledge Install
KnowledgeをGitHubのreleaseからダウンロードし、Tomcatのwebappsディレクトリに配置します。
# cd /usr/share/tomcat/webapps
# wget https://github.com/support-project/knowledge/releases/download/v1.10.0/knowledge.war
Knowledge setup
http://<hostname>/knowledge
を開いて、admin:admin123
でSign inして、メニューの「システム設定」から色々弄ります。
Proxy
プロキシの設定をします。
環境変数のhttp_proxy, https_proxy, HTTP_PROXY, HTTPS_PROXYにも設定してありますが、Tomcatの設定も弄らなければ動きませんでした。
# diff /etc/tomcat/server.xml.orig /etc/tomcat/server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
connectionTimeout="20000"
- redirectPort="8443">
+ redirectPort="8443"
+ proxyName="<host>" proxyPort="<port>" />
あと、Knowledgeの「システム設定 > Proxy設定」からもProxyの設定をしておきます。
SMTP
GmailのSMTPを設定し、メール送れるようにします。
Knowledgeの「システム設定 > メール送信設定」を開き、以下のように入力します。
- SMTP ホスト名: smtp.gmail.com
- SMTP ポート番号: 587 ※ 465だと動かなかった(Proxyのせい?)
- 認証: 認証する
- SMTP 認証用ID: SMTPに使うGmailのメールアドレス
- SMTP 認証用パスワード: 上で指定したメールアドレスのパスワード
- 送信元アドレス: 適当に
- 送信者名: 適当に
Nginx リバースプロキシ + SSL
まず、Certbot(Let’s Encrypt)の設定とインストールをします (Certbot#centosrshel7-nginx)。
# yum -y install yum-utils
# yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
# yum -y install certbot-nginx
# certbot --nginx certonly
/etc/nginx/nginx.conf
を下のように変更し、SSLとリバースプロキシの設定をします。
別ファイルで設定をしたかったんですが、ディレクトリによるリバースプロキシの場合うまく動かなかったので、ルートの設定に書いてしまいます。
# diff /etc/nginx/nginx.conf.old /etc/nginx/nginx.conf
+ location /knowledge/ {
+ return 301 https://$host$request_uri;
+ }
}
# Settings for a TLS enabled server.
+ server {
+ listen 443 ssl http2 default_server;
+ listen [::]:443 ssl http2 default_server;
+ server_name _;
+ root /usr/share/nginx/html;
+
+ ssl_certificate "/etc/letsencrypt/live/<hostname>/fullchain.pem";
+ ssl_certificate_key "/etc/letsencrypt/live/<hostname>/privkey.pem";
+ ssl_session_cache shared:SSL:1m;
+ ssl_session_timeout 10m;
+ ssl_ciphers HIGH:!aNULL:!MD5;
+ ssl_prefer_server_ciphers on;
+
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-Host $host;
+ proxy_set_header X-Forwarded-Server $host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+
+ # Load configuration files for the default server block.
+ include /etc/nginx/default.d/*.conf;
+
+ location / {
+ }
+
+ error_page 404 /404.html;
+ location = /40x.html {
+ }
+
+ error_page 500 502 503 504 /50x.html;
+ location = /50x.html {
+ }
+
+ location /knowledge/ {
+ rewrite /knowledge/(.*) /$1 break;
+ proxy_pass http://127.0.0.1:8080/knowledge/$1;
+ }
+ }
}
おわり
これでだいたいなんとなく動きました。
To Do
- PostgreSQL使う(本格稼働してからでいいかなと思っています)
- Slackと連携する(なんか転がってるといいなぁ…)