2020年1月

前几天有网页长截图的需求,然后就准备找一下Chrome插件,但是看到很多插件都需要读取本地文件和写入文件权限,又有点不放心,无意中又找到了下面这种原生长截图的方案,特地记录下。

要想使用截图功能,你需要首先确保Chrome已升级至59+版本。在想要截图的网页中,首先按下 ⌘Command + ⌥Option + I(Windows 为 F12)快捷键,进入开发者工具界面。

随后,按下 ⌘Command + ⇧Shift + P(Windows 为 Ctrl + Shift + P),输入命令 Capture full size screenshot(只输前几个字母就能找到),敲下回车,Chrome 就会自动截取整个网页内容并保存至本地。

而且除了普通长截图以外,你还可以利用这一功能截取手机版网页长图。只需要按下 ⌘Command + ⇧Shift + M (Windows 为 Ctrl + Shift + M)模拟移动设备,再按刚才的方法运行命令就可以了。在顶部的工具栏中,你可以选择要模拟的设备和分辨率等设置。

如果你想准确截取网页的某一部分,可以按下 ⌘Command + ⇧Shift + C(Windows 为 Ctrl + Shift + C)嗅探元素。选中想要的部分后,再运行 Capture node screenshot 命令,一张完美的选区截图就诞生了。

由于是渲染引擎直接输出,其比普通扩展速度更快,分辨率也更高。

在之前的博文中也说过,我的博客目前是运行在一台树莓派2B上,且已经稳定运行3年,同时使用了bypy进行备份,将树莓派的数据定期备份到百度云盘,这样就算哪天我的树莓派挂了,也能保证数据不丢失。但由于树莓派还承担了下载机的功能,考虑到目前树莓派的TF卡内存只有16G,所以元旦期间趁着之前IPv6也搞定了,就把树莓派做一下整体升级,把TF卡存储升级到64G,考虑到我的折腾劲,就把树莓派上部署的所有服务整体迁移到Docker下,算是对自己学习的Docker知识的一个整理吧。

Raspbian的具体安装过程详见之前的博文,树莓派搭建Typecho小记

1.安装Docker

Docker有两种安装方式,脚本安装和apt安装,一般推荐用脚本安装,非常方便。

sudo curl -sSL https://get.docker.com | sh

这时候,Docker就已经安装成功了,但我们这时候只能使用命令行来操作,我们可以搭配着再安装一个web管理面板,这样后续管理就非常方便了,推荐安装轻量易用的Portainer,主要是内存占用也比较低,符合树莓派的要求。

docker run -d --name portainer --restart always \
-p 9000:9000  \
-v /var/run/docker.sock:/var/run/docker.sock  \
-v portainer_data:/data  \
portainer/portainer:latest

安装完以后,输入树莓派的IP:9000,就进入到Portainer的web管理面板,首次安装后需要设置下用户名和密码,这样以后就可以正常登录使用了。

2.部署typecho

安装完Docker以后,就可以在Docker上部署typecho了,typecho官网没有一个推荐的镜像,需要自己根据博客的配置选择一个合适的镜像,因为我的博客主要使用的是SQLite数据库,所以就需要找一个nginx+php+sqlite的镜像,通过强大的Google终于找到一个可以支持树莓派的且内存占用比较低的镜像codeideal/nginx-php-sqlite,通过大半个月的运行,目前总得来说一切良好。

docker run -d --name typecho --restart always \
-p 80:80 -p 443:443 \
-v /home/pi/Websites:/data/www \
-v /home/pi/Nginx/nginx.conf:/etc/nginx/nginx.conf \
-v typecho_data:/data  \
codeideal/nginx-php-sqlite:latest

上面的路径可以自定义,我把博客的源码放在了/home/pi/Websites目录,把Nginx的配置文件放在了/home/pi/Nginx目录下,你们的这个路径可能和我的不一样,酌情修改哈。

3.部署frp

frp主要是一个内网穿透工具,之前的博文也有解决如何原生的安装frp客户端和服务端,此次把frp客户端安装到Docker内,也是为了简化部署,使用的是Docker Hub上下载量最多的一个镜像snowdreamtech/frpc,对应的服务端是snowdreamtech/frps,实测也是挺好用的。

docker run -d --name frpc --network host --restart=always \
-v /etc/frp/frpc.ini:/etc/frp/frpc.ini \
snowdreamtech/frpc:latest

/etc/frp/frpc.ini 这个路径对应的就是你frp客户端配置的路径,自行修改哈。

4.部署cloudflare-ddns

由于目前已经有了IPv6地址,实测IPv6地址也可以访问,所以把域名也配置了AAAA记录,但有个问题,家庭宽带获取的IPv6地址不是静态的,而是会动态改变的,所以我们需要一个类似于IPv4的DDNS功能,来让动态改变后的IPv6同步到域名AAAA记录中,因为我的域名是托管在cloudflare上,且cloudflare也有一些API,通过强大的Google,我找到一个合适的镜像oznu/cloudflare-ddns:armhf,这个镜像是专门为了arm32适配过的,所以性能方面不成问题。

docker run -d --name ddns --restart=always \
-e API_KEY=xxxxxxx \
-e ZONE=example.com \
-e SUBDOMAIN=subdomain \
-e RRTYPE=AAAA \
-e PROXIED=true \
oznu/cloudflare-ddns:armhf

上面的API_KEY可以在cloudflare后台中找到,如果没有子域名SUBDOMAIN那一行可以省略,PROXIED默认值为false,表示不代理会返回真实的IP地址,建议改为true,这样就能通过cloudflare保护源IP地址。