T time

プログラミングや電子工作、各種ガジェットに関するブログです。

srvdir

f:id:tatur0u:20150616204924p:plain

srvdir - make any folder a secure public fileserver

ローカルの静的コンテンツをインターネットに公開するためのHTTPサーバを紹介します。

まえがき

昨日一昨日 とブログに書いた通り、 Pebble アプリを開発するために、 CaddyでローカルのHTMLをWebブラウザから見られるようにし、 それをngrokでインターネットに公開して「これでもう怖いものはない」と悦に入っていました。

当然Twitterにも誇らしげにツイートしますよね。

すると、見ず知らずの外国の方からこんなリプライが。

意訳するとこんな感じでしょうか。

Caddy は確かにすげーけど、その使い方ならならsrvdirだろ。 知ってるか?ngrokチームが作ったやつだぞ。

正直、パッと見て srvdir をrmdirのタイポかと勘違いして「何言ってんだこいつ?」と思いましたが、そうではありませんでした。

そして、この srvdir がマジ超絶すげーやつでした。

srvdir とは

ローカルの静的コンテンツをインターネットに公開するためのHTTPサーバです。

以下の特徴があります。

  • Caddyの機能を持っている
  • ngrokの機能を持っている

そう。つまりCaddyとngrokを組み合わせて実現していたことが、srvdirだけで実現できるのです。 開発チームは安心と信頼のngrokの開発チーム。

Webサイトもngrokと同じテイストで、情報がスッキリ整理されているのでわかりやすいです。

カレントディレクトリをインターネットに公開する

$ srvdir

任意のディレクトリをインターネットに公開する

$ srvdir /path/to/directory

これだけです。これだけでローカルのフファイルをインターネットに公開できます。NAT越えも完璧。すげぇ!

好きなサブドメインを設定する

$ srvdir customsubdomain:/path/to/directory

これで https://customsubdomain.srvdir.net に公開されます。

Digest認証を付ける

$ srvdir -auth="root:12345" customsubdomain:/path/to/directory

提供方式

以下のプラットフォーム向けにバイナリが提供されています。

導入方法

Ubuntuに導入する方法です。 バイナリをダウンロードしてZIPを解凍するだけなので、他のプラットフォームでも同じような手順で導入できるはずです。

インストール

以下を適当なファイルに保存して実行するとインストールできます。

#!/bin/bash
# アプリ名
app="srvdir"
# インストールパス
libpath="/opt/${app}/"
# 実行ファイルのパス
binpath="/usr/local/bin/"

# 実行ファイルのパス
sudo mkdir -p $libpath
# ダウンロード
cd $libpath
sudo wget "https://dl.srvdir.net/linux_386/srvdir.zip"
# ダウンロードしたファイルを解凍
sudo unzip "srvdir.zip"

# 実行ファイルへのシンボリックリンクを作成
cd $binpath
sudo ln -s "${libpath}/${app}"

ユーザー登録と認証

ngrokと同様にログインすると認証キーをもらえ、認証すれば好きなサブドメインを使えるようになります。

$ ./srvdir -authtoken <認証キー>

あとがき

caddyとngrokはそれぞれが単機能を確実にこなす、質実剛健な感じのツールです。 それはUNIXの精神に通じるものがありとても好ましいのですが、人間時には少し楽をしたいものです。 srvdirはそういった少し楽をしたい欲を満たしてくれる素晴らしいツールです。

srvdir 恐ろしい子