Read "Streaming Systems" 1&2, Streaming 101 Read "F1, a distributed SQL database that scales" Read "Zanzibar, Google’s Consistent, Global Authorization System" Read "Spanner, Google's Globally-Distributed Database" Read "Designing Data-intensive applications" 12, The Future of Data Systems IOS development with Swift Read "Designing Data-intensive applications" 10&11, Batch and Stream Processing Read "Designing Data-intensive applications" 9, Consistency and Consensus Read "Designing Data-intensive applications" 8, Distributed System Troubles Read "Designing Data-intensive applications" 7, Transactions Read "Designing Data-intensive applications" 6, Partitioning Read "Designing Data-intensive applications" 5, Replication Read "Designing Data-intensive applications" 3&4, Storage, Retrieval, Encoding Read "Designing Data-intensive applications" 1&2, Foundation of Data Systems Three cases of binary search TAMU Operating System 2 Memory Management TAMU Operating System 1 Introduction Overview in cloud computing 2 TAMU Operating System 7 Virtualization TAMU Operating System 6 File System TAMU Operating System 5 I/O and Disk Management TAMU Operating System 4 Synchronization TAMU Operating System 3 Concurrency and Threading TAMU Computer Networks 5 Data Link Layer TAMU Computer Networks 4 Network Layer TAMU Computer Networks 3 Transport Layer TAMU Computer Networks 2 Application Layer TAMU Computer Networks 1 Introduction Overview in distributed systems and cloud computing 1 A well-optimized Union-Find implementation, in Java A heap implementation supporting deletion TAMU Advanced Algorithms 3, Maximum Bandwidth Path (Dijkstra, MST, Linear) TAMU Advanced Algorithms 2, B+ tree and Segment Intersection TAMU Advanced Algorithms 1, BST, 2-3 Tree and Heap TAMU AI, Searching problems Factorization Machine and Field-aware Factorization Machine for CTR prediction TAMU Neural Network 10 Information-Theoretic Models TAMU Neural Network 9 Principal Component Analysis TAMU Neural Network 8 Neurodynamics TAMU Neural Network 7 Self-Organizing Maps TAMU Neural Network 6 Deep Learning Overview TAMU Neural Network 5 Radial-Basis Function Networks TAMU Neural Network 4 Multi-Layer Perceptrons TAMU Neural Network 3 Single-Layer Perceptrons Princeton Algorithms P1W6 Hash Tables & Symbol Table Applications Stanford ML 11 Application Example Photo OCR Stanford ML 10 Large Scale Machine Learning Stanford ML 9 Anomaly Detection and Recommender Systems Stanford ML 8 Clustering & Principal Component Analysis Princeton Algorithms P1W5 Balanced Search Trees TAMU Neural Network 2 Learning Processes TAMU Neural Network 1 Introduction Stanford ML 7 Support Vector Machine Stanford ML 6 Evaluate Algorithms Princeton Algorithms P1W4 Priority Queues and Symbol Tables Stanford ML 5 Neural Networks Learning Princeton Algorithms P1W3 Mergesort and Quicksort Stanford ML 4 Neural Networks Basics Princeton Algorithms P1W2 Stack and Queue, Basic Sorts Stanford ML 3 Classification Problems Stanford ML 2 Multivariate Regression and Normal Equation Princeton Algorithms P1W1 Union and Find Stanford ML 1 Introduction and Parameter Learning

Deploy a shad0ws0cks server on VPS and enable BBR

2018-11-29

Overview

shad0ws0cks is a secure internet proxy with flexible encryption and it’s also easy to deploy. Note some words (including the links and commands) may contain some typos, you can correct them while using.

  1. Order a VPS.
  2. Install ss server
    • Many scripts online, you can also use the following simple instruction section.
    • Otherwise, bandwagon provides a automatic installation script.
      • Click “Go back” when it’s done.
  3. Set up your credentials.
    • Use this link if using bandwagon script.
    • Otherwise, set it up manually.
      1. Modify VPS root password.
      2. Create a config file as instructed below.
  4. Enable TCP BBR.
  5. Download GUI at https://github.com/shad0ws0cks.
    • macOS, Windows, iOS, Android, etc.

Simple ss installation

yum update

yum install gcc
yum install openssl-devel

wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
tar -jxvf Python-2.7.3.tar.bz2 
cd Python-2.7.3  
./configure
make all
make install 
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python 

Change the python version for yum

vi /usr/bin/yum

Change the headline from #!/usr/bin/python to #!/usr/bin/python2.6.6

cd
yum install python-setuptools
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
wget http://pypi.python.org/packages/source/d/distribute/distribute-0.6.10.tar.gz
tar zxvf distribute-0.6.10.tar.gz
cd distribute-0.6.10
python setup.py install
cd
easy_install pip
pip install shad0ws0cks

ss configuration

Create a new config file:

vi /etc/shad0ws0cks.json

Input following configurations, with your changes for xxx fields.

  • Some applications only support cfb encryption method.
  • Turn on fast_open to reduce latency only if you use linux 3.7+.
{
"server":"xxx.xx.x.xx",
"port_password":{
     "6666":"xxxxxxx",
     "7777":"xxxxxxx",
     "8888":"xxxxxxx",
     "9999":"xxxxxxx"
     },
"timeout":60,
"method":"aes-256-cfb",
"fast_open":true,
"workers":1
}

Auto start while starting the machine

Add ssserver -c /etc/shad0ws0cks.json -d start in /etc/rc.local.

Related commands:

ssserver -c /etc/shad0ws0cks.json -d start
ssserver -c /etc/shad0ws0cks.json -d stop
ssserver -c /etc/shad0ws0cks.json -d restart

Enable TCP BBR

echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Confirm it’s enabled by:

sudo sysctl net.ipv4.tcp_available_congestion_control
sudo sysctl -n net.ipv4.tcp_congestion_control
lsmod | grep bbr

Enable Dropbox sync

Go to the Dropbox’s Settings -> Preference -> Network -> Proxies.

  1. Set to Manual mode.
  2. Proxy type is SOCKS5.
  3. Server is localhost
    • Port 1086 for SSX-NG.
    • 1080 for SSX.

Enable Git over HTTPS

Use following command to do the job. You may need to change the port number (1086 in this case).

# set up global git proxy
git config --global http.proxy 'socks5://127.0.0.1:1086' 
git config --global https.proxy 'socks5://127.0.0.1:1086'

# check out current config
git config --global -l

# remove proxy settings
git config --global --unset http.proxy
git config --global --unset https.proxy

Git over HTTPS is recommended by Github. You can check out this post to avoid typing credentials every time.


Creative Commons License
Melon blog is created by melonskin. This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
© 2016-2019. All rights reserved by melonskin. Powered by Jekyll.