自宅サーバーの現在
whywaita Advent Calendar 2025 20日目です。 whywaita Advent Calender 10周年、おめでとうございます。
前回は hydrogen さんの記事でした。 今のところ無です。 whywaitaからリマインドされたときに若者とnot 若者の遅刻の定義が違うと言う話をされました。 担当日の0時までに投稿しないと遅刻という人と、担当日の23:59までに投稿すればセーフという人がいるらしいです。 自分は若者 && 担当日の23:59までに投稿すればセーフだと思っているので、not 若者は0時までに投稿するんだな〜、やっぱ Advent Calendar 原理主義なんだな〜とか思ってたら、若者が0時までに投稿できなくて謝ってきたらしく、俺はnot 若者だったらしいです。 年をとったなあ。
また、whywaita との関係性に最初に触れれば、あとはなにを書いてもwhywaita Advent Calendar になるというもの。 とはいえ wahywaita との関係性は多く、つい昨日までも仕事の合宿で二泊三日寝食を共にし、もはや作家を軟禁する編集のような気分でした。 whywaita 先生、引き続きよろしくお願いします。
さて、本題ですが自宅サーバーの話です。 MMAのアドベントカレンダーでサーバーラックを買った話 をしてから早9年がたったようです。 学生の頃は自宅サーバーの話をこすり続けましたが、社会人になって一人暮らしを始めるとともにサーバーラックを卒業しました。 そこから静かな部屋で眠ることを学び、NASのHDDの回転音にもキレそうになったため、自宅サーバーもおさらばかなと思っていましたが......

今年普通にサーバーラックを買いました。 コレです。めっちゃやすいし、タンスの上に置けて取り回ししやすくて最高。 普通にユニット数がたりないので8Uにすればよかったです。
ただ、スイッチはセミファンレスにしました。 サーバーも自作ベースでファンはすべてNoctuaにし、最初はオールSSDにしていてめっちゃ静かでした。 データ量が思ったよりも多くなったのでHDDを増やしましたが、深夜のデータアクセスを減らすようにデザインしました。 夜中もずっとファンの音を子守歌にしていたあの頃と比べてすごく大人になっています。 今回はそんな自作サーバーで作っているものを紹介します。
自宅サーバーで何を動かしているのか
皆さん自宅サーバーをやっている人たちは一度は思うことがあるのではないのでしょうか?
「最強のプライベートGoogle Driveがほしい...」
世はまさに大AI時代のなので、そんな夢を Claude Code Max $100 を個人契約してかなえていこうと思います。 ただ、実は2021年に一度チャレンジしていたりします。 その辺の反省も踏まえて開発しています。
全体アーキテクチャ
コンポーネントは、主にファイルシステムをHTTP経由でアクセスできるようにするn0fsと、MySQLベースでファイルに対してメタデータを付与するn0indexに分かれます。 概要図は以下のようになります。
それぞれをひとつのコンソールで確認することができます。 例えばn0fsベースではファイルシステムに対してそのままアクセスできるため、以下のようにGoogle Driveのようなディレクトリ構造でアクセスできます。

また、以下のようにn0indexを参照してタグベースでコンテンツを検索できるようになっています。 スマホ表示もいい感じに対応しています。 データは昔 Pixiv からアーカイブしておいたものを表示しています。

