Installation
Quick install
Section titled “Quick install”curl -sSf https://getmeridian.org/install.sh | bashThis script:
- Installs uv if it is not present, with pipx or pip as fallbacks. The uv installer is pinned by version and checked against its SHA-256 before it runs.
- Installs
meridian-vpnfrom PyPI (setMERIDIAN_VERSION=4.0.0to install one exact release) - Adds the tool directory to your shell PATH when needed
- Creates
/usr/local/bin/meridianonly when passwordless sudo is available
Verified install
Section titled “Verified install”Every GitHub release attaches install.sh and its SHA256SUMS. To check the script before running it, download both from the release and verify:
VERSION=4.0.0curl -fLO https://github.com/getmeridian/meridian/releases/download/v$VERSION/install.shcurl -fLO https://github.com/getmeridian/meridian/releases/download/v$VERSION/SHA256SUMSsha256sum -c SHA256SUMS # macOS: shasum -a 256 -c SHA256SUMSless install.sh # optional: read itMERIDIAN_VERSION=$VERSION bash install.shTo check the copy at getmeridian.org instead, compare curl -sSf https://getmeridian.org/install.sh | sha256sum with the release’s SHA256SUMS; they match unless the script changed after that release. When the newest release is a beta, the website’s copy installs that beta by default, and that one line makes its checksum differ from the release asset.
Manual install
Section titled “Manual install”With uv (recommended):
uv tool install meridian-vpnWith pipx:
pipx install meridian-vpnUpdate
Section titled “Update”meridian updateMeridian checks PyPI now and then before interactive commands and prints a notice when a newer version exists. It never installs updates on its own. meridian update upgrades through whichever package manager installed it and confirms that the active meridian command reports the new version. Set MERIDIAN_DISABLE_UPDATE_CHECK=1 to turn off the background check in automation.
Updating the CLI changes nothing on your servers. If a server works, there is no rush; read the release notes, then run the same meridian deploy command (or meridian apply) when you are ready to apply the new version.
Upgrading from 3.x
Section titled “Upgrading from 3.x”Meridian 4 is not an in-place upgrade. It replaces the 3x-ui panel with Remnawave, and links from a 3.x server cannot carry over: every user needs a new link.
Your 3.x servers keep working. You have two choices:
- Keep managing them with 3.x. Reinstall the 3.x CLI:
(oruv tool install 'meridian-vpn<4'
pipx install 'meridian-vpn<4'). Meridian 3.17.3 and later stay on 3.x when you runmeridian update, unless you pass--major. - Move to Meridian 4.
- Deploy a fresh server with Meridian 4:
meridian deploy NEW_IP - Give your users their new connection pages (
meridian client add NAMEfor each person) - Once everyone has switched, tear down the old server with
meridian teardown OLD_IP— Meridian 4’s teardown also removes 3x-ui
- Deploy a fresh server with Meridian 4:
Meridian 4 keeps its own state in ~/.config/meridian/ and never reads or changes 3.x state in ~/.meridian/, so both versions can live on one machine; fleet commands that find only 3.x state explain these options instead.
These docs describe Meridian 4. The Meridian 3.17.3 docs stay on GitHub for servers you keep on 3.x.
Requirements
Section titled “Requirements”- Python 3.11+ (uv installs and manages it for you)
- SSH access to your server, as root or a user with passwordless sudo. Key login is best; if the server accepts only a password,
meridian deployandmeridian setupoffer to create a key for Meridian and install it with that password once (see Password-only servers)
Terminal QR codes are rendered by the bundled segno package; no system dependency is required.
Verify installation
Section titled “Verify installation”meridian --version