VPS 自建图床实战:Lsky Pro 一条命令部署,配合 PicGo 写博客配图不再求人

折腾博客这几年,我最头疼的不是写东西,而是配…

折腾博客这几年,我最头疼的不是写东西,而是配图。图床这玩意儿,白嫖过 sm.ms、路过图床、各种免费 CDN,结果踩的坑比省的钱多:要么突然挂上防盗链,要么无声无息跑路,要么免费额度一收紧,历史文章里的图全变成红叉。去年我把图床迁到自己 VPS 上,世界清净了。今天就把这套自建图床方案——Lsky Pro(兰空图床)——完整讲一遍,一条命令起服务,配合 PicGo 客户端,写 Markdown 拖图上传,爽得一批。

为什么选 Lsky Pro,而不是别的

市面上能自建的开源图床其实不少,主流就三家:Chevereto、Lsky Pro,以及 PicGo + 对象存储的组合。Chevereto 功能最猛,用户系统、相册、鉴权全都有,但对个人写博客来说太重了,而且新版已经闭源收费;PicGo + 阿里云 OSS / 腾讯 COS 的方案很流行,但本质上不是自建,图片还是存在大厂桶里,得额外掏对象存储的钱。Lsky Pro 刚好卡在中间:开源免费、PHP 写的轻量、既支持本地存储也支持 S3 兼容存储、有现成的 Docker 镜像,个人用绰绰有余。最关键的是它对 PicGo 和 Typora 支持得很好,上传体验跟白嫖图床一样丝滑。

准备工作:一台 VPS + 一个域名

开始之前,你需要两样东西:一台 VPS(最低 1 核 512M 内存都跑得动,但既然要存图,磁盘别太小,建议 20G 起步),以及一个解析好的域名(图床建议用子域名,比如 img.vpnt.top)。系统我用 Debian 12,其他发行版命令大同小异。如果你连 VPS 都没选好,可以先看看站里之前的 VPS 选购和性能测试文章,别在硬件上翻车。

部署:Docker 一条命令起服务

Lsky Pro 官方提供了 Docker 镜像,部署就一条命令。先建数据目录,再起容器:

mkdir -p /opt/lsky-pro && cd /opt/lsky-pro
docker run -d \
  --name lsky-pro \
  --restart=unless-stopped \
  -v /opt/lsky-pro:/var/www/html \
  -p 8080:80 \
  lskypro/lsky-pro:latest

拆开看:-v 把宿主机 /opt/lsky-pro 挂到容器 /var/www/html,图片和数据库全部落盘,容器删了数据还在;-p 8080:80 把容器 80 端口映射到宿主机 8080,待会儿 Nginx 反代到它;--restart=unless-stopped 保证开机自启、挂了自动拉起。

初始化:安装向导 + 第一件必做安全设置

容器起来后,浏览器访问 http://你的VPS_IP:8080,会进安装向导。按提示填:数据库类型选 SQLite(个人用完全够,不用折腾 MySQL)、设置管理员账号密码、站点名称和 URL。注意 URL 先填 http://你的VPS_IP:8080,等配完 HTTPS 再回来改成正式域名。装完登录后台,先做一件要紧事:去「系统设置」把「允许游客上传」关掉——图床默认可能允许任何人上传,不关的话你的 VPS 会变成公共图床,流量被白嫖。

上 HTTPS:Nginx 反代 + 自动证书

图床走 HTTP 太危险,而且现在很多 Markdown 渲染器会直接拦掉非 HTTPS 的图片。用 Nginx 反代 + 自动证书一步到位。先装环境:

apt update && apt install -y nginx certbot python3-certbot-nginx

然后写一份反代配置,路径 /etc/nginx/sites-available/img.vpnt.top:

server {
    listen 80;
    server_name img.vpnt.top;

    client_max_body_size 20m;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

client_max_body_size 20m 是重点,Nginx 默认只允许 1M 的上传体,不改的话传大图会直接 413 报错。保存后启用配置、签证书、重载:

ln -s /etc/nginx/sites-available/img.vpnt.top /etc/nginx/sites-enabled/
certbot --nginx -d img.vpnt.top
nginx -t && systemctl reload nginx

certbot 会自动签好证书并改写 Nginx 配置启用 HTTPS。最后回 Lsky Pro 后台,把站点 URL 改成 https://img.vpnt.top,收工。

接 PicGo:把上传变成肌肉记忆

接下来是爽点——上传。两种方式。第一种是网页拖拽:登录后台点「上传」,传完会返回 URL,适合偶尔传一张。第二种是我天天用的 PicGo 客户端。先下载 PicGo,然后去 Lsky Pro 后台「接口 – Token」生成一个 API Token 并记下来。在 PicGo 里搜索安装 lsky-pro 插件,填入服务器地址 https://img.vpnt.top、Token,设为默认图床。之后写 Markdown 时,截图直接 Ctrl+Shift+P 上传,剪贴板图片秒变 URL 自动插入光标处。再配合 Typora 的「粘贴图片自动上传」,写作体验和用白嫖图床一模一样,但图片永远躺在你自己的盘上。

三个进阶配置,一次做齐

最后三个进阶配置建议一次配好。第一,把存储策略改成 S3 兼容对象存储(比如 Cloudflare R2、Backblaze B2),图片不占 VPS 磁盘,还能顺便蹭 CDN。第二,开防盗链:后台「系统设置」里配置 Referrer 白名单,只允许你自己的博客域名引用,别人把图床链接复制到别处就 403。第三,备份——图床的命根子就是 /opt/lsky-pro 这个目录,里面既有图片也有 SQLite 数据库,定期 rsync 到异地或塞进你已有的备份脚本即可:

rsync -avz --delete /opt/lsky-pro/ user@backup-server:/backup/lsky-pro/

写在最后

自建图床这件事,本质上是把「图片控制权」从第三方手里拿回来。成本几乎为零——你本来就有 VPS,Lsky Pro 开源免费,唯一要花心思的就是部署那十分钟和日常的备份习惯。搭好之后,博客配图再也不怕跑路、不怕防盗链、不怕额度收紧。这才是自建服务真正的价值:不是省钱,是安心。有 VPS 的朋友今晚就能动手,半小时搞定。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注