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

推荐订阅源

SecWiki News
SecWiki News
I
InfoQ
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
博客园 - Franky
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
博客园_首页
罗磊的独立博客
V
V2EX
李成银的技术随笔
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
True Tiger Recordings
Vercel News
Vercel News
Cyberwarzone
Cyberwarzone
Cisco Talos Blog
Cisco Talos Blog
F
Fox-IT International blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
M
Microsoft Research Blog - Microsoft Research
Know Your Adversary
Know Your Adversary
爱范儿
爱范儿
The Register - Security
The Register - Security
G
Google Developers Blog
The Hacker News
The Hacker News
Malwarebytes
Malwarebytes
S
Securelist
博客园 - 三生石上(FineUI控件)
Jina AI
Jina AI
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
S
SegmentFault 最新的问题
博客园 - 叶小钗
F
Fortinet All Blogs
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
博客园 - 聂微东
T
Threatpost
博客园 - 【当耐特】
D
Docker
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
G
GRAHAM CLULEY
V
Visual Studio Blog
C
Cisco Blogs
IT之家
IT之家
S
Security Archives - TechRepublic
Latest news
Latest news
阮一峰的网络日志
阮一峰的网络日志

阁子

小工具(三) 相机小述 四元数与旋转矩阵 小工具(二) 私有办公服务搭建 小工具(一) 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
图床搭建
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