前回のシステムはn0fsのような抽象レイヤを用意せずに、実ファイルの保存をsha256のuidでminioに保存する方式をとったため、そのシステムの運用をやめた結果残ったのはなにもわからないsha256の名前のファイル群だけになってしまいました。 今回は、HTTPのサービスをファイルシステムに後付するような構成をとっているので、それを改善できています。 (そのデータもAIに当時のMySQLと突合させて復元できました)
n0fs
n0fs は AWS S3 を参考にしたシンプルなHTTPサーバーです。 基本的なデザインは
GET /fs/:file_path: ファイルの参照HEAD /fs/:file_path: ファイルの参照PUT /fs/:file_path: ファイルの保存DELETE /fs/:file_path: ファイルの削除
になっており、まるで原初のHTTPです。 ここからクエリパラメータで以下のような機能を実装しています。
| メソッド | クエリパラメータ | 機能 |
|---|---|---|
| GET | ?directory |
指定されたディレクトリの配下のリストをJSONで返す |
| GET | ?sha256 |
指定されたファイルのsha256を返す |
| GET | ?image |
libvips で画像のリアルタイムリサイズやクリッピングなど |
| GET | ?image_attribute |
画像の情報(解像度やEXIFなど)をJSONで返す |
| GET | ?video |
ffmpeg で画像のリアルタイムエンコード |
| GET | ?video_attribute |
映像の情報をJSONで返す |
n0fsはファイルシステムのみをバックエンドとして持つので、サムネイルなどをキャッシュとしては持たないようにしています。
また、ffmpegは AI に良しなに頼むことで NVENC によるハードウェアオフロードがきいています。 使っているGPUは GT710 なので1920x1080は若干速度が怪しいですが、十分動きます。 ffmpegのパラメータチューニングは職人芸ですが、AIは非常に強力でした。 例えば映像をリサイズする場合
- 映像をデコード
- 映像のリサイズ
- 映像のエンコード
を行う必要があるのですが、 1と3は NVENC と NVDEC によってハードウェアオフロードがきき、2はCUDAによってオフロードがききます。 ただ、GT710が古すぎてCUDAに制限があったため、リサイズはCPUで行う必要がありました。 そのため、GPUに送ってデコードし、CPUに戻してリサイズし、GPUに送ってエンコードして、とCPUとGPUを行ったり来たりすることが発生します。 しかし、いろいろAIに任せきりでベンチマークを取ったところ、CPUでデコードしてリサイズまでやり、エンコードだけGPUにやらせるほうが早かったのです。 不思議ですが、この辺の試行錯誤が手軽にできたあたり時代は変わったなあと思いました。
結論として、この辺の拡張されたファイルシステムを組み合わせることでコンソールでは
などを実現しています。
n0index
n0index は n0fs をベースにコンテンツとしてのアクセス性を上げるために、MySQLにメタデータを保存して拡張します。 MySQLのER図は以下のような形になります。
大きく分けると
という2種類のエンティティがいます。 工夫ポイントとしては以下のような感じです。
- FileのPKはファイル自身のsha256にすることで、同一ファイルをダウンロードした場合や、ファイルを移動した場合でも、メタデータが追従できるようにしました。
- File の sha256 ハッシュとファイルパスの関係はキャッシュしてあり、ファイルの更新日時とファイルサイズをもとに、パスのsha256の再計算をスキップしています。
- Contents から File への紐づけはページ番号を付与することで、思った通りの順番で表示できます。
- File には Title や Description のような、手動で管理するようなメタデータを入れないように割り切り、解像度などの自動で管理するメタデータのみを格納することで、シンプルにしています。
- APIはGraphQLを採用しています。SQLの最適化はAIにぶん投げです。
とりあえず、ここまででかなり Google Drive のような利用感を実現できているのですが、ここからさらにAIによるファイルに対するタグ付けやベクトル検索の対応などをするとさらによさそうな気がしています。 そのためQdrantを入れてみたりしているのですが、すでに180万ほどファイルがあるのでベクトル化にも一苦労しています。 GT710だとCUDAが弱すぎるし...... そもそもHDDの残容量が500GBを切っていて心もとないし...... HDDも高くなっててつらい...... やっぱりサーバーを4UくらいにしないとHDDもGPUも刺さらん...... でも、ラックのユニット数が足りてない...... っていう現状です。今後に期待。
まとめ
遅刻せずに間に合いました(not 若者基準)。 正直かなり満足するものが作れています。 仕事の後の時間をつかって、二週間でここまで来れているので、AIは大したものです。 自分がほくほくするために作っているのでコードを公開するつもりはありませんが、皆さんも一家に一台サーバーを構築してやってみてはいかがでしょうか。
ところで急に知見を書きますが、Google TVのYouTubeが不調な人はIPv6を切ると調子がよくなるかもしれません。 うちはログインすらできない環境でしたが、IPv4だけにしたら改善しました。 フレッツ光 1G / Biglobe (PPPoE併用) / ひかり電話なし (/64 RA) みたいな環境です。 IPv6を使えとどこかから圧を感じますが、困ってたら是非。 Google TVにリンクローカル以外のIPv6アドレスが2個ついていたのが気になったりもしたので、対策を知っている方がいれば教えて下さい。
【デスク周り】スマート照明で部屋をピカピカさせて陽キャになる
whywaita Advent Calendar 2022 - Adventar 13日目です。
whywaitaの後輩と言えば、この僕 h-otter でして大学やらサークルやら課外活動やら会社やらが毎回かぶっているので、おっかけをしている説が浮上しています。めちゃくちゃそんけいしてます。ただ、アドベントカレンダーを書くのは今年が初めてです、なんでだろ。
さて、なにを書くか迷ったんですが、一時期whywaitaは会うたびにPhillips Hueはいいぞと言う話をしていた記憶があります。きっとwhywaitaは部屋をゲーミングな感じに光らせて夜な夜なパーリナイを繰り広げているのでしょう。せっかく自分も一人暮らしを始めたので、whywaitaパイセンを見習って部屋をピカピカさせて陽キャの仲間入りしようと思います。
とまあアドベントカレンダーにつなげるための茶番はさておき、自分はもともと机周りスレみたいなコンテンツが好きなので定期的に見ているのですが、最近YouTubeでヒカキンさんが部屋をピカピカさせていたり、たこまるさんの視聴者さんのデスク周り動画とかをみて、自分の机もかっこよくしたいという自己表現欲求が沸々とわいてました。部屋をかっこよく見せる為に必要なものといえば、やはりライティングなのでその辺の試行錯誤もふくめて変遷をまとめます。
スマート照明で布団から出ずに操作
社会人になったので一人暮らしを始めました。せっかく引っ越すならちょっとおもろいことがしたいので、みんなおすすめしているスマート照明を入れてみるかと思い立ちました。その結果選んだものは以下の三つ。
自分は明るい部屋が好きなので、周りの人がやっているレールとかは使わずに部屋のライトはシーリングライト + Nature Remoにして、廊下や風呂場などをHueにする形にしてます。 とりあえず生活がしたかったので、ゲーミングな感じに光らせるとかは特に考えずに選んだ感じです。
Hueのスイッチは玄関に磁石でくっつけてます。 帰ってきたときや出かけるときに電気をいい感じにつけることができて便利です。

