惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Spread Privacy
Spread Privacy
H
Hacker News: Front Page
PCI Perspectives
PCI Perspectives
Webroot Blog
Webroot Blog
罗磊的独立博客
H
Heimdal Security Blog
TaoSecurity Blog
TaoSecurity Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
Last Week in AI
Last Week in AI
美团技术团队
Help Net Security
Help Net Security
The Hacker News
The Hacker News
C
Cisco Blogs
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
The Register - Security
The Register - Security
IT之家
IT之家
WordPress大学
WordPress大学
Jina AI
Jina AI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Help Net Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
NISL@THU
NISL@THU
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
Scott Helme
Scott Helme
V
Vulnerabilities – Threatpost
B
Blog
T
Tenable Blog
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
S
Security Affairs
小众软件
小众软件
Hacker News: Ask HN
Hacker News: Ask HN
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
W
WeLiveSecurity
A
Arctic Wolf
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence

阁子

小工具(三) 相机小述 四元数与旋转矩阵 小工具(二) 私有办公服务搭建 小工具(一) Git基本用法 Telegram接管聊天消息 Hashcat密码破解 Docker博客环境封装及自动化部署 小聊乐理 LXD搭设服务器 Time Machine 不满就折腾小记 GStreamer笔记五: Media Formats and Pad Capabilities GSreamer笔记四: GUI Toolkit Integration GStreamer笔记三: Time Management GStreamer笔记二: Dynamic Pipeline GStreamer笔记一: GStreamer Concepts
图床搭建
本文作者: dfine · 2019-03-26 · via 阁子

周末回来发现博客里的图片全成了码云的个性403了,原来是因为很多公共的图床存活不了多少年,而且当图不再使用时,不便于回收,所以在图床选择这方面,纠结了很久。后来Github认为在其上传图片获取外链并不算滥用,但是Github在国内的速度比较慢,对于背景图来说,就是肉眼可见的卡了。好在当时发现了Coding和码云,于是在码云(Gitee)上用其Issue页上传图片做图床。
然而不幸的是,大概他们是觉得滥用了,于是被防盗链了。

图床搭建

然后又像以前一样,对比了很多现有的图床,依然没找到能安心存放的地方。于是想到手里还有VPS,便打算搭建一个了。
最开始是一个同学送的天翼云,估计是办宽带送的,结果发现80和443端口全被封了,问客服说要备案才行,想着备案就备案吧,然而当看到备案要填的资料时,立马放弃了。
另一个就是Vultr上的,国外的云主机商相比于国内,条件限制宽了不少,不用动不动就实名或者备案,虽不会发表什么不当言论,但吃相看着令人难受。
现有图床挺多的,目前打算用一个开源的荔枝图床,有现成的Docker镜像,界面比较美观,官网在这

Docker环境安装

其实云主机还好,如果觉得官方的Docker下载太慢,也有Daocloud的CDN加速的镜像,直接一条命令就可以完成:

1

curl -sSL https://get.daocloud.io/docker | sh

等安装完成之后,就可以拉取镜像了,

1

docker pull kdelfour/lychee-docke

或者直接试运行,看看效果:

1

docker run -it -d -p 80:80 kdelfour/lychee-docke

这时,在本地浏览器输入云主机的IP,就可以看到一个基本的界面了。
完整的命令是:

1

docker run -it -d -p 80:80 -v /your-path/uploads/:/uploads/ -v /your-path/data/:/data/ -v /your-path/mysql/:/mysql/ kdelfour/lychee-docker

分别挂载上传图片的uploads文件夹、data文件夹和数据库储存的mysql文件夹,并映射80端口。
这时候再登陆该地址,会提示要初始化一些配置,可以用官方提供的配置:

1

2

3

4

url : localhost

database name : lychee

user name : lychee

user password : lychee

然后就是创建用户名和密码了,创建成功,图床已经初步建成。

但是现在直接做图床,看到的链接都是丑陋的IP和http字段组成的地址,干干巴巴,麻麻赖赖的,一点都不圆润。
所以接下来就要盘它了。一方面是IP更换为域名,另一方面是HTTP更换为更为安全的HTTPS。

域名申请

为IP申请一个域名,然后配置DNS,将域名直接以A类指向云主机IP即可。过一段时间应该就可以在本地看到域名解析生效:

1

$dig $YourUrl

然后直接在浏览器输入域名即可访问。

HTTPS支持

要将HTTP转为HTTPS主要有两个步骤,一个是申请证书,一个是安装证书。

SSL证书申请

偶然发现了FreeSSL这个网站,申请证书是真的方便,还有一个支持各大平台的客户端KeyManager,可以直接在里面申请Let’s Encrypt证书或者TrustAsia证书,一般前者半年,后者一年,因为比较懒,所以选后者。
在里面申请证书后,会有两种方法验证,一种是DNS验证,另一种是文件验证。
对于DNS验证,它会给你一串字符,让你到DNS解析设置里添加一个TXT解析,并粘贴为该字串。但是验证结果是香港和美国通过了,大陆总是验证失败,提示CNAME超时。因此选择文件验证了。
要将文件放在网站中进行验证,需要将其拷进Docker中,或者直接Docker容器中拷出来。

1

Docker cp $YourContainer:/var/www/lychee/ www/lychee/

然后将SSL验证文件放入该文件夹中重新挂载:

1

docker run -it -d -p 80:80 -v /root/images/uploads/:/uploads/ -v www/lychee/:/var/www/lychee/ -v data/:/data/ -v mysql/:/mysql/ kdelfour/lychee-docker

然后就可以验证成功了,之后可以生成证书并下载Nginx证书。

Nginx配置修改

接下来就是容器配置了,将HTTP转换为HTTPS。

SSL证书安装

首先将生成的证书放到网站的某个目录中,一个公钥和一个私钥。然后修改Docker容器的Nginx配置文件,也可以将其从容器中拷贝出来,再作修改:

1

docker cp $YourContainer:/etc/nginx/ nginx/

然后进入nginx/sites-enabled目录,修改lychee文件。
加入HTTPS的端口以及SSL证书的地址:

1

2

3

4

5

6

7

8

9

listen 443 ssl;

server_name localhost;

keepalive_timeout 70;

ssl on;

ssl_certificate /etc/nginx/sslkey/server.pem;

ssl_certificate_key /etc/nginx/sslkey/key.key;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers HIGH:!aNULL:!MD5;

HTTP跳转

当使用HTTP访问时,直接跳转到HTTPS,有很多方法,这里使用497的错误码实现跳转:
在Nginx的Server配置中加上

1

error_page 497 https://$YourSite/

然后重新挂载容器,此时需要指定HTTPS协议的443端口,以及Nginx配置文件目录:

1

docker run -it -d -p 80:80 -p 443:443 -v nginx/:/etc/nginx/ -v uploads/:/uploads/ -v www/lychee/:/var/www/lychee/ -v data/:/data/ -v mysql/:/mysql/ kdelfour/lychee-docker

此时即可正常访问图床,示例如下:
imgcloud