ルーター上でCloudflaredを動かしてみたかったのでやってみた

ビルド方法

1. OpenWrtのSDKをダウンロードして解凍

ここ からターゲットのSDKをダウンロードして解凍する

自分はGL-MT300N-V2で動かしたいのでこれ をダウンロードした

2. リポジトリをクローン

packages内にこれgit clone

3. ビルドの準備

次のコマンドを実行してパッケージをインストールする

./scripts/feeds update -a
./scripts/feeds install -a

make menuconfigを実行してExtra packages内のopenwrt-cloudflaredにスペースで*を入れる

4. ビルド

次のコマンドでビルドする

make ./package/openwrt-cloudflared/compile

終わるとbin内にパッケージができる

バイナリだけ欲しい場合(推奨)

これ をクローン

GOOS=linux GOARCH=mipsle GOMIPS=softfloat go build -trimpath -ldflags "-s -w" ./cmd/cloudflaredでビルド

アーキテクチャは必要に応じて変更してください

動かす

バイナリが20MBくらいあるので、exrootで拡張するかパッケージを解凍してtmp等別の場所に入れてうごかすことをおすすめします。

自分は/etc/init.d/cloudflaredを作成して、起動時にバイナリをGithubからダウンロードするようにしました

※2022/02/09追記

起動時にダウンロードだと動かない場合があるので、/etc/init.d/cloudflaredを作成しUSBメモリから読み込むようにしました。(tmuxが必要です)

デーモン化する場合は/root/.cloudflaredの中身を/etc/cloudflaredにコピーする必要があります。

!/bin/sh /etc/rc.common

START=99
STOP=15

start() {
        # commands to launch application
        tmux new-session -s cfd-ssh -d "/mnt/sda1/bin/cloudflared tunnel --hostname ssh.example.com --url ssh://localhost:22 --no-autoupdate"
}

stop() {
        # commands to kill application
        tmux send-keys -t cfd-ssh C-c
        sleep 5
}