首页
直播
留言
统计
关于
推荐
造价e星球
随想
Search
1
群晖DSM7.x通过acme.sh全自动更新并部署SSL证书(2024年)
1,584 阅读
2
Docker-compose 部署思源笔记实现多终端多平台协作同步
679 阅读
3
群晖 或 NAS Docker-compose方式私有化部署minio,Nginx Proxy Manager反向代理, 自建S3对象存储 (含两个坑的解决方案和思源笔记配置)
678 阅读
4
子比主题,由搜索的历史记录过多(存在 Cookie中),新增搜索记录访问时,由于请求头过大导致访问报错(502 Bad Gateway openresty)
208 阅读
5
欢迎来摸鱼
194 阅读
默认分类
造价
定额
清单
合约
算量
建站
wordpress
Typecho
服务器
群晖
routeros
vps
R68S
T201P
H88K
Docker
折腾
维修
数码
拍摄
器材
改装
手机
app
登录
Search
标签搜索
wp
应用
docker
鱼塘
累计撰写
12
篇文章
累计收到
0
条评论
首页
栏目
默认分类
造价
定额
清单
合约
算量
建站
wordpress
Typecho
服务器
群晖
routeros
vps
R68S
T201P
H88K
Docker
折腾
维修
数码
拍摄
器材
改装
手机
app
页面
直播
留言
统计
关于
推荐
造价e星球
随想
搜索到
3
篇与
的结果
2024-03-21
Docker-compose 部署思源笔记实现多终端多平台协作同步
docker部署docker及docker-compose安装方法网上很多。docker-compose.yml配置 version: "3.9" services: main: image: b3log/siyuan # docker 镜像 platform: amd64 # 操作系统 X64 container_name: siyuan # 容器名称 hostname: siyuan # 容器主机网络名 user: '1000:1000' # 读写用的用户名和用户组 command: ['--workspace=/siyuan/workspace/', '--accessAuthCode=自设密码'] # 指定工作目录/siyuan/workspace/,指定访问密码(密码自行设定) environment: # A list of time zone identifiers can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - TZ=Asia/Shanghai # 设定时区 ports: # 端口映射 - 6806:6806 # “:” 之前可以自行设定端口 volumes: # 文件夹映射 - ./workspace:/siyuan/workspace # “:” 之前可以自行设定路径 “./” 表示当前目录 restart: unless-stopped # 总是主机重启后启用容器 networks: # 网络设置 - app_net # 网络名称 networks: app_net: external: true用Nginx Proxy Manager反向代理私有化部署minio, 自建S3对象存储,实现思源笔记各终端云同步具体详见: 群晖 或 NAS Docker-compose方式私有化部署minio,Nginx Proxy Manager反向代理, 自建S3对象存储 (含两个坑的解决方案和思源笔记配置)思源云配置
2024年03月21日
679 阅读
0 评论
0 点赞
2024-03-17
群晖 或 NAS Docker-compose方式私有化部署minio,Nginx Proxy Manager反向代理, 自建S3对象存储 (含两个坑的解决方案和思源笔记配置)
请注意文章时效(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。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 # 总是重启容器 networks: #网络设置 - app_net # 网络名称 networks: app_net: external: true 运行容器:docker-compose up -d3.第三步,浏览器打开minio网址http://IP:9090,如下,输入之前设置的账号密码进入。4.第四步,新建用户(1)创建用户(Create User)例:siyuan(2)创建组(Create Group)并关联用户。例:vps 关联siyuan\保存(3)服务帐户/创建访问密钥 Create Access Key将会下载一个credentials.json证书文件,打开后有密钥稍后配置思源笔记会用的。5.第五步,创建桶(Create Bucket)。6.第六步,恭喜!可以上传文件了!。7.第七步,创建地区。 点击左侧settings--点击region--在server location输入cn,点save。(意思地区是cn)网页顶部会提示重启生效,点击Restart。等待小会,minio重启完成,刷新网页即可。至此minio所有的配置已经完成。你的数据如下:Endpoint: http://域名:9080地区region:cnaccess 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。# 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思源笔记配置界面详解两个坑的解决方案1、Nginx Proxy Manager 无法反向代理官网Issues上这类问题很多:https://github.com/NginxProxyManager/nginx-proxy-manager/issues?q=minio具体解方法:详见官方文档:https://www.minio.org.cn/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html(1)api服务端反向代理配置如下:注意:Scheme* 要改成 https 如果没有放置TLS证书请用httpForward Hostname / IP* minio 是容器的名称 Forward Port * 99 是容器的内部端口,注意区分,不是映射到主机的端口9080# 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 是容器内部端口管理端服务端反向代理配置如下:注意:Scheme* 要改成 https 如果没有放置TLS证书请用httpForward Hostname / IP* minio 是容器的名称 Forward Port * 9090 是容器的内部端口复制下列代码: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 是容器内部端口如果不加这段代码,会出现如下情况(坑点,原因不明)会一直打圈,不能显示列表2、共享文件外部域分享,显示为内部域ip(127.0.0.1:端口) (大坑)经阅读官方文档: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 # 总是重启容器 networks: #网络设置 - app_net # 网络名称 networks: app_net: external: true (3)运行容器:docker-compose up -d(4)无法登录管理页面(5)找原因官网Issues上这类问题很多大多数并没有给我带来帮助: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使用 MinIO 的 certgen 工具来生成自签名的TLS证书的方法,详见:https://www.cnblogs.com/hahaha111122222/p/15984957.html下载地址:https://github.com/minio/certgen/releases/tag/v0.0.2下载certgen-windows-amd64.exe 放到任意文件夹,例如:.\desktop\1certgen -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 wrote public.crt2022/03/09 14:10:58 wrote private.key如图:解释一下ip和域名:127.0.0.1 主机环回地址192.168.30.2 主机ip172.18.0.22 容器内ipapi.example.com 服务域名s3.example.com 管理域我minio hostname复制public.crt private.key 到 主机的./config 映射目录下反向代理后面的域名解析到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/443C主机端口: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=168h # 文件分享外部url 最大时长 7天,超过7天无效,永久分享的方法:Buckets(存储块)Access Policy设为 public,链接文件名后面“?及以后的代码”删除。比较危险,通过Buckets路径,可以看到所有文件的目录。 restart: unless-stopped # 总是重启容器 networks: #网络设置 - app_net # 网络名称 networks: app_net: external: true 运行容器:docker-compose up -d完美解决------------完毕------------
2024年03月17日
678 阅读
0 评论
0 点赞
2024-03-07
群晖DSM7.x通过acme.sh全自动更新并部署SSL证书(2024年)
在当今信息化高速发展的社会,Https 的重要性不言而喻,所以对于我这种自己部署了很多服务并且要暴露在外网的人来说,维持自己的 ssl 证书是一件非常重要的事。本文介绍 acme.sh 脚本实现群晖(也适用于 泛 Linux 服务器)证书自动申请续签、自动部署的全过程,因本人在互联网查询教程期间,发现网上大部分文章均已经过时,部分官方新特性未在大部分教程中看到,遂开此文章,望帮到更多人。如果你有网络条件、设备基础、操作能力,强烈建议你直接参考 官方中文 指引,毕竟这是实时更新的 wiki ,理论上是不会过期的,也是更加准确的,但如果你命令行操作能力有限,可继续看下去。请注意文章时效(2024-03-07)。一、 开启root参考:https://wp.gxnas.com/1385.html二、 安装docker-composehttps://github.com/docker/compose/releases下载对应的版本文件:docker-compose-linux-aarch64更名为:docker-compose上传到:/usr/local/bin给执行权限:sudo chmod +x /usr/local/bin/docker-compose三、方法一:采用 acme docker容器+sh命令方式 (申请Cloudflare为例)1、新建docker目录mkdir /volume1/docker/acme mkdir /volume1/docker/acme/acme.sh cd /volume1/docker/acme可以自定义位置2、新建docker-compose.ymltouch /volume1/docker/acme/docker-compose.yml docker-compose.yml内容如下: version: '3' services: acme: container_name: acme # 容器的名称 environment: - SYNO_Username="" # 群晖管理员账号 - SYNO_Password="" # 群晖管理员登录密码 - SYNO_Device_ID="" # 设备ID 如果你开了两步验证,这里就需要填写 - SYNO_Certificate= "" #(证书名,没有就给空字符即可) - CF_Key= "" # 登录Cloudflare之后,进入域名管理在“概述”右下角单击“获取您的API令牌”然后点击“Global API Key 查看”即可 - CF_Email= "" # 自己Cloudflare的登录邮箱 volumes: - ./acme.sh:/acme.sh # 证书存放的映射目录 command: - daemon # 执行命令 image: neilpang/acme.sh # 容器镜像 platform: linux/amd64 # x86 操作系统 restart: unless-stopped # 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器 network_mode: host # host的网络 SYNO_Device_ID="" # 设备ID获取方法 打开浏览器,使用管理员账号登陆你的群晖,登录的时候选择:记住这台设备】【按 F12 开启调试模式,这个时候会弹出来一个新的界面】【上方一横排菜单里,找到 Application,如果找不到,就把这个窗口拉宽一点儿】【在左侧的 Cookies 菜单点击下方的地址,右侧就会出现很多项内容,找到 ID,把右边的值复制出来,放到上方的”群晖设备ID“处替换即可SYNO_Certificate= "" 的说明 有一点需要注意,上方的SAVED_SYNO_Certificate需要与DSM门户里已经上传的默认证书的描述相同。描述不同的话只会新增加一张证书,并不会替换原有的证书。 运行容器:docker-compose up -d3、新建AutoCert.shtouch /volume1/docker/acme/AutoCert.sh 打开文件写入如下命令 #!/bin/bash # ==参数说明== # 1)申请证书参数 docker exec acme acme.sh --force --log --issue --server letsencrypt --dns dns_cf --dnssleep 120 -d XXX.XXX -d *.XXX.XXX # acme:容器的名字,根据自己的容器名填写 # --server letsencrypt:选的是Let's Encrypt的免费证书 # --dns dns_cf:这里选的是Cloudflare的DNS # --dnssleep 120:Sleep 120秒 # -d XXX.XXX -d *.XXX.XXX:替换用自己的域名即可 # 2)部署证书到群晖参数 docker exec acme acme.sh --deploy -d XXX.XXX -d *.XXX.XXX --deploy-hook synology_dsm # acme:容器的名字,根据自己的容器名填写 # --deploy -d XXX.XXX -d *.XXX.XXX:用自己的域名即可 # --deploy-hook synology_dsm:部署到群晖上 给执行权限chmod +x /volume1/docker/acme/AutoCert.sh4、添加计划任务定时执行最后一步就是添加一个计划任务,每个月定时更新一次证书。控制面板->计划任务->新增,我设置为每月运行一次,运行脚本在 DSM 控制面板中,打开“任务计划程序”并为用户定义的脚本创建一个新的计划任务。常规设置:任务名:acme 用户:root计划:设置每周续订。例如,每周六上午 11:00。任务设置:用户定义的脚本:#renew certificates bash /volume1/docker/acme/AutoCert.sh >>/volume1/docker/acme/log.txt 2>&1 方案一完成更新方案二、本地脚本更新,无需群晖的账号1、安装 acme.shsudo su cd ~ wget https://github.com/acmesh-official/acme.sh/archive/master.tar.gz tar xvf master.tar.gz cd acme.sh-master/ ./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail "email@gmailcom" source ~/.profile2、配置 DNS对于 CloudFlare,我们将设置两个环境变量,acme.sh(特别是子目录中的脚本)将读取这些变量以设置 DNS 记录。您可以在此处获取 CloudFlare API 密钥。dns_cfdnsapiexport CF_Key="MY_SECRET_KEY_SUCH_SECRET" export CF_Email="myemail@example.com"如果您生成了 API 令牌,请改为设置 CF_Token,而不是使用您的全局帐户密钥。export CF_Token="MY_SECRET_TOKEN_SUCH_SECRET" export CF_Email="myemail@example.com"如果您使用其他 DNS 服务,请查看目录和 DNS API 指南。许多DNS提供商的说明已经包含在内。您还可以在那里找到有关如何添加其他DNS服务的说明,尽管这需要一些软件开发技能。dnsapi3、创建证书现在是时候为您的域创建证书了: # These commands assume you are still working in the same terminal and have ran necessary commands described above. cd /usr/local/share/acme.sh export CERT_DOMAIN="your-domain.tld" export CERT_DNS="dns_cf" ./acme.sh --issue --server letsencrypt --home . -d "$CERT_DOMAIN" --dns "$CERT_DNS" 4、部署默认证书(推荐)使用自动创建的临时管理员用户进行部署如果您安装在 DSM 中,我们建议您尝试使用自动临时用户身份验证方法进行部署(DSM 应该已经有所需的内置工具,如果没有,我们会通知您):acme.shexport SYNO_USE_TEMP_ADMIN=1 ./acme.sh --deploy --home . -d "$CERT_DOMAIN" --deploy-hook synology_dsm这样,您就不需要提供任何管理员凭据,部署 sciprt 本身将利用 Synology 内置的实用程序来完成身份验证,因此它设计为仅支持本地部署,不能用于在 docker 中部署或远程部署。脚本将加载之前保存的 conf 以供后续部署,因此如果要使用现有管理员用户进行部署,则需要先执行。部署脚本退出后,临时管理员用户应该尚未创建或已被删除,但是如果脚本意外退出(例如,按“Ctrl+C”中止),它仍可能保留,在这种情况下,您可以通过“控制面板”安全地删除它。export CLEAR_SYNO_USE_TEMP_ADMIN=1此外,为了防止混淆,必须以当前本地计算机为目标(可以是 或)的值,但是,如果自定义SYNO_HOSTNAME确实以当前本地计算机为目标,则应在部署之前执行。SYNO_HOSTNAMElocalhost127.0.0.1export SYNO_LOCAL_HOSTNAME=15、配置证书续订若要在将来自动续订证书,需要在任务计划程序中配置任务。不建议将其设置为自定义 cronjob(如本 wiki 页面之前所述),因为 DSM 安全顾问会告诉您有关未知 cronjob 的严重警告。在 DSM 控制面板中,打开“任务计划程序”并为用户定义的脚本创建一个新的计划任务。常规设置:任务 - 更新默认证书。 用户 - root计划:设置每周续订。例如,每周六上午 11:00。任务设置:用户定义的脚本:# renew certificates ./acme.sh --cron --home .参考文章详见:https://github.com/acmesh-official/acme.sh/wiki/Synology-NAS-Guide#deploy-the-default-certificate
2024年03月07日
1,584 阅读
0 评论
0 点赞