目 录CONTENT

文章目录

用Docker搭建一款简单好用的自托管图床服务-Picsur

yyzq
2025-03-10 / 0 评论 / 1 点赞 / 100 阅读 / 2,053 字

前言

分享一款开源的简单图床服务-Picsur,类似的图床项目之前还分享过兰空图床有兴趣的可以了解下
image-1741621453997
Picsur类似 Imgur,具有内置转换功能可以直接转换图片格式
image-1741690745482

主要功能

  1. 匿名上传
  2. 用户帐户
  3. 用户角色和权限
  4. 适当的 CORS 限制
  5. Exif 剥离
  6. 保持原创的能力
  7. 支持多种格式
    • QOI
    • JPG
    • PNG
    • WEBP (支持动画)
    • TIFF
    • HEIF
    • BMP
    • GIF (支持动画)
    • JPG-XL
    • JPG-2000
  8. 转换图像
  9. 编辑图像
  10. 调整大小
    • 旋转
    • 翻动
    • 条形透明度
    • 消极的
    • 灰度
  11. 可删除图像
  12. 正确的数据库迁移
  13. 在列表中显示自己的图像
  14. 更正聊天预览
  15. 图像过期
  16. ShareX 端点

demo

https://picsur.org/

准备条件

1)一台服务器或者NAS
我们使用飞牛云NAS和VPS来演示

需要vps的可以看以下信息

香港VPS

香港Colo数据中心,3C直连,平均延时30+ms,免备案

名称 CPU RAM 硬盘 带宽 月流量 价格 购买链接
香港BGP 标配版 1C 1G 30G 3Mbps 无限 22 元/月 点我购买
香港BGP 限量款 2C 4G 30G 3Mbps 无限 25 元/月 点我购买
香港BGP(弹性) 2 – 16C 4 – 32G 30 – 400G 3 – 20Mbps 无限 22 元/月起 点我购买

香港Mega Two数据中心,三网CN2 GIA优化,实现全国超低延迟。

名称 CPU RAM 硬盘 带宽 月流量 价格 购买链接
香港CN2 GIA 标配版 1C 1G 20G 3Mbps 无限 30 元/月 点我购买
香港CN2 GIA(弹性) 2 – 32C 2 – 128G 40 – 700G 3 – 30Mbps 无限 48 元/月起 点我购买

日本VPS

日本服务器介绍
电信去程163,回程CN2,移动联通双程骨干直连,宽带质量优秀。

名称 CPU RAM 硬盘 带宽 月流量 价格 购买链接
日本CN2(弹性) 1 – 16C 1 – 16G 20-200G 5 – 20Mbps 不限流量 46 元/月起 点我购买
日本CN2大带宽(弹性) 1 – 16C 1 – 16G 20-200G 20 – 50Mbps 500G/月 55 元/月起 点我购买

韩国VPS

韩国服务器介绍
韩国CN2优化线路,大陆访问快速响应,电信CN2
线路,带宽质量优秀

名称 CPU RAM 硬盘 带宽 月流量 价格 购买链接
韩国CN2(弹性) 1 – 32C 1 – 128G 20 – 100G 3 – 20Mbps 看需求 ¥ 35.00 起/ 月 点我购买
韩国CN2大带宽(弹性) 1 – 32C 1 – 128G 20 – 100G 20 – 50Mbps 300G/月起 38 元/月起 点我购买

美国VPS

美国T级防御云服务器介绍
去程普通线路,回程CN2/9929线路,大陆防御值为200G,超过峰值解封快。

名称 CPU RAM 硬盘 带宽 月流量 价格 购买链接
美国T级防御(弹性) 1 – 16C 1 – 16G 20 – 100G 20 – 300Mbps 不限流 40 元/月起 点我购买
美国高防(弹性) 1 – 16C 1 – 16G 20 – 200G 10 – 30Mbps 不限流 58 元/月起 点我购买
美国高防大带宽(弹性) 1 – 16G 1 – 16G 20 – 200G 20 – 50Mbps 500G/月 56 元/月起 点我购买

2)本项目使用到的github

https://github.com/caramelfur/picsur

3)域名(必须)
作为图床肯定是需要公网使用的
必须绑定,域名添加ssl证书,否则无法复制
image-1741691200242
会出现以上报错

①《飞牛NAS上搭建》

直接在docker新增一个compose项目即可
新建项目:

picsur

compose配置如下:

version: '3'  # 选择适合的版本

services:
  picsur:
    image: ghcr.io/caramelfur/picsur:latest  # 使用 picsur 镜像
    container_name: picsur  # 容器名称
    ports:
      - '8383:8080'  # 将宿主机的 8383 端口映射到容器的 8080 端口
    links:
      - picsur_postgres  # 连接到 picsur_postgres 服务
    environment:
      PICSUR_DB_HOST: picsur_postgres  # 数据库主机名,指向 picsur_postgres 服务
      PICSUR_DB_USERNAME: picsur  # 数据库用户名
      PICSUR_DB_PASSWORD: picsur  # 数据库密码
      PICSUR_DB_DATABASE: picsur  # 数据库名称
      PICSUR_ADMIN_PASSWORD: picsur12345  # 管理员密码,按需修改
    restart: always  # 容器崩溃时自动重启

  picsur_postgres:   # picsur_postgres 服务(PostgreSQL 数据库)
    image: postgres:17-alpine  # 使用 postgres:17-alpine 镜像
    container_name: picsur_postgres  # 容器名称
    environment:
      POSTGRES_DB: picsur  # PostgreSQL 数据库名称
      POSTGRES_PASSWORD: picsur  # PostgreSQL 密码
      POSTGRES_USER: picsur  # PostgreSQL 用户名
    restart: always  # 容器崩溃时自动重启
    volumes:
      - ./data:/var/lib/postgresql/data  # 持久化存储,将本地 ./data 目录挂载到容器的 PostgreSQL 数据目录

