Linux Installation and Package Formats

Choose a deb, rpm, or AppImage for your Linux distribution. Follow the apt or dnf commands to install local packages, or make an AppImage executable and launch it.

At a glance

This guide is for users preparing to install Shadowrocket on a Linux desktop. First identify your distribution and processor architecture, then choose a deb, rpm, or AppImage from the download page and complete installation, launch, and initial connection checks. The commands use clearly identified local filenames chosen for this guide; they are not the original download filenames. Verify installation and network connectivity separately to avoid conflating dependency errors, execute permissions, and configuration issues.

1. Check Your Distribution and Architecture

Choose a Linux package for your current system, not its desktop environment. GNOME, KDE, and other desktops do not determine whether to use deb or rpm. Ubuntu and Fedora may look similar while using different package management systems. Run these two read-only commands in a terminal to check your distribution ID and machine architecture.

cat /etc/os-release
uname -m

In the first command's output, look for ID and ID_LIKE, and consult your distribution's package management documentation. The second command commonly returns x86_64 or aarch64. These usually correspond to x64 and ARM64 in the download instructions, respectively. Package format and architecture are separate requirements: the same file extension does not guarantee processor compatibility. If the download page does not offer a build for your architecture, do not try to install a package built for another one.

SystemFormatHow to install
Debian, Ubuntu, and apt-based derivativesdebUse apt to install the local file and resolve dependencies
Fedora and RPM-based systems that use dnfrpmUse dnf to install the local file and review the transaction
Linux desktops with a compatible build on the download pageAppImageMake the file executable and run it; system runtime requirements still apply

2. Get the Package and Prepare the Local File

Get the package from the Linux section of the download page. Check its format and architecture before saving it. This guide does not use third-party download links or fetch remote installation scripts from the terminal. If the browser is still downloading the file, its size is zero, or it still has a temporary extension, wait for the download to finish.

  1. Create a shadowrocket-install folder in your home directory.
  2. Put only the package you selected in this folder. Do not mix it with other apps or older packages.
  3. To make the commands below easy to copy, rename the deb file to shadowrocket-local.deb or the rpm file to shadowrocket-local.rpm. See section 5 for where to save an AppImage.
  4. Change the filename only; changing the extension does not convert the package format. Renaming the file does not change its architecture or dependencies.
mkdir -p "$HOME/shadowrocket-install"
cd "$HOME/shadowrocket-install"
ls -lh

These filenames are local names you choose on your computer, not the original filenames used for packages on this site. If you keep the downloaded filename, replace the full file path in the commands that follow. Enclose paths containing spaces in English double quotes. Do not run both the deb and rpm instructions.

3. Install a Local deb Package with apt

On Debian, Ubuntu, and other apt-based systems, first change to the folder you created, then install the local deb package. The ./ in the command matters: it tells apt that the argument is a file in the current directory, not a package name from a software repository. Installation requires administrator authorization. Dependencies usually come from your configured system repositories, so a working internet connection may be needed to download them.

cd "$HOME/shadowrocket-install"
sudo apt install ./shadowrocket-local.deb
  1. Review the new, upgraded, and removed packages listed by apt. If the transaction proposes removing a large number of packages unrelated to this installation, cancel it instead of confirming.
  2. Confirm the transaction and wait for it to finish. Once the terminal prompt returns without an installation error, look for Shadowrocket in your desktop's application list.
  3. If the file cannot be found, run pwd and ls -lh to check the directory and filename before changing the installation command.
  4. If the architecture is incompatible, return to the download page and check the package architecture. If dependencies cannot be satisfied, check the supported systems, repository configuration, and dependency names.

sudo apt update refreshes the repository indexes; it does not upgrade the entire system or install Shadowrocket. If the error specifically mentions outdated indexes, run this command and retry the local installation. Refreshing indexes repeatedly will not fix an incompatible runtime environment if your system version cannot provide the required dependencies.

4. Install an rpm Package with dnf and Review the Transaction

On Fedora and other dnf-based systems, local installation works much like it does with apt, but the argument must be an rpm file. dnf checks the package metadata for architecture and dependencies, then shows the proposed transaction. Close any running instance of Shadowrocket before installation so an old process does not keep using outdated files while the app is updated.

cd "$HOME/shadowrocket-install"
sudo dnf install ./shadowrocket-local.rpm

Once installation is complete, launch the app from your desktop's application list. If its launcher does not appear right away, refresh the application list or sign out and back in to your desktop session. Do not assume the installation failed just because you cannot see an icon. If the terminal reported that the transaction failed, resolve the installation error instead of repeatedly clicking the launcher.

5. Run an AppImage from the Terminal

An AppImage is usually saved and run as a single file. Unlike deb and rpm packages, it does not create the same kind of package manager transaction. That does not guarantee it will work in every Linux environment: processor architecture, system libraries, the graphical session, and the FUSE mechanism used by some builds can all affect startup. Check the download page's requirements before choosing this format.

