For Debian, Ubuntu, and compatible derivatives, use the deb package. Choose rpm for Fedora and other dnf-based systems. Use AppImage if you prefer to keep and launch a single file. This guide is for users with a Linux desktop environment. First check your distribution and CPU architecture, then download the appropriate package from our download page and install it. After launch, check the connection. Installing Shadowrocket and importing an existing subscription are separate steps.
1. Choose deb, rpm, or AppImage for your distribution
Start with your system’s package manager, not the file size. deb and rpm packages are registered with the system package manager. AppImage usually runs as a standalone application file; it does not install a deb or rpm package on the system. None of these formats removes compatibility requirements for CPU architecture, system libraries, or the desktop environment.
| System | Recommended format | How to install or run it |
|---|---|---|
| Debian, Ubuntu, and compatible derivatives | deb | Use apt to install the local package and resolve dependencies available in configured repositories. |
| Fedora and compatible RPM systems that use dnf | rpm | Install with dnf, and make sure the required system libraries are available. |
| Desktop environments where you want to keep the app as a single file | AppImage | Add execute permission, then launch it. Check FUSE and runtime libraries if needed. |
| Other distributions or headless servers | Check compatibility first | Converting a package to another format does not prove it is compatible. Do not assume a command-line mode is available. |
Run these two read-only commands in a terminal. The first displays distribution details; check ID, ID_LIKE, and VERSION_ID. The second shows the machine architecture. If the output is x86_64 or aarch64, check the download page for the matching architecture. Packages with the same extension are not necessarily interchangeable.
cat /etc/os-release
uname -m
This guide does not list fixed package filenames or assume that every format is available for every architecture. Use the packages and requirements currently listed in the Linux downloads section. After choosing a package, keep its original filename and use its actual path in the commands below.
2. Check your system and prepare the terminal
You do not need to import a subscription before installing the client. First make sure your desktop session is working and your system can reach its configured software repositories, then download the package. apt and dnf may still retrieve dependencies from distribution repositories when installing a local file, so a completed download does not guarantee that installation can be done entirely offline.
-
Check your system
Run
cat /etc/os-releaseanduname -m. Note your distribution, system version, and architecture, then compare each with the download page requirements. -
Download the package
Open the Shadowrocket download page, go to the Linux section, and choose the deb, rpm, or AppImage file that matches your system. This guide does not provide direct package links.
-
Locate the file
Find the downloaded file in your file manager and note its full path. If your Downloads folder has a localized name, do not assume it is
~/Downloads. -
Open a terminal
The interactive commands below use Bash. If you use another shell, enter
bashfirst. Press Tab to complete file paths and avoid mistyping spaces or extensions.
3. Install a deb package with apt
On Debian and Ubuntu, use apt install to install a local deb package. Unlike lower-level installation tools, apt can try to resolve dependencies from your configured repositories. The commands below read the actual file path and convert it to an absolute path, so apt will not mistake the filename for a package name in a repository.
read -r -e -p 'Enter the path to the downloaded deb file: ' pkg
pkg="$(realpath -- "$pkg")"
if [ -f "$pkg" ] && [[ "$pkg" == *.deb ]]; then
sudo apt install "$pkg"
else
printf '%s\n' 'deb file not found. Check the path and try again.'
fi
Enter the file path at the prompt without typing the surrounding shell quotes. The command already uses double quotes around the variable, so paths containing spaces will work. Review the dependencies and disk changes listed by apt before proceeding. If it plans to remove a large number of unexpected system components, cancel rather than confirming.
- Dependencies cannot be resolved: Check the distribution version and package requirements, then make sure the system repositories are available. Do not cobble together dependencies from other distributions.
- Local file not found: Check the path and make sure the download is complete. Use Tab to complete the path; a download URL from your browser is not a local file path.
- Architecture mismatch: Run
uname -magain and check the architecture on the download page. Forcing installation cannot change the target architecture of a binary.
After installation, find Shadowrocket in your desktop application list and launch it. Package installation and establishing a client connection are separate steps. Once dependencies are installed, check that the window opens before setting up a subscription or network configuration.
4. Install an rpm package with dnf
On Fedora and other dnf-based systems, use the command below to install a local rpm package. Not every rpm-based distribution uses dnf. If your system uses another package manager, follow its instructions for installing local packages; do not replace the system package manager just to copy this command.
read -r -e -p 'Enter the path to the downloaded rpm file: ' pkg
pkg="$(realpath -- "$pkg")"
if [ -f "$pkg" ] && [[ "$pkg" == *.rpm ]]; then
sudo dnf install "$pkg"
else
printf '%s\n' 'rpm file not found. Check the path and try again.'
fi
dnf displays the packages and dependencies required for the transaction, along with relevant prompts. Check that the source and proposed changes are expected before proceeding. If you encounter a dependency conflict, save the full error message and system version; do not immediately add options to force an overwrite or skip checks.
deb installation checklist
- File format
.deb- Package manager
apt install- Locate the file
- Read the actual path and use its absolute form
- Dependency source
- Repositories configured on the current system
Successful installation registers the package with the system package manager; it does not automatically add an online update source.
rpm installation checklist
- File format
.rpm- Package manager
dnf install- Requirement
- The current distribution uses dnf
- Review the transaction
- Check added dependencies and conflict details
Using the rpm format does not guarantee compatibility across distributions or system versions.
5. Make an AppImage executable and launch it
AppImage does not use the package-manager installation process described above. Move the file to a location where your user can keep it, then add execute permission. Do not leave it in a temporary browser folder or keep using a launcher that points to its old location after moving the file.
read -r -e -p 'Enter the path to the downloaded AppImage file: ' app
app="$(realpath -- "$app")"
if [ -f "$app" ] && [[ "$app" == *.AppImage ]]; then
chmod u+x -- "$app" && "$app"
else
printf '%s\n' 'AppImage file not found. Check the path and try again.'
fi
chmod u+x adds execute permission for the file owner only; there is no need to make the file writable by everyone. If the file belongs to another user, first check its source and location. The command launches the app directly from the terminal. If no window appears, keep the error output to help identify permission, runtime library, or graphical session issues.
Maintaining a package-manager install vs. a standalone app file
deb / rpm
- The system package manager tracks the installation state and dependencies.
- To update, download a compatible new package from our download page and install it with the same package manager.
- To uninstall, check the actual package name in your system’s software management tool and remove it through the normal process.
AppImage
- You are responsible for keeping track of the app file’s location and execute permission.
- Before replacing the file, quit the running app and back up any configuration you need.
- Deleting the app file does not remove user configuration. You may also need to remove shortcuts separately.
Choose a format that suits how you maintain software. AppImage is not a guarantee of compatibility with every distribution.
6. Import an existing configuration and check the connection
Once the window opens, import a configuration from a service provider you already use. This site only explains client installation and use. Installing the client does not create a working connection or change your provider account, data allowance, or device limits.
- Import a configuration first: Use the import option available in your current version to add an existing subscription or a single configuration. If the interface shows
Home → + → Type → Subscribe, enter your full subscription URL, save, and update. Layouts vary by platform, so follow the interface you see. - Check the list: After updating, confirm the expected entries appear, then select a server. If the list is empty, first check that the URL is complete and that your provider’s service is available. Reinstalling the app will not fix subscription issues.
- Check routing: If your interface offers
Global Routing, note thatDirectmeans a direct connection.Proxyand rule-basedConfigrouting serve different purposes. To route traffic by rules, first make sure the intended Config is selected. - Test in stages: Check that the system network works while the client is disconnected, then connect and test the target site. If
Connectivity Testis available, use it to check the selected server. A successful test does not prove that all app traffic is going through the proxy.
If the client starts but your browser behaves the same way, check whether the current setup uses the system proxy or another method of routing traffic, and whether the target app follows that method. Do not assume installation routes all processes, or copy authorization steps from another device. When the system requests permission, read the scope of the request first.
7. Common installation and startup problems
AppImage has execute permission but still says “Permission denied.” Why?
Run ls -l with the actual file path to check the execute bit, then see whether the file’s partition is mounted with noexec. If execute permission is set but the partition blocks execution, move the file to a user directory where execution is allowed and try again. Do not change the mount settings for the entire system.
Double-clicking the AppImage does nothing, and the terminal reports a FUSE error. What should I do?
Keep the full error output and install a compatible FUSE runtime library using your distribution’s package instructions. Package names vary by system; do not replace existing FUSE components. If the AppImage is still incompatible, check the download page for a deb or rpm package that suits your system.
“Exec format error”: Is this a permissions problem?
Usually, check the target architecture and file type first rather than repeatedly changing permissions. Run uname -m and check the download you selected. If the file did not finish downloading, download it again. chmod changes execute permissions; it cannot convert a program from one architecture to another.
apt or dnf reports success, but the app is missing from the application list. What now?
Refresh the desktop application list, and if needed, log out and back into the desktop session. Then use the system’s software management tool to confirm that the app is installed. If it exits immediately on launch, record the startup error instead of guessing the executable name. A headless SSH terminal session is not the same as a local graphical desktop.
Should I delete the old configuration before updating the app?
Deleting your configuration is not a routine update step. Quit the client and back up your existing configuration before downloading a compatible package from the download page. Follow any migration instructions for the versions involved. Reinstalling the app does not necessarily remove settings kept in your user directory.
If you still cannot identify the problem, note your distribution, architecture, package format, commands run, and the key lines of the error output. If you need to check subscription status with your provider, do not share your full subscription URL, account password, or access token. For further connection checks, follow the steps in Troubleshooting.