A production-ready toolkit for provisioning and operating secure network tunnels on Linux hosts.
- π― Unified Control Panel - Install, inspect, and remove tunnelling services
- π» CLI Interface - Colorful status output and command groups per service
- π Web Dashboard - AIOHTTP + Jinja2 powered dashboard with login
- π HTTPS Ready - Optional Let's Encrypt provisioning during install
- π¦ Packaged Templates - Reproducible deployments without network fetches
- π PyPI Ready - Complete packaging with entry points and documentation
- π§ Linux host with
systemdandiptables - π Python 3.9+ (CPython recommended)
- π Root/sudo privileges for system services and firewall rules
curl -fsSL https://raw.githubusercontent.com/zZedix/Shifter/main/scripts/install.sh -o install.sh
chmod +x install.sh
sudo ./install.sh# First-time credentials (run after installer finishes)
sudo SHIFTER_AUTH_FILE='/root/Shifter/config/auth.json' shifter-toolkit reset-credentials --generategit clone https://github.com/zZedix/Shifter.git
cd Shifter
pip install -e .# π Review available commands
sudo shifter-toolkit --help
# π Create or update WebUI credentials
sudo SHIFTER_AUTH_FILE='/root/Shifter/config/auth.json' shifter-toolkit reset-credentials --generate
# π Inspect the stored credential hash (optional)
sudo cat /root/Shifter/config/auth.json
# π Inspect the health of all managed services
sudo shifter-toolkit status
β οΈ Note: Each sub-command validates that it is executed with root privileges before touching the system. π‘ Installer tip: The installer writes a unique path slug to~/Shifter/shifter-webui.basepath. After the install, runsudo SHIFTER_AUTH_FILE='/root/Shifter/config/auth.json' shifter-toolkit reset-credentials --generateto create your login and store the hash in~/Shifter/config/auth.json. Combine the base path with your host/port (e.g.,https://server:2063$(cat ~/Shifter/shifter-webui.basepath)) to reach the dashboard.
| π― Group | π» Example | π Description |
|---|---|---|
serve |
sudo shifter-toolkit serve --host 0.0.0.0 --port 2063 --base-path /admin-panel |
Launch the AIOHTTP dashboard |
status |
sudo shifter-toolkit status haproxy |
Show active/enabled state plus parsed configuration details |
gost |
sudo shifter-toolkit gost install --domain example.com --port 8080 |
Manage GOST tunnel deployment and forwarding rules |
haproxy |
sudo shifter-toolkit haproxy add --relay-port 8081 --main-server-ip 1.2.3.4 --main-server-port 443 |
Configure HAProxy frontends/backends |
xray |
sudo shifter-toolkit xray add --address example.com --port 8443 |
Maintain Xray Dokodemo-door inbounds |
iptables |
sudo shifter-toolkit iptables install --main-server-ip 203.0.113.10 --ports 80,443 |
Persist and inspect port-forwarding firewall rules |
Run sudo shifter-toolkit <group> --help for all arguments on a specific command family.
Shifter ships with a lightweight dashboard that mirrors the CLI capabilities.
- π Templates live inside the package (
shifter/web/templates) so deployments don't rely on external assets - π Generate credentials with
sudo SHIFTER_AUTH_FILE='/root/Shifter/config/auth.json' shifter-toolkit reset-credentials --generateafter installing (hash stored securely in~/Shifter/config/auth.json) - π Reset credentials any time with
sudo SHIFTER_AUTH_FILE='/root/Shifter/config/auth.json' shifter-toolkit reset-credentials(supports prompts or random generation) - π§ Sessions are backed by encrypted cookiesβset
AIOHTTP_SECRET_KEYto persist the cookie key across restarts - π Optional HTTPS provisioning via Let's Encrypt when the installer runs (interactive prompt or
SHIFTER_ENABLE_HTTPS,SHIFTER_DOMAIN,SHIFTER_CONTACT_EMAIL)
Installer commands render configuration templates that are bundled with the package:
- π§
gost.servicefor systemd - βοΈ
haproxy.cfgwith placeholder tokens - π
config.jsonbase configuration for Xray
Use importlib.resources helpers in shifter.services.config if you need custom automation that reuses these bundled files.
# π¦ Install runtime dependencies
python -m pip install --upgrade pip setuptools wheel
python -m pip install -r requirements.txt
# π§ Install the project in editable mode
python -m pip install -e .
# π Optional: run the CLI locally
sudo python -m shifter statusWe recommend developing inside a virtual environment to isolate dependencies.
Extended guides are available under docs/, covering deployment patterns, CLI details, and release workflows.
Shifter Toolkit is released under the MIT License.
If you find Shifter Toolkit useful and want to support its development, consider making a donation:
- Bitcoin (BTC):
bc1q637gahjssmv9g3903j88tn6uyy0w2pwuvsp5k0 - Ethereum (ETH):
0x5B2eE8970E3B233F79D8c765E75f0705278098a0 - Tron (TRX):
TSAsosG9oHMAjAr3JxPQStj32uAgAUmMp3 - USDT (BEP20):
0x5B2eE8970E3B233F79D8c765E75f0705278098a0 - TON:
UQA-95WAUn_8pig7rsA9mqnuM5juEswKONSlu-jkbUBUhku6
- β Star the repository if you find it useful
- π Report bugs and suggest improvements
- π Improve documentation and translations
- π Share with others who might benefit