部屋ではGoogle Nest Miniで操作しています。 「すべての電気をつけて」と言うと家の電気が全部ついて、「電気をつけて」というと部屋の電気がつきます。 この辺の説明書に書かなくてもなんとなく覚えていく使用感を設計するのすごいよなあ。
とこんな感じで布団から出ずに電気を消したりつけたりすることができて、当初の目的を果たしました。最高。ただ、だれかHueのスイッチを押したらNature Remoで制御している電気をつける方法とかご存じだったら教えてください。帰ってきたときに玄関のスイッチを押してから、部屋の電気だけGoogle Homeでつける必要があって若干面倒なのが不満です。
引っ越し当初の机周り

引っ越した当初はこんな感じでした。基本的には引っ越し前からなにも買い足さずに運んだだけです。
100W type-c給電ができて神、仕事がはかどる。発売直後くらいに買ったんですが、めっちゃ値上がっててびびる。Ethernet端子とかディスプレイをカスケードできないのが不満です。
いったん机にはこだわらずシンプルなやつを使ってます。
こういう余分なケーブルを隠す場所があると便利です。
大学入学した直後にバイトして買った椅子。おかげで腰が痛くなったことは今のところないです。
ディスプレイアームは有名なエルゴトロンのHPのOEMを使ってます。高い位置にディスプレイがあるのが好きなので、長いポールとそれを補強するための板を買ってます。補強が効果あるのかは知りません......
長時間椅子に座っていると疲れるので、オットマンを探していたときに見つけた天才の逸品。椅子に座りながらあぐらもできるし、ほかのオットマンだとリラックスしたいのに面積が少ないから足の動きを制限されるのが結構ストレスに感じていたけど解決してます。おすすめです、とおもってAmazonをみたらポケットコイルタイプが発売してて草。
住みながら改善
実家暮らしの頃と比べると机周りに関してできることも増えたので、色々改善してきました。
まず、快適にYouTubeをみたいと思ったので、テレビを探し始めました。周りの話を聞いているとどうやらHisenseはREGZAを買収したこともあり、REGZAのような品質でめちゃくちゃコスパがいいらしいと言う情報を手に入れました。ええやん。ウォッチしていたところ、Hisenseのビックカメラモデルが存在していて、その型落ちがビックカメラのグループ会社のコジマで安く売ってたのでそれを買いました。手が滑って55インチになっちゃいましたが、2~3cm程度の余裕を残して設置できたので、ヨシッ。なぜ暗い写真かというと反射で部屋が映ったからです。

