├── Dockerfile ├── README.md ├── rinetd_bbr ├── rinetd_bbr_powered ├── rinetd_pcc └── start.sh /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:latest 2 | 3 | MAINTAINER letssudormrf 4 | 5 | 6 | #Download applications 7 | RUN apt-get update \ 8 | && apt-get install -y libsodium-dev python git ca-certificates iptables --no-install-recommends 9 | 10 | 11 | #Make ssr-mudb 12 | ENV PORT="443" \ 13 | PASSWORD="ssr-bbr-docker" \ 14 | METHOD="none" \ 15 | PROTOCOL="auth_chain_a" \ 16 | OBFS="tls1.2_ticket_auth" 17 | 18 | RUN git clone -b akkariiin/master https://github.com/letssudormrf/shadowsocksr.git \ 19 | && cd shadowsocksr \ 20 | && bash initcfg.sh \ 21 | && sed -i 's/sspanelv2/mudbjson/' userapiconfig.py \ 22 | && python mujson_mgr.py -a -u MUDB -p ${PORT} -k ${PASSWORD} -m ${METHOD} -O ${PROTOCOL} -o ${OBFS} -G "#" 23 | 24 | 25 | #Execution environment 26 | COPY rinetd_bbr rinetd_bbr_powered rinetd_pcc start.sh /root/ 27 | RUN chmod a+x /root/rinetd_bbr /root/rinetd_bbr_powered /root/rinetd_pcc /root/start.sh 28 | WORKDIR /shadowsocksr 29 | ENTRYPOINT ["/root/start.sh"] 30 | CMD /root/start.sh 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SSR-BBR-DOCKER 2 | ================== 3 | 4 | Quick Start 5 | ----------- 6 | 7 | This image uses Shadowsocksr multi-user feature to run the multi-user on one port containers with 3 types(BBR/BBR_POWERED/PCC) tcp congestion. 8 | 9 | docker run --privileged -d -p 443:443/tcp -p 443:443/udp --name ssr-bbr-docker letssudormrf/ssr-bbr-docker 10 | 11 | Also it can specify the vaule of "-p PORT -k PASSWORD -m METHOD -O PROTOCOL -o OBFS" to run the container. 12 | 13 | docker run --privileged -d -p 465:465/tcp -p 465:465/udp --name ssr-bbr-docker letssudormrf/ssr-bbr-docker -p 465 -k password -m aes-128-ctr -O auth_aes128_sha1 -o http_post 14 | 15 | Keep the Docker container running automatically after starting, add **--restart always**. 16 | 17 | docker run --restart always --privileged -d -p 443:443/tcp -p 443:443/udp --name ssr-bbr-docker letssudormrf/ssr-bbr-docker 18 | 19 | **important:** For using the feature of multi-user on one port, please set up the multi-user's port greater than 65535 20 | 21 | To add multi-user imformation 22 | 23 | docker exec -it ssr-bbr-docker python mujson_mgr.py -a -u USER1_ID -p 100000 -k USER1_PW 24 | 25 | To edit multi-user imformation 26 | 27 | docker exec -it ssr-bbr-docker python mujson_mgr.py -e -u USER1_ID -p 100000 -k USER1_PW 28 | 29 | To delete multi-user imformation 30 | 31 | docker exec -it ssr-bbr-docker python mujson_mgr.py -d -u USER1_ID 32 | 33 | To list multi-user imformation 34 | 35 | docker exec -it ssr-bbr-docker python mujson_mgr.py -l -u USER1_ID 36 | 37 | To limit device connection number(2 devices) 38 | 39 | docker exec -it ssr-bbr-docker python mujson_mgr.py -e -u USER1_ID -G 2 40 | 41 | To limit transfer bandwidth(1 GB) 42 | 43 | docker exec -it ssr-bbr-docker python mujson_mgr.py -e -u USER1_ID -t 1 44 | 45 | Advanced Usage 46 | ----------- 47 | 48 | To backup the mudb.json configuration file to local mudb.json.bak 49 | 50 | docker exec -i ssr-bbr-docker cat mudb.json > ./mudb.json.bak 51 | 52 | To recovery the mudb.json configuration file from local mudb.json.bak 53 | 54 | docker exec -i ssr-bbr-docker /bin/sh -c "cat > mudb.json" < ./mudb.json.bak 55 | 56 | To redirect the authentication failed connecting to others ip or website (IP:1.2.3.4 port:80) 57 | 58 | docker exec -it ssr-bbr-docker sed -i "s/^.*\"redirect\":.*$/ \"redirect\": \"1.2.3.4:80\",/" user-config.json 59 | docker restart ssr-bbr-docker 60 | 61 | To change to the others congestion, then restart the container (Default:BBR_POWERED) 62 | 63 | docker exec -it ssr-bbr-docker sed -i 's/^\/root\/rinetd_.*/\/root\/rinetd_bbr -f -c \/root\/rinetd.conf raw eth0 \&/' start.sh 64 | 65 | docker exec -it ssr-bbr-docker sed -i 's/^\/root\/rinetd_.*/\/root\/rinetd_bbr_powered -f -c \/root\/rinetd.conf raw eth0 \&/' start.sh 66 | 67 | docker exec -it ssr-bbr-docker sed -i 's/^\/root\/rinetd_.*/\/root\/rinetd_pcc -f -c \/root\/rinetd.conf raw eth0 \&/' start.sh 68 | 69 | docker restart ssr-bbr-docker 70 | 71 | IPv6 Connection 72 | ----------- 73 | **Support for IPv6:** (untested) 74 | Using NDP proxying 75 | 76 | 77 | Simple command sample(2001:db8::c009 is docker container global ipv6 address): 78 | 79 | sysctl -w net.ipv6.conf.eth0.proxy_ndp=1 80 | ip -6 neigh add proxy 2001:db8::c009 dev eth0 81 | 82 | Also use the following command for changing to IPv6 DNS, then restart the container. 83 | 84 | docker exec -it ssr-bbr-docker sed -i 's/"dns_ipv6": false/"dns_ipv6": true/' user-config.json 85 | docker restart ssr-bbr-docker 86 | 87 | More Options 88 | ----------- 89 | 90 | ``` 91 | usage: python mujson_manage.py -a|-d|-e|-c|-l [OPTION]... 92 | 93 | Actions: 94 | -a ADD add/edit a user 95 | -d DELETE delete a user 96 | -e EDIT edit a user 97 | -c CLEAR set u/d to zero 98 | -l LIST display a user infomation or all users infomation 99 | 100 | Options: 101 | -u USER the user name 102 | -p PORT server port (only this option must be set if add a user) 103 | -k PASSWORD password 104 | -m METHOD encryption method, default: aes-128-ctr 105 | -O PROTOCOL protocol plugin, default: auth_aes128_md5 106 | -o OBFS obfs plugin, default: tls1.2_ticket_auth_compatible 107 | -G PROTOCOL_PARAM protocol plugin param 108 | -g OBFS_PARAM obfs plugin param 109 | -t TRANSFER max transfer for G bytes, default: 8388608 (8 PB or 8192 TB) 110 | -f FORBID set forbidden ports. Example (ban 1~79 and 81~100): -f "1-79,81-100" 111 | -i MUID set sub id to display (only work with -l) 112 | 113 | General options: 114 | -h, --help show this help message and exit 115 | ``` 116 | -------------------------------------------------------------------------------- /rinetd_bbr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letssudormrf/ssr-bbr-docker/e86530a8aa05d88c4663c4819afbc6deaf642ddf/rinetd_bbr -------------------------------------------------------------------------------- /rinetd_bbr_powered: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letssudormrf/ssr-bbr-docker/e86530a8aa05d88c4663c4819afbc6deaf642ddf/rinetd_bbr_powered -------------------------------------------------------------------------------- /rinetd_pcc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/letssudormrf/ssr-bbr-docker/e86530a8aa05d88c4663c4819afbc6deaf642ddf/rinetd_pcc -------------------------------------------------------------------------------- /start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ $# -gt 0 ]; 4 | then 5 | while getopts "p:k:m:O:o:" arg; 6 | do 7 | case $arg in 8 | p) 9 | sed -i "3,12s/^.*\"port\":.*$/ \"port\": ${OPTARG},/" mudb.json 10 | ;; 11 | k) 12 | sed -i "3,12s/^.*\"passwd\":.*$/ \"passwd\": \"${OPTARG}\",/" mudb.json 13 | ;; 14 | m) 15 | sed -i "3,12s/^.*\"method\":.*$/ \"method\": \"${OPTARG}\",/" mudb.json 16 | ;; 17 | O) 18 | sed -i "3,12s/^.*\"protocol\":.*$/ \"protocol\": \"${OPTARG}\",/" mudb.json 19 | ;; 20 | o) 21 | sed -i "3,12s/^.*\"obfs\":.*$/ \"obfs\": \"${OPTARG}\",/" mudb.json 22 | ;; 23 | esac 24 | done 25 | fi 26 | cat mudb.json | awk '$1=="\"port\":" {print $NF+0}' | awk '$NF<=65535' > /root/mudb_port.txt 27 | 28 | echo -n "" > /root/rinetd.conf 29 | while read line 30 | do 31 | echo "0.0.0.0 $line 0.0.0.0 $line" >> /root/rinetd.conf 32 | done < /root/mudb_port.txt 33 | 34 | /root/rinetd_bbr_powered -f -c /root/rinetd.conf raw eth0 & 35 | python /shadowsocksr/server.py m>> ssserver.log 2>&1 36 | --------------------------------------------------------------------------------