图床的选择
厂商 | 收费 | 域名 |
---|---|---|
七牛云Kodo | 每月10G免费流量【HTTPS流量不包括在内】,按量收费,资源包 | 未备案域名只支持海外节点 |
阿里云OSS | 按量收费,资源包 | 未备案域名仅支持海外节点【有香港节点】 |
腾讯COS | 按量收费,资源包 | 未备案域名仅支持海外节点【有香港节点】 |
按量收费的服务都存在一个风险点,或者说需要注意的一个点就是流量。当自己站点的流量较大时,存储空间的支出相对CDN的流量支出可谓是九牛一毛。存在恶意攻击时支出更不可控。虽然云厂商的服务开箱即用,但是自建的服务可在支出上省下一笔费用。
自建图床的选择
自建图床的选择也有很多,Github+DNS转发
、SMMS、Lsky Pro 等等都可行,各有各的优势,这里选择MinIO作为自建图床的基础来做演示。
安装MinIO
基于docker compose安装
yaml
version: '3.9'
services:
minio:
command: 'server /data --console-address ":9001"'
restart: always
image: quay.io/minio/minio
container_name: minio
environment:
- MINIO_ROOT_USER=minio
- MINIO_ROOT_PASSWORD=miniopwd
volumes:
- './data:/data'
ports:
- '9001:9001'
- '9000:9000'
deploy:
resources:
limits:
memory: 512M
--console-address ":9001"
:配置MinIO的控制台访问端口,和下面端口映射的- '9001:9001'
对应,可按需修改。MINIO_ROOT_USER
:MinIO控制台登录账号MINIO_ROOT_PASSWORD
:MinIO控制台登录密码
启动MinIO
docker-compose up -d
通过IP:控制台端口进行访问
测试MinIO功能
-
使用配置的账号密码登录控制台
-
创建一个新的存储桶
-
配置存储桶的访问权限,当前为测试演示开启public,使用时按实际访问权限填写,不懂配置可百度+B站
-
上传测试图片并访问 访问路径为:
IP:API接口/bucket/source
,以当前示例为:http://10.0.1.131:9000/test/ccfdfe74880411ebb6edd017c2d2eca2.jpg
结合Cloudflare内网穿透功能,实现外网访问
准备一个域名,注册好Cloudflare账号
域名选择很多,阿里万网、腾讯DNSPod都可以。这里以阿里云域名为例。
将域名的DNS解析托管到Cloudflare
-
在Cloudflare的管理页面选择
添加站点
,按流程添加域名信息。选择
Free
计划这里获得两个
DNS服务器
地址 -
将Cloudflare提供的DNS服务器地址,替换掉域名原DNS解析。
阿里云修改流程:控制台 - 域名 - 域名列表 - 选择需要修改的域名 - 详细信息中选择
DNS修改
,将获得的两个DNS解析服务器更换。预计需要几分钟到一个小时不等的时间完成更新
- 回到Cloudflare界面,当域名变为有效状态则DNS服务器修改成功。
配置Cloudflare 内网穿透
在控制台首页选择Zero Trust
,在Zero Trust界面中选择:Access - Tunnels - Create a tunnel,创建一个新的内网穿透通道。
输入通道名:
这里有多种Client部署方式,我们选择Docker,将命令复制下来修改为后台运行并在可访问到MinIO的节点上部署。
arduino
docker run -d cloudflare/cloudflared:latest tunnel --no-autoupdate run --token 修改为自己的token
部署成功后,这里会显示Client连接:
继续下一步,填写具体的穿透服务。
subdomian
:二级域名 Domian
:转入Cloudflare托管的域名 Service
:填写目标服务地址。注意:此时要代理的是MinIO的API端口
创建完成后,tunnels列表显示:
此时将刚刚访问图片的IP+端口替换为代理域名: http://10.0.1.131:9000/test/ccfdfe74880411ebb6edd017c2d2eca2.jpg
https://代理域名/test/ccfdfe74880411ebb6edd017c2d2eca2.jpg
自建图床+外网访问已完成。