ARUKAS的SSR自给自足方式搭建

由于众所周知的原因,lowid/ss-with-net-speeder:latest这个网上用得最广的版本已经无法使用。而其它网上公布的方案,如

SSR+NetSpeeder:malaohu/ssr-with-net-speeder(反正我测试不可用)
CentOS6 + SS:jdeathe/centos-ssh:centos-6(这个后面单独讲,理论上这个可以用CentOS7)
CentOS:kinogmt/centos-ssh (默认用户名root,密码password,CentOS6.7)
Debian:itscaro/debian-ssh(默认用户名root,密码root,Debian Jessie)
Ubuntu:rastasheep/ubuntu-sshd(默认用户名root,密码root)

上面这些,要么不可用,要么部署起来之后还得自己连进去手工弄。大家都知道,arukas这货动不动就重启实例,导致一重启自己还得上去重新部署,十分不便。于是,现在我们的目标是先部署个CentOS,然后让其自动拖SSR并部署。

1.前提条件

阅读以下内容前,请确保您已满足以下条件:

  • 具备github帐号且具备基本的操作能力(如果没有自己注册一个去)

  • 具备docker(cloud.docker.com)帐号且具备基本的操作能力(如果没有自己注册一个去)注意,该网站如果不使用梯子会很慢。

  • 具备arukas的帐号且具备基本的操作能力(这不是废话么)

  • 具备linux的shell基本常识且具备基本的操作能力

  • 看得懂11区和牛牛的鸟语

2.克隆源代码

由于arukas只支持docker的公共镜像,而docker的镜像可以通过从github拖源代码进行编译。所以,我们第一步为从上面提到的git源代码中克隆一份还算好用的过来。

这里暂定使用kinogmt/centos-ssh

首先,登录你自己的github,然后访问https://github.com/kinogmt/centos-ssh

点击右上角的

然后选择Fork给自己

稍等片刻Fork完毕。Fork完毕后将自动进入你Fork的项目,请务必记住项目名称。

一般情况下,该项目的名称为:centos-ssh

 

3.在docker上建立与github的关联

 登录你自己的docker帐号(https://cloud.docker.com/),在右上角,点击自己的头像下拉菜单,选择Cloud Settings

 在新打开的页面中选择Source providers,并点击GitHub后面的插头图标进入配置:

 

 浏览器被链接到github网站,并要求输入github的帐号和密码,输入github的帐号信息

 

 输入完毕后,点击Sign in,认证完成后便完成连接。

4.创建Repositories

接下来,需要从docker上拉github的源代码。

点击顶端菜单的Repositories:

 

 

输入Repositories信息:

输入完毕后,点击Create,进入Repositories编辑界面。点击Builds,切换到Builds界面并点击右边的Configure Automated Builds

Build configurations界面,

SOURCE REPOSITORY:首先选择你的github帐号,然后选择在第2步中的项目名称,(默认应该是centos-ssh

BUILD LOCATION:选择Large(反正不要钱,越大越好)

AUTOTEST:保持默认

如下图:

BUILD RULES

该选项需要github的分支信息。首先,登录github.com,选择刚才Fork的项目,点击Branch,在下拉列表中找到前面打勾的内容。

如下图:

默认情况下为master

 获取到分支名称之后,填入Builds Rules中的Source内,注意Autobuild选择关闭,否则后面git的代码变动会自动重建。其它选项保持默认。

完成后的效果如下图:

全部填写完毕后,直接选择,稍后Docker将自动构建镜像:

 淡定地等待,直到构建完毕。如果构建状态变为failed,请检查您的Source内容填写是否正确。

如需查看详细信息,点击

中正在进行构建的内容。在详细记录中,可以看到当前状态:

当状态为SUCCESS后,证明编译成功完成。

获取Tags

点击Tags标签,检查当前Repositories的tag名称,并记录留作备用

 5.创建arukas实例

登录https://app.arukas.io/,点击Create:

 进入创建APP界面。

各个选项内容如下:

app name:随意

instances:1-10随意

Port:8388

image:该image即你刚才在docker上build的镜像,具体路径为:docker用户名/Repository名:上一步中获取的tag名称

例如,您的用户名为   test

Repository名为  ssr

默认标签名为 latest

则镜像路径为:test/ssr:latest

其它保持默认。

填写完毕后,点击Save。

至此,我们已经完成从github的源代码到在ARUKAS部署的全部流程。

接下来,我们需要定制github上我们fork过来的Centos,让其自动部署SSR。

6.SSR部署(简化版)

修改GITHUB代码

打开github刚才fork过来的工程,在文件列表中找到dockfile文件(注意记住Branch名称)

点击进入并进行编辑:

由于SSR需要通过GIT拖取,我们需要额外安装git工具。找到文件中任意以RUN yum install -y开始的行,并在其末尾添加如下内容:(注意最前端有一个空格)

git || true

7.设置root密码并部署ssr

在文档中找到

RUN echo "root:$ROOT_PASS" | chpasswd

这一行,并在其前面添加如下代码:

其中:

PORT_PASS用于设置ssr的端口密码
ROOT_PASS用于设置系统root密码

METHOD对应SSR的加密选项

PROTOCOL对应SSR的协议

PROTOCOL_PARAM对应SSR的协议参数

OBFS对应SSR的混淆

OBFS_PARAM对应SSR的混淆参数

在SSR上对应的配置如图:

其它保持默认(注意,默认参数只支持SSR,SS无法使用)

 

##########################################################################
#self action
RUN  (mkdir /ssr; \
     cd /ssr)
# -----------------------------------------------------------------------------
# Set default environment variables
# -----------------------------------------------------------------------------
ENV PORT_PASS="dengbo801018~!" \
 METHOD="aes-256-cfb" \
 PROTOCOL="auth_aes128_md5" \
 PROTOCOL_PARAM="" \
 OBFS="tls1.2_ticket_auth_compatible" \
 OBFS_PARAM="" \
 ROOT_PASS="password"
##########################################################################
#git clone
RUN git clone -b manyuser https://github.com/shadowsocksr/shadowsocksr.git /ssr/shadowsocksr
RUN chmod +x /ssr/shadowsocksr/*.sh
RUN chmod +x /ssr/shadowsocksr/shadowsocks/*.sh
RUN cp -n /ssr/shadowsocksr/apiconfig.py /ssr/shadowsocksr/userapiconfig.py
RUN cp -n /ssr/shadowsocksr/config.json /ssr/shadowsocksr/user-config.json
RUN cp -n /ssr/shadowsocksr/mysql.json /ssr/shadowsocksr/usermysql.json
##########################################################################
#modify ssr config
RUN echo>/ssr/shadowsocksr/user-config.json
RUN echo "{">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"server\": \"0.0.0.0\",">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"server_ipv6\": \"::\",">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"local_address\": \"127.0.0.1\",">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"local_port\": 1080,">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"port_password\":{">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8388\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8389\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8390\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8391\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8392\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8393\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8394\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8395\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8396\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8397\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8398\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8399\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8400\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8401\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8402\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8403\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8404\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8405\":\"$PORT_PASS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "        \"8406\":\"$PORT_PASS\"">>/ssr/shadowsocksr/user-config.json
RUN echo "    },">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"method\": \"$METHOD\",">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"protocol\": \"$PROTOCOL\",">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"protocol_param\": \"$PROTOCOL_PARAM\",">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"obfs\": \"$OBFS\",">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"obfs_param\": \"$OBFS_PARAM\",">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"speed_limit_per_con\": 0,">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"speed_limit_per_user\": 0,">>/ssr/shadowsocksr/user-config.json
RUN echo "">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"additional_ports\" : {}, // only works under multi-user mode">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"timeout\": 120,">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"udp_timeout\": 60,">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"dns_ipv6\": false,">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"connect_verbose_info\": 0,">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"redirect\": \"\",">>/ssr/shadowsocksr/user-config.json
RUN echo "    \"fast_open\": false">>/ssr/shadowsocksr/user-config.json
RUN echo "}">>/ssr/shadowsocksr/user-config.json

 修改最后一行内容为:

CMD service crond start; /ssr/shadowsocksr/shadowsocks/run.sh;/usr/sbin/sshd -D;

 保存并退出。

上述代码实现开从8388到8406共19个SSR服务端口,以及一个ssh的22端口。

 8.重新在Docker上Build镜像

登录Docker,选中刚才我们创建的Repository,点击Builds,往下拖点击之前Build过的镜像后面的扳手图标:

然后等待项目重新构建,如果有错,请点击Recent Builds中正在build的进程,并查看Build logs中具体的报错信息。

当状态变为SUCCESS后,则表示当前镜像已创建成功。

ARUKAS启动

如果没有对配置有任何变动,则可以直接在arukas中启动之前创建的application。怎么启动自行查网上教程。