DigitalOceanにCoreOSを突っ込んでIRC環境を整えた
読了まで:約3分
という話。
はい、もう眠いと言うか、もう寝る準備万端でこの記事を書いてます。にゃるらコト岡村 直樹(26)です。正直寝たいです。 えーっと、確かここ最近の内に、
で、
が、サポートされたとかなんとか、って言う記事を見かけたんですね。
で、それはそれで、
ヲッ!?
と思ってスルー(ぉぃしてたんですが、
そういや、IRC 環境崩壊してたんだっけな……
と思い出したので、今日復旧も兼ねて、
- CoreOS with DigitalOcean
で、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 の設定が楽になって良いです。はい。
で、今回はコトの次いでとして、
- ZNC への SSL 接続を有効にした上で
- SSL/TLS Client Authentication を有効にした Certificate を使い
- Global settings で
certauth
を有効にする
という感じにして、お漏らしは危険だけれども、Certificate を抜かれない限り、自分以外接続できない、という感じの構成にしてみました。ちなみにこれは趣味です。
3. データの外だしの為に Bittorrent Sync を使った。そしてハマった
で、最後。
今回、僕はローカルから CoreOS へファイルを転送するのには、
scp
を使って、テケトーにコピーしてたんですが、CoreOS 上の Docker Container のデータは、
/home/core/data
というディレクトリに保存するようにしむけてたりしました。
で、それは良いんですが、そのままの状態では自動同期もクソもないので、
- ~~boxelly/docker-btsync~~
という Dockerfile で BitTorrent Sync を起動する Docker Container を作り、
- btsync container を起動する際に
/data
へ/home/core/data
をマウントする - 次に Web UI の Listen port を localhost に設定し、 Coccinellida で、SSH Port Forward する
- その後、SSH Port Forward 経由で、BitTorrent Sync の Web UI で基本的な設定を済ます
- あとは、OSX の方の BitTorrent Sync で同期を取る
というようなコトをやっておりました。
で、この時ハマったのが、
btsync
の初期起動の時に、btsync
の設定が保存されない!- あとなんか btsync の API が 500 error 吐いてるんですけど!
- 何が悪いんや!
という感じの事で、これは、
btsync
の初期起動時に、 設定ファイルを指定しない
という回避方法でなんとかしました。で、ちなみにこれは、
のコメント欄に載ってた。ArchLinux 万歳!
というコトで以上です。
眠い。
もう寝ます。
#環境構築 #VPS #DigitalOcean #Server #2014-09 #2014-09-13