DockFlareをインストール
DockFlare のインストール方法のメモを残しておく。
DockFlare とは何か?
docker compose の label に設定するだけで、簡単にサービスを公開できるツール。
DockFlareを使わないと Cloudflare 上で、次のようなことを自分の手で行う必要がある。
- トンネルの作成
- ドメインとトンネルの接続 (裏でDNSが作成される)
- トンネルとアプリケーション (port) の紐付け
しかし、DockFlare を使うと、これらをサクッとできるようになる。
例えば、Nginx のサービスを nginx.tamago324.com で公開するには、以下のようにするだけ。
本当に label をつけるだけで公開できて、すごい便利。
services:
nginx-webserver:
image: nginx:latest
container_name: my-nginx
restart: unless-stopped
networks:
- cloudflare-net
labels:
- "dockflare.enable=true"
- "dockflare.hostname=nginx.tamago324.com"
- "dockflare.service=http://nginx-webserver:80"
- "dockflare.access.group=public-default-bypass"
networks:
cloudflare-net:
name: cloudflare-net
external: true前提
- docker が入っていること
- Cloudflare アカウントを作成していること
- ドメインを CloudFlare に設定済み (自分の場合は、CloudFlare でドメインを契約しているため、特に何もしていない。)
インストール
スクリプトを実行するだけ。
curl -fsSL https://dockflare.app/install.sh | bash~/dockflare/docker-compose.yml がダウンロードされて、起動する。

初期設定
1. 管理者ユーザーの作成
http://192.168.3.52:5000 にアクセスすると、初期セットアップ画面が表示される。
まずは、管理者ユーザーの作成を作成する。

2. Cloudflare の設定
2-1. API トークンの作成
DockFlare は、Cloudflare の API を経由して、Tunnel の作成などを行うため、APIキーを作成する必要がある。
- https://dash.cloudflare.com/profile/api-tokens/ にアクセス
- トークンを作成する > カスタムトークンを作成する
- https://dockflare.app/docs/prerequisites に書かれている権限を付与する

作成画面に表示されるトークンIDをコピーして、どこかにメモしておく。
2-2. 画面に入力
- Cloudflare API Token: 2-1 で作成したもの
- Cloudflare Account ID: Cloudflare の Workers & Pages に記載されているアカウントID

3. Tunnel の設定
基本はデフォルトでOK。
Tunnel Name は任意で変更する。

4. 最終確認
確認画面の内容を確認して、OKそうなら、次に進む。
5. ログイン
admin でログインする。

アクセスポリシーの設定
DockFlare にはアクセスポリシー (Access Groups) という概念がある。
これを使うと、Cloudflare Zero Trust (cloudflared) を使って、セキュアなアクセスを実現できる。
2つのデフォルトアクセスポリシーが用意されている。
- Authenticated Access
- 認証付きのアクセスポリシー
- このポリシーをカスタマイズすると、使いやすい。
- Public Access (Bypass)
- 誰でもアクセスできるアクセスポリシー
Authenticated Access の設定
デフォルトのアクセスポリシーをカスタムする。
自分だけしかアクセスしないことがわかっている場合は、メールアドレスとアクセス元の国の設定をしておくと、よりセキュアにできる。
Access Policies タブの Authenticated Access の Edit をクリック

以下のように設定する。
- Allowed Emails or Domains (Required with IdPs)
- 自分のメールアドレス
- Blocked Countries
- 日本以外を設定
- Select All をクリックして、Japan を削除する。
- 日本以外を設定
- Session Duration
- 720h

試しに Nginx を立ててみる
Dockflare を使ったサービス公開を試してみる。
認証なしのアクセスポリシーを使ってみる
まずは、Public Access (Bypass) のアクセスポリシーでアクセスしてみる。
compose.yml を作成する。
mkdir ~/nginx
vim ~/nginx/compose.ymlservices:
nginx-webserver:
image: nginx:latest
container_name: my-nginx
restart: unless-stopped
networks:
- cloudflare-net
labels:
- "dockflare.enable=true"
# ここは、自分のドメインのサブドメインを指定する
- "dockflare.hostname=nginx.tamago324.com"
- "dockflare.service=http://nginx-webserver:80"
# bypass する
- "dockflare.access.group=public-default-bypass"
networks:
cloudflare-net:
name: cloudflare-net
external: truelabel をつけるだけで、cloudflared と紐づけてくれる。
- dockflare.enable: 有効か?
- dockflare.hostname: ホスト名
- dockflare.service: サービス、ポート
- dockflare.access.group: グループ
- 今回は、デフォルトのアクセスポリシーを指定
起動する。
cd ~/nginx
docker compose up -dダッシュボードを確認してみると、設定が適用されていることがわかる。

https://nginx.tamago324.com にアクセスしてみる。

ラベルを設定するだけで実現できた。
認証付きのアクセスポリシーを使ってみる
さっきは、アクセス制限なしのポリシーとしていたため、制限なしでアクセスできた。
次は、 Authenticated Access のポリシーを使って、指定したメールアドレスにワンタイムパスワードを送信する方式でアクセスを制限してみる。
これもlabelを指定するだけで実現可能。
services:
nginx-webserver:
image: nginx:latest
container_name: my-nginx
restart: unless-stopped
networks:
- cloudflare-net
labels:
- "dockflare.enable=true"
# ここは、自分のドメインのサブドメインを指定する
- "dockflare.hostname=nginx.tamago324.com"
- "dockflare.service=http://nginx-webserver:80"
# bypass する
- - "dockflare.access.group=public-default-bypass"
+ - "dockflare.access.group=authenticated-default"
networks:
cloudflare-net:
name: cloudflare-net
external: true
再起動する。
docker compose up -dhttps://nginx.tamago324.com にアクセスしてみる。
Cloudflare Access の画面が表示された。

設定したメールアドレスを入力すると、メールが飛んできて、コードを入力すれば、アクセスできる。

おわりに
自宅サーバーで稼働しているサービスをセキュアに簡単に公開できる DockFlare は便利。
cloudflared が便利で、それをさらに使いやすくしているのがいいのかも。