This guide is for users installing Shadowrocket on a Linux desktop. First identify your distribution and CPU architecture, then download the matching package. Install DEB and RPM packages with your system package manager; make an AppImage executable before running it. Finally, check that the app launches, import an existing subscription, and review Global Routing to distinguish installation issues from connection problems.
Check your distribution, architecture, and desktop environment
The package format depends on your distribution’s package management system, not its desktop theme. Ubuntu and Fedora both commonly use GNOME, but typically require DEB and RPM packages, respectively. AppImage may suit other distributions, but compatibility still depends on CPU architecture, system libraries, and the desktop environment; it is not guaranteed to run on every Linux system.
cat /etc/os-release
uname -m
The first command shows ID, ID_LIKE, and PRETTY_NAME; the second reports the machine architecture. Common values include x86_64 for x64 and aarch64 for ARM64. Use the architecture actually offered on the download page. Changing a file’s DEB, RPM, or AppImage extension does not change its format or fix an architecture mismatch.
- Debian / Ubuntu: Choose DEB and use apt to install the local file and resolve dependencies available from configured repositories.
- Fedora: Choose RPM and install it with dnf. openSUSE also uses RPM packages, but its package manager is zypper.
- Other desktop distributions: Check whether a compatible AppImage is available, then verify its runtime requirements.
- Headless servers: This guide covers desktop app installation, not background services. Without a graphical session, a missing window alone does not mean the installation is broken.
Get ready in four steps
The filenames in the commands below are convenient local names, not fixed names for packages from this site. In your file manager, rename the downloaded file to the corresponding name before running a command. Or leave its original name and drag the file into the terminal to insert its full path. Do not use a temporary file while the browser is still downloading it.
-
Check your system
Run
cat /etc/os-releaseanduname -mto note your distribution and architecture. On Debian-based systems, you can also rundpkg --print-architectureto see the architecture name used by the package manager. -
Get the package
Open the Linux downloads section and download an available format for your architecture. Do not try to convert a package by changing its extension.
-
Set up the file path
Place the file in
~/Downloadsand rename it according to its format:Shadowrocket.deb,Shadowrocket.rpm, orShadowrocket.AppImage. If your system uses a different downloads folder, use its actual path. -
Install and launch
Run only the command set for the format you chose. After installing a DEB or RPM package, launch the app from the application menu. Run an AppImage file directly. Keep the terminal output when troubleshooting for the first time.
DEB and RPM: Install with your package manager
The ./ before a local package path matters: it tells the package manager to use a file in the current directory rather than look up a package by name in software repositories. Use sudo for installation. Launch the desktop app as a regular user; do not run the entire desktop session as root.
| Distribution | Local install command | Notes |
|---|---|---|
| Debian / Ubuntu | sudo apt install ./Shadowrocket.deb |
apt handles the local package and dependencies available from configured repositories. |
| Fedora | sudo dnf install ./Shadowrocket.rpm |
Review the transaction summary first and confirm which packages will be installed or changed. |
| openSUSE | sudo zypper install ./Shadowrocket.rpm |
Even with the same RPM format, dependency names and availability can differ. |
Debian / Ubuntu instructions
cd ~/Downloads
dpkg-deb -f ./Shadowrocket.deb Package Architecture Depends
sudo apt install ./Shadowrocket.deb
dpkg-deb -f reads package metadata; it does not install the app. If apt reports that repository indexes are out of date, run sudo apt update and try again. If it reports an architecture error, download the correct build instead of adding a force-install option. If dependencies cannot be met, note the specific dependency names and your system version. Do not remove core system libraries.
Fedora / openSUSE instructions
cd ~/Downloads
rpm -qp --queryformat '%{NAME} %{ARCH}\n' ./Shadowrocket.rpm
# Fedora
sudo dnf install ./Shadowrocket.rpm
# openSUSE: use this command instead of the dnf command above
sudo zypper install ./Shadowrocket.rpm
RPM is a package format; it does not mean every RPM-based distribution has the same runtime environment. If your package manager reports that a dependency is unavailable, check the download page’s compatibility requirements. Do not ignore dependencies and defer the problem until launch. A successful installation only confirms that the files and package records were added to the system; it does not verify your configuration or network connection.
AppImage: Make it executable and launch from the terminal
AppImages are generally not registered in the system package database like DEB and RPM packages. The app is stored as a standalone file, and you must grant it execute permission before first use. Moving or deleting the file may break existing shortcuts. Keep it in a permanent location rather than a downloads folder that may be cleaned automatically.
mkdir -p "$HOME/Applications"
mv "$HOME/Downloads/Shadowrocket.AppImage" "$HOME/Applications/"
cd "$HOME/Applications"
chmod u+x ./Shadowrocket.AppImage
./Shadowrocket.AppImage
File requirements
- Location
~/Applications- Permission check
ls -l ./Shadowrocket.AppImage- How to launch
./Shadowrocket.AppImage- Run as
- Current desktop user
The u+x option in chmod adds execute permission for the file owner only. There is no need to make the file writable by everyone.
Diagnose launch errors
- Permission denied
- Check the execute bit and the noexec mount option.
- Exec format error
- Check the file format and CPU architecture.
- FUSE-related errors
- Check your distribution’s documentation for compatible runtime libraries.
- Connection errors
- Make sure you are running in an active graphical desktop session.
AppImage runtime requirements vary. Diagnose using the exact error from this launch.
If chmod succeeds but you still get a permission error, use findmnt -T ./Shadowrocket.AppImage to inspect the mount options for the file system. Removable drives and restricted directories may use noexec. Move the file to a user directory where execution is allowed instead of relaxing restrictions on an entire drive. For FUSE-related errors, do not copy library names from another distribution or start with a broad system upgrade.
First launch: Import your configuration, then check Global Routing
Once the window opens, installation is essentially complete. Next, use your existing configuration: manage servers and subscriptions in Home, rule configurations in Config, and client preferences in Settings. Installing the app does not provide these configurations or automatically supply a service you can connect to.
- In Home, tap “+”, set Type to Subscribe, enter your existing subscription URL, and save. Refresh the subscription after importing and confirm that the expected entries appear. Subscription URLs often contain credentials, so do not include them in public screenshots.
- In Home, select an existing entry and run Connectivity Test. If the test fails, check the address, port, authentication, and current network. A successful installation alone does not prove the remote server is reachable.
- In Config, import and select your own rule configuration, then check Global Routing. For an initial connection test, use the controls manually. To configure automatic connections, go to Settings → On Demand; this does not replace protocol settings or routing rules.
Global Routing → Config
RecommendedChoose a policy based on the rules in the active Config. First confirm that the rules are valid and their referenced policies exist, then make a real request to check which rule matches.
Best for: Everyday rule-based traffic routing with a prepared configuration
Global Routing → Proxy
Route connections handled by the client through the selected proxy to check the proxy path. This does not mean the client handles traffic from every system process.
Best for: Temporarily ruling out the effects of rule-based routing
Global Routing → Direct
Use a direct connection for traffic handled by the client to distinguish local network reachability from proxy-path issues. This is not a way to test whether a proxy server is working.
Best for: Checking whether the local network is reachable
If Scene is available in your interface, check the conditions and policies for the selected scene; it is not another name for Config. After changing the mode, make a new request rather than judging the new settings from an existing browser connection. For help checking rule syntax or DNS, see the troubleshooting guide.
Common installation, upgrade, and launch issues
Why does apt say it cannot find the file?
Run pwd and ls -l to check your current directory and filename. Remember that Linux filenames are case-sensitive. Include ./ when installing a local file. If the path contains spaces, enclose the entire path in quotation marks.
The app icon is missing from the application menu. What should I do?
First confirm that the package manager finished successfully. For a DEB package, use dpkg-deb -f ./Shadowrocket.deb Package to find its actual package name, then use dpkg to check its installation status and file list. For RPM, find the package name in its metadata. Do not guess the executable name, and do not confuse a missing menu icon with a connection problem.
Why does nothing happen when I double-click the AppImage?
In a terminal, go to the directory containing the file and run ./Shadowrocket.AppImage. Read the first error message and check for permission, architecture, runtime library, or graphical session issues. If the window opens but the connection fails, go to Home and check your existing configuration.
Will I need to import my subscription again after an update?
Before updating, back up Config and any necessary settings, and keep your subscription URL somewhere safe. For DEB or RPM, install the new package using the same type of command. For AppImage, quit the app, replace the file, and check its execute permission again. Updating the app and refreshing subscription contents are separate operations; after updating, verify the selected configuration and connection status.
Can I keep all three package formats installed at once?
Avoid running multiple copies while troubleshooting. Menu entries, desktop shortcuts, and manually launched apps may point to different files, making it hard to tell whether a change took effect. Confirm which format you are using, quit other running copies, then uninstall unneeded packages with their original package manager or delete AppImage files you no longer use.