SS サーバーセットアップ
このメモは、Linux VPS 上で最小限の Shadowsocks サーバーをセットアップする手順を記録したものです。コマンドはディストリビューションやパッケージのバージョンによって少し異なるため、本番環境の設定を変更する前に、サーバー上で名前やパスを確認してください。
1. サーバーを準備する
対応している Linux ディストリビューション、SSH アクセス、通常の sudo ユーザーがあるクリーンな VPS から始めます。
まずパッケージインデックスを更新します。
sudo apt update
sudo apt upgrade
サービスとファイアウォールの確認に使う基本ツールをインストールします。
sudo apt install curl vim ufw
サーバーのパブリック IP アドレスを確認します。
curl -4 ifconfig.me
2. Shadowsocks をインストールする
多くの Debian または Ubuntu システムでは、パッケージは shadowsocks-libev として利用できます。
sudo apt install shadowsocks-libev
ディストリビューションのリポジトリでパッケージが利用できない場合は、現在のリリース向けの公式パッケージソースまたはビルド手順を使用します。内容を確認していないランダムなインストールスクリプトは避けてください。
バイナリが存在することを確認します。
ss-server -h
3. サーバーを設定する
サーバー設定ファイルを作成または編集します。一般的なパスは次のとおりです。
sudo vim /etc/shadowsocks-libev/config.json
設定例:
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "replace-with-a-long-random-password",
"timeout": 300,
"method": "chacha20-ietf-poly1305",
"fast_open": false,
"mode": "tcp_and_udp"
}
長くランダムなパスワードを使用します。method の値は、インストール済みバージョンでサポートされているものにしてください。利用可能であれば、chacha20-ietf-poly1305 のような認証付き暗号方式が推奨されます。
必要であればローカルでパスワードを生成します。
openssl rand -base64 32
4. ファイアウォールを開く
ufw を使用する場合は、有効化する前に SSH を許可します。
sudo ufw allow OpenSSH
次に Shadowsocks のポートを許可します。config.json のポートと一致させてください。
sudo ufw allow 8388/tcp
sudo ufw allow 8388/udp
sudo ufw enable
sudo ufw status
VPS プロバイダーに別のファイアウォール管理画面がある場合は、そこでも同じ TCP および UDP ポートを開けてください。
5. サービスを起動して有効化する
サービス名はパッケージによって異なる場合があります。Debian と Ubuntu の shadowsocks-libev では、次を試します。
sudo systemctl enable shadowsocks-libev
sudo systemctl restart shadowsocks-libev
sudo systemctl status shadowsocks-libev
起動しない場合はログを確認します。
journalctl -u shadowsocks-libev --no-pager -n 100
サーバーが待ち受けていることを確認します。
sudo ss -lntup | grep 8388
6. クライアント設定
サーバーで使用したものと同じ値でクライアントを設定します。
- サーバーアドレス: VPS のパブリック IP またはドメイン名
- ポート:
8388、または設定したカスタムポート - パスワード: 生成したパスワード
- 暗号化方式:
chacha20-ietf-poly1305、またはconfig.json内の方式 - モード: クライアントが対応していれば TCP と UDP
ブラウザーまたはコマンドラインクライアントでテストします。接続に失敗する場合は、次の項目を順番に確認してください。
- サーバープロセスが実行されている。
- OS のファイアウォールと VPS プロバイダーのファイアウォールの両方でポートが開いている。
- クライアントの方式、パスワード、ポートがサーバー設定と完全に一致している。
- サーバーの IP アドレスが正しい。
- サーバーログに JSON 構文エラーやバインドエラーがない。
7. メンテナンスメモ
システムを最新の状態に保ちます。
sudo apt update
sudo apt upgrade
sudo systemctl restart shadowsocks-libev
config.json を変更した後は、再起動する前に JSON を検証します。
python3 -m json.tool /etc/shadowsocks-libev/config.json
その後、サービスを再起動します。
sudo systemctl restart shadowsocks-libev
セキュリティのため、パスワードの使い回しを避け、未使用のポートを閉じ、不要になった古いクライアントプロファイルを削除してください。