次に8年ほど使っていた椅子のシルフィーですが、座面がクッション材なので異臭を放ち始めたのが悩みになりました。一応近所の家具クリーニング店を見つけて10000円くらいできれいにしてもらったりもしたんですけど、逆に背面のメッシュのへたりが目立つようにしまったので買い換えの検討を開始しました。オフィスにおいてあったハーマンミラーのエンボディチェアがこれまで使ってきたチェアのなかで一番だったので、それがほしかったんですが25万以上します。たかいなあとおもっていたんですが、Valorant Champions TourでZETA DIVISIONが結果を残してlogicoolコラボモデルが安くなっていたので、それを買いました。ZETAWIN!!!

正直、logicoolコラボモデルは若干廉価版となっているため、背面の素材が若干やすっぽい気がします。本家はゴムっぽいんですけど、logicool版はプラスチックっぽいので若干背面の構造が崩れかかっている感じが......。ただ、本家と同じく12年保証があるので壊れたら直してもらえますし、座り心地には影響ないです。シルフィーの座面が臭くなったことに学んでタオルを座面に敷いて使ってます。ズレないようにする解決策がないので若干不満ですが、汗とかもよく吸うし洗濯できるのでおすすめです。最高の座り心地を手に入れました。
ここらで、俺もそろそろキーマウでFPSをやってみたいと思い始めました。いったん壊れたマウスを卒業したかったので、最初はこれを買っておけとおすすめされたG PRO X SUPERLIGHTを購入。そのときに仕事で使うものは黒っぽいもの、遊びのものは白っぽいものを選ぼうかなというポリシーを決めました。
そんなこんなで、いったんAPEXでFPSデビューをしたわけですが、皆さんご存じの通りAPEXはパッド環境だし、ティアダウンによってプラチナ・ダイヤ帯が当たり前のようにいるブロンズ・シルバー帯でもまれることになります。射線管理もわからないズブの初心者のh-otterは無事友達から引くことを覚えろカスといわれました。諦めが悪いのでちょっとわかってきたからディスプレイのフレームレートをあげれば同じ土俵にたてるやろ!とディスプレイとGPUを買いました。60hzを卒業して165hzになったわけですが、正直違いはわかりませんでした。泣いた。そのあと野良にあおられてOW2をアンインストールしました。
それはさておき、これによって仕事の時はU4320Qを正面に置きたいし、ゲームの時は正面にゲーミングディスプレイを置きたいという要件が生まれました。ディスプレイアームを使っているのでゲーミングディスプレイを使うときだけ正面に持ってくればいいかなと思ったんですが、ポールを奥に置いていると長さが足りなくてなかなかいい感じに正面におけません。ここらへんでYouTubeで机周りの動画を見始めました。その甲斐あって、手前にポールを置くというイノベーションを発見して感動しました。手前にポールを置くと奥にデスクトップPCを置くことができるので、足下が広くなりますし、PCもほこりをすいにくくなります。世の中には天才がいるもんだなあ。ただ、マイクアームをどこに置くのかという問題が出てきたのが悩みです。
光らせる
さて、ようやく本題の光らせる話です。YouTubeでいろいろかっこいい部屋を見たし、PCが机上に来たのでゲーミングPCのライティングが映えるようになってなんかかっこよくできる気がしてきました。
まず、自作PCは今のPCを組んだときに下の画像のような感じで光らせました。ファンが全部光ると一気に映えます。

