概述:
图床对于一个文档来说是必不可少的一部分,对于markdown来说也非常重要,毕竟要插入图片之类的.本教程教你如何用自己的服务器自建图床.
本教程中将使用Caddy作为web服务端,系统为debian12.你也可以选择使用NGINX和其他系统.
本教程只写了80,443可用的情况,实际情况可能会更复杂.
1.安装Caddy
非常简单,几行命令就能解决.
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
如果出现像下面这个属于正常现象,无需理会
unable to resolve host xxxxx: No address associated with hostname
接下来你可以直接访问你的服务器的IP,不出意外的话你应该能看到Caddy的欢迎界面了.
界面上甚至贴心备注如何开启https.
2.配置Caddy
建议先把对应域名解析到你的服务器,方便Caddy自动申请证书,请确保80端口可以被外部访问.当然你可以使用dns的方式来申请,不过限于篇幅不会展示.
首先打开你的sftp软件,到 /etc/caddy
, 你会看到一个叫 Caddyfile
的文件,非常简洁的写法.
但是默认配置是都在一个Caddyfile里面的,多了非常不利于我们去整理,所以我们要略微改一下.
创建一个文件夹,就叫 site
(其实你可以换成别的,记得把下文教程中的路径换成你自己的)
在Caddyfile的后面加上一个 import /etc/caddy/site/*.conf
,如下图所示.
接下来只需要把配置文件丢到site目录下即可.
建议加上邮箱相关配置来方便Caddy自动申请https证书.
{
email example@example.com # 替换为你的邮箱地址
}
接下来在site目录里面创建一个 images.conf
内容如下:
img.example.com { # 替换为你的域名
# 设置为你的图片保存目录
root * /www/images
# 启动静态文件服务
file_server
header Cache-Control "public, max-age=31536000" # 缓存时间按照自己需求设定,可以影响cdn缓存的时间
}
重载Caddy: sudo systemctl reload caddy
接下来Caddy会自动通过http方式申请证书,一般一分钟内就会申请成功.
Caddy默认开启http重定向https, HTTP/2和HTTP/3,这点好评.
3.使用
将你的图片上传到 /www/images
即可,例如说目录为 /www/images/example.png 那么你应该使用
访问到这个图片.
你也可以开启cdn来缓存图片,不过这是后话了.