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
Release files for sekai-generator 1.3.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sekai_generator-1.3.11.tar.gz | 14.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sekai_generator-1.3.11-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.0 kB
Release files / sekai_generator-1.3.11.tar.gz
| Download URL | sekai_generator-1.3.11.tar.gz |
|---|---|
| Size | 14.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9561816657fa5b2ad195d75781fda650078896995a9fdfa82d219faf5c2255b5
|
|
BLAKE2b-256 checksum How to use checksums |
0f25fb3ad7b1664c29e4e8ab1011fdd5dc3c24be2d181f7e693b7959f2d129d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / sekai_generator-1.3.11-py3-none-any.whl
| Download URL | sekai_generator-1.3.11-py3-none-any.whl |
|---|---|
| Size | 16.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3f5458f9d77a99ac05907d808acf1ae0fbcf9d69d4190b9d8907ea37b93b477b
|
|
BLAKE2b-256 checksum How to use checksums |
64ff81425c017c6f5064323872f098f0b43d64a5e29d9ce15bafd357bc6a3057
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|