启动即可
image-1741691352544
正常启动
image-1741691367345

补充docker可用的镜像仓库

仓库1

https://proxy.1panel.live/

仓库2

https://docker.1panel.top/

仓库3

https://mirror.azure.cn/

仓库4

https://hub.rat.dev/

仓库5

https://docker.1ms.run

仓库6

https://docker.itelyou.cf/

仓库7

https://abc.itelyou.cf/

仓库8

https://docker.ywsj.tk/

②《vps上搭建》

一、Docker环境部署

在vps安装docker和docker-compose
Docker官方安装文档(英文)
https://duan.yyzq.eu.org/docker-001
Docker-Compose官方安装文档(英文)
https://duan.yyzq.eu.org/docker-002
Centos安装Docker和Docker-compose(中文)
https://duan.yyzq.eu.org//03
Ubuntu安装Docker和Docker-compose(中文)
https://duan.yyzq.eu.org//04

推荐直接用一键脚本

docker安装脚本

bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/DockerInstallation.sh)

docker-compose安装脚本

curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose

二、创建docker-compose.yml文件

mkdir picsur;cd picsur #创建一个目录,并进入此目录
vim docker-compose.yml
version: '3'  # 选择适合的版本

services:
  picsur:
    image: ghcr.io/caramelfur/picsur:latest  # 使用 picsur 镜像
    container_name: picsur  # 容器名称
    ports:
      - '8383:8080'  # 将宿主机的 8383 端口映射到容器的 8080 端口
    links:
      - picsur_postgres  # 连接到 picsur_postgres 服务
    environment:
      PICSUR_DB_HOST: picsur_postgres  # 数据库主机名,指向 picsur_postgres 服务
      PICSUR_DB_USERNAME: picsur  # 数据库用户名
      PICSUR_DB_PASSWORD: picsur  # 数据库密码
      PICSUR_DB_DATABASE: picsur  # 数据库名称
      PICSUR_ADMIN_PASSWORD: picsur12345  # 管理员密码,按需修改
    restart: always  # 容器崩溃时自动重启

  picsur_postgres:   # picsur_postgres 服务(PostgreSQL 数据库)
    image: postgres:17-alpine  # 使用 postgres:17-alpine 镜像
    container_name: picsur_postgres  # 容器名称
    environment:
      POSTGRES_DB: picsur  # PostgreSQL 数据库名称
      POSTGRES_PASSWORD: picsur  # PostgreSQL 密码
      POSTGRES_USER: picsur  # PostgreSQL 用户名
    restart: always  # 容器崩溃时自动重启
    volumes:
      - ./data:/var/lib/postgresql/data  # 持久化存储,将本地 ./data 目录挂载到容器的 PostgreSQL 数据目录

三、执行容器运行命令

docker-compose up -d #运行容器
docker-compose ps  #查看是否开启成功

正常启动如下所示

  docker-compose ps
NAME              IMAGE                              COMMAND                  SERVICE           CREATED        STATUS        PORTS
picsur            ghcr.io/caramelfur/picsur:latest   "docker-entrypoint.s…"   picsur            24 hours ago   Up 24 hours   0.0.0.0:8383->8080/tcp, [::]:8383->8080/tcp
picsur_postgres   postgres:17-alpine                 "docker-entrypoint.s…"   picsur_postgres   24 hours ago   Up 24 hours   5432/tcp
[root@ECS-0536350098 picsur]# 

四、打开web页面使用

成功以后需要打开自己相应的端口(8383)防火墙就可以web端访问了
打开自己VPS的端口加ip进入初始化页面

http://ip:8383

image-1741691481488

默认的管理员用户名密码如下
用户名

admin

密码(在docker-compose配置中PICSUR_ADMIN_PASSWORD修改)

picsur12345

image-1741691599110

默认只能管理员上传图片
如需要游客可以上传的需要开权限
image-1741691743590

其他功能自行研究
如需使用还需要绑定域名添加证书

五、数据持久化

如果需要更换服务器直接备份这个目录即可

tar -zcf picsur.tar.gz data  docker-compose.yml

六、绑定域名

绑定域名可以参考
NginxProxyManager
https://duan.yyzq.eu.org//npm-ch
绑定完域名配置好证书就可以用域名来访问了

先加个域名前缀比如

p.yyzq.gq

image-1741692022906

按照如图自定义填写
image-1741692105388
在加上证书即可
image-1741692145478

然后就可以正常使用了
image-1741692196982

有任何问题可以直接留言或者问我
有任何问题可以直接留言或者问我
有任何问题可以直接留言或者问我

欢迎关注我们的微信公众号!
微信公众号

1

评论区