Create an Applications folder in your home directory, move the completed AppImage into it, and rename the file to Shadowrocket.AppImage in your file manager. Then run the command below. chmod u+x adds execute permission for the file owner only; there is no need to make the app writable by everyone.

mkdir -p "$HOME/Applications"
cd "$HOME/Applications"
chmod u+x ./Shadowrocket.AppImage
./Shadowrocket.AppImage

Two Ways to Launch the App

Double-click in the file manager
  • In the file's properties, first confirm that it is allowed to run as a program.
  • If double-clicking displays the file contents or does nothing, launch it from a terminal instead.
  • Do not move the file after the first launch, or shortcuts you create may stop working.
Run from a terminal
  • Change to the folder containing the file and launch it with ./.
  • Keep any errors related to FUSE, shared libraries, or the display service.
  • Test the app first, then create a desktop launcher once you have confirmed it opens reliably.

Verify that the file runs from a terminal before creating a desktop launcher. Do not use sudo to launch the entire graphical app instead of troubleshooting permissions properly.

If you see Permission denied, check not only the execute bit but also whether the file's partition is mounted with noexec. For FUSE-related errors, check your distribution's documentation for the required runtime components; their names are not the same across all distributions. An AppImage not appearing automatically in the application menu does not mean the file is damaged.

6. First Launch: Check Installation and Connectivity Separately

Opening the main window confirms only that the app started. Next, configure a server or subscription you already have. This site does not provide, sell, or recommend servers or subscriptions. For the first check, keep your current network connection available. In Home, review the imported details and make sure the address, port, and authentication fields are complete before connecting. Do not enter an arbitrary port just to make a test pass.

  1. In Home, import a configuration you already have. A subscription is an updateable source of configuration, not part of the installation package.
  2. Check that the selected item is the server you intend to use, not an outdated entry.
  3. Check the current Global Routing mode, then run a specific access test. Note the original setting before switching modes, and restore it when the test is complete.
  4. If the window works but the connection fails, check authentication, connection timeouts, DNS resolution, and rule matches separately. Troubleshoot the configuration first; do not immediately uninstall and reinstall the app.

Config

Recommended

The current configuration rules determine how intercepted traffic is handled. A rule may direct traffic to a proxy, DIRECT, or REJECT. Traffic not matched by an earlier rule is handled by later rules such as FINAL; it does not necessarily go direct by default.

Best for: testing rule-based routing with a configuration you have already checked

Proxy

Routes intercepted traffic through the global proxy, which can help you compare results with Config temporarily. It cannot fix server authentication failures, and it does not mean all system traffic outside the intercepted scope will automatically use the proxy.

Best for: checking whether rules affect access after confirming the server connection works

Direct

Connects intercepted traffic directly to check the underlying network. If the destination is already unreachable on your current network, switching to Direct does not change that.

Best for: comparing access over the underlying network with proxy connection results

Bottom line: Preserve a reproducible example before considering a reinstall

If the main window opens but access fails only under Config, first check which rules in Config matched. If the AppImage cannot open a window at all, start by checking the terminal error. Treating these as separate issues helps avoid reinstalling the app to mask a configuration or runtime problem.

7. Updates, Uninstallation, and Common Errors

Before updating, use the app's export feature to back up your configuration and store your subscription credentials securely. Package manager records for deb and rpm packages work differently from replacing an AppImage file. Downloading a new package from this site does not automatically switch the process that is currently running. After updating, quit the old process, reopen the app, and check that your configuration is still there.

apt says the package cannot be found. Did I download the wrong file?

First check that the command still includes ./ in ./shadowrocket-local.deb. Run pwd and ls -lh to confirm the file is in the current directory. If the filename differs, use its actual path. The local filename used in this guide is not the package's original download name.

Getting “Exec format error” even after adding execute permission?

Run uname -m and check the package architecture. This error commonly means the binary does not match the machine's architecture, but the file contents may also be invalid. Execute permission cannot turn an ARM64 app into an x64 app. Download a build that matches your system.

The AppImage does nothing when I double-click it. Should I keep trying?

Do not keep launching it. In the folder where you saved it, run ./Shadowrocket.AppImage and note the first error. If it reports a missing shared library or FUSE, resolve the runtime dependency for your distribution. If it reports a permissions error, check the execute bit and mount options.

The app installed, but websites still will not open. Should I switch package formats?

First make sure Shadowrocket opens normally, then check the current server in Home, Global Routing, and the rules in Config. Also distinguish the app's own traffic from the traffic actually intercepted by the system. Switching from deb to AppImage will not fix subscription fields, authentication details, or rule content.

Get Shadowrocket and Continue with the Guides

The iPhone and iPad version costs $2.99 as a one-time App Store purchase. Versions for Mac, Windows, Android, and Linux are free. Mac builds are available for Apple Silicon and Intel. Check the App Store listing for the current iPhone and iPad system requirements. Visit the download page for your device, then follow the guides to check the import and connection steps.

Download Shadowrocket