9月份部署了PicImpact用来展示我自己拍的一些照片,真的挺好看的(指PicImpact)。
休息的时候到处走走,拍拍,人生的意义或许就在其中吧。
我的相册:https://congx.in/
这个应用的每一张图片都要单独设置显示状态,甚至分为相册内显示和首页显示,所以贵精不贵多,如果随手拍太多上传就很累了。
最后,I am Nikon🥳
预览


部署
GitHub地址:https://github.com/besscroft/PicImpact
如果感兴趣可以先看看文档,支持Vercel和docker部署,本文使用docker部署,存储上作者提供了 AWS S3 API、Cloudflare R2、AList API 支持,数据库使用的postgresql,使用ai帮我编排了个docker-compose.yaml文件,包含了postgres、picimpact与adminer三个容器,adminer可以用来查看、编辑数据库内的数据。
version: "3.9"
services:
db:
image: postgres:15
container_name: picimpact-db
restart: always
environment:
POSTGRES_USER: 数据库用户名
POSTGRES_PASSWORD: 数据库密码
POSTGRES_DB: picimpact
volumes:
- /自行修改路径/picimpact:/var/lib/postgresql/data
networks:
- internal
app:
image: besscroft/picimpact:latest
container_name: picimpact
restart: always
depends_on:
- db
ports:
- "3100:3000"
environment:
DATABASE_URL: "postgresql://数据库用户名:数据库密码@db:5432/picimpact"
DIRECT_URL: "postgresql://数据库用户名:数据库密码@db:5432/picimpact"
BETTER_AUTH_SECRET: "自行添加随机字符"
BETTER_AUTH_URL: "https://你的域名"
BETTER_AUTH_PASSKEY_RP_ID: "你的域名"
BETTER_AUTH_PASSKEY_RP_NAME: "你的应用名称"
networks:
- internal
adminer:
image: adminer:latest
container_name: picimpact-adminer
restart: always
depends_on:
- db
ports:
- "8080:8080"
networks:
- internal
networks:
internal:
driver: bridge
ai还是太好用了🥰
存储配置
我使用的是alist api,只需要添加一段token加url即可,使用的本地磁盘,还是很方便的。alist api位置在管理界面-设置-其他 的最下方。
R2我尝试了2个小时无果,索性将R2填入到S3 api中,也算是能正常使用了。
在R2概述界面创建api令牌,获取accesskey_id和accesskey_secret,CORS 策略如下:
[
{
"AllowedOrigins": [
"https://你的域名"
],
"AllowedMethods": [
"GET",
"PUT",
"HEAD",
"POST",
"DELETE"
],
"AllowedHeaders": [
"*"
]
}
]最终配置如下

好麻烦啊,我还是用alist吧。
槽点
图片标签好像没有生效?