自作PCを光らせるためには、LEDのコントローラを使う必要があります。ARGBとRGBという規格があり、多くの場合はマザーボードにコントローラがのってます。しかし、CorsairやNZXTは独自の規格の端子を使ってたりします、キレそう。あと、ARGBのドライバがWindows 11に対応してないことがあるらしく、今は制御できません、キレ。そもそも、ちょっとGPUを買ったときに光らないファンに変えてしまったので今はいい感じに光らないです。最近のゲーミングGPUには大体LEDがのっていて、それも制御できます。LEDコントローラで制御できるようになっているGPUもありますが、たいていの場合はGPUのメーカーのソフトで制御する必要があります。統一してくれ~~~~。
PCはおいておいてに部屋を光らせる方法を考えていきます。いろいろ情報収集をすると多くの人がNanoleafという製品を使っているのを見ます。ただ、値段を見ると目玉が飛び出ます。みんな金持ちか。
よく考えたら、最初に言ったとおり我が家にはHueがあるのでそれと連携ができるものがいいでしょう。ねみぃと布団に潜って電気を消してといったはいいが、デスクライトだけ光ってたら最悪です。普通の電球をつかったデスクライトを使っているので、電球をHueの色が変わるやつにすればめっちゃゲーミング部屋になるのではと思い立ち安くなったタイミングで購入。
ただ、カラーにしたはいいけどちゃんといい感じの色に設定できるかなとか思っていたら、HueにはHue SyncというアプリケーションによってPCの画面の変化に合わせて色がいい感じに変わってくれる、実にゲーミングらしいソリューションがあることを知りました。やってみた様子が以下。

ええやんええやん。ライトの大体の位置を設定することで画面に大体あった色で光ります。PCもHue Syncで制御できたら神じゃない?っておもったんですが、連携に対応しているのはCorsairとRazerのみらしいです。 CORSAIR iCUEに他社製LEDパーツを繋ぐ変換ケーブルを作る - kurokamina’s blog とかまあいろいろやりようはあるみたいですが、ここは宿題にしておきます。いったんPCは手動で制御するとして、やはりディスプレイの裏が光るともっと映えることが先行研究(YouTubeの動画)によって明らかになっています。ということでこいつを購入。Black Fridayで安くなってたのに買いそびれたなあ...とか思ってたら値段そのままで在庫が復活したのでポチりました。whywaitaアドベントカレンダーに間に合うなんて、さすがコンテンツの神にwhywaitaは愛されてますね。
設置した結果がこれ。


