dockerでcodiMD建ててみた(編集・検証中)

私の利用目的

  • 社内会議を全員で同時入力、スマホ・タブレット等でカメラ撮影した物を全員で見れるようにする
  • セキュリティ等は考えたく無いので、PCを中心とした個別wifiルーター内の閉じられた世界ネットワーク運用

環境

  • ノートパソコン(母艦)

    • CPU core i5(詳細は忘れた)
    • RAM 16GB(頑張って調達した)たぶん8GBでも問題無いと思う
    • SSD 256GB(会議録画動画で残り少ない。実際に使うのは5GB位)
    • windows10pro hyper-vインストールたぶんvirtualboxでも同じ事は可能だと思われる
  • wifiルーター

    • 有線でもパソコンだけならいけるが、タブレット・スマホは面倒。配線が面倒
    • 人数にもよるがデータ量は大きく無いので安物
  • ノートPC、タブレット、スマホ

    • wifi対応
    • windowsのIE、edgeだと動作が怪しい?

建てたやり方

前提

  • 構築そのものは別PCでおこないhyper-vのVHDファイルをコピーして利用
    • リソースの問題
    • 作業時間の問題(半分学習目的・遊びで作ってみたので・・・)
    • hyper-vとしてはネットワークとしてブリッジで構築する事になるが、社内ネットワークに仮想VMを接続したくなかったため(アラートとかアラートとか・・・)
  • 構築後は基本的に仮想VMは、インターネット・社内ネットワークには接続しない
    • 作成されたドキュメントはローカルに丸ごとコピペして保存
    • バックアップは、内部に蓄積しているデータは会議後は不要なので、取らない
  • (禊事項)面倒なんで全部root構築(w

仮想VMのOS

  • centOS(特に意味は無いが、手元にあったため)

情報羅列(わかっていないところもあるので、不要な物があるかも・・・)

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ sudo yum makecache fast $ yum list docker-ce.x86_64 --showduplicates | sort -r

インストール

バージョン指定

$ sudo yum install docker-ce-17.06.0.ce-1.el7.centos $ sudo yum install docker-ce

起動

$ sudo systemctl start docker

確認

$ sudo docker run hello-world

sudoを書かなくてもようにする dockerグループはすでにあるはずだけど念の為

$ sudo groupadd docker

現在のユーザーをdockerグループに入れる

$ sudo usermod -aG docker $USER

再起動

$reboot

OS起動時にDockerを自動起動に

$ sudo systemctl enable docker

yumでGitをインストール

$ yum -y install git $ git --version

hackMD入手

$ git clone https://github.com/hackmdio/docker-hackmd.git $ cd docker-hackmd

公式ドキュメント確認 http://docs.docker.jp/compose/install.html 

$ curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose $ chmod +x /usr/local/bin/docker-compose

$ yum install docker-compose

docker-composeのバージョン確認

$ docker-compose --version
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ docker-compose up $ exit $ docker-compose up

3000portを開放する $ HTTP Server listening at port 3000

$ firewall-cmd --zone=public --add-port=3000/tcp --permanent

$ nmcliもしくはnmtuiで自分のIPアドレスを確認

windows側からポート開放されているかpowershellで確認

Test-NetConnection 仮想VMのIPアドレス -Port 3000

これで、codiMDとしては利用可能だが、クライアント端末がこれでアクセスしようとするとインターネット上のCDNを探しに行こうとしたり、画像アップロードを別のサイトにおこなおうとしてしまうためconfigを変更

dockerコンテナ確認

$ docker ps

【CONTAINER ID】をコピペ

実は自動生成されて不要かも・・・ $ mkdir codimdconfig

dockerコンテナからconfigをcentOS上にコピペ

$ docker cp 【CONTAINER ID】:./files/ codimdconfig

一応一階層上にコピー(バックアップ目的)

$ cd codimdconfig $ cp config.json ../config.json $ cd ..
$ vi config.json

iを押して挿入モード 変更内容

"usecdn": false, "imageUploadType": "filesystem",

escキー → :wq

$ docker cp config.json 【CONTAINER ID】:./files/config.json

本来は、 継承して、設定ファイルのみ書き込む(or docker run -v path:path -dt codimd )の方が良いようだが、うまくできておらず・・・。

wifiルーター設定(うろ覚え)

  • ルーターモード
  • DHCP ON
  • WPA2
  • SSIDは適当、パスフレーズは気が向いたら毎回変更

利用に向けて工夫したところ

  • codiMDで編集用ページを作成したが、ログイン等はおこなわないためURLを手入力しないといけないので面倒 → ExcelでQRコードを発行できるのでURLからQR作成しカメラで読み取ってもらう(windowsPCが面倒・・・)

注意点

  • 実は、セキュリティ上の致命的な問題があるかもしれません・・・

参考にしたサイト様 多謝

https://qiita.com/yaju/items/dce6a5911a54af905ac3  https://qiita.com/miyahan/items/005f7b7dd7971a4a3716  http://docs.docker.jp/compose/install.html 

https://qiita.com/gologo13/items/7e4e404af80377b48fd5  https://blog.amedama.jp/entry/2018/01/30/221546  https://github.com/hackmdio/codimd#environment-variables-will-overwrite-other-server-configs  https://github.com/hackmdio/codimd/blob/master/lib/config/default.js 

https://blog.amedama.jp/entry/2018/01/30/230221  https://qiita.com/flny/items/31813a72571943c04688  https://obel.hatenablog.jp/entry/20170805/1501900413 

https://tsunokawa.hatenablog.com/entry/2017/08/31/012438  https://github.com/hackmdio/codimd/blob/master/config.json.example 

お世話になった方(インフラ勉強会の方) 多謝

  • 質問ですにてcutlerさん、miyaさん