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さん