OpenWrtでCloudflaredを動かしてみる
ルーター上でCloudflaredを動かしてみたかったのでやってみた
ビルド方法
1. OpenWrtのSDKをダウンロードして解凍
ここからターゲットのSDKをダウンロードして解凍する
自分はGL-MT300N-V2で動かしたいのでhttps://archive.openwrt.org/releases/21.02.0/targets/ramips/mt76x8/openwrt-sdk-21.02.0-ramips-mt76x8_gcc-8.4.0_musl.Linux-x86_64.tar.xzをダウンロードした
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からダウンロードするようにしました
デーモン化する場合は/root/.cloudflared
の中身を/etc/cloudflared
にコピーする必要があります。
#!/bin/sh /etc/rc.common
START=99
STOP=15
start() {
# commands to launch application
if [ ! -e /tmp/cloudflared ];then
wget https://github.com/minetaro12/openwrt-cloudflared/releases/download/2021.11.0/cloudflared-linux-mipsel -O /tmp/cloudflared
fi
chmod +x /tmp/cloudflared
tmux new-session -s cloudflared-ssh -d "/tmp/cloudflared tunnel --hostname hogehoge.com --url ssh://localhost:22"
}
stop() {
# commands to kill application
tmux send-keys -t cloudflared-ssh C-c
sleep 5
}