部署一台 VPN 服务器,实现自建 youtube、谷歌、facebook、维基等被墙网站的镜像。
使用zmirror快速部署镜像的脚本
Demo
- Google
- 网页搜索 https://g.zmirrordemo.com
- Scholar https://g.zmirrordemo.com/scholar
- Image https://g.zmirrordemo.com/imghp
- Gmail https://g.zmirrordemo.com/gmail (请选择"使用基本HTML"版本)
- 中文维基
- (PC & Mobile) https://g.zmirrordemo.com/wiki
- Youtube
- PC Only https://ytb-pc.zmirrordemo.com
Youtube访问需要密码, 请解密此串得到密码WmhlamlhbmdVbml2ZXJzaXR5
如果您无法解密, 很抱歉Youtube镜像不对您开放- Mobile Only
https://ytb-mobile.zmirrordemo.com暂不开放
Youtube Mobile 不支持iOS
- Mobile Only
- PC Only https://ytb-pc.zmirrordemo.com
- Twitter
- PC Only https://t-pc.zmirrordemo.com
- Mobile Only https://t-mobile.zmirrordemo.com
- Instagram
- PC & Mobile https://in.zmirrordemo.com
- Facebook
- PC Only https://fb.zmirrordemo.com
绝大部分功能可用, 但是不完整
- PC Only https://fb.zmirrordemo.com
前置需求
- 一台墙外VPS, OpenVZ/Xen/KVM均可
- 操作系统:
- 支持的操作系统:
- Ubuntu 14.04/15.04(不支持HTTP2)/15.10/16.04+
- Debian 8 (不支持HTTP/2)
- 不支持 CentOS/RHEL/Windows/Fedora/Arch/... 对于这些系统, 可以使用由yumin9822提供的这个脚本
- 推荐的操作系统:
- Ubuntu 16.04 x86_64
- 全新(刚安装完成)的操作系统. 如果系统中有其他东西, 可能会产生冲突
- root权限
- 支持的操作系统:
- 域名
- 每个镜像要求一个三级域名(类似于
g.zmirrordemo.com
这样的, 有三部分, 两个点) - 域名已经在DNS记录中正确指向你的VPS
- 每个镜像要求一个三级域名(类似于
运行方法
- 我没有SSL证书 (如果不懂, 请使用这个)
sudo apt-get -y update && sudo apt-get -y install python3 git git clone https://github.com/aploium/zmirror-onekey.git --depth=1 cd zmirror-onekey sudo python3 deploy.py
- 我已有SSL证书
如果已有证书, 希望使用自己提供的证书, 而不是通过 let's encrypt 获取
请将上面代码中的第四行替换成下面的样子, 在运行期间会提示你输入证书路径的:sudo python3 deploy.py --i-have-cert
警告
不支持加密的私钥, 如果私钥有密码加密, 请先解密
安装过程视频
特性
- 支持一次部署多个镜像, 支持同VPS多镜像
- 自动安装 let's encrypt 并申请证书, 启用HTTPS
- 自动添加 let's encrypt 的定期renew脚本到crontab
- 启用HTTP/2 ps:Debian8和Ubuntu15.04不支持HTTP/2
- 启用HSTS
FAQ
- 当然有, 请戳 zmirror-demo
- 注意
请不要使用 .cf 和 .ga 域名, letsencrypt对它们的支持非常差, 经常出现无法下发证书的问题
除非不得已, 在使用免费域名时, 请使用老牌的 .tk 域名 - zmirror
安装在/var/www/镜像名
文件夹下
镜像名为每个镜像的名字, 比如YoutubePC就是/var/www/youtubePC
- let's encrypt
本体在:/etc/certbot/
申请到的证书位置, 请看 certbot文档-where-are-my-certificates - Apache
Apache的配置文件在/etc/apache2/
下
其中各个站点的配置文件在/etc/apache2/sites-enabled/
Apache日志文件在/var/log/apache2/镜像名_后缀.log
后缀为 _error 的日志文件中, 同时包含了stdout的输出(无论是否是错误), 对debug会有帮助
- zmirror
- 因为Apache的wsgi对python更友好
而且Nginx没有Visual Host功能
在性能上, 由于性能瓶颈是zmirror本身, 所以Apache和Nginx之间的性能差距可以被忽略目前一键脚本只能安装Apache, 不支持Nginx, 也没有支持Nginx的计划, 如果需要Nginx, 请手动部署
手动部署可以参考 zmirror wiki
当然, 如果你能写一份Nginx部署教程, 我会很感谢的~ :) - 在Ubuntu中, 使用的是 PPA:ondrej/apache2 理论上应该是最新版, 或者接近最新版(2.4.23+)
在Debian8中, 使用系统的 apt-get 安装, 版本比较旧, 所以Debian不支持HTTP/2 - 安装脚本会自动创建定期更新证书的脚本, 脚本位置为
/etc/cron.weekly/zmirror-letsencrypt-renew.sh
- 主要是因为Let's encrypt认为, 证书的申请和部署可以自动化时, 90天足够了.
具体可以看这个官方说明(可能需要自备梯子)
本安装脚本会在linux定时任务(crontab)中加入自动续期的脚本, 不用担心证书过期
即使自动续期脚本万一失效了, let's encrypt也会在快要过期时邮件通知你 - 如果想用CDN, 可以看这个教程使用七牛作为zmirror镜像CDN警告
如果你想要修改config_default.py
中的某项设置, 请不要直接修改
而应该将它复制到config.py
中, 然后修改config.py
里的设置
config.py
中的设置会覆盖掉config_default.py
中的同名设置
除非你是开发者, 否则无论如何都不应该修改config_default.py
- 如果你的VPS提供商允许的话, 可以试试看net-speeder
- 脚本使用Let's encrypt(certbot)来获取证书certbot 会在本地 Listen 80 或者 443 端口, 然后由远程授权服务器根据域名的A记录来访问本机
当远程服务器成功连接到本机的certbot客户端后, 就会颁发证书.
详细流程请看官方文档How It Works证书获取失败最有可能的原因是域名记录设置后尚未来得及生效, 域名DNS记录的生效通常需要数分钟以上, 最长可达72小时
对于这种情况, 除了等待以外是没有什么办法的.
本脚本在默认的5次尝试失败后, 会提示是否一直尝试下去, 如果你确认DNS记录已经正常设置, 请在提示
max retries exceed, do you want to continue retry infinity?(Y/n)
时, 选择Y, 一般数分钟内就能成功.如果不能确定是否正常设置, 可以访问 https://www.whatsmydns.net/ , 这个网站可以在全球范围内查询A记录
如果查询出的A记录与你的IP相同, 就表示设置成功了, 此时只需要让脚本自行尝试即可
如果此时仍然多次尝试失败, 请看下面的手动运行lets encrypt获取证书
部分手动运行lets encrypt获取证书
如果能确认DNS记录已经设置正常, 但是仍然无法获取证书, 请尝试手动运行letsencrypt获取证书:sudo service apache2 stop sudo /etc/certbot/certbot-auto certonly --standalone -d "你的域名1" sudo /etc/certbot/certbot-auto certonly --standalone -d "你的域名2" sudo service apache2 start
或者(如果上面的仍然失败)sudo apt-get install letsencrypt sudo service apache2 stop sudo letsencrypt certonly --standalone -d "你的域名1" sudo letsencrypt certonly --standalone -d "你的域名2" sudo service apache2 start
并在手动获取证书成功后再次运行本脚本
- 请运行以下代码(假设
zmirror-onekey
是本脚本文件夹):cd zmirror-onekey git pull sudo python3 deploy.py --upgrade-only
注意: 更新zmirror以后会自动重启Apache
没有评论:
发表评论