カラクリスタ

DigitalOceanにCoreOSを突っ込んでIRC環境を整えた

という話。


はい、もう眠いと言うか、もう寝る準備万端でこの記事を書いてます。にゃるらコト岡村 直樹(26)です。正直寝たいです。 えーっと、確かここ最近の内に、

で、

が、サポートされたとかなんとか、って言う記事を見かけたんですね。

で、それはそれで、

ヲッ!?

と思ってスルー(ぉぃしてたんですが、

そういや、IRC 環境崩壊してたんだっけな……

と思い出したので、今日復旧も兼ねて、

で、IRC 環境を整えた話を書きたいと思います。

1. DigitalOcean に CoreOS をぶっ込む

これについては、オフィシャルのコミュニティで、

という記事が書かれているので、それに従って CoreOS を Droplet を立ち上げればお k、って感じだったんですが、2014 年 9 月現在の CoreOS の初期化には、

  • cloud-config

が必要で、それは大体こんな感じでした:

#cloud-config
coreos:
etcd:
name:      private
discovery: https://discovery.etcd.io/<token>
addr:      $private_ipv4:4001
peer:      $private_ipv4:7001
fleet:
public_ip: $private_ipv4
units:
- name: etcd.service
command: start
- name: fleet.service
command: start
- name: docker.service
command: start
ssh_authorized_keys:
- ssh-rsa AAAA...

2. 次に各種 IRC Gateway と IRC Bouncer (ZNC) をぶっ込む

で、次のステップとして、

  • boxelly/docker-znc
  • boxelly/docker-lingr-ircd
  • boxelly/docker-atig

辺りの Dockerfile を整理しつつ、Docker container を作ってました。

で、その Docker container を deploy するのに、今回は fleet を使っていて、例えば、ZNC で言うなら、

[[Unit]]
Description=ZNC
After=docker.service
Requires=docker.service

[[Service]]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill znc
ExecStartPre=-/usr/bin/docker rm znc
ExecStart=/usr/bin/docker run --name znc -p 0.0.0.0:7000:7000 -v /home/core/data/znc/state:/znc/state nyarla/znc:latest admin password
ExecStop=/usr/bin/docker stop znc

と言うような docker-znc.service ファイルを作った上で、

$ fleetctl start docker-znc.service

して、Docker conatiner を deploy しました。

で、あと今回は、 (Twitter|Lingr) IRC Gateway を Listen させる際の Binding Port を、 Docker Bridge のデフォルトゲートウェイの IP に Bind させていたりしました。ちなみにこれすると ZNC の設定が楽になって良いです。はい。

で、今回はコトの次いでとして、

  1. ZNC への SSL 接続を有効にした上で
  2. SSL/TLS Client Authentication を有効にした Certificate を使い
  3. Global settings で certauth を有効にする

という感じにして、お漏らしは危険だけれども、Certificate を抜かれない限り、自分以外接続できない、という感じの構成にしてみました。ちなみにこれは趣味です。

3. データの外だしの為に Bittorrent Sync を使った。そしてハマった

で、最後。

今回、僕はローカルから CoreOS へファイルを転送するのには、

  • scp

を使って、テケトーにコピーしてたんですが、CoreOS 上の Docker Container のデータは、

  • /home/core/data

というディレクトリに保存するようにしむけてたりしました。

で、それは良いんですが、そのままの状態では自動同期もクソもないので、

  • boxelly/docker-btsync

という Dockerfile で BitTorrent Sync を起動する Docker Container を作り、

  1. btsync container を起動する際に /data/home/core/data をマウントする
  2. 次に Web UI の Listen port を localhost に設定し、 Coccinellida で、SSH Port Forward する
  3. その後、SSH Port Forward 経由で、BitTorrent Sync の Web UI で基本的な設定を済ます
  4. あとは、OSX の方の BitTorrent Sync で同期を取る

というようなコトをやっておりました。

で、この時ハマったのが、

  1. btsync の初期起動の時に、btsync の設定が保存されない!
  2. あとなんか btsync の API が 500 error 吐いてるんですけど!
  3. 何が悪いんや!

という感じの事で、これは、

btsync の初期起動時に、 設定ファイルを指定しない

という回避方法でなんとかしました。で、ちなみにこれは、

のコメント欄に載ってた。ArchLinux 万歳!

というコトで以上です。

眠い。

もう寝ます。

#環境構築 #VPS #DigitalOcean #Server #2014-09 #2014-09-13