我从来没做过网站开发,最近在看 s3 的文档的时候,发现可以直接在上头 host 静态网站,同时可以用 policy 限制访问白名单,于是有了一个构建照片/视频网站的偷懒的想法。
s3 的结构大致是这样的:
.../my-static-website/webpage/ -> 这里存储的是网页的 html 和脚本(我也没做过网站开发,不知道需要多少脚本)
.../my-static-website/photo/ -> 这里存储的是所有照片和视频,底下还有多余的 yyyy-mm-dd 前缀,比如说.../my-static-website/photo/2025-06-01/photo1.jpg
用白名单策略来限制家人的访问,需要他们的公开 ip 。我感觉这里比较粗糙,因为他们的 ip 很可能经常变化,但是反正就那几个人,直接让他们访问一个给出访问者公网 ip 的网站,把结果告诉我,我手动修改策略就行了。具体如何自动化还没想好,我觉得如果做成手机 apk ,让 app 检测手机的公网 ip ,然后自动更新策略,也应该可行。
主页的内容大致是:
就是一张最简单的网页,上面罗列了每个 yyyy-mm-dd 前缀,点进去可以访问一个直接动态生成的、以 yyyy-mm-dd.html 为名字的网页,上面罗列了每个.../my-static-website/photo/yyyy-mm-dd/ 目录下面的图片和视频的缩略图(每一天应该不会超过 10 个物体),再点就可以直接在浏览器中打开图片和视频。
yyyy-mm-dd 的列表应该可以从 s3 里的前缀中获取,至于如何自动生成网页,我从来没开发过网页,但是想来应该不会太难,可能要写点 javascript 。
主页上还有一个“上传”按钮,访问者可以点击然后上传文件,直接自动存储到以当天为前缀的 s3 文件里,比如说 2025-06-01 上传,那么直接就进到.../my-static-website/photo/2025-06-01/ 下面。这个估计要修改策略,目前还不知道行不行,得看看文档。“上传”本身肯定也是需要一个脚本的,到时候查查看怎么写。
整个“产品”就是这样了。使用者不会超过 10 人,他们对界面也无所谓,最重要的是能看到儿子照片和视频。大家觉得可行性如何?安全性的话,如果白名单策略有效的话,还会有什么漏洞吗?
多谢!
![]() |
1
SeaTac 8 天前 via iPhone ![]() 为啥不用正常的照片分享服务呢 比如 iCloud
|
![]() |
4
levelworm OP @duzhuo 多谢,这个空间估计不够,我已经有 20gb 了,我看看多出来的如何计费。另外就是能不能在 CF 上 host 静态网页。
|
![]() |
5
cue 8 天前 via iPhone ![]() s3 存储只能存原图,你这样的随便加载一下就几个 G 了,钱包根本齁不住,存储费用+CDN 费用+图像处理费用,你就知道云盘的好了。
|
6
abc612008 8 天前 ![]() 喜欢 self hosted 的话可以看 https://immich.app/之类的。公网 IP 可能是 nat 过的,别人也可能会有权限访问。一直需要改的话使用体验也不大好。缩略图的话需要专门生成适用于缩略图的小图片。
|
![]() |
7
duzhuo 8 天前 ![]() @levelworm 我觉得不如部署动态网站了,考虑一下 Cloudflare Workers 或者 Vercel 这种 免费的 Serverless 服务。你还可以更好搞鉴权(比如第三方登录或者单纯的账号密码)而不是访问 IP 白名单。
|
8
facebook47 8 天前 via Android ![]() 这个网站不难,但是有一点,就是在线看视频,这个对带宽有要求,这就对服务器有要求了,这个不便宜
|
9
cj323 8 天前 via iPhone ![]() 可以。我已经能想象到楼主给家人分发 apk 时满满的成就感了,家人也会感受到楼主的心意。
|
10
billccn 8 天前 ![]() IP 白名单的话等于也对运营商、网安、墙等都白名单了。另外现在独立 IP 很少了,不排除运营商的 NAT 的 IP 地址会经常变换,楼主人工操作感觉不实际。
如果你和客户之间有可信度通信方式的话(不是微信之类要上报的),可以用 Pre-signed URL ,就是 URL 内嵌入授权。要不然可以在把对象储存藏在一个支持访问控制的 CDN 后面,比如 Cloudflare Access 。 |
![]() |
11
Actrace 8 天前 ![]() 为啥不用钛盘直链?
|
![]() |
15
levelworm OP @facebook47 #8
多谢,看来我还是考虑少了,我看很多朋友推荐 CF ,我去研究一下。 |
17
webs 8 天前 ![]() 这个得禾斗学上网,才能稳定访问 S3 吧,得加钱
|
![]() |
18
Aicnal 8 天前 via iPhone ![]() 文件名可以用 sha 进行加密
但是 s3 你要是在公网中访问 得设置好桶策略或者是预签名 直接用框架的 fileserver 可能更好我觉得 |
19
linuxsir2020 8 天前 ![]() NAS .../doge
|
![]() |
20
cpstar 8 天前 ![]() 上 HTTPS 并且加自定义 HEADER 就可以搞定 IP 的问题。但是这么一整套下来,完全是脱裤子放屁,显然有别的便捷的方案。
|
21
akiyamamio 8 天前 ![]() 你还不如直接买个极空间,你想要的这个功能都有,并且都是全自动的,可以自动从你手机传上去,然后人脸识别把小孩放到你指定的共享相册里,让家人都可以看到,我就是这么用的
|
![]() |
22
96 8 天前 ![]() 我推荐微信里的腾讯相册小程序。
|
![]() |
24
levelworm OP @akiyamamio #21
多谢,我研究一下,我在北美不知道能不能买得到,不过也许大多数 nas 都有这个功能?他们是怎么让公网其他人访问本机的呢?毕竟我这里也未必有公网 ip 。 |
![]() |
25
coldle 8 天前 ![]() 技术上可行,但是总感觉有点折腾 😂
如果特指 aws s3 的话得考虑境内访问加速,如果是境内对象存储的话托管网站基本得有个备案过的域名; 不建议把 ip 白名单作为唯一鉴权方式,不靠谱。作为辅助倒是能轻松筛掉挺多恶意访问; 直接从 s3 查看照片视频的公网流出费用不会太低。也许可以套 cdn ?如果又用 cdn 又自己计算签名的话,可能必须用 s3 里支持 v2 签名的区域,不然 v4 签名请求起来就很麻烦; 其他的生成网页 or 上传啥的倒是小事了,纯业务调用,估计你放 ai 里分分钟搓出来 |
![]() |
26
margoxlive 8 天前 ![]() 如果是国内的用户访问,阿里云腾讯云等云存储也可以试试,如果需要绑定自定义域名,就用香港的桶,如果是在 app 里面访问则不需要自定义的域名,那就用国内的桶也可以。
相比 AWS S3 ,国内的云存储提供的图片处理能力无痛实现缩略图功能,以降低访问流量,而且每月的免费处理额度也不少。 S3 需要借助 lambda 来做,麻烦得很。 |
27
gorvey 7 天前 ![]() 我给你说一个另类的方法,
用 notion ,底层也是用的 aws s3 ,pro 会员无大小和数量限制,免费版限制 5MB 好处就是不用开发网页,支持一键发布内容。支持共享编辑 也支持 API 调用,一个 Pro 给多人使用没问题 |
![]() |
28
Jianrry 7 天前 via iPhone ![]() 不可行,我推荐的方案是 onedrive + alist 。
onedrive 家庭版有 1T 存储空间,可以上传图片和视频。 alist 可以挂载 onedrive ,使用 onedrive 的流量。还可以设置密码,限制公开访问。 |
29
fox0001 7 天前 via Android ![]() 很多 NAS 系统都支持接入 S3 ,例如 Nextcloud
|
![]() |
30
ETiV 7 天前 via iPhone ![]() 看来 Lz 有想法但没实操经验😂
一般不直接用 s3 (或同类服务)做下载:bucket endpoint 域名被暴露的话,有可能被恶意刷爆账单。而且没啥经验的话,很容易配错权限而不自知,很多数据泄露都是因为这个导致的。 照片都是可以压缩的,原图质量 20GB 的内容,照片可以存一个“高质量”、WebP 压完估计也就 6 ~ 8GB 。视频同理,有个 500 ~ 800Kbps 码率,够看就行了。 就……你这些需求还是推荐用 Cloudflare 存,赛博菩萨。再买个 VPS ,对接 R2 ,不要直接暴露存储端的信息。 其实海外做存储最便宜的是 https://www.backblaze.com/cloud-storage/pricing ,但跟 cloudflare 比它业务太单一。 不过既然要把文件存在海外,你也可以买个 Google One 什么的(不是 GCP )把照片存进去,然后对接 Google Drive API (这个需要 GCP 、也可能会需要付费)来读写照片视频。 |
![]() |
31
x86 7 天前 via iPhone ![]() 直接 qq 相册我 08 年的照片都还在
|
![]() |
32
importmeta 7 天前 ![]() 流量费很贵啊.
|
33
esee 7 天前 ![]() 用手机自带的家庭相册服务不行么?学习成本为 0 ,体验也完美契合。比如小米的家庭组 8 个人 2T 空间 450 一年,你自己组 s3 存储,花费贵太多
|
34
ntedshen 7 天前 ![]() 我用过阿里的 ip 白名单。。。在 ecs 上做个登录页,验证通过则用阿里的 sdk 开端口墙。。。
痛是不痛,但是最后不还是要绕回到鉴权问题上,最多也就是防点野生爬虫吧。。。 |
![]() |
35
MFWT 7 天前 ![]() S3 (如果特指 AWS S3 )价格可能会比较高,千万要注意流量费(网上应该有不少 S3 被刷爆账单的案例)
|
36
rocmax 7 天前 via Android ![]() aws 的官方解法肯定是 cloudfront 配合 s3 部署界面,cognito 处理认证,api gateway+lambda 提供 api ,上传照片后自动触发 lambda 生成缩略图,并将元信息存储到 rds 或 dynamo
|
![]() |
38
ranran 7 天前 ![]() 好像很少这么搞的,一般是家里搞个便宜的 NAS
|
![]() |
39
SeaTac 7 天前 ![]() |
![]() |
40
monmon 7 天前 ![]() 家里的台式电脑 docker 一键启动 immich ( https://immich.app/)就行了,自带账户和存储配额管理,Google 商店和 App Store 都可以下下载开源的 App ,直接连到本地的服务,内网备份照片超级快,如果需要外网访问搞搞内网透传就 OK 了
|
![]() |
41
emma3 7 天前 ![]() 如果大家都是 ios 设备的话,用共享相册功能即可,免费/跨平台不用担心权限问题不用维护。
总比你肝这种无谓的代码还未必能给家人带来更好的体验。时间不是成本?剩下的时间用来陪一下家人吧。 |
![]() |
42
liprais 7 天前 ![]() icloud 或者类似的云服务,不然一个不小心被人薅羊毛了就是裤衩亏光
|
![]() |
43
akira 7 天前 ![]() 这么搞不是不行,但是体验不是很好。 我反正是直接搞了个白裙,懒得折腾
|
45
manateelazycat 7 天前 ![]() 老板,懒猫微服了解一下,自带穿透 Tailscale+Cloudflare,自带 MFA 认证, 比 VPS 更安全
https://x.com/manateelazycat/status/1928628562887889072 阿里云顶尖黑客评价 http://post.smzdm.com/p/aprqvvl9/ 懒猫微服 = 传统 NAS + Cloudflare + Tailscale + VPN 虚拟专网 + Authy + Nginx + AI 大模型 + 微信小程序 + AppStore + KVM/Docker/PVE + iCloud/TimeMachine + Chrome 电视 兼顾 iCloud 备份和 AI 相册, 相册体验比 iCloud 好, 内网穿透比 NAS 牛逼 更多产品详情请看 https://lazycat.cloud |
![]() |
46
goodryb 7 天前 ![]() 不如搞台最便宜的成品 nas ,或者网络有公网搞个飞牛 os 也够用了,手机装个 app 分享多方便
|
![]() |
47
clocean 7 天前 ![]() innei.in 大佬新的项目,昨天逛他博客刚好看到了,效果很好,你可以看看喜欢不
预览: https://gallery.innei.in 仓库: https://github.com/Iris-Photo-Gallery/Iris |
![]() |
49
DianQK 7 天前 via Android ![]() 你是否在寻找 https://help.ente.io/self-hosting/ ,private s3 bucket 缓解被刷流量,e2ee 。
之前用的阿里云 s3 ,但是要打几个 patch ,我换成 cloudflare r2 可以直接用 |
![]() |
50
Junzh 7 天前 ![]() 如果这里的 S3 是指 AWS S3 ,不建议在 S3 上实现业务逻辑控制,比如权限控制。用 IP 来做 policy 可行,但维护起来并不方便也不安全。你可以找一些开源的 NAS 软件,比如有 v 友提到的 nextcloud , 就支持 S3 作为存储引擎,由 nextcloud 来负责业务层,包括权限。
一般静态 S3 网站需要配合 CloudFront 来做分发,否则 S3 的 request 和 transfer out 的费用会比较高。 |
51
charles0 6 天前 via iPhone ![]() 对象存储恐怕成本不低,还是用云盘或 NAS 吧
|
![]() |
52
davin 6 天前 ![]() OP 可以考虑使用老牌的照片在线分享网站 flickr ,免费版支持 1000 个项目。创建群组,把家人拉进来就行了。根据需求可以考虑开通 Pro 版服务,不限制数量和存储空间。也不用去费心维护一个自建的网站了。
PS: flickr 几经易主,目前底层也是用的 AWS 服务,它比 iCloud 和 Google Photos 诞生早个好几年。 |
![]() |
54
levelworm OP @margoxlive #26
多谢,我目前在北美,家人在中国,所以之前没考虑到中国到北美这里可能遇到的问题。如果我访问国内不太慢的话,用国内的云也成。 |
![]() |
57
009694 6 天前 via iPhone ![]() 大多数程序员最需要改的一点是什么都想手搓一个。 手上有了锤子,看什么都是钉子。
|
![]() |
59
Jackm 5 天前
腾讯主机+微信小程序
有开源的源码,还可以加微信 id 的白名单,别的微信去了只展示广告,白名单去了看照片。 你的亲戚在华东,就用华东区域的主机,在华北用华北,腾讯在国内的服务器覆盖地域还是蛮多的。 阿里云什么的都可以,区别在于计费问题(用户超多需要考虑) |