ええやん。これで私も陽キャの仲間入りです。既存の家具の色と合ってないじゃんと思ったそこのあなた、私もそう思います。必要なのは光ではなくセンス。
まとめ
別にアフィリエイトをつけてるわけじゃないのに、そういう感じの記事になってしまいましたし、長くなりすぎて小物はもういいやってなっちゃいました。 インフラエンジニアたるもの、仕事環境という一番大事なインフラの改善には心血を注がないといけません。 参考にしたいので、みなさんの机周り記事をお待ちしております。
独自ドメインのメールアドレスを持つためにGoogle Workspaceを使う
自宅ラックでいろいろやっているけど、やっぱ自宅でやりたくない・できないものもいくつかある。 ひとつめは権威DNSで、これは無料なのもあってCloudflareに任せている。 Kubernetesの External DNS と連携もできるし、最高。 ちなみに、External DNSはブログにする必要もないほどめちゃくちゃ簡単に動く。
で、ふたつめが本題のメールサーバ。 これまで、自分が持っているドメインのメールアドレスを適当にさくらのVPSに立てたSMTPからGmailに転送していたんだけど、可用性に不安があった。 そもそも、セキュリティを担保することが難しいことを自覚していたため、自分の持っているドメインを送信元としてメールを送信できないようにしていた。 単純に不便だし、周りに使っている人も結構いる Google Workspace を使ってめっちゃ便利だったから懇切丁寧に設定方法を説明するブログを書こうと思ったけど、やっぱりめんどくさくなった。 雑にメモをする。
- Business Starterの契約
- エイリアスの設定
- 50個まで@前のものを登録できる(foo@example.com と bar@example.com みたいな)
- セカンダリドメインの設定
- 正直ドメインひとつにつき680円かかるのかと思っていたが、そうでもなかった
- ドメイン エイリアスまたはセカンダリ ドメインを追加する - Google Workspace 管理者 ヘルプ
別のドメインのメールアドレスもユーザーに付与するの形式で設定した
- キャッチオールアドレスの設定
- abuse@ など受信だけできればいいアドレスはメーリングリストを使ったりするが、自分一人しかそのドメインのアドレスを使わない場合はドメインに来たアカウントに紐付いていないアドレスに来たメールをすべて転送すれば、設定なしで実質同じことができる
- Google Workspace でのメールのルーティングと配信のオプション - Google Workspace 管理者 ヘルプ
- サードパーティアプリケーションからのメールをリレー
- 自分の場合はkeycloakから送信するメールをgmail経由にしたくて設定した
- SMTP リレー: Gmail 以外の送信メールを Google 経由にする - Google Workspace 管理者 ヘルプ
- もし、IPアドレスを指定せずにSMTP認証を利用した場合は、ユーザー名をメールアドレス、パスワードをアプリパスワードにする必要がある
まとめ
結局、エイリアスとセカンダリドメインのおかげで月680円ぽっきりで必要な数のメールアドレスを作成することができた。 非常にお得感があってやってよかったと思う。
ちなみに、既存のGmailアカウントはそのまま残していて、Androidアプリなどの連携はそのままGmailアカウントでやっていこうかと思っているけど、この辺の他の人の運用方針なんかも少し気になるので、知見などあれば教えてください。
P.S.
ブログ書くのやっぱりめんどい。 自分が持っているドメインの呼称が独自ドメインとかカスタムドメインとかいろいろありすぎなんだよなあ。
n0stackの紹介
n0stack とは
n0stackとは自作クラウド基盤です。
これは「ちゃんと動くプライベートクラウド基盤を作る」ことを目指しています。 ちゃんと動くことの具体例としては、
- APIのレスポンスに待たされない
- OpenStackはmemcachedを入れないと使い物にならないほど遅く、入れても遅いなぁと思う程度に遅い
- 基盤自体の構築が簡単
- OpenStackはPackStackなどのオーケストレータを使わないと構築が難しい
- ソースコードが読みやすい
- OpenStackは多くの機能を持っているため便利な反面、ソースコードが多いためビルドが遅くデバッグが大変
- Kubernetesは抽象化が強く、ある
interface{}を何が実装しているのかわからないことが多い
- 内部APIを作らない
- OpenStackはメッセージで様々な情報を交換しており、各コンポーネントのソースコードを行ったり来たりする必要がある
- Kubernetesはなくしており、責任分界点が明確になるなど評価が高い
- VM管理だけではなくアプリケーション開発のプラットフォームにする
- OpenStackはVMがいい感じにたつ以上の機能をなかなか実現できていない
- KubernetesはOperatorなどの登場などのにより様々なミドルウェアを利用することができ、便利
という感じです。 特にこれといった新規性があるわけではないですが、これらを実現することは広い知見と深い技術力が必要だと感じていて、結構楽しいです。
これらの目的を満たすために以下のような要素技術を利用しています。
- Golang
- シングルバイナリでデプロイが簡単
- 型付きでコードジャンプが便利
- gRPC
- API定義が明確
- etcd
- リソース志向 + RPC
- Kubernetesはリソース志向のCRDだが、ステートフルなものを管理するのは難しいため
また、n0stackは様々な構成で動くようなアプリケーションにするつもりはありません。 というのも、OpenStackやKubernetesは確かに多くの機能が実装されているため、様々な環境で動かすことができます。 しかし、多くの機能を実装しているということは多くのバグを抱えやすいということです。 特にクラウド基盤は結合した時にバグるということが多く、結局安定の構成 + アプライアンスのサポートで何とかするみたいなことが多いです。 ならば、初めから多くの機能を一つのアプリケーションで実装することをあきらめ、クラウド基盤を自分で実装できるように支援するようなものを作りこんだほうがいいのではないかと考え始めました。 言い換えれば、ウェブアプリケーションフレームワークならぬクラウド基盤フレームワークを作るということです。 こうすることで、VM管理基盤を自作していた時代のように開発の難しさに頭を悩ませることなく、OpenStackのように長いコンフィグを読み解く必要もなく、ソースコードリーディングは簡単にできるといったメリットが考えられます。
今後の予定
自分の文章が拙いことが最近の悩みなので、その練習がてらやったことをブログに書いていく予定です。
ついでに開発風景をyoutube配信とかもしてみています。 いろんな方とコミュニケーションをとれると面白そうですし、他人の作業風景を見てみたいといわれることが多いのでちょっと流してみてます。 面倒になったら適当にやめると思います。
現在 v1alpha by h-otter · Pull Request #232 · n0stack/n0stack · GitHub でブレーキングチェンジ中なので使ってみることはお勧めしませんが、作業が進んでいくのを見守ったりコメントをいただければ嬉しいです。 これからn0stackをよろしくお願いします。
ICTSC7の感想
¾ - 3/5 に第7回トラブルシューティングコンテスト (ICTSC7) が開催されました。 今回自分は @palloc と問題リーダーとして半年間準備を行いました。 参加者の感想がまだ集まり切っていませんが、自己評価としては参加者にも楽しんでもらえる良い大会を運営できたのではないかと思っています。 この記事では大会を時系列で振り返ってみようと思います。
ふりかえり
合宿 (10/29 - 10/30)
キックオフミーティングの前に合宿があったような気がします。 問題の案などを出してもらったり、この大会がどのようなものであるかを共有することのほかに、今回は思い切って遊びました。 これが功を奏したのか、割と雑談が増えたのではないかと… (気のせい?)
約4ヶ月の準備期間
そこからは直接全員集まることはなく、ほとんどリモートで作業を行うことになりますが非常に大変でした。
やはり学生の本業は学業 であるはず なので、トラコンのタスクはどうしても優先度に低いものになります。
やってほしいこととやらなければいけないことを分けて認識し、やらなければいけないことは必ずやってもらうことが重要であったと思います。
Hotstage Phase 1 (2/18 - 2/24)
六本木のCiscoさんのオフィスをお借りして準備をしていました。 その際、付箋で全体のタスクをジャンルごとに分け、Pending(作業予定) / Woring (作業中) / Done (終了) の3つのゾーンに分けたかんばん方式で管理しました。 全体の視認性が上がり、アナログがやはり最強であると証明されてしまった気がします。 個人的にはDoneの付箋がどんどん増えていく達成感と、前回と比べて順調に進みすぎているため何か大きな見落としがあるのではないかという不信感がずっと戦っていました。


