CLI generator for sing-box configuration files
Project description
Quickstart
Install the CLI:
pip install sekai-generator
Generate configs (local/test mode uses bundled fixtures):
sekai-generator --local --debug --start-port 8820 --tls-server-name mozilla.org --obfs-password password123
Outputs (in test mode):
test_data/inbounds.jsonctest_data/outbounds.jsonctest_data/users.jsonc
Manual usage and prerequisites
Download sing-box binary from GitHub releases
VERSION=1.12.14 # Replace with the desired version
ARCH=$(uname -m)
if [ "$ARCH" = "x86_64" ]; then
TARGETARCH=amd64
elif [ "$ARCH" = "aarch64" ]; then
TARGETARCH=arm64
else
echo "Unsupported architecture: $ARCH"
exit 1
fi
curl -LJ "https://github.com/SagerNet/sing-box/releases/download/v${VERSION}/sing-box-${VERSION}-linux-${ARCH}.tar.gz" -o /tmp/sing-box.tar.gz
tar -xz -C ./ -f /tmp/sing-box.tar.gz --strip-components=1 && rm /tmp/sing-box.tar.gz
First think about two domain names for TLS handshake with TLS1.3 support and for ECH. I will use
mozilla.orgfor TLS handshake server name andgoogle.comfor ECH domain since those are not blocked here, in Myanmar.
export TLS_SERVER_NAME=mozilla.org
export ECH_DOMAIN=google.com
Then generate self-signed certificate and private key:
mkdir -p data/certs && \
openssl ecparam -genkey -name prime256v1 -out data/certs/private.key && \
openssl req -new -x509 -days 36500 -key data/certs/private.key -out data/certs/certificate.crt \
-subj "/CN=${TLS_SERVER_NAME}" \
-addext "subjectAltName=DNS:${TLS_SERVER_NAME}"
Generate Reality keypair:
REALITY_KEYPAIR=$(./sing-box generate reality-keypair)
AUTO_REALITY_PRIVATE=$(awk '/PrivateKey/{print $NF}' <<< "$REALITY_KEYPAIR")
AUTO_REALITY_PUBLIC=$(awk '/PublicKey/{print $NF}' <<< "$REALITY_KEYPAIR")
REALITY_PRIVATE=${CUSTOM_REALITY_PRIVATE:-$AUTO_REALITY_PRIVATE}
REALITY_PUBLIC=${CUSTOM_REALITY_PUBLIC:-$AUTO_REALITY_PUBLIC}
printf '%s\n' "$REALITY_PRIVATE" > data/certs/reality_private.key
printf '%s\n' "$REALITY_PUBLIC" > data/certs/reality_public.key
Generate ECH keypair:
ECH_KEYPAIR=$(./sing-box generate ech-keypair ${ECH_DOMAIN})
AUTO_ECH_PUBLIC=$(sed -n '/-----BEGIN ECH CONFIGS-----/,/-----END ECH CONFIGS-----/p' <<< "$ECH_KEYPAIR")
AUTO_ECH_PRIVATE=$(sed -n '/-----BEGIN ECH KEYS-----/,/-----END ECH KEYS-----/p' <<< "$ECH_KEYPAIR")
ECH_PRIVATE=${CUSTOM_ECH_PRIVATE:-$AUTO_ECH_PRIVATE}
ECH_PUBLIC=${CUSTOM_ECH_PUBLIC:-$AUTO_ECH_PUBLIC}
printf '%s\n' "$ECH_PRIVATE" > data/certs/ech.key
printf '%s\n' "$ECH_PUBLIC" > data/certs/ech.config
Add users to users.yaml
- A user must have a unique name, password, and UUID.
- It's recommended to use a strong password and a randomly generated UUID.
- Generate UUID (just in case you don't have one):
UUID=$(uuidgen)
echo "Generated UUID: $UUID"
Install dependencies:
python3 -m pip install sekai-generator
Run generator:
sekai-generator \
--start-port 8820 \
--tls-server-name $TLS_SERVER_NAME \
--obfs_password "your_obfs_password"
Check out app.py for more options and details.
Run sing-box with the generated configuration:
./sing-box run -c config.jsonc
Run Tests:
pytest -vv
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sekai_generator-1.2.0.tar.gz.
File metadata
- Download URL: sekai_generator-1.2.0.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2f2615e4bc3e6457b10989f92499bef1c6d7c8af57d04605d61a47adba4f075
|
|
| MD5 |
99752c8d7bb93652ca8eeae822ca3980
|
|
| BLAKE2b-256 |
953b3202787fd6fefbd22eb7263432b4e97ddc019c730b77b858041258a10540
|
File details
Details for the file sekai_generator-1.2.0-py3-none-any.whl.
File metadata
- Download URL: sekai_generator-1.2.0-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18f7cb370231e6af643859467675f325971ff6bc580344198694fd9c0e8b881c
|
|
| MD5 |
c34c0ed0d777f73c5c6a7305816a8a75
|
|
| BLAKE2b-256 |
9e4f8df5ae6be3e371f39043b97832104988a784bb284960624128c7ce588273
|