Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
5acb49e
feat: migrate to apt-get and setup python manager
moham96 Jun 9, 2026
41fb892
feat: implement phase 2 core orchestration engine
moham96 Jun 9, 2026
da9f901
feat: migrate xray and singbox installation to python
moham96 Jun 9, 2026
88fa99e
fix: overwrite existing files during singbox extraction
moham96 Jun 9, 2026
595981f
feat: migrate nginx, haproxy, and acme.sh installation to python
moham96 Jun 9, 2026
e5db650
fix: resolve python module imports with dots in module name
moham96 Jun 9, 2026
fdd5a5e
feat: implement python interactive menu and argparse cli
moham96 Jun 9, 2026
c943ecc
fix: execute manager as a module to resolve absolute imports
moham96 Jun 9, 2026
3531a35
feat: implement phase 5 - dynamic paths, migration tool, deprecate le…
moham96 Jun 10, 2026
50cbe36
test: add automated unit tests for python orchestration logic
moham96 Jun 12, 2026
20d2d79
refactor: delete deprecated legacy bash entrypoints
moham96 Jun 12, 2026
565f572
feat(paths): add VENV_DIR and CURRENT_JSON constants
moham96 Jun 12, 2026
8192b8b
feat(shell): forward env and stdout kwargs to subprocess.run
moham96 Jun 12, 2026
e6dfbc4
feat(config): port hconfig() helper for panel config lookup
moham96 Jun 12, 2026
91fd9ad
feat(template): add Jinja renderer for module installers
moham96 Jun 12, 2026
eb15607
feat(mysql): migrate MariaDB install to python module
moham96 Jun 12, 2026
06bdd38
feat(redis): migrate redis install to python module
moham96 Jun 12, 2026
dede4f8
feat(hiddify-panel): migrate panel install to python module
moham96 Jun 12, 2026
2da94b6
test: unit tests for template renderer and config loader
moham96 Jun 12, 2026
6d995ea
chore: gitignore python caches and virtualenvs
moham96 Jun 12, 2026
4df36d6
feat(speedtest): migrate speedtest install to python module
moham96 Jun 12, 2026
16cbe27
feat(ssh): migrate ssh-liberty-bridge install to python module
moham96 Jun 12, 2026
dba9952
feat(dnstt): migrate dnstt install to python module
moham96 Jun 12, 2026
14de6b9
fix(installer): resolve module path via basename
moham96 Jun 12, 2026
dff7479
feat(hiddify-cli): migrate HiddifyCli install to python module
moham96 Jun 12, 2026
d62720f
feat(ssfaketls): migrate ss-faketls install to python module
moham96 Jun 12, 2026
4c6aac7
feat(wireguard): migrate wireguard install to python module
moham96 Jun 12, 2026
69e203b
feat(warp): migrate warp install to python module
moham96 Jun 12, 2026
e15290a
feat(telegram): migrate telegram proxy install to python module
moham96 Jun 12, 2026
49fd3b2
fix(installer): per-module failures shouldn't abort the install loop
moham96 Jun 13, 2026
6b70e76
fix(common): make hiddify_daily cron migration idempotent
moham96 Jun 13, 2026
1277529
feat(common): migrate common bootstrap to python module
moham96 Jun 13, 2026
aca9c65
fix(init): install jinja2 in the venv
moham96 Jun 13, 2026
dbf717e
fix(init): install panel runtime deps (bjoern, hiddifypanel, json5)
moham96 Jun 13, 2026
658a72a
fix(hiddify-panel): shell to bash run.sh for app.cfg + init-db
moham96 Jun 13, 2026
24f526c
fix(manager): render *.j2 tree after panel comes up
moham96 Jun 13, 2026
e4af75c
fix(init,config): build deps for bjoern/mysqlclient + atomic current.…
moham96 Jun 13, 2026
e0fe2fe
fix(config): run hiddifypanel all-configs in the panel directory
moham96 Jun 13, 2026
48b1b30
fix(nginx): chown tree to nginx + start the service
moham96 Jun 13, 2026
660eb9d
fix(haproxy): chmod rendered cfgs + start the service
moham96 Jun 13, 2026
4f4e3b9
fix(hiddify-cli): point SUB_LINK at the local panel
moham96 Jun 13, 2026
b0d311a
fix(manager): generate self-signed certs for every domain
moham96 Jun 13, 2026
bb77fa7
fix(template): add singbox/configs + template-dir to loader paths
moham96 Jun 13, 2026
f176536
refactor: delete dead install.sh/run.sh for top-level modules
moham96 Jun 13, 2026
c41adc2
refactor: delete dead install.sh/run.sh for other/* modules
moham96 Jun 13, 2026
ecaa4a9
refactor: delete legacy jinja chain
moham96 Jun 13, 2026
6050df8
feat(hiddify-panel): add helpers for app.cfg + cred lookup
moham96 Jun 13, 2026
84d875c
feat(hiddify-panel): port run.sh into install() (no more bash hand-off)
moham96 Jun 13, 2026
04363d7
refactor: delete hiddify-panel/run.sh
moham96 Jun 13, 2026
fb20846
feat(warp): port wgcf register/update/generate flow to python
moham96 Jun 13, 2026
1ca5ec3
refactor: delete warp wireguard run.sh.j2
moham96 Jun 13, 2026
e5b0547
fix(warp): wait for wg-quick to install routes before probing
moham96 Jun 13, 2026
ada1cd7
fix(warp): keep v4 entry when commenting out v6 in Address/DNS
moham96 Jun 13, 2026
ab87a2a
feat(telegram): port python + tgo backend installs to python
moham96 Jun 13, 2026
5092d31
refactor: delete telegram backend bash scripts
moham96 Jun 13, 2026
f94fb14
feat(wireguard): port install.sh.j2 + run.sh.j2 to python
moham96 Jun 13, 2026
cf60d2f
refactor: delete wireguard bash scripts and helpers
moham96 Jun 13, 2026
4437ffa
refactor: delete migrated install.sh for hiddify-panel + common
moham96 Jun 13, 2026
0f2c597
refactor: sweep dead bash from other/warp
moham96 Jun 13, 2026
5f2e03c
refactor: sweep dead bash from other/{dnstt,hiddify-cli,telegram}
moham96 Jun 13, 2026
8bd5c9f
feat(firewall): add iptables helpers (allow_port, remove_port, save)
moham96 Jun 13, 2026
f1ed5d9
feat(common): port run.sh.j2 body into apply_runtime_config
moham96 Jun 13, 2026
0820f5d
fix(manager): apply common.runtime_config after render + certs
moham96 Jun 13, 2026
c08068e
refactor: delete common/run.sh.j2
moham96 Jun 13, 2026
7fb3df3
feat(panel_installer): port hiddify_installer.sh::update_panel
moham96 Jun 13, 2026
fadea01
feat(manager): wire ./init.sh update [mode] into the orchestrator
moham96 Jun 13, 2026
9636d32
refactor: delete update.sh + apply_configs.sh, route menu update thro…
moham96 Jun 13, 2026
1c55a1f
refactor: actually delete apply_configs.sh
moham96 Jun 13, 2026
b93c83d
refactor: delete other/deprecated/ tree
moham96 Jun 13, 2026
c5d9f3e
feat(services): port restart.sh + status.sh to python
moham96 Jun 13, 2026
0e25bbb
fix(manager,menu): route status + restart through services module
moham96 Jun 13, 2026
b06d073
refactor: delete restart.sh + status.sh, fix remaining menu refs
moham96 Jun 13, 2026
0e1a033
feat(certs): add cryptography-based self-signed cert helper
moham96 Jun 13, 2026
a7502b7
fix(manager): generate self-signed certs via cryptography (no bash)
moham96 Jun 13, 2026
5cb8f3b
refactor: delete acme.sh/generate_self_signed_cert.sh
moham96 Jun 13, 2026
8aaf0ca
feat(cert_issuer): port cert_utils.sh::get_cert orchestration
moham96 Jun 13, 2026
3575f4e
fix(get_cert): replace shim contents with python module dispatch
moham96 Jun 13, 2026
baad8cb
refactor: delete acme.sh/cert_utils.sh
moham96 Jun 13, 2026
6ebf139
refactor(utils.sh): delete 9 dead functions
moham96 Jun 13, 2026
265797f
refactor(utils.sh): delete vercomp (transitively dead)
moham96 Jun 13, 2026
d460020
fix(template): re-emit .json output as strict JSON via json5
moham96 Jun 13, 2026
36e2293
fix(dnstt): respect hconfigs['dnstt_enable']; stop unit when disabled
moham96 Jun 13, 2026
c48f4c5
fix(manager): generate certs before rendering templates
moham96 Jun 13, 2026
46248ab
fix(ssh): gate ssh-liberty-bridge install on hconfigs['ssh_server_ena…
moham96 Jun 13, 2026
b73c888
fix(speedtest): gate blob generation on hconfigs['speed_test']
moham96 Jun 13, 2026
27b848e
fix(ssfaketls): gate on hconfigs['ssfaketls_enable']
moham96 Jun 13, 2026
867f873
fix(hiddify-cli): gate on hconfigs['hiddifycli_enable']
moham96 Jun 13, 2026
751b718
fix(warp): gate on hconfigs['warp_mode'] != 'disable'
moham96 Jun 13, 2026
2ade4f3
refactor: delete 5 dead bash files
moham96 Jun 13, 2026
8397f2f
feat(uninstall): port uninstall.sh to python
moham96 Jun 13, 2026
9494b6a
refactor: inline nginx/pre-start.sh into the systemd unit
moham96 Jun 13, 2026
faddce3
feat(short_link): port add2shortlink.sh to python
moham96 Jun 13, 2026
d152538
feat(update_usage): port update_usage.sh to python
moham96 Jun 13, 2026
0c2111e
refactor: delete orphan bash scripts and unused backend dirs
moham96 Jun 13, 2026
a05c346
refactor: inline xray/pre-start.sh into the systemd unit
moham96 Jun 13, 2026
25e7f7e
feat(remote_assistant): port add/remove_remote_assistant.sh to python
moham96 Jun 14, 2026
94289ce
feat(daily_actions): port daily cert refresh; fix broken cron
moham96 Jun 14, 2026
f3dd937
refactor: delete common/downgrade.sh (dead + broken)
moham96 Jun 14, 2026
2ffb229
feat(cert_issuer): inline prepare_acme.sh; restart nginx only when co…
moham96 Jun 14, 2026
374ef8d
fix(docker-init): point at the python orchestrator
moham96 Jun 14, 2026
20836da
feat(common): close last hiddify_installer.sh parity gaps
moham96 Jun 14, 2026
81a41ad
feat(manager_updater): port hiddify_installer.sh::update_from_github
moham96 Jun 14, 2026
12a3af6
refactor: bypass hiddify_installer.sh; delete the legacy bootstrap chain
moham96 Jun 14, 2026
5b32ee5
refactor: delete common/utils.sh (zero live callers)
moham96 Jun 14, 2026
87c400d
fix(singbox,xray): enable + restart the systemd unit after install
moham96 Jun 14, 2026
731b52c
fix(shell,services): add quiet= flag; replace status table with rich
moham96 Jun 14, 2026
317b6d1
feat(menu): fix admin link, browsable logs, keyboard shortcuts
moham96 Jun 14, 2026
b6a98b2
fix(commander): restore the 5 .sh shims commander.py dispatches to
moham96 Jun 14, 2026
39e7d6c
fix(xray,singbox): un-comment log file redirects so the panel can rea…
moham96 Jun 14, 2026
42d6807
fix(init): write log/system/<action>.log so the panel can live-tail
moham96 Jun 14, 2026
6a8d974
feat(progress): emit panel-parseable markers in install/update/apply
moham96 Jun 14, 2026
75564e3
fix(common): import VENV_DIR (NameError in _write_cron_entries) + pru…
moham96 Jun 14, 2026
bc61342
fix(cert): fetch real certs on install/apply (port acme.sh/run.sh loop)
moham96 Jun 14, 2026
22c5b76
fix(cert,firewall): cert fetch ordering + resilience + iptables-resto…
moham96 Jun 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
log
dump.rdb
hiddify_usages.json
docker-data
docker-data
__pycache__/
*.pyc
.venv/
.venv313/
42 changes: 42 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,48 @@ When you want to share Telegram proxy or Shadowsocks proxy through other program
</details>

## Installation and tutorials

### Quick Start (New Python-based Manager)

The new Python-based manager is the recommended way to install and manage Hiddify. It replaces the legacy Bash scripts (`install.sh`, `menu.sh`, `update.sh`).

```bash
# Clone the repository
git clone https://github.com/hiddify/Hiddify-Manager.git /opt/hiddify-manager
cd /opt/hiddify-manager

# Run init.sh — it will install Python 3.13, set up a virtualenv, and launch the manager
sudo bash init.sh
```

#### Available Commands

| Command | Description |
|---|---|
| `./init.sh` | Launch the interactive menu |
| `./init.sh install` | Run a full installation of all modules |
| `./init.sh update` | Update Hiddify-Manager |
| `./init.sh status` | Show system status |
| `./init.sh migrate` | Migrate data from a legacy installation |
| `./init.sh menu` | Launch the interactive menu |

#### Migrating from a Legacy Installation

If you have an existing installation at `/opt/hiddify-manager` (or `/opt/hiddify-server`), the migration tool will automatically detect it and copy your database, SSL certificates, acme.sh data, and configuration:

```bash
./init.sh migrate
```

For a custom legacy path:
```bash
python3 -m hiddify_manager.migrate --legacy-dir /path/to/old/install
```

Use `--dry-run` to preview changes without modifying anything.

### Tutorials

**Please find tutorial information on our website by clicking on image below.**

<div align="center">
Expand Down
149 changes: 0 additions & 149 deletions acme.sh/cert_utils.sh

This file was deleted.

3 changes: 0 additions & 3 deletions acme.sh/generate_self_signed_cert.sh

This file was deleted.

15 changes: 6 additions & 9 deletions acme.sh/get_cert.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
#!/bin/bash
cd $(dirname -- "$0")
source cert_utils.sh
#./lib/acme.sh --register-account -m my@example.com

get_cert $1

echo "cert installation is done."
sleep 2
stop_nginx_acme
# Thin shim: the real ACME orchestration lives in
# hiddify_manager.modules.cert_issuer. Kept as a .sh so commander.py
# (panel-invoked via sudoers) can keep its absolute-path Command enum
# without churning the panel side.
cd "$(dirname -- "$0")/.."
exec /opt/hiddify-manager/.venv313/bin/python -m hiddify_manager.modules.cert_issuer "$@"
23 changes: 0 additions & 23 deletions acme.sh/install.sh

This file was deleted.

5 changes: 0 additions & 5 deletions acme.sh/prepare_acme.sh

This file was deleted.

27 changes: 0 additions & 27 deletions acme.sh/run.sh

This file was deleted.

13 changes: 10 additions & 3 deletions apply_configs.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
#!/bin/bash
cd $(dirname -- "$0")
DO_NOT_INSTALL=true ./install.sh apply_configs $@
#DO_NOT_INSTALL=true ./install.sh
# Thin shim: panel hits /admin/actions/apply_configs which goes through
# commander.py apply -> this script. Real impl lives in
# hiddify_manager.manager.run_apply_configs.
#
# Log file (log/system/0-install.log, polled by the panel's
# admin_log_api) is written by init.sh itself, not here — that way the
# menu's "Reinstall" and a direct `./init.sh apply-configs` from the
# shell get the same log file the panel expects.
cd "$(dirname -- "$0")"
exec ./init.sh apply-configs
21 changes: 0 additions & 21 deletions common/add_remote_assistant.sh

This file was deleted.

12 changes: 0 additions & 12 deletions common/daily_actions.sh

This file was deleted.

18 changes: 0 additions & 18 deletions common/downgrade.sh

This file was deleted.

Loading