简介
引用下作者的话,“感觉就像是 Imgur 和 Pastebin 的混合体。”
已经实现的和未实现的功能:
- 上传和查看图片
- 匿名上传
- 用户账户
- 用户角色和权限
- 适当的 CORS 限制
- Exif 剥离
- 保留原始图像
- 支持多种格式
- QOI
- JPG
- PNG
- WEBP (支持动画)
- TIFF
- BMP
- GIF (支持动画)
- 转换图像
- 编辑图像
- 调整大小
- 旋转
- 翻转
- 去除透明度
- 负片处理
- 灰度处理
- 可删除图像
- 适当的数据库迁移
- 在列表中显示自己的图片
- 窗口中正确显示预览
- 临时图片链接
- ShareX 扩展
- ARM64 和 AMD64 Docker 镜像
- 白色模式(咕咕)
- 公共画廊(咕咕)
- 相册(咕咕)
Docker 部署
1.准备
安装docker,docker compose
curl -fsSL https://get.docker.com | bash -s docker && systemctl start docker && systemctl enable docker
此一键脚本由Docker官方发布并维护,已经默认安装了 docker compose
, 不需要繁琐的再去手动安装了。
2.创建安装目录和配置文件
创建目录
mkdir -p /root/picsur
进入目录
cd /root/picsur
创建并修改配置文件
vim docker-compose.yml
配置文件参考
version: '3'
services:
picsur:
image: ghcr.io/caramelfur/picsur:latest
container_name: picsur # 指定容器的名称
ports:
- '8080:8080' # 将容器内部的8080端口映射到主机的8080端口,主机端口随意修改成一个未被占用的端口
environment:
PICSUR_HOST: '0.0.0.0'
PICSUR_PORT: 8080
PICSUR_DB_HOST: picsur_postgres # 指定picsur容器连接的数据库主机
PICSUR_DB_PORT: 5432 #指定了数据库的端口号。默认情况下,PostgreSQL的端口号是5432,因此这里设置picsur容器连接到数据库的端口为5432。
PICSUR_DB_USERNAME: picsur #注意与数据库容器中设置的用户名一致。
PICSUR_DB_PASSWORD: picsur #注意与数据库容器中设置的密码相匹配。
PICSUR_DB_DATABASE: picsur #注意与数据库容器中设置的数据库名称一致。
## 默认用户名为admin,注意管理员用户名不可更改
## 这里设置管理员密码
PICSUR_ADMIN_PASSWORD: picsur
## 可项,如果未设置,将生成随机密文
# PICSUR_JWT_SECRET: CHANGE_ME
# PICSUR_JWT_EXPIRY: 7d
## 上传文件的最大接受大小(以字节为单位)
PICSUR_MAX_FILE_SIZE: 128000000
## 除非使用自定义前端,否则不需要修改
# PICSUR_STATIC_FRONTEND_ROOT: "/picsur/frontend/dist"
## 警告:详细模式可能记录敏感数据
# PICSUR_VERBOSE: "true"
restart: unless-stopped # 容器停止时重新启动
picsur_postgres:
image: postgres:14-alpine # 使用PostgreSQL 14 Alpine版作为数据库容器的基础镜像
container_name: picsur_postgres # 指定数据库容器的名称
environment:
POSTGRES_DB: picsur # 设置数据库名称
POSTGRES_PASSWORD: picsur # 设置数据库密码。注意此处密码需要和上面的PICSUR_DB_PASSWORD一致
POSTGRES_USER: picsur # 设置数据库用户名
restart: unless-stopped # 容器停止时重新启动
volumes:
- picsur-data:/var/lib/postgresql/data # 将主机上的路径与容器内的路径进行数据卷挂载
volumes:
picsur-data: # 定义数据卷名称
3.启动docker compose
docker compose up -d
4.反向代理和ssl证书
只演示一下在AAPanel中如何操作。其他面板原理类似。
- 添加站点,写入你的已经做好DNS解析的域名
- 打开网站设置,找到Reverse proxy选项,点击Add reverse proxy
根据自己在配置文件中写入的端口,进行反代
如果你直接在Nginx中配置的话,以下配置文件可以参考一下
location / {
proxy_pass http://127.0.0.1:55511/; # 记得根据自己的端口修改这里
rewrite ^/(.*)$ /$1 break;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade-Insecure-Requests 1;
proxy_set_header X-Forwarded-Proto https;
}
- 返回网站,申请ssl证书并配置即可
5.更新和卸载
更新:在 picsur目录执行
docker compose pull && docker compose up -d
卸载:
cd /your/set/picsur
docker-compose down
cd ..
rm -rf /your/set/picsur
使用演示
这是主页,很简洁
这里可以转换图片格式
图片自定义设置
这里可以进行各种自定义,包括高度宽度,水平垂直翻转等
这是经过水平翻转处理后的图片
这里可以修改图片名称和过期时间
管理员后台设置和演示
这里可以看到自己上传的所有图片
后台展示。一般设置里可以选择是否保留原始图片和exif数据信息。
API密钥里可以添加一个api,然后就可以设置到ShareX进行截图自动上传了。
具体操作可以参考这篇文章
这里可以进行用户行为或者权限的修改
这里可以添加新用户
注意,picsur默认不开放注册。这是为了防止用户意外允许任何人上传到他们的实例。
如何允许用户注册自己的帐户?
如果你想允许这样做,你也可以更改此设置,请到settings -> roles -> guest -> edit
,然后授予访客角色权限Register
。保存角色后,注册按钮将出现在登录页面上。
系统设置的一般设置里面把反代的域名配置一下,然后根据自己需求设置其他选项包括缓存图像到期时间等。
官方演示站
图像每五分钟删除一次,最大文件大小为 16MB。但你可以在部署前尝试一下这个3非常好用的开源图床。
缺点
目前没发现可以批量上传。然后现在只能是与 postgres 一起用作数据存储,没有外置存储,也不支持S3。