という話。
はい、もう眠いと言うか、もう寝る準備万端でこの記事を書いてます。にゃるらコト岡村 直樹(26)です。正直寝たいです。 えーっと、確かここ最近の内に、
で、
が、サポートされたとかなんとか、って言う記事を見かけたんですね。
で、それはそれで、
ヲッ!?
と思ってスルー(ぉぃしてたんですが、
そういや、IRC 環境崩壊してたんだっけな……
と思い出したので、今日復旧も兼ねて、
- CoreOS with DigitalOcean
で、IRC 環境を整えた話を書きたいと思います。
1. DigitalOcean に CoreOS をぶっ込む
これについては、オフィシャルのコミュニティで、
Getting Started with CoreOS | DigitalOcean
という記事が書かれているので、それに従って 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-zncboxelly/docker-lingr-ircdboxelly/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
の初期起動時に、 設定ファイルを指定しない
という回避方法でなんとかしました。で、ちなみにこれは、
https://aur.archlinux.org/packages/btsync/AUR (en) - btsync
のコメント欄に載ってた。ArchLinux 万歳!
というコトで以上です。
眠い。
もう寝ます。