オープンソース版の Caddy を自分でビルドして使う

  • 1
    いいね
  • 0
    コメント

Caddy の公式バイナリは、EULAへの同意が必要

Caddy v0.10.9 から https://caddyserver.com/ でダウンロードできるバイナリには、EULAへの同意が必要になりました。( Announcing Caddy Commercial Licenses )

特に注意すべき点としては、以下のような条件があることです。

  • 商用不可であること
  • "Caddy-Sponsers"ヘッダがHTTPリクエストに付与されること(また、いかなる方法でもそれを外さないこと) ※2017/09/14 に EULA を改定済み。

そこで、Apache 2.0 Licence である Caddy のソースコードから自分でビルドをしてみたいと思います。

Goの環境を整える

Goのインストール

Golang の公式ページより最新のGoをダウンロードします。

wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
mkdir $HOME/go

/etc/profile.d/goenv.sh に以下の内容をファイルを作成します。

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

環境変数を読み込みます。

source /etc/profile.d/goenv.sh

インストールされたか確認する

go version とコマンドを入力して、

go version go1.9 linux/amd64

のように表示されれば、インストールされています。

Caddy をビルドする

以下のように入力して、GitHubからCaddyのソースコードを取得します。
(同時にコンパイルも行われますが、それは使いません。)
また、最新のリリースタグにチェックアウトします。(執筆時、v0.10.9)

go get -v github.com/caddyserver/builds
go get -v github.com/mholt/caddy/caddy
cd ~/go/src/github.com/mholt/caddy/
git checkout v0.10.9

以下のコマンドを実行して、コンパイルします。

cd caddy/
go run build.go

終了すると、カレントディレクトリにビルドされた caddy というファイルが確認できます。
これが、コンパイルされたバイナリになります。このバイナリを利用する場合、 EULA を許諾する必要がありません。(Apache 2.0 Licence には従う必要があります。)

そのほか

クロスコンパイル

上記の方法では、ビルド環境で動くバイナリが生成されます。
クロスコンパイルを行いたい場合、build.go 実行時に以下のように引数をつけます。

  • Windows x86 go run build.go -goos=windows -goarch=386
  • Windows x64 go run build.go -goos=windows -goarch=amd64
  • Linux x86 go run build.go -goos=linux -goarch=386
  • Linux x64 go run build.go -goos=linux -goarch=amd64
  • FreeBSD x86 go run build.go -goos=freebsd -goarch=386
  • FreeBSD x64 go run build.go -goos=freebsd -goarch=amd64

コードに編集を加える

checkout を行った後の時点で変更を加えます。
gitで管理されているので、以下のようなこともできます。

git revert ad973f1 -m 1

※ 現在のmasterブランチでは、広告ヘッダは表示されなくなりました。