ひよこになりたい

Programming Server Network Security and so on

MDwikiをOwncloudと連携させてWebで編集できるようにした

MDwikiというMarkdownで書けるwikiをOwncloudと連携させて、ファイルをWeb上で編集できるようにした。ついでに認証もつけた。

MarkDownで書けてWebで参照できる自分(+少人数グループ)用のメモシステムが欲しいということで、今まではDokuwikiを使用していたのですが、Dokuwikiだと少し不便なところが多く、管理も面倒な感じでした。

そこで、Markdownで書けてデザインも綺麗なMDwikiを使ってみようかなと思ったのですが、MDwikiはファイルベースのwikiで手軽に編集できないと言う欠点がありました(毎回アップロードが必要なのが面倒...)。

DropboxやGoogleDrive上において使用するという方法もありましたが自分のドメインを使いたいので、今回はOwncloud上にMDwikiを置いて、Owncloudのファイル編集機能を使用して編集できるようにしました。

ついでにnginxを使用して簡単な認証(basic)をつけました。

とくに特別な設定はしていないので簡潔に。

概要

今回はMDwiki+Owncloud+Nginx(SSL)を使用しました。Nginxを使用しましたがApacheでも大丈夫と思います。
流れとしては、Nginxの導入→Owncloudの構築→MDwikiの設置と言った感じ。
長くなるので細かなインストールは省きます。

Nginxの導入 & Owncloudの導入

インストールは各OSによって異なるので省略。 普通にインストールすればOK。

Owncloudで認証が必要なので、SSLが必須。オレオレでもいいのでつけておく。

ここで、Owncloudのデータ保存ディレクトリを覚えておく。ここでは/home/owncloud/data/にします。

MDwikiの導入

構築が終わったら、Owncloud上にMDwiki用のディレクトリを作成。 その中にOwncloud上からMDwikiを突っ込む。

Releases · Dynalon/mdwiki · GitHub

mdwiki.html以外を削除して、mdwiki.htmlをindex.htmlにリネーム。

確認用にindex.mdを作成。

Test page
========

hello
------

f:id:zipsan:20151014185600p:plain

ディレクトリにシンボリックリンクを張る

ここで、Owncloud上のMDwikiディレクトリのパスを探す。
おそらくは[Owncloudデータディレクトリ]/[Username]/files/MDwikiあたりにあるかな?

$ cd /home/owncloud/data/  # Owncloudのドキュメントルート
$ cd owncloud_user  # Owncloudで作成したユーザー
$ cd files/mdwiki
$ pwd
/home/owncloud/data/owncloud_user/files/mdwiki

webのドキュメントルートでシンボリックリンクの作成。
owncloud上のデータディレクトリをnginxのドキュメントルートから読み出せるようにする。

cd </path/to/DocumentRoot>
ln -s /home/owncloud/data/owncloud_user/files/mdwiki mdwiki

これでOK

認証

今回はかんたんにbasic認証SSL必須です

htpasswdを作成

$ htpasswd -b -c .htpasswd user passwd

nginxの設定をいじる。

    location ~ /mdwiki/ {
        auth_basic "wiki";
        auth_basic_user_file /etc/nginx/.htpasswd;
        root   /var/www/;
        index  index.html index.htm index.php;
    }

これでhttp://example.jp/mdwiki/に接続すればbasic認証を求められるようになる。

ファイルの編集

owncloud上でファイル名をクリックする。
現在の最新版8.1.3だと標準で編集機能が付いているのでラク。ついてなければプラグインを入れましょう

とりあえずだけどコレでWebから編集できるようになった。

f:id:zipsan:20151014185613p:plain

大事な文書書く場合はセキュリティも意識しないとだめかも。