GitHub - CaramelFur/Picsur: An easy to use, selfhostable image sharing service like Imgur with built in converting
An easy to use, selfhostable image sharing service like Imgur with built in converting - CaramelFur/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中如何操作。其他面板原理类似。

  1. 添加站点,写入你的已经做好DNS解析的域名
  2. 打开网站设置,找到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;
    }
  1. 返回网站,申请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进行截图自动上传了。

具体操作可以参考这篇文章

Chevereto V4 自托管图床完全搭建教程四——进阶用法
Chevereto V4 自托管图床完全搭建教程前言 自创建HOSTEYE网站以来,我一直致力于构建一个完善的图床程序。尽管公有图床具有稳定性,但我难以忍受非VIP服务的限制和广告。为了弘扬追求卓越的精神,同时提升自身在小型项目维护方面的经验,我最终决定搭建自己的图床系统。 选择Chevereto的原因之一是其最近更新的订阅模式。在作者的博客中,他提到:“我确信以一次性支付的方式提供软件会严重危害软件产品,并损害长期用户的利益。一次性授权带来的负面影响包括(1)高昂的许可定价,(2)淡化的发布周期,(3)停滞不前的开发,(4)缺乏引人注目的功能,以及(5)高昂的支持费用。” 这使我相信这个付费程序可以持续得到维护。 借助我自己的经验,本教程将为初学者提供一个极为详尽的指南,以帮助他们完整地搭建这个程序。 本文使用AAPanel面板来搭建,你也可以安装官方的安装脚本,使用Apache作为HTTP Web server在全新的机器上进行安装。 官方推荐的环境是Php版本在8.0以上,Mysql支持5.7和8。 本文的安装环境是Php 8.2+Nginx 1.24+Mysql 8.0 购买

这里可以进行用户行为或者权限的修改

这里可以添加新用户

注意,picsur默认不开放注册。这是为了防止用户意外允许任何人上传到他们的实例。

如何允许用户注册自己的帐户?

如果你想允许这样做,你也可以更改此设置,请到settings -> roles -> guest -> edit,然后授予访客角色权限Register。保存角色后,注册按钮将出现在登录页面上。

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

官方演示站

Picsur
Picsur is an opsource solution for easy image sharing.

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

缺点

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

包含的标签:

News, 教程

最后更新: March 15, 2024