树洞剪藏#剪藏#树洞剪藏

NAS Docker-compose 方式私有化部署 minio,Nginx Proxy Manager 反向代理, - 链滴

2024 年 11 月 18 日1 分钟
分享Twitter / XTelegram微博
NAS Docker-compose 方式私有化部署 minio,Nginx Proxy Manager 反向代理, - 链滴 封面

同步来源:树洞剪藏 源站剪藏 ID:110 原文地址:https://ld246.com/article/1710858026632

打开原文 · 打开源站剪藏快照


NAS Docker-compose 方式私有化部署 minio,Nginx Proxy Manager 反向代理, - 链滴

首页

领域

问答

榜单

最新

查看所有消息

🎉 发布反馈或分享

❓ 进行提问或求助

🌛 发布清风明月

🗂️ 个人主页 🎉 活动

🧾 积分 🗃️ 文件 📙 帮助

⚙️ 设置 💤 登出

首页

标签

Docker /

MinIO /

NAS /

S3

NAS Docker-compose 方式私有化部署 minio,Nginx Proxy Manager 反向代理, 自建 S3 对象存储 (含两个坑的解决方案和思源笔记配置)

本贴最后更新于 241 天前,其中的信息可能已经天翻地覆

请注意文章时效(2024-03-17)

【Minio 是什么】

Minio 是一款兼容 Amazon S3 API 的高性能的对象存储服务器。如:aws 的 s3 存储、阿里云的 OSS、腾讯的 COS 等都属于 S3 协议的存储(也就是说:有了 minio,可以弃用各种收费的对象存储和 CDN 等)。

【NAS 部署 Minio 适用人群】

同时拥有一台云服务器以及一台有带公网 IP 的 NAS 用户。

【为什么 NAS 部署 Minio】

云服务器带宽太低,空间不够,用来做穿透太鸡肋。本地 NAS 是 7*24 小时开机,空间足够大,但没有 80 和 443 端口。那么我们可以将网站部署在云服务器上,然后把对象存储建立在本地 NAS 上。网站访问速度将大大提高,本地 NAS 也存储了关键数据。

【适合适用 minio 的网站或应用】

wordpress 博客,memos 笔记,思源笔记,chevereto 图床,兰空图床,alist 网盘等一切支持部署 s3 兼容对象存储的应用。

安装教程:(在群晖 DSM7.0 系统下搭建)

1.第一步,新建、映射两个文件夹,config 和 data,我的路径:/volume1/docker/minio。

639 x 216

2.第二步,新建 docker-compose.yml,运行容器

docker-compose.yml 内容如下:

version: "3.7" services: minio: image: minio/minio container_name: minio command: server --address ":9000" --console-address ":9090" /data # 指定服务端口和管理端口 ports:

  • 9080 : 9000 # :前面的自行定义,服务端口:API: http://IP:9080
  • 9090 : 9090 # :前面的自行定义,管理端口:http://IP:9090 volumes:
  • ./data:/data # 数据目录
  • ./config:/root/.minio # TLS 密钥和证书存放在 .config/certs environment:
  • MINIO_ROOT_USER=admin # 用户名,自行修改
  • MINIO_ROOT_PASSWORD=password # root密码,自行修改 restart: unless-stopped # 总是重启容器

运行容器:

docker-compose up -d ​

3.第三步,浏览器打开 minio 网址 http://IP:9090,如下,输入之前设置的账号密码进入。

733 x 688

835 x 784

4.第四步,新建用户

(1)创建用户(Create User)例:siyuan

733 x 517

1522 x 1074

733 x 523

1477 x 1053

(2)创建组(Create Group)并关联用户。例:vps 关联 siyuan

733 x 456

1516 x 943

733 x 668

1075 x 979

\保存

(3)服务帐户/创建访问密钥 Create Access Key

733 x 441

1491 x 897

733 x 310

1365 x 577

733 x 597

1462 x 1191

733 x 489

1696 x 1131

