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 同步,超详细!
- 写在前面 思源笔记是一款由国人开发的本地优先,支持双链、块级的开源笔记软件。 [图片] 思源笔记采用 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