Hotstage Phase 2 (2/24 - 3/3)
現地であるNTT 東日本さんの部屋をお借りして実際の設営などを行いました。 リハーサルを行い、点数の調整などの微調整を行いました。 問題の構築などは早々に終わり、微調整や不具合の修正などに時間をさけたことは快挙でした。

本番 (¾ - 3/5)
やはり、新しいルールや取り組みによるトラブルが発生しましたが、リハーサルも行ったおかげで最低限に抑えられたかと思います。 実際に開催してみてわかるルールなどの改善点が多く見つかったので次回の参考にしようと思います。 TAZ問題(掃除のおばちゃんによる電源OFF)は反響が大きく(・∀・)ニヤニヤ という感じです。
打ち上げ
みんなテンションが高く、盛り上がる余裕があることは信じられないことでした。 各人それぞれはやはり思うところがあると思いますが、少なくともとても笑って打ち上げができるような大会にできてよかったと思います。
(↑ うるさいくらいにテンションが高い一例)
まとめ
今大会は問題リーダーとして参加者に楽しんでもらうということを目標としました。 そのため前回大会の反省にも上がった点も踏まえて以下のことに挑戦しています。
- 各問題のシナリオの調整
- ルールの工夫 (http://icttoracon.net/archives/3701)
- (ルールを乞ってしまったせいで迷惑をかけた @kyontan をはじめとしたコンテストサイトの開発のみなさま本当にありがとうございました。)
- リアルタイム採点
- トラブルの内容とどこまで解決してほしいかを明確にする
- 問題を解くにあたって、ほかの要素を問題のトラブルだと勘違いしないような構成にする
- 特に物理機材
どれも難しいことでしたが、運営メンバーと協力することでなんとか形にすることができました。 問題リーダーが2人いる構成でしたが、密に連携をとることで円滑に運営メンバーに仕事をしてもらうことができたと思います。
当然、今大会が成功したことは大会にかかわっているすべての方のおかげです。 特に学生の不手際でいつも迷惑をおかけしてしまう大人の皆さまには頭が上がりません。 関係者の皆様方本当にありがとうございました。
参加者の皆さんも、もし楽しんでいただけたのであればまた参加してください。
クライアント Hyper-V の Txオフロードについて
クライアントHyper-Vを使っている際に、sshコネクションが急に切れたりなどいろいろ不安定なことが多かったりします。 特にWiFiではそれが顕著であると感じています。
今回はWiresharkでパケットキャプチャを行い、Checksum Incorrectが多発していたことを確認しました。 Hyper-VインターフェイスのTCP, UDPのTxオフロードを無効化したところChecksum Incorrectが多発しなくなったのでメモです。 もちろんパフォーマンスは下がると思いますが、TCPコネクションが切れるよりはましということで…
サーバーではこの問題は特に起こっていないように感じるので、よくわかりません。 また、これで改善するかしないのかはまだ検証中なので、わからないです。 もしバグであるなら修正してほしいですが、もう少し検証してから細かいことを記事にまとめるつもりです。
Zabbix3.0 へのアップグレード
Zabbix 3.0 LTS がリリースされたのでアップグレードしました。ところどころ詰まったのでメモ。
環境
- on Hyper-V
$ uname -a Linux zabbix 3.13.0-58-generic #97-Ubuntu SMP Wed Jul 8 02:56:15 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"
方法
バックアップ
データベースや設定ファイルをバックアップします。自分はHyper-V上に構築しているためチェックポイントとって終了。
リポジトリの更新
Zabbix 3.0のリポジトリをドキュメント通りに更新します。このとき念のため古いリポジトリは削除します。
3 Installation from packages [Zabbix Documentation 3.0]
$ sudo apt-get remove zabbix-release $ wget http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.0-1+trusty_all.deb $ sudo dpkg -i zabbix-release_3.0-1+trusty_all.deb $ sudo apt-get update
Upgrade
必要なパッケージを適宜インストールします。アップグレードだけであれば以下のコマンドでいいようです。更新中に設定ファイルは古いものを維持するか新しいもので上書きするか聞かれます。
$ sudo apt-get --only-upgrade install zabbix*
設定
基本的に2.2や2.4を新規インストールするときと同様のものを設定します。
タイムゾーン
/etc/apache2/conf-available/zabbix.conf
php_value date.timezone Asia/Tokyo
データベースの設定
[password]に自分が設定したパスワードを入力してください。
/etc/zabbix/zabbix_server.conf
# DBPassword= DBPassword=[password]
フロントエンドのデータベースの設定は前のものが引き継がれます。もしアップグレードとMySQLのパスワードの変更を同時にやってしまったかわいそうな人(自分)は初期設定画面も表示されず、エラー画面が表示されるだけなので/usr/share/zabbix/conf/zabbix.conf.phpを自分で編集してください。
再起動
$ sudo service zabbix_server restart $ sudo service apache2 reload
お疲れ様でした。














