Picsur 一个轻松托管图像的开源项目,内置编辑与转换功能

前几天都说Chevereto V4太贵了
那这次分享一个免费开源的图床程序吧,非常美观好看。

本文也同步发布在我的小站上,由于篇幅限制,部分无关紧要的图片省略,想看全部点击这里


Picsur 项目地址

简介

引用下作者的话,“感觉就像是 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。保存角色后,注册按钮将出现在登录页面上。

系统设置的一般设置里面把反代的域名配置一下,然后根据自己需求设置其他选项包括缓存图像到期时间等。

官方演示站

Picsur

图像每五分钟删除一次,最大文件大小为 16MB。但你可以在部署前尝试一下这个非常好用的开源图床。

缺点

目前没发现可以批量上传。然后现在只能是与 postgres 一起用作数据存储,没有外置存储,也不支持S3。

点赞
  1. wanghui5801说道:

    大佬发帖,必属精品

  2. frederick说道:

    b d

  3. adios12说道:

    学习

发表回复

电子邮件地址不会被公开。必填项已用 * 标注

×
订阅图标按钮