基于各种云储存搭建私人图床

本博客在之前由于需求较低,用到的图片不算多所以一直是直接讲图片随着pages服务一起布置的,然而前段时间已经将博客迁移到服务器上了,再继续部署在服务器上就多多少少有些浪费流量和空间,故开始寻找一个合适的私人图床.

无意间用RSS订阅的一个朋友的博客推送来一篇新文章,让我发现了PicUploader这个项目,这款图床工具搭建简介,支持的各类云空间丰富,还支持同时使用多个免费空间均衡,体验可以说是非常不错了。

简介

Github 项目:https://github.com/xiebruce/PicUploader
作者撰写的详细使用文档:https://www.xiebruce.top/17.html

作者编写的文档非常详细,但是有些过于冗杂了,我只是想在服务器上搭建一个自用。所以本文记录的是在阿里云轻量服务器上配合宝塔面板,简单搭建 PicUploader,并使用github作为图床储存空间,以及给github增加反向代理以提速优化体验的过程。

准备工作

  • 一个服务器/vps
  • 一个域名
  • 一个人类的大脑
  • 一个康健的人类躯体

安装 PicUploader

安装宝塔面板

作者提供的教程很详细,但是对于如何在VPS上部署有些语焉不详,在这里博主使用的是相对来说更直观更适合小白用户一些的宝塔面板,来部署所需的环境,当然有基础的朋友可以直接自己部署nigex。

这里就不再赘述。

假设你已经安装好宝塔面板,安装好Nginx、MySQL、PHP,然后继续看下文。

添加站点

如下图,在宝塔面板点击 网站 - 添加站点

在弹出的窗口中,输入你的域名,选择好对应的php版本

点击提交后,就会显示你刚刚添加的站点,点击根目录就会进入网站目录

下载 PicUploader 程序

之后,点击网站目录下的终端按钮在终端中打开你所创建的网站目录,并使用git命令将所需项目clone到本地

1
git clone https://github.com/xiebruce/PicUploader ./

看到如上结果后表示已经完成了

之后回到宝塔面板的站点根目录,刷新页面,就会看到一个PicUploader项目所包含的全部文件

配置站点

在宝塔面板左侧菜单栏,点击 网站,找到你添加的站点,点击该站点右侧的 设置

设置SSL

这个是可选,不过建议设置。如下图选择 SSL- Let’s Encrypt,填写管理员邮箱,勾选你的域名,然后点击申请即可:

注意:申请 SSL 前需要确保你的域名已经解析至 VPS 的IP,并且没有开启 CDN

申请成功后,打开 强制Https 即可

设置配置文件

最关键的步骤是这个

点击 配置文件 进行修改,这里贴出我的配置,需要注意你的配置文件跟我的并不一样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
server
{
listen 80;
listen 443 ssl http2;
server_name pic.uud.me;
root /www/wwwroot/pic.uud.me/PicUploader;

#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#AUTH_START
auth_basic "Authorization";
auth_basic_user_file /www/server/pass/pic.uud.me.pass;
#AUTH_END
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
ssl_certificate /www/server/panel/vhost/cert/pic.uud.me/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/pic.uud.me/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;

#SSL-END

#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
error_page 404 /404.html;
error_page 502 /502.html;
#ERROR-PAGE-END

#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-73.conf;
#PHP-INFO-END

#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/pic.uud.me.conf;
#REWRITE-END

#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}

#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log off;
access_log /dev/null;
}

location ~ .*\.(js|css)?$
{
expires 12h;
error_log off;
access_log /dev/null;
}

location / {
index dashboard.php;
try_files $uri $uri/ index.php$is_args$args;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}

access_log /www/wwwlogs/pic.uud.me.log;
error_log /www/wwwlogs/pic.uud.me.error.log;
}

重点需要添加的内容:

1
2
3
4
5
6
7
8
9
10
location / {
index dashboard.php;
try_files $uri $uri/ index.php$is_args$args;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}

这个步骤需要细心对比自行添加,添加完成后保存即可。

设置权限

这一步比较关键,不过很简单。

在宝塔面板,你添加的站点的根目录的上级页面即/www/wwwroot,找到你的站点目录,点击右侧的 权限,将该文件夹的所有者更改为www

之后就可以打开你的域名,如无意外即可使用

更详细的使用设置文档,可以参考作者的文档:https://www.xiebruce.top/17.html

配置储存空间环境

配置空间参数

这里建议参考作者给出的文档对各个需要配置的空间进行配置:
PicUploader: 各图床获取上传图片参数的方法

使用github作为空间的话,由于github的国内访问速度受限,raw链接经常无法正常访问故在此给出两个解决方案

  • 方案一:开启github的pages服务,并在图床后台设置github的domain为https://你的github名.github.io/你的仓库名从而使用github pages的网络,这样比直接用github的raw是快上不少的。
  • 方案二:使用cloudflare提供的workers服务搭建一个github下载加速工具:gh-proxy

gh-proxy简介

github release、archive以及项目文件的加速项目,支持clone,有Cloudflare Workers无服务器版本以及Python版本

cf worker版本部署

首页:https://workers.cloudflare.com

注册,登陆,Start building,取一个子域名,Create a Worker

复制 index.js 到左侧代码框,Save and deploy。如果正常,右侧应显示首页。

index.js默认配置下clone走github.com.cnpmjs.org,项目文件会走jsDeliver,如需走worker,修改Config变量为0即可

1
2
3
const Config = {
jsdelivr: 0,
cnpmjs: 0

ASSET_URL是静态资源的url(实际上就是现在显示出来的那个输入框单页面)

PREFIX是前缀,默认(根路径情况为”/“),如果自定义路由为example.com/gh/*,请将PREFIX改为 ‘/gh/‘,注意,少一个杠都会错!

后话

写到最后,在使用过程中发现了些问题,不知是何原因,使用时上传一些偏大的文件容易出现超时的错误,无法成功的上传,当然这里我使用的是github作为空间的可能会因此带来一些问题吧


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!