一个树莓派(我用的是树莓派3B,其他1,2代理论上可以,没测试)
一个VPS(虚拟专用服务器)
一台电脑(windows)
购买香港或国外的vps,我用的是openvzcc的服务器,包年费用大概70元左右,当然性能网速好的较贵点。有了VPS相当于你在境外有了自己的服务器(一台运行着linux的电脑), 也就是有了自己独立的一个固定IP。你可以直接ssh此IP, 以便于管理自己的服务器。
有了自己的VPS后要做的事就是ssh上这台server(不懂请自行度之)。
下面要做的事情是在vps上编译服务端(运行在vps上)和客户端(运行在树莓派上)。需要说明的是我这里的vps装的是centos 32位的系统。需要准备的环境为:git安装 , go语言安装, ngrok源码下载和配置
git安装: 下载: wget http://mirrors.ustc.edu.cn/kernel.org/software/scm/git/git-2.9.3.tar.gz 解压: tar zxvf git-2.9.3.tar.gz 编译: cd git-2.9.3 ./configure --prefix=/usr/local/git-2.9.3 make make install 移除低版本git: yum remove git* ln -s /usr/local/git-2.9.3/bin/* /usr/bin/ 检查git版本: git --version
go语言安装: 安装必要包: yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ build-essential mercurial 下载配置go源码: wget http://www.golangtc.com/static/go/1.7rc6/go1.7rc6.linux-386.tar.gz tar -zxvf go1.7.6.linux-386.tar.gz mv go /usr/local/ ln -s /usr/local/go/bin/* /usr/bin/ 检查go版本: go env
ngrok源码下载和配置: 下载 : wget https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/ngrok/ngrok.zip unzip ngrok.zip export GOPATH=~/ngrok/ export NGROK_DOMAIN='tangwei.vicp.net' cd ~/ngrok 生成证书,Ngrok会使用此证书加密通讯: openssl genrsa -out base.key 2048 openssl req -new -x509 -nodes -key base.key -days 10000 -subj '/CN=$NGROK_DOMAIN' -out rootCA.pem openssl genrsa -out server.key 2048 openssl req -new -key server.key -subj '/CN=$NGROK_DOMAIN' -out server.csr openssl x509 -req -in server.csr -CA rootCA.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt 将证书文件复制到指定位置: cp rootCA.pem assets/client/tls/ngrokroot.crt -i cp server.crt assets/server/tls/snakeoil.crt -i cp server.key assets/server/tls/snakeoil.key -i
编译服务器端与客户端: 服务端(linux-x86-64)编译: export GOOS=linux export GOARCH=386 make release-server 客户端编译: export GOOS=linux export GOARCH=arm make release-client
这里测试时只编译了i386的服务器端和arm的客户端,实际上可以通过改变GOOS与GOARCH来获取各个平台的客户端与服务端,GOOS可以指定为windows、linux 、 freebsd 、darwin (Mac OS X 10.5 or 10.6) 和 nacl (Chrome 的Native Client 接口) ,GOARCH可以指定为amd64 (64-bit x86) 、386 (32-bit x86) 、 和arm (32-bit ARM)