Install Shadowrocket on Linux: Choose DEB, RPM, or AppImage

Choose the right package for your distro: install DEB with apt on Debian/Ubuntu, RPM with dnf on Fedora, or use AppImage. Includes the chmod +x step.

At a glance

Shadowrocket for Linux is free, as are the Mac (Apple Silicon and Intel), Windows, and Android versions. The iPhone/iPad version costs $2.99 as a one-time App Store purchase; check the App Store listing for system requirements. This guide covers installing the Linux desktop app, from identifying your distro and choosing a package format to installation, startup troubleshooting, and connection checks. Download installation files from this site’s download page; there’s no need to look for third-party software sources first.

1. Check your distro and processor architecture

DEB, RPM, and AppImage are distribution formats, not connection protocols. Choose a package based on your distro’s package manager and your processor architecture. The same file extension does not guarantee compatibility with your system. The Linux desktop environment, runtime libraries, and file permissions can also affect startup, so a successful download alone does not mean the app is ready to run.

Run these two commands in a terminal. The first reads your distro identifiers; check ID and ID_LIKE. The second reports your system’s machine architecture. Both commands only read system information; they do not install software or change connection settings.

cat /etc/os-release
uname -m

Identify your distro

Debian / Ubuntu
Use the DEB package and install the local file with apt.
Fedora
Use the RPM package and install the local file with dnf.
Other distributions
Check your distro’s documentation, then confirm that your system can run AppImage.

An RPM extension does not mean every RPM-based system has the same dependencies.

Architecture and permissions

x86_64
Usually corresponds to an x64 / amd64 build.
aarch64
Usually corresponds to ARM64; make sure the download page offers a matching build.
Installation permissions
Installing DEB / RPM packages usually requires sudo privileges.

Use the architectures actually offered on the download page. Do not assume a package for another architecture is compatible.

Go to the Linux section of the download page and choose a package that’s available for your system. If there’s no file for your processor, stop here. Changing the extension or repeatedly running installation commands cannot convert a package built for one architecture into another.

2. Prepare the downloaded file

The steps below cover file location and naming first, then the installation commands. shadowrocket-local.deb, shadowrocket-local.rpm, and shadowrocket-local.AppImage are convenient local filenames used in this guide. They are not the actual package names on the download site and do not indicate a version.

  1. Choose a package

    Open this site’s app download page → Linux, then download one file that matches your distro and architecture. Choose one installation method: DEB, RPM, or AppImage.

  2. Locate the file

    In your file manager, open the folder containing the download and use your desktop environment’s “Open in Terminal” option. Don’t assume the download folder is named Downloads; its localized name and your browser settings may differ.

  3. Use a simple local filename

    Rename only the file you just downloaded: use shadowrocket-local.deb for DEB, shadowrocket-local.rpm for RPM, or shadowrocket-local.AppImage for AppImage. Keep the original extension.

  4. Run the matching command

    In the next section, follow the apt, dnf, or chmod instructions for your package. After installation, launch the app from the applications menu or the file itself, then check your existing connection details in Home.

3. Debian / Ubuntu: Install the DEB with apt

On Debian / Ubuntu, use apt to install a local DEB package. If the system’s configured software sources are available, apt can resolve dependencies. Running only dpkg -i may leave the package installed with unmet dependencies. Before installing, you can check the package’s architecture and compare it with your system’s architecture.

dpkg-deb -f ./shadowrocket-local.deb Architecture
sudo apt install ./shadowrocket-local.deb

When sudo prompts you, enter the password for your current Linux user. The terminal usually won’t show the characters as you type. Read apt’s summary of the packages it plans to install or change before proceeding. If it lists many removals unrelated to this installation, cancel and check your software sources and dependency state instead of confirming.

After installation, launch Shadowrocket from the applications menu. Desktop environments usually read the launcher entry supplied by the package. If the icon doesn’t appear right away after a successful terminal installation, close and reopen the applications menu. Don’t guess the executable’s capitalization based on the product’s display name.

4. Fedora: Install the RPM with dnf

On Fedora, use dnf to install the local RPM; dependencies are provided by your system’s configured software sources. Check the package name and architecture before installing. The query command doesn’t run the app. For other RPM-based distributions, follow their package management documentation rather than copying Fedora commands or software sources.

rpm -qp --qf '%{NAME}\n%{ARCH}\n' ./shadowrocket-local.rpm
sudo dnf install ./shadowrocket-local.rpm

If dnf reports missing dependencies, keep the full error message and determine whether the issue is an “unavailable repository,” “missing dependency,” or “architecture mismatch.” These require different approaches: restore repository access for network issues, check system compatibility for dependency issues, and choose another file for architecture issues.

5. AppImage: Check execution permissions and runtime requirements separately

AppImage can be convenient if you want to keep the application file in your user directory, but a single-file format doesn’t guarantee compatibility with every Linux system. CPU architecture, base runtime libraries, desktop environment, and packaging method still matter. Some AppImages also rely on FUSE to mount and run. If you don’t have administrator privileges, first confirm that your system already meets the requirements.

After renaming the downloaded file as described above, run these commands from the directory where it’s stored. The first grants execution permission to your user only; the second launches the file from the current directory. There’s no need to make the entire directory writable by everyone.

chmod u+x ./shadowrocket-local.AppImage
./shadowrocket-local.AppImage

You can keep the AppImage in a dedicated folder in your home directory to avoid accidentally deleting it when clearing your downloads. If a desktop shortcut points to the file, update its path if you move or rename it. Don’t launch the entire graphical app with sudo to get around ordinary file permission issues. For network operations that genuinely require system authorization, follow the app’s and system’s prompts.

6. After installation: Separate startup, configuration, and network issues

If the app opens, that only confirms that installation and the basic runtime environment passed an initial check. Using its connection features also requires service configuration that you already have. This site does not provide, sell, or recommend nodes, subscriptions, or providers; installing the client and obtaining a service are separate matters.

In Home, check that your existing server or subscription has been imported. In Config, confirm the active configuration, then check Global Routing. Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard are protocol types, not package formats. Match the protocol, port, authentication, and transport parameters provided by your service; switching to Linux is not a reason to change them.

Config: Rule mode

Recommended

Use the rules in your current configuration to handle connections. First make sure the configuration source and rules meet your needs, then use this as your everyday mode. Not all configurations route unmatched connections directly.

Best for: Applying clear routing rules to connections by domain or IP address.

Proxy: Proxy mode

Handle connections managed by the client in proxy mode. Use this temporarily to check whether rule matching is causing different behavior. This does not mean traffic from every app, container, or isolated network environment is being handled.

Best for: Temporarily checking whether the proxy connection works, then switching back to the mode you need.

Direct: Direct mode

Handle connections managed by the client in direct mode. If Direct is active, selecting a server does not mean web requests are being routed through it.

Best for: Checking your computer’s basic network connection and distinguishing direct-connection issues from proxy issues.

For example, to route a specific domain through a proxy and send everything else directly, you could use these two rules. example.com is only a syntax example; the proxy policy referenced by PROXY must be available in your actual configuration. Rules are matched in order, and the final FINAL rule handles connections that didn’t match earlier rules.

DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT

Don’t assume that because your browser can access the internet, the entire system is using the same network settings. Command-line tools may use their own proxy settings, and background services and containers may run in separate environments. If you need to enter a local proxy port manually, check the actual listening port in the client’s settings instead of guessing a fixed number from a guide.

7. Common questions about installing Shadowrocket on Linux

Can I change a DEB extension to RPM if the DEB won’t install?

No. Renaming a file changes its name, not its internal metadata, dependency declarations, or installation scripts. Go back to this site’s download page and choose a file for your distro. The local renaming steps in this guide also require keeping the original extension.

AppImage does nothing when I double-click it. What should I check first?

From the file’s directory, run ./shadowrocket-local.AppImage first and read the terminal error. For permission errors, check the execute bit and mount options; for FUSE errors, check the runtime components; for architecture errors, verify uname -m. Repeated double-clicking won’t help diagnose the problem.

Do I need to install all three package formats?

No. Choose one installation method that suits your system. Mixing system packages with multiple AppImage copies can create duplicate launchers. When troubleshooting, first identify which file is running, then keep the installation method you need.

The app launches, but my subscription won’t update. What should I do?

First check that your device’s time and basic network connection are correct. Then check that the existing subscription address in Home is complete and still valid. Keep the error message and ask the original service provider to confirm access requirements. Reinstalling a DEB or RPM usually won’t fix an expired subscription address. Redact subscription tokens and authentication fields before sharing diagnostic information.

When documenting an issue, include your distro name, the output of uname -m, the package format you chose, the commands you ran, and the complete terminal error. Troubleshoot in this order: package compatibility → installation transaction → app startup → connection configuration. This helps distinguish package management issues from rule issues and avoids repeated reinstalls for connection problems.

Download Shadowrocket