将会下载一个 credentials.json 证书文件,打开后有密钥稍后配置思源笔记会用的。

733 x 195

1929 x 513

5.第五步,创建桶(Create Bucket)。

733 x 309

1533 x 646

733 x 411

1488 x 834

733 x 317

1612 x 697

6.第六步,恭喜!可以上传文件了!。

733 x 256

1629 x 570

7.第七步,创建地区。 点击左侧 settings--点击 region--在 server location 输入 cn,点 save。(意思地区是 cn)

733 x 443

1621 x 979

网页顶部会提示重启生效,点击 Restart。等待小会,minio 重启完成,刷新网页即可。

733 x 185

1629 x 411

至此 minio 所有的配置已经完成。你的数据如下:

Endpoint: http://域名:9080

地区 region:cn

access key:在第四步创建的

secret key:在第四步创建的

存储桶 Bucket:blog(第五步创建的名字,例:siyuan)

Url 前缀:http://域名:9090/siyuan #siyuan 是创建桶的名称,你可以自行定义

部署完成后,minio 不需要登录,保持 docker 容器开着就行。如果要给不同应用不同的存储桶,只需额外创建对应存储桶就行(第五步),其他数据不需要变。

需要注意的是,如果你需要部署对象存储的网站是 https,需要在 Nginx Proxy Manager 里将 9080 端口进行反代,并进行端口映射。例如端口映射到 99,那你的 endpoint 就变成了 https://域名:99,同理 url 就变成了 https://域名:99/siyuan。

733 x 797

789 x 858

733 x 568

775 x 601

733 x 876

759 x 907

Allow special characters in headers

ignore_invalid_headers off ;

Allow any size file to be uploaded.

Set to a value such as 1000m; to restrict file size to a specific value

client_max_body_size 0 ;

Disable buffering

proxy_buffering off ; proxy_request_buffering off ;

location / { proxy_set_header Host $http_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 ;

Default is HTTP/1, keepalive is only enabled in HTTP/1.1

proxy_http_version 1 . 1 ; proxy_set_header Connection "" ; chunked_transfer_encoding off ;

proxy_pass http://minio:9000; }

你需要配置对象存储的网站,例如博客,图床。填入以上数据即可。

附:官方文档: https://www.minio.org.cn/docs/minio/kubernetes/upstream/index.html

思源笔记配置界面

733 x 448

1905 x 1165

【两个坑的解决方案】在回帖 2、3、4 楼

2 楼: 坑一:Nginx Proxy Manager 无法反向代理

3 楼:坑二:(第 1 部分) 共享文件外部域分享,显示为内部域 IP(127.0.0.1:端口)(大坑)

4 楼:坑二:(第 2 部分) 反向代理后面的域名解析到 127.0.0.1

请切换到:传统回帖浏览模式

733 x 243

1171 x 388

倒序阅读

Docker

MinIO

NAS

S3

9 操作

jsntwdj 在 2024-03-21 16:52:57 更新了该帖

jsntwdj 在 2024-03-19 23:40:09 更新了该帖

jsntwdj 在 2024-03-19 23:32:51 更新了该帖

jsntwdj 在 2024-03-19 23:26:20 更新了该帖

jsntwdj 在 2024-03-19 23:22:56 更新了该帖

jsntwdj 在 2024-03-19 22:43:39 更新了该帖

jsntwdj 在 2024-03-19 22:40:10 更新了该帖

jsntwdj 在 2024-03-19 22:35:13 更新了该帖

jsntwdj 在 2024-03-19 22:31:57 更新了该帖

jsntwdj 7 个月前

南通 位置

4

感谢

8 收藏

9

操作

7 回帖

5

584

361

8

197

7

9

7 回帖

NAS Docker-compose 方式私有化部署 minio,Nginx Proxy Manager 反向代理, 自建 S3 对象存储 (含两个坑的解决方案和思源笔记配置)

请输入回帖内容...

qydxyx • 7 个月前

via macOS

付费者

昨天试了一下,同步确实很快,比阿里云的香港 s3 好多了!反代那一步我用 caddy 代替 nginx proxy manager,直接一条 reverse_proxy http://ip:9080 就搞定了,目前用起来没有什么问题。非常感谢!

jsntwdj • 7 个月前

1 赞同

付费者

作者

NAS 上 docker 布署,还是可以参考一下

jsntwdj • 7 个月前

付费者

作者

是的,群晖自带的反向代理,没有这个问题,但是 ssl 证书,三个月换一次,太麻烦,还是 npm 自动续签,比较方便。

5kyfkr • 7 个月前

付费者

捐赠者

前群晖用户路过,记得群晖的设置里自带反向代理功能的,可以不用 NPM,就没有那个坑

2 回复

1 引用

Docker-compose 部署思源笔记实现多终端多平台协作同步 • jsntwdj

jsntwdj • 7 个月前

付费者

作者

接坑二(1): ​

坑二:(第 2 部分)

反向代理后面的域名解析到 127.0.0.1

可以在 docker-compose 中增加 dns 记录解决

extra_hosts: api.example.com : 127.0 . 0.1 # 自行修改服务域名 s3.example.com : 127.0 . 0.1 # 自行修改服务域名 ​

解决容器内部无法访问到 99 端口的问题

家庭网络环境中,路由器会转发端口

例如:

A 路由器外部公网端口:99 #运营商限制不能使用 80 没办法只能用 99 代替

B 反向代理端口:80/443

C 主机端口:9080 # 详见 docker-compose 的配置

D 容器内部端口:9000

访问的传递是 A->B->C->D

在容器内部,无法使用 99 端口

这就需要将容器服务端口与外部端口统一使用 ":99"

综上修改后的 docker-compos.yml 如下:

version: "3.7" services: minio: image: minio/minio container_name: minio command: server --address ":99" --console-address ":9090" /data # 指定服务端口和管理端口 ports:

  • 9080 : 99 # :前面的自行定义,服务端口:API: http://IP:9080
  • 9090 : 9090 # :前面的自行定义,管理端口:http://IP:9090 extra_hosts: api.example.com : 127.0 . 0.1 # 自行修改服务域名 s3.example.com : 127.0 . 0.1 # 自行修改服务域名 volumes:
  • ./data:/data # 数据目录
  • ./config:/root/.minio # TLS 密钥和证书存放在 ./config/certs environment:
  • MINIO_ROOT_USER=admin # 用户名,自行修改
  • MINIO_ROOT_PASSWORD=password # 密码,自行修改
  • MINIO_SERVER_URL=https://api.example.com: 99 # 自行修改成自已的域名# 反向代理的服务域名,用于文件分享外部url,":99" 是反向代理后公网访问端口
  • MINIO_BROWSER_REDIRECT_URL=https://s3.example.com: 99 # 自行修改成自已的域名# 反向代理的登录域名,":99" 是反向代理后公网访问端口
  • MINIO_STS_DURATION= 168 h # 文件分享外部url 最大时长 7天,超过7天无效,永久分享的方法:Buckets(存储块)Access Policy设为 public,链接文件名后面“?及以后的代码”删除。比较危险,通过Buckets路径,可以看到所有文件的目录。 restart: unless-stopped # 总是重启容器

运行容器:

docker-compose up -d ​

完美解决

655 x 249

1465 x 558

------------完毕------------

1 引用

NAS Docker-compose 方式私有化部署 minio,Nginx Proxy Manager 反向代理, 自建 S3 对象存储 (含两个坑的解决方案和思源笔记配置) • jsntwdj

2 操作

jsntwdj 在 2024-03-21 16:57:31 更新了该回帖

jsntwdj 在 2024-03-19 23:09:20 更新了该回帖

jsntwdj • 7 个月前

付费者

作者

坑二:(第 1 部分)

2、共享文件外部域分享,显示为内部域 IP(127.0.0.1:端口) (大坑)

655 x 390

1473 x 877

经阅读官方文档: https://www.minio.org.cn/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html

对于个人的私有化布署,不太友好,官方文档也没说清楚

(1)需要设置两个变量:

您还必须为 MinIO 部署设置以下环境变量:

将 MINIO_SERVER_URL 设置为MinIO服务器的代理主机FQDN( https://minio.example.net

将 MINIO_BROWSER_REDIRECT_URL 设置为代理主机的 FQDN (https://example.net/minio/ui) ​

(2)修改 docker-compose.yml 内容如下:

version: "3.7" services: minio: image: minio/minio container_name: minio command: server --address ":9000" --console-address ":9090" /data # 指定服务端口和管理端口 ports:

  • 9080 : 9000 # :前面的自行定义,服务端口:API: http://IP:9080
  • 9090 : 9090 # :前面的自行定义,管理端口:http://IP:9090 volumes:
  • ./data:/data # 数据目录
  • ./config:/root/.minio # TLS 密钥和证书存放在 ./config/certs environment:
  • MINIO_ROOT_USER=admin # 用户名,自行修改
  • MINIO_ROOT_PASSWORD=password # 密码,自行修改
  • MINIO_SERVER_URL=https://api.example.com: 99 # 自行修改成自已的域名# 反向代理的服务域名,用于文件分享外部url,":99" 是反向代理后公网访问端口
  • MINIO_BROWSER_REDIRECT_URL=https://s3.example.com: 99 # 自行修改成自已的域名# 反向代理的登录域名,":99" 是反向代理后公网访问端口 restart: unless-stopped # 总是重启容器

(3)运行容器:

docker-compose up -d ​

(4)无法登录管理页面

655 x 314

2041 x 978

(5)找原因

官网 Issues 上这类问题很多

655 x 740

1017 x 1149

大多数并没有给我带来帮助: https://github.com/minio/minio/issues?q=MINIO_ROOT_USER

有一篇提问提到这个问题:

minio 启动后,会主动验证~ MINIO_SERVER_URL=https://api.example.com:99 ~的可通性

面临两个问题:

A.反向代理后方,无证书

B.反向代理后方,内部如何域名解析到 127.0.0.1

对于个人单机单点的私有化布署,不太友好,官方文档也没说清楚

最终还是在官方文档上找到了方法

先解决证书问题:

官方文档详见: https://www.minio.org.cn/docs/minio/linux/operations/network-encryption.html

655 x 456

1483 x 1032

655 x 278

1482 x 630

使用 MinIO 的 certgen 工具来生成自签名的 TLS 证书的方法,详见: https://www.cnblogs.com/hahaha111122222/p/15984957.html

下载地址: https://github.com/minio/certgen/releases/tag/v0.0.2

655 x 337

1867 x 961

下载 certgen-windows-amd64.exe 放到任意文件夹,例如:.\desktop\1

537 x 256

certgen -ca -host “主机 IP,minio 容器运行 IP,两个域名,hostname”

实际执行的生成证书的命令:

./certgen-windows-amd64.exe -ca -host "127.0.0.1,192.168.30.2,172.18.0.22,api.example.com,s3.example.com,minio"

显示:

2022/03/09 14:10:58 写道 public.crt

2022/03/09 14:10:58 写道 private.key

如图:

655 x 350

1368 x 730

解释一下 ip 和域名:

127.0.0.1 主机环回地址

192.168.30.2 主机 IP

172.18.0.22 容器内 IP

api.example.com 服务域名

s3.example.com 管理域我

Minio 主机名

复制 public.crt private.key 到 主机的./config 映射目录下

450 x 252

1 引用

NAS Docker-compose 方式私有化部署 minio,Nginx Proxy Manager 反向代理, 自建 S3 对象存储 (含两个坑的解决方案和思源笔记配置) • jsntwdj

4 操作

jsntwdj 在 2024-03-21 16:54:23 更新了该回帖

jsntwdj 在 2024-03-19 23:10:19 更新了该回帖

jsntwdj 在 2024-03-19 23:07:33 更新了该回帖

jsntwdj 在 2024-03-19 23:00:21 更新了该回帖

jsntwdj • 7 个月前

付费者

作者

接主帖继续 ​

详解两个坑的解决方案

坑一:Nginx Proxy Manager 无法反向代理

官网 Issues 上这类问题很多: https://github.com/NginxProxyManager/nginx-proxy-manager/issues?q=minio

655 x 448

919 x 628

具体解方法:详见官方文档: https://www.minio.org.cn/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html

655 x 686

1131 x 1185

(1)api 服务端反向代理配置如下:

655 x 705

765 x 823

注意:

Scheme* 要改成 https 如果没有放置 TLS 证书请用 http

Forward Hostname / IP* minio 是容器的名称

Forward Port * 99 是容器的内部端口,注意区分,不是映射到主机的端口 9080

655 x 508

775 x 601

655 x 783

759 x 907

Allow special characters in headers

ignore_invalid_headers off ;

Allow any size file to be uploaded.

Set to a value such as 1000m; to restrict file size to a specific value

client_max_body_size 0 ;

Disable buffering

proxy_buffering off ; proxy_request_buffering off ;

location / { proxy_set_header Host $http_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 ;

Default is HTTP/1, keepalive is only enabled in HTTP/1.1

proxy_http_version 1 . 1 ; proxy_set_header Connection "" ; chunked_transfer_encoding off ;

proxy_pass https://minio:99; }

注意:

https://minio:99**# 要改成 https (如果没有放置 TLS 证书请用 http),99 是容器内部端口**

管理端服务端反向代理配置如下:

655 x 723

756 x 834

注意:

Scheme* 要改成 https 如果没有放置 TLS 证书请用 http

Forward Hostname /lP* minio 是容器的名称 转发端口 * 9090 是容器的内部端口**

655 x 508

775 x 601

655 x 793

744 x 901

复制下列代码:

location / { proxy_set_header Host $http_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 ;

This is necessary to pass the correct IP to be hashed

real_ip_header X-Real-IP;

proxy_connect_timeout 300 ;

To support websockets in MinIO versions released after January 2023

proxy_http_version 1 . 1 ; proxy_set_header Upgrade $http_upgrade ; proxy_set_header Connection "upgrade" ;

Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)

Uncomment the following line to set the Origin request to an empty string

proxy_set_header Origin '';

chunked_transfer_encoding off ;

proxy_pass https://minio:9090; }

注意:

https://minio:9090 # 要改成 https (如果没有放置 TLS 证书请用 http),9090 是容器内部端口

如果不加这段代码,会出现如下情况(坑点,原因不明)

655 x 325

1992 x 987

会一直打圈,不能显示列表

1 回复

2 引用

极空间双向同步思源笔记出现锁定的错误 • sccat

NAS Docker-compose 方式私有化部署 minio,Nginx Proxy Manager 反向代理, 自建 S3 对象存储 (含两个坑的解决方案和思源笔记配置) • jsntwdj

5 操作

jsntwdj 在 2024-03-20 00:32:11 更新了该回帖

jsntwdj 在 2024-03-19 23:15:35 更新了该回帖

jsntwdj 在 2024-03-19 23:13:10 更新了该回帖

jsntwdj 在 2024-03-19 23:04:46 更新了该回帖

jsntwdj 在 2024-03-19 22:56:58 更新了该回帖

请输入回帖内容...

相关帖子

【教程】windows 部署 minio,实现内网 S3 同步思源

本文首发于 ️ 慕雪的寒舍 windows 部署 minio,实现内网 S3 同步思源。 1. 什么是 minio? 关于 minio 和 S3 同步的介绍,可以看本站的这篇文章:【docker】部署 minio 对象存储并用 rclone 同步。 思源笔记支持 S3 同步,且比起 webdav,始终更加推荐 S3 协 ..

316

1 个月前

s3 Minio 数据文件的自动备份

背景 使用开源 Minio 搭建了自己的 s3 存储,担心同步的时候导致云端数据损坏,所以利用 linux 的脚本和定时任务进行 minio 数据文件的自动备份,每天 23:55 定时执行。 至于为什么不十多块钱买个 s3 服务,没别的原因,程序员,爱折腾。 1、创建用于自动备份的 bash 脚本文件 # 切换到如下目 ..

245

11 个月前

开源对象存储 Minio 的使用及问题解决

[图片] Minio 的使用及问题解决 一、minio 介绍 对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。 对于中小型企业,如果不选择存储上云,那么 Minio 是 ..

463

2 年前

kubernetes 部署 minio 对象存储

Kubernetes 部署 MinIO Kubernetes 的部署和状态集提供了在独立,分布式模式下部署 MinIO 服务器的完美平台。 在 Kubernetes 上部署 MinIO 有多种选择,您可以选择最适合您的。 [图片] 参考:https://github.com/minio/charts 部署前提条件: 需 ..

1.2K

3 年前

白嫖党的福利,js 片段实现同步感知

前言 思源 s3 或 webdav 同步,如果自动同步的话,官方最快也要 10 分钟左右,虽然云端选项里说,数据不动后 30 秒后同步,但实时上,真正两端同步要 10 分钟左右,甚至更久。 但官方同步也提供了同步感知功能,可以在 30 秒左右实现两端真正的同步。 这个功能很不错,但需要年订阅及同步空间受到 8G 限制。 ..

494

2 周前

【萌新教程】思源笔记使用七牛云 KODO 配置 S3 同步,超详细!

  1. 写在前面 思源笔记是一款由国人开发的本地优先,支持双链、块级的开源笔记软件。 [图片] 思源笔记采用 json 作为数据存储格式,编辑器兼容 MarkDown 语法且编辑体验极佳(堪比 Typora)。最重要的是,自带同步功能。是我目前使用过的所有笔记软件中,最适合个人多设备使用的笔记软件,既能简单的实现多设备同 ..

1.9K

2 天前

有什么推荐的好的 S3 服务器吗?最好是能稳定、好用还便宜

335

8 个月前

jsntwdj

南通

回帖

6

帖子

4

积分

541

聊天

关注

【Minio 是什么】 【NAS 部署 Minio 适用人群】 【为什么 NAS 部署 Minio】 【适合适用 minio 的网站或应用】 安装教程:(在群晖 DSM7.0 系统下搭建) 1.第一步,新建、映射两个文件夹,config 和 data,我的路径:/volume1/docker/minio。 2.第二步,新建 docker-compose.yml,运行容器 docker-compose.yml 内容如下: 运行容器: 3.第三步,浏览器打开 minio 网址 http://IP:9090,如下,输入之前设置的账号密码进入。 4.第四步,新建用户 (1)创建用户(Create User)例:siyuan (2)创建组(Create Group)并关联用户。例:vps 关联 siyuan (3)服务帐户/创建访问密钥 Create Access Key 5.第五步,创建桶(Create Bucket)。 6.第六步,恭喜!可以上传文件了!。 7.第七步,创建地区。 点击左侧 settings--点击 region--在 server location 输入 cn,点 save。(意思地区是 cn) 至此 minio 所有的配置已经完成。你的数据如下: 【两个坑的解决方案】在回帖 2、3、4 楼 2 楼:坑一:Nginx Proxy Manager 无法反向代理 3 楼:坑二:(第 1 部分)共享文件外部域分享,显示为内部域 IP(127.0.0.1:端口)(大坑) 4 楼:坑二:(第 2 部分)反向代理后面的域名解析到 127.0.0.1 请切换到:传统回帖浏览模式 倒序阅读

北京 API 关于 数据统计 靠爱发电 思源笔记会员

© 2024 链滴

记录生活,连接点滴

滇ICP备14007358号-5 • Sym v3.6.4

相关文章