docs: improve Quick Start section - #6348
Conversation
Updated installation instructions to clarify methods for one-line installation, specific version installation, and development build installation.
|
|
||
| ```bash | ||
| bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) | ||
| curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh | sudo bash |
There was a problem hiding this comment.
🔴 The new "recommended" command silently turns every fresh install into an unattended, HTTP-only install.
install.sh treats a non-TTY stdin as unattended mode, and its own comment names this exact invocation:
Lines 43 to 47 in 0cde3b6
Piping makes fd 0 the pipe, so [[ ! -t 0 ]] is true → NONINTERACTIVE=1. The replaced bash <(curl -Ls …) form passed /dev/fd/63 as the script file and left stdin on the terminal, so it prompted.
The default that actually changes is SSL:
- unattended:
XUI_SSL_MODEunset →none | "") ssl_choice="4"— Skip SSL (install.sh#L828-L832), which setsSSL_SCHEME="http"at L982 - interactive: anything other than 1/3/4 →
ssl_choice="2", Let's Encrypt for the IP (install.sh#L839-L844)
So a user following the new README gets the admin panel on plain HTTP, and the Bind the panel to 127.0.0.1 only? opt-in (L990) is never offered. To be fair, the installer does print a loud warning in that branch (L975-L980) — the user is warned, just never asked.
It also contradicts the section two headings below, which this PR leaves unchanged and which defines piping as the cloud-init path:
Lines 105 to 110 in 0cde3b6
Secondly, this form cannot take a version tag at all: the script reads its tag from $1 (install.sh#L1757), and a piped bash has no positional parameters — it would need | sudo bash -s -- v3.4.0.
Suggest keeping bash <(curl -Ls …) as the recommended form and, if you want a pipe variant documented at all, putting it under Unattended install where its behaviour is already described.
| Alternative method | ||
| ```bash | ||
| bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v3.4.0 | ||
| <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) | ||
| ``` | ||
|
|
||
| To install the rolling **dev** build (latest per-commit pre-release from `main`, not a stable release), pass `dev-latest`: | ||
| Install a specific version | ||
|
|
||
| ```bash | ||
| <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v3.4.0 | ||
| ``` | ||
|
|
||
| Install the latest development build | ||
| ```bash | ||
| bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) dev-latest | ||
| <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) dev-latest | ||
| ``` |
There was a problem hiding this comment.
🔴 All three of these commands lost their leading bash and are no longer runnable. Lines 79, 85 and 90.
<(…) is not a command — bash expands the process substitution to a path like /dev/fd/63 and then tries to execve that pipe, which fails with bash: /dev/fd/63: Permission denied (exit 126). install.sh never runs, and the trailing v3.4.0 / dev-latest is just an argument to the non-command. Under sh/dash it is a syntax error outright.
The bash prefix was present on all three before this PR:
https://github.com/MHSanaei/3x-ui/blob/f727d0470e832c1a2c30d0e3d9e58fb52d15b81c/README.md#L71-L73
Combined with the pipe form above (which cannot accept a positional tag), this leaves no working documented way to install a pinned version or the dev build. These also drop the sudo that the recommended line uses, and install.sh hard-exits for a non-root user:
Lines 12 to 14 in 0cde3b6
Restoring bash on each of the three blocks fixes all of this, since bash <(…) v3.4.0 does pass $1 through correctly.
| <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v3.4.0 | ||
| ``` | ||
|
|
||
| Install the latest development build |
There was a problem hiding this comment.
🟡 The warning that dev-latest is not a stable release was dropped. The previous wording said "the rolling dev build (latest per-commit pre-release from main, not a stable release)"; "the latest development build" now reads like "the newest version", which invites people to run a per-commit pre-release in production. The installer itself warns about exactly this at install.sh#L1455-L1457.
| Install the latest development build | |
| Install the rolling **dev** build (latest per-commit pre-release from `main`, not a stable release): |
| After installation: | ||
|
|
||
| Run the command x-ui | ||
| The management menu will open | ||
| From there you can view/reset credentials, change port, path, manage SSL certificates, and more | ||
|
|
||
| Important: A random username, password, and access path are generated during installation. | ||
|
|
||
| Make sure to save them immediately. | ||
| Full documentation is available in the project Wiki. |
There was a problem hiding this comment.
🟡 This block renders worse than what it replaced, which cuts against the PR's stated goal of improving readability.
Three problems, all in these ten lines:
- Lines 95–97 have no list markers and no blank lines between them, so GFM soft-wraps them into one paragraph. Rendered, it reads: "Run the command x-ui The management menu will open From there you can view/reset credentials, change port, path, manage SSL certificates, and more". Same for lines 101–102.
x-uilost its backticks on line 95, so the command name is no longer distinguishable from prose.- The Wiki hyperlink became plain text on line 102 — the URL is gone entirely, and it appears nowhere else in the section. Previously:
README.md#L88-L89.
Suggested fix: make 95–97 a real numbered or bulleted list, restore the backticks on x-ui, and restore [project Wiki](https://github.com/MHSanaei/3x-ui/wiki) as a link on its own paragraph.
Code review2 🔴 / 4 🟡 / 0 🟣 The rewrite is well-intentioned, but it breaks the install commands it reformats. Three of the four blocks are no longer executable, and the one that is now installs the panel differently than the prose around it says. 🔴 Important
🟡 Nits
Coverage
|
Description
Improved the Quick Start section in the README to make it clearer and more user-friendly.
Changes:
curl ... | sudo bash) to the topWhy
The previous version had two installation methods without clearly indicating which one is preferred.
Also, new users often forget to save the randomly generated credentials.
This change should reduce confusion for first-time users.