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

nyarla が大体

Scrapbox でコメントや意見を書く