├── Readme.md ├── nginx.conf ├── ubuntu-app.sh └── ubuntu-provider.sh /Readme.md: -------------------------------------------------------------------------------- 1 | **请在ubuntu系统下使用** 2 | 3 | ## 一行命令启动stf主服务 4 | 5 | 将 `127.0.0.1` 替换成服务器IP才能远程访问 6 | ```bash 7 | curl -sSL "https://raw.githubusercontent.com/sunshine4me/dockerSTF/master/ubuntu-app.sh" | sh -s 127.0.0.1 8 | ``` 9 | 10 | 启动主服务后直接访问 `http://127.0.0.1`(不需要端口号) 就能看到STF页面 11 | 12 | 13 | ## 一行命令启动stf provider 14 | 将 `127.0.0.1` 替换成stf主服务的IP 15 | ```bash 16 | curl -sSL "https://raw.githubusercontent.com/sunshine4me/dockerSTF/master/ubuntu-provider.sh" | sh -s 127.0.0.1 17 | ``` 18 | 19 | 启动provider主服务会看到provider 管理的设备 -------------------------------------------------------------------------------- /nginx.conf: -------------------------------------------------------------------------------- 1 | daemon off; 2 | worker_processes 1; 3 | 4 | events { 5 | worker_connections 1024; 6 | } 7 | #如果nginx与服务器不在一台上将127.0.0.1改为服务器IP 8 | http { 9 | upstream stf_app { 10 | server 127.0.0.1:7100 max_fails=0; 11 | } 12 | 13 | upstream stf_auth { 14 | server 127.0.0.1:7101 max_fails=0; 15 | } 16 | 17 | upstream stf_storage_apk { 18 | server 127.0.0.1:7104 max_fails=0; 19 | } 20 | 21 | upstream stf_storage_image { 22 | server 127.0.0.1:7105 max_fails=0; 23 | } 24 | 25 | upstream stf_storage { 26 | server 127.0.0.1:7106 max_fails=0; 27 | } 28 | 29 | upstream stf_websocket { 30 | server 127.0.0.1:7102 max_fails=0; 31 | } 32 | 33 | upstream stf_api { 34 | server 127.0.0.1:7103 max_fails=0; 35 | } 36 | 37 | types { 38 | application/javascript js; 39 | image/gif gif; 40 | image/jpeg jpg; 41 | text/css css; 42 | text/html html; 43 | } 44 | 45 | map $http_upgrade $connection_upgrade { 46 | default upgrade; 47 | '' close; 48 | } 49 | 50 | server { 51 | listen 80; 52 | # server_name www.你的域名.com; 53 | keepalive_timeout 70; 54 | # resolver 114.114.114.114 8.8.8.8 valid=300s; 55 | # resolver_timeout 10s; 56 | 57 | # 如果不配置,图像minicap等服务将直连provider服务器, 58 | # 通过配置可以让nginx转发请求到provider服务器,这样对外时可以不用暴露provider服务器. 59 | # floor4 : provider的 --name 60 | # proxy_pass : provider的内网IP 61 | 62 | # location ~ "^/d/floor4/([^/]+)/(?[0-9]{5})/$" { 63 | # proxy_pass http://192.168.0.106:$port/; 64 | # proxy_http_version 1.1; 65 | # proxy_set_header Upgrade $http_upgrade; 66 | # proxy_set_header Connection $connection_upgrade; 67 | # proxy_set_header X-Forwarded-For $remote_addr; 68 | # proxy_set_header X-Real-IP $remote_addr; 69 | # } 70 | 71 | 72 | 73 | location /auth/ { 74 | proxy_pass http://stf_auth/auth/; 75 | } 76 | 77 | location /api/ { 78 | proxy_pass http://stf_api/api/; 79 | } 80 | 81 | location /s/image/ { 82 | proxy_pass http://stf_storage_image; 83 | } 84 | 85 | location /s/apk/ { 86 | proxy_pass http://stf_storage_apk; 87 | } 88 | 89 | location /s/ { 90 | client_max_body_size 1024m; 91 | client_body_buffer_size 128k; 92 | proxy_pass http://stf_storage; 93 | } 94 | 95 | location /socket.io/ { 96 | proxy_pass http://stf_websocket; 97 | proxy_http_version 1.1; 98 | proxy_set_header Upgrade $http_upgrade; 99 | proxy_set_header Connection $connection_upgrade; 100 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 101 | proxy_set_header X-Real-IP $http_x_real_ip; 102 | } 103 | 104 | location / { 105 | proxy_pass http://stf_app; 106 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 107 | proxy_set_header X-Real-IP $http_x_real_ip; 108 | } 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /ubuntu-app.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | if [ ! -n "$1" ] ;then 4 | hostname="127.0.0.1" 5 | else 6 | hostname="$1" 7 | fi 8 | echo "服务IP:${hostname}" 9 | 10 | echo "apt update......" 11 | apt update 12 | 13 | #安装 docker 14 | echo "检查Docker......" 15 | docker -v 16 | if [ $? -eq 0 ]; then 17 | echo "检查到Docker已安装!" 18 | else 19 | echo "安装docker环境..." 20 | curl -sSL https://get.docker.com/ | sh 21 | echo "安装docker环境...安装完成!" 22 | fi 23 | 24 | 25 | echo "启动 docker" 26 | service docker start 27 | 28 | echo "拉取image" 29 | docker pull openstf/stf:latest 30 | docker pull rethinkdb:2.3 31 | docker pull nginx:1.7.10 32 | 33 | echo "创建文件夹" 34 | mkdir rethinkdb_data 35 | mkdir storage 36 | chmod 777 storage 37 | 38 | #获取当前目录 39 | workdir=$(cd $(dirname $0); pwd) 40 | 41 | echo "停止现有容器" 42 | docker stop "stf-reaper" "triproxy-dev" "stf-processer" "triproxy-app" "storage-temp" "storage-image" "storage-apk" "stf-api" "websocket" "stf-auth" "stf-app" "some-rethink" "nginx" 43 | sleep 1 44 | 45 | echo "删除现有容器" 46 | docker rm -v "stf-reaper" "triproxy-dev" "stf-processer" "triproxy-app" "storage-temp" "storage-image" "storage-apk" "stf-api" "websocket" "stf-auth" "stf-app" "some-rethink" "nginx" 47 | sleep 1 48 | 49 | echo "下载nginx配置文件..." 50 | curl -sSL https://raw.githubusercontent.com/sunshine4me/dockerSTF/master/nginx.conf > nginx.conf 51 | 52 | echo "启动nginx" 53 | docker run -d --name nginx -v "${workdir}/nginx.conf:/etc/nginx/nginx.conf:ro" --net host nginx:1.7.10 nginx 54 | 55 | 56 | echo "启动 rethinkdb" 57 | docker run -d --name some-rethink -v "${workdir}/rethinkdb_data:/data" --net host rethinkdb:2.3 rethinkdb --cache-size 2048 --no-update-check 58 | sleep 3 59 | 60 | 61 | # 初始化数据表,只需要执行一次 62 | echo "rethinkdb init" 63 | docker run --rm --name stf-migrate --net host openstf/stf:latest stf migrate 64 | sleep 3 65 | 66 | echo "启动 stf app" 67 | docker run -d --name stf-app --net host -e "SECRET=YOUR_SESSION_SECRET_HERE" openstf/stf:latest stf app --port 7100 --auth-url http://${hostname}/auth/mock/ --websocket-url ws://${hostname}/ 68 | sleep 3 69 | 70 | echo "启动 stf auth-mock" 71 | docker run -d --name stf-auth --net host -e "SECRET=YOUR_SESSION_SECRET_HERE" openstf/stf:latest stf auth-mock --port 7101 --app-url http://${hostname}/ 72 | sleep 1 73 | 74 | echo "启动 stf websocket" 75 | docker run -d --name websocket --net host -e "SECRET=YOUR_SESSION_SECRET_HERE" openstf/stf:latest stf websocket --port 7102 --storage-url http://${hostname}/ --connect-sub tcp://127.0.0.1:7150 --connect-push tcp://127.0.0.1:7170 76 | sleep 1 77 | 78 | echo "启动 stf api" 79 | docker run -d --name stf-api --net host -e "SECRET=YOUR_SESSION_SECRET_HERE" openstf/stf:latest stf api --port 7103 --connect-sub tcp://127.0.0.1:7150 --connect-push tcp://127.0.0.1:7170 80 | sleep 1 81 | 82 | echo "启动 stf storage-plugin-apk" 83 | docker run -d --name storage-apk --net host openstf/stf:latest stf storage-plugin-apk --port 7104 --storage-url http://${hostname}/ 84 | sleep 1 85 | 86 | echo "启动 stf storage-plugin-image" 87 | docker run -d --name storage-image --net host openstf/stf:latest stf storage-plugin-image --port 7105 --storage-url http://${hostname}/ 88 | sleep 1 89 | 90 | echo "启动 stf storage-temp" 91 | docker run -d --name storage-temp --net host -v "${workdir}/storage:/data" openstf/stf:latest stf storage-temp --port 7106 --save-dir /data 92 | sleep 1 93 | 94 | echo "启动 stf triproxy app" 95 | docker run -d --name triproxy-app --net host openstf/stf:latest stf triproxy app --bind-pub "tcp://*:7150" --bind-dealer "tcp://*:7160" --bind-pull "tcp://*:7170" 96 | sleep 1 97 | 98 | echo "启动 stf processor" 99 | docker run -d --name stf-processer --net host openstf/stf:latest stf processor stf-processer --connect-app-dealer tcp://127.0.0.1:7160 --connect-dev-dealer tcp://127.0.0.1:7260 100 | sleep 1 101 | 102 | echo "启动 stf triproxy dev" 103 | docker run -d --name triproxy-dev --net host openstf/stf:latest stf triproxy dev --bind-pub "tcp://*:7250" --bind-dealer "tcp://*:7260" --bind-pull "tcp://*:7270" 104 | sleep 1 105 | 106 | echo "启动 stf reaper dev" 107 | docker run -d --name stf-reaper --net host openstf/stf:latest stf reaper dev --connect-push tcp://127.0.0.1:7270 --connect-sub tcp://127.0.0.1:7150 --heartbeat-timeout 30000 108 | -------------------------------------------------------------------------------- /ubuntu-provider.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ ! -n "$1" ] ;then 4 | hostname="127.0.0.1" 5 | else 6 | hostname="$1" 7 | fi 8 | echo "服务IP:${hostname}" 9 | 10 | 11 | echo "apt update......" 12 | apt update 13 | 14 | #安装 docker 15 | echo "检查Docker......" 16 | docker -v 17 | if [ $? -eq 0 ]; then 18 | echo "检查到Docker已安装!" 19 | else 20 | echo "安装docker环境..." 21 | curl -sSL https://get.docker.com/ | sh 22 | echo "安装docker环境...安装完成!" 23 | fi 24 | 25 | echo "拉取必要的image" 26 | docker pull openstf/stf:latest 27 | docker pull sorccu/adb:latest 28 | 29 | 30 | 31 | echo "停止provider相关容器" 32 | docker stop "provider1" "adbd" 33 | sleep 1 34 | 35 | echo "删除provider相关容器" 36 | docker rm -v "provider1" "adbd" 37 | sleep 1 38 | 39 | echo "启动adbd" 40 | docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest 41 | sleep 3 42 | 43 | echo "启动stf provider" 44 | docker run -d --name provider1 --net host openstf/stf \ 45 | stf provider --name provider1 \ 46 | --connect-sub tcp://${hostname}:7250 \ 47 | --connect-push tcp://${hostname}:7270 \ 48 | --min-port=15000 --max-port=25000 --heartbeat-interval 20000 --allow-remote --no-cleanup \ 49 | --storage-url http://${hostname} --------------------------------------------------------------------------------