写博客、做文档、在论坛贴图,最怕图床跑路或限速——图片一夜变「图裂」,文章全废。第三方图床要么限流量、要么随时关停,重要的图还是握在自己手里最稳。Lsky Pro(兰空图床)是一个开源的自托管图床:上传图片拿到直链,支持多用户、相册分组、API 上传,还能设每日配额。本文用一台雨云 KVM 云服务器,Docker 一把部署,配 Nginx 反代 HTTPS,把图床收归自己掌控。
一、先准备一台雨云 KVM 云服务器
图床主要是「存图 + 出流量」,对 CPU 几乎没要求,瓶颈在磁盘和带宽。它要 7×24 在线、有公网 IP,最好配对象存储当后端更省心。想低成本起一台可以看国产高性价比云服务器,比如雨云:KVM 虚拟化、Debian/Ubuntu 镜像任选,新用户用优惠码 admin01 享五折,入门版折后约 9 元/月,支持 7 天无理由退款。挑机器可参考 VPS 怎么选不踩坑 与 新手买 VPS 先看这几个配置参数。
我选 Debian 12。基础安全按 VPS 到手第一件事做什么 走一遍,本文默认你已建好普通用户、开了 ufw。图床后台走 80/443,放行即可。
二、装 Docker 并拉起 Lsky Pro
装 Docker:
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
建目录并写 docker-compose.yml:
mkdir -p /opt/lsky && cd /opt/lsky
version: "3"
services:
lsky:
image: halcyonazure/lsky-pro-docker:latest
container_name: lsky
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./data:/var/www/html
environment:
- DB_HOST=lsky-db
- DB_DATABASE=lsky
- DB_USERNAME=lsky
- DB_PASSWORD=换成强密码
lsky-db:
image: mariadb:10.6
container_name: lsky-db
restart: unless-stopped
environment:
- MYSQL_DATABASE=lsky
- MYSQL_USER=lsky
- MYSQL_PASSWORD=换成强密码
- MYSQL_ROOT_PASSWORD=再换一个更强的
volumes:
- ./db:/var/lib/mysql
启动:
docker compose up -d
等半分钟,访问 http://服务器IP:8080 就能看到安装向导。数据库那步填上面 DB_* 对应的信息(主机填 lsky-db,端口 3306)。
三、初始化与 HTTPS 反代
装好后进后台建账号、在「设置 → 基础设置」里把站点 URL 设成你的域名,并到「存储策略」里确认图片存到本地 ./data 目录(也可接 S3/对象存储)。重点:图床必须走 HTTPS,否则浏览器会拦截混合内容、图片在 https 页面里显示不出来。
用 Nginx 反代 8080,并配 certbot 证书:
server {
listen 80;
server_name img.example.com;
location / { return 301 https://$host$request_uri; }
}
server {
listen 443 ssl;
server_name img.example.com;
ssl_certificate /etc/letsencrypt/live/img.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/img.example.com/privkey.pem;
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;
}
}
申请证书:certbot --nginx -d img.example.com。放行 80/443:
ufw allow 80/tcp
ufw allow 443/tcp
ufw reload
上传一张图,拿到 https://img.example.com/xxxx.png 直链,贴到博客里即可。
四、多用户与配额管理
Lsky Pro 原生支持多用户。后台「用户管理」里开新账号、设单日/单文件大小上限,适合小团队共用一台图床。还能在「接口设置」里开 API Token,配合 PicGo / uPic 这类上传工具,写文章时截图即传、自动回填直链,体验顺滑。
担心单机磁盘不够,把存储策略切到对象存储(见 雨云快照备份与对象存储),图片落到对象存储后,云服务器只跑程序、不占本地盘。多个自托管服务要统一盯资源,可参考 雨云搭建哪吒监控。
五、踩过的坑与经验
- 上传报 413:Nginx 默认限 1M,大图直接 413。上面
client_max_body_size 20m就是解药;如果走宝塔或别的反代,也要同步调大上传上限。 - 图片访问 403 / 图裂:多半是
./data目录权限问题。容器里 www 用户写不进宿主目录,给目录chmod -R 777 ./data(测试用,生产再收紧)或把目录属主对齐容器用户。 - 必须用 HTTPS:用 http 域名在 https 博客里会被浏览器拦,图片全裂。证书用 certbot 免费申请,别省。
- 数据库别丢:
./db是 MariaDB 数据卷,定期tar czf打包;或按上面切对象存储,服务器没了图还在。 - 后台暴露公网:图床后台走 443 即可,但登录入口建议加 Basic Auth 或限制来源 IP,详见 VPS 安全配置实战。
小结
自建图床的核心价值是「图在自己手里」:不靠第三方、不限流、想删就删。部署就是一个 docker-compose(程序 + 数据库),难点在权限和 HTTPS。常驻小服务很适合雨云这类低价稳定 KVM——优惠码 admin01 五折、7 天无理由退款,跑图床这类轻量常驻服务很划算。
合规提醒:使用雨云及本文所述方案时,请遵守《网络安全法》《个人信息保护法》《数据安全法》等相关法律法规,仅用于合法合规的图片托管与自有内容管理,不得上传、传播任何违法违规或侵权内容,并妥善保管用户上传数据、履行个人信息保护义务。






