自宅サーバーにMinIOを建てたいのですが、固定IPアドレスがないのでCloudflare TunnelとリバースプロキシにNginxを使うという話のメモ書きです。
環境
- Ubuntu 22.04
- Cloudflared version 2025.1.0
- Nginx version: nginx/1.26.2
- MinIO Version: RELEASE.2025-01-20T14-49-07Z
MinIOを建てる
Dockerで動かすため、以下のようなcompose.ymlを用意します。
ポート番号やデータ保管のボリュームやパスワードは好みで調整してください。
私は環境都合上、 network_mode: "host"
を使っていますが、ポートマッピングで良いと思います。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
services:
minio:
image: minio/minio:latest
container_name: minio
network_mode: "host"
# ports:
# - "9000:9000" # MinIO API 用ポート
# - "9090:9090" # MinIO コンソール用ポート
environment:
MINIO_ROOT_USER: "minio-user"
MINIO_ROOT_PASSWORD: "minio-password"
MINIO_DOMAIN: "example.com"
MINIO_BROWSER_REDIRECT_URL: "http://example.com/console"
command: server /data --console-address ":9090"
restart: unless-stopped
volumes:
- /mnt/minio:/data
|
Nginxの設定
Configure NGINX Proxy for MinIO Server — MinIO Object Storage for Linuxを参考に、Nginxの設定を行います。
/consoleでWebコンソールにアクセスできるようにします。
client_max_body_sizeを設定しないと、大きなファイルのアップロードができないかもしれません。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
server {
listen 80;
server_name example.com;
ignore_invalid_headers off;
proxy_buffering off;
proxy_request_buffering off;
client_max_body_size 100m;
location / {
proxy_pass http://127.0.0.1:9000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 300;
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
}
location /console/ {
proxy_pass http://127.0.0.1:9090/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
real_ip_header X-Real-IP;
proxy_connect_timeout 300;
# WebSocket対応
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
chunked_transfer_encoding off;
# リダイレクトで余計なスラッシュを防ぐ
rewrite ^/console(/.*)$ $1 break;
}
}
|
Cloudflare Tunnelの設定
Cloudflaredをインストールします。
Create a locally-managed tunnel (CLI) · Cloudflare Zero Trust docsを参考にします。
インストールを終えたら、Cloudflareのダッシュボードで、トンネルの設定をします。
メニューの場所はよく変わるのですが、この記事を書いている時点ではZero Trustのネットワーク、Tunnelsにあります。
トンネルを作成し、ウィザードに沿ってパブリックホスト名を設定します。
設定したドメインでMinIOにアクセスできれば完了です。