linux も docker もよくわかってない人が書いた文章です
簡易概要
今回やること
IDCF Cloud を利用して、仮想マシン作ってサーバー立てて、crowi-plus を起動して
自宅、職場、実家、ネカフェで閲覧できる自分用 wiki を作成する
紹介してるページはいっぱいあるけど、全くうまくいかなかったので自分用にまとめ
IDCF Cloud とは
月 500 円からサーバーを立てられるクラウドサービス
サーバーを起動している時間でお金を取られるらしい
電気代考えたら VirtualBox よりいいだろうし
そもそも自宅 PC の VirtualBox に職場からアクセスする方法わからんし、という理由で利用
初期設定も楽なので、いろいろ設定を試してミスったら削除、が楽チンでよい
crowi-plus とは
便利な wiki である crowi をフォークした、かゆい所に手が届く wiki
本家より微妙な部分もあるけど、現状日々更新されてるっぽい
https://qiita.com/yuki-takei/items/5df9601039ccfc1df01f
手順
IDCF Cloud でサーバー借りて、ログインするまで
- アカウントを新規作成する
- コンピューティング -> 仮想マシン -> 仮想マシン作成 で設定したら作成
- コンピューティング -> IP アドレス -> IP アドレス で IP アドレスの確認
- コンピューティング -> IP アドレス -> IP アドレスの名前 -> ファイアウォール で設定
- コンピューティング -> IP アドレス -> IP アドレスの名前 -> ポートフォワーディング で設定
- 仮想マシンの起動が完了していたら、Teraterm とかで SSH 接続
- コンピューティング -> 仮想マシン -> 仮想マシン選択 -> コンソール で起動状態確認可能
仮想マシン設定
¥500。実際安い
ただし、crowi-plus の検索用プラグインの Elasticsearch はめっちゃメモリを食うらしく、
1 GB のマシンだと、通常設定では crowi-plus が(あまり)立ち上がらない
これでかなり嵌った
- ゾーン:pascal
- マシンタイプ:¥200(1CPU * 0.8GHz、RAM 1G)
- イメージ:CentOS、Ubuntu(Debian、Redhut はわからん)
- ボリューム:¥300(ルートディスク 15GB、データディスク 未入力)
- SSH Key:
- 初めての場合は秘密鍵を .txt として保存
色んな環境で使うことを想定するなら Dropbox とかに置いとく
- すでに作成済であれば普通に選択
- 作成してるけど選択できない場合は、秘密鍵の .txt をアップロード
- 仮想マシン台数:1 台
- ネットワークインターフェース:デフォルトのものがチェックされている
- 詳細情報:仮想マシン名をつける。他チェック2つはつけたまま
秘密鍵(SSH Key)は SSH 接続で必要なので、なくさないように注意
なくしたらアクセスする手段がなくなる(と思う)
DropBox とかに保存して、自宅、職場とかで使いまわせるようにしてる
セキュリティ的にやばそうだけど、いい方法は思いつかない
IP アドレス
デフォルトで 1 個用意されてると思う
「IP アドレス+設定したポート」で SSH 接続したり、crowi-plus にアクセスする
ファイアーウォール
仮想マシンを削除しても設定は消えない
自宅、職場、実家・・・とどんどん増やしていく
セキュリティ的にはだめそう
コメント | ソースCIDR | タイプ | ポートレンジ |
---|---|---|---|
自宅 | My IP(を選択すると自動設定される) | CustomTCP | 8000-65535(開きたいポートだけを選択) |
職場 | 〃 | 〃 | 〃 |
ポートフォワーディング
VirtualBox とかでやるやつ
仮想マシンを削除すると設定は消える
パブリックポートに設定したポートは、ファイアウォールで設定していないといけない
コメント | パブリックポート | プライベートポート | 仮想マシン |
---|---|---|---|
SSH(適当) | CustomTCP 選択/9999(適当) | 22 | さっき作成したやつを選択 |
crowi-plus(適当) | CustomTCP 選択/30000(適当) | 3000(crowi-plus のデフォルトは 3000) | さっき作成したやつを選択 |
SSH 接続
- Teraterm とか落としてきて起動
- ホスト: IP アドレス画面に表示されてる IP アドレス入力
- ポート:ポートフォワーディングで、プライベートポート 22 を設定したやつのパブリックポートの方を入力
- OK 押下
- セキュリティ警告がでたら続行押下
- ユーザ名:root、パスワード:空欄
- RSA/DSA鍵を使う:仮想マシン作成時に選択した秘密鍵の .txt を選択
- OK 押下で、ここまでの設定があってれば、すぐ仮想マシンに繋がる
なんか失敗したら仮想マシン削除して、もっかい作り直そう
自分の PC で VirtualBox 使うより楽チンちん
crowi-plus 導入まで
Ubuntu
必要になったら書く
CentOS
crowi-plus の起動が終わったら、プライベートポート 3000 で設定したやつのパブリックポートからアクセスできるようになる
他の人があっさり流してるこの部分で相当ハマッた
// docker、docker-compose のインストールから、普通に使用できるようにするまで
// update 長い
# yum -y update
// docker 適当にやると最新バージョンをインストールできない
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum -y install docker-ce
# systemctl enable docker.service
# systemctl start docker.service
# yum info docker-ce
// docker-compose 1.11 より 1.18 とかの新しいバージョンではだめなのかわからん
# curl -L https://github.com/docker/compose/releases/download/1.11.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# chmod 755 /usr/local/bin/docker-compose
# visudo
// /usr/local/bin 追加
(ユーザー作成後に他設定と一緒にやったほうがいいけど、docker 設定なのでこっちに記述)
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/local/bin:/usr/bin
// ユーザー作成まで
# useradd hogeuser
# passwd hogeuser
// パスワード設定 //
# visudo
// %wheel 左のコメントアウト外す
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
# usermod -aG wheel hogeuser
// メモリのスワップ
# dd if=/dev/zero of=/swapfile1 bs=2M count=1024
# chmod 600 /swapfile1
# mkswap /swapfile1
# swapon /swapfile1
// crowi-plus
# su hogeuser
$ cd ~
$ git clone https://github.com/weseek/crowi-plus-docker-compose.git crowi-plus
$ cd crowi-plus
$ cp examples/https-portal/docker-compose.override.yml .
// Dockerfile の修正(コメントアウト外す)
$ vim Dockerfile
RUN echo "install plugins" \
&& npm install --save \
crowi-plugin-lsx \
crowi-plugin-pukiwiki-like-linker \
&& echo "done."
# you must rebuild if install plugin at least one
RUN npm build:prod
// docker-compose.dev.yml の修正
// 使用メモリを 256m とかに抑える
$ vim docker-compose.dev.yml
environment:
- "ES_JAVA_OPTS=-Xms256m -Xmx256m"
// docker-compose.yml の修正
$ vim docker-compose.yml
// 127.0.0.1:3000:3000 の部分
ports:
- 3000:3000
// タイムアウトを 60s から伸ばす
- timeout 180s
// 使用メモリを(ry。docker-compose.dev.yml との違いは不明environment:
- "ES_JAVA_OPTS=-Xms256m -Xmx256m" # decrease amount or just comment out this line if you cannot allocate enough memory
// -d でバックグラウンド実行
$ sudo docker-compose up
// 止める場合
$ sudo docker-compose stop
解説や注意
docker のインストール
ミスるとバージョン違いで docker-compose のコマンドがうまくいかない
/usr/local/bin を追加
しないと、いちいち /usr/local/bin/docker-compose って打つ羽目になる
wheel 周りの設定
docker-compose をユーザーが使用できるようにするため(だったと思う)
cp examples/https-portal/docker-compose.override.yml .
わからん
http プロキシがどうとか
https://github.com/weseek/crowi-plus-docker-compose/tree/master/examples/https-portal
メモリのスワップ
ユーザーでなく、root でないとコマンドが実行できなかった
初回の docker-compose up 時に
Elasticsearch の部分でメモリが足りなくて途中で落ちるらしい
91% chunk asset optimization とかいう部分で止まる
ES_JAVA_OPTS で設定したメモリとは違うっぽい
メモリのオプション
Elasticsearch はデフォで 2GB 使う仕様になってるらしいし、
オプションも 2g とか書いてあって、IDCF は 1GB で借りてるんだから
そら動かんよなあ、と
メモリが足りない環境ならコメントアウトしろ、と書いてるが、
256m って書いたほうが安定して起動できてる気がする
どのくらいが最適な設定かは不明
タイムアウトを伸ばした理由
crowi-plus 起動時に
Problem with dial: dial tcp 172.18.0.4:9200: getsockopt: connection refused. Sleeping 1s
のようなログが表示されるが
Elasticsearch が起動しきるまえにタイムアウトを迎えて、crowi-plus にアクセスできなくなるため
(メモリ問題に気づく前のことなので、別にタイムアウト伸ばさなくてもいいかもしれない)
なんか途中でエラーでて止まった
初回 docker-compose up で、ProtocolException だかなんだかがでて止まった
一旦 SSH 接続切って、再接続した後もう一度 docker-compose up したら動いた
なにそれ・・・
Redmineとか動かしたら、crowi-plus 起動しなくなった
調べ中
crowi-plus だけ動かすなら、これでいけると思う
参考
一部
最強のWiki「Crowi」のフォーク、「crowi-plus」を公開した話
https://qiita.com/yuki-takei/items/5df9601039ccfc1df01f月額500円でDockerを使ってCrowiを運用する on @Qiita
https://qiita.com/isaoshimizu/items/e3de3e6a0a3dd7602b9fCrowi-Plusを導入する@CentOS7
https://qiita.com/fumitti/items/b7cf00cebc7d4350a1ffcrowi-plusをEC2(t2.micro)で動かす
https://qiita.com/7tsuno/items/4db90d6c5fad7388efa3CentOSでuserをsudo可能にする on @Qiita
https://qiita.com/Esfahan/items/a159753d156d23baf180
コピペ用
yum -y update
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl enable docker.service
systemctl start docker.service
yum info docker-ce
curl -L https://github.com/docker/compose/releases/download/1.11.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod 755 /usr/local/bin/docker-compose
useradd hogeuser
passwd hogeuser
visudo
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/local/bin:/usr/bin
usermod -aG wheel hogeuser
dd if=/dev/zero of=/swapfile1 bs=2M count=1024
chmod 600 /swapfile1
mkswap /swapfile1
swapon /swapfile1
su hogeuser
cd ~
git clone https://github.com/weseek/crowi-plus-docker-compose.git crowi-plus
cd crowi-plus
cp examples/https-portal/docker-compose.override.yml .
vim Dockerfile
RUN echo "install plugins" \
&& npm install --save \
crowi-plugin-lsx \
crowi-plugin-pukiwiki-like-linker \
&& echo "done."
# you must rebuild if install plugin at least one
RUN npm build:prod
vim docker-compose.dev.yml
environment:
- "ES_JAVA_OPTS=-Xms256m -Xmx256m"
vim docker-compose.yml
ports:
- 3000:3000
- timeout 180s
environment:
- "ES_JAVA_OPTS=-Xms256m -Xmx256m" # decrease amount or just comment out this line if you cannot allocate enough memory
sudo docker-compose up