Install Shadowrocket on Linux: DEB, RPM, or AppImage

Choose a package for your Linux distribution: install DEB with apt or RPM with dnf. AppImage runs without installation but needs execute permission. Includes fixes for common first-launch errors.

At a glance

Ubuntu and Debian users will usually want the DEB package; Fedora users typically choose RPM. Consider AppImage when you want to run a single file. This guide walks first-time Linux users through checking their distribution and CPU architecture, installing Shadowrocket, handling permissions and dependencies, and testing a connection with a subscription they already have. The package format does not determine the proxy protocol or include a working service.

Check your distribution and architecture first

Installing Shadowrocket on Linux involves more than checking a file extension. DEB and RPM are package formats for different package management systems; AppImage is an executable application file. Each must match your CPU architecture and runtime environment. Run these read-only commands in a terminal first; they do not change system settings.

cat /etc/os-release
uname -m

Use ID and ID_LIKE in /etc/os-release to identify your distribution and its family. The output x86_64 from uname -m indicates the common 64-bit Intel / AMD architecture; aarch64 usually indicates ARM64. The package must have both the right format and the right architecture. AppImage files also cannot run across CPU architectures.

System environmentChoose a formatWhat to check
Ubuntu, Debian, and related distributionsdebCPU architecture and distribution dependencies
Fedora and related distributions using dnfrpmCPU architecture and RPM dependencies
Other desktop distributions that meet the runtime requirementsAppImageCPU architecture, execute permission, and FUSE environment

Using RPM does not mean every RPM-based distribution can install the same file. For example, a system may not use dnf, or its core library versions may differ. If dependencies are missing, check the specific error rather than changing the file extension to DEB or forcing the installation past dependency checks.

Get the package and check its details

Go to the Linux section on the site’s app download page and choose a file in an available format for your architecture. The download page resolves the package from the site’s /dl/shadowrocket/ path. Don’t guess the filename from an example or pick an arbitrary file just because multiple older downloads appear in your browser’s list.

  1. Check your system

    Run cat /etc/os-release and uname -m to note your distribution family and CPU architecture.

  2. Choose a format

    On the app download page, choose the Linux DEB, RPM, or AppImage package. Don’t substitute a package for a different architecture if yours isn’t listed.

  3. Note the file location

    In your file manager, confirm the download is complete and note its full path. The commands below prompt you to enter the actual path, so they don’t rely on a fixed package filename.

  4. Check package details

    For DEB files, use dpkg-deb -f; for RPM files, use rpm -qpi. For AppImage, start with file to identify the file type and architecture.

Install DEB with apt

On Ubuntu and Debian, use apt to install a local DEB package. Unlike simply unpacking the file, apt checks package dependencies and tries to get the required components from your system’s configured software sources. If those sources are unavailable, installation may stall while downloading dependencies.

read -r -p 'Enter the full path to the DEB file: ' pkg
dpkg-deb -f "$pkg" Package Version Architecture
dpkg --print-architecture
sudo apt install "$pkg"

The architecture details should be compatible. For example, if your system architecture is amd64, choose the matching x86-64 package. Review apt’s installation plan before proceeding. It’s normal for the terminal not to display characters when you enter your sudo password; this doesn’t mean your keyboard has stopped working.

After installation, open Shadowrocket from your desktop’s application menu. Don’t run the entire graphical client with sudo just to work around an ordinary startup issue. If system network permissions are needed, follow the authorization prompt shown.

Install RPM with dnf

On Fedora and other systems that use dnf, install the downloaded local RPM package with dnf. It checks dependencies and displays the transaction plan. The query commands below only read package information; the final install command is the one that changes your system.

read -r -p 'Enter the full path to the RPM file: ' pkg
rpm -qpi "$pkg"
rpm --eval '%{_arch}'
sudo dnf install "$pkg"

Check that the Architecture shown in the RPM details matches your system. If the output reports dependency conflicts or an incompatible core library version, first check whether you chose a package for the wrong distribution. Don’t force the file onto your system by skipping dependency checks.

DEB checklist

Compatible distributions
Debian、Ubuntu
Package details
dpkg-deb -f "$pkg" Architecture
System architecture
dpkg --print-architecture
Install command
sudo apt install "$pkg"

Use the full path to the local package; let your system’s configured software sources resolve dependencies.

RPM checklist

Compatible environment
A system that uses dnf and meets the package dependencies
Package details
rpm -qpi "$pkg"
System architecture
rpm --eval '%{_arch}'
Install command
sudo dnf install "$pkg"

RPM is a package format; dnf is the installation tool used here. They are not the same thing.

Grant AppImage execute permission first

Unlike DEB and RPM packages, AppImage files don’t need to be registered in the system package database. But “no installation required” doesn’t mean “no runtime requirements.” The file needs execute permission, must be stored somewhere that allows execution, and may require FUSE at runtime. Save it to a local folder in your home directory first, then run it from a terminal to see any errors.

read -r -p 'Enter the full path to the AppImage file: ' app
file "$app"
chmod u+x "$app"
"$app"

chmod u+x grants execute permission only to the file’s owner. There’s no need to make the file writable by everyone. The last line runs the file you entered. If the terminal reports Exec format error, check the architecture and file type first; repeatedly changing execute permissions won’t fix an architecture mismatch.

Check after first launch

An open window only confirms that the application started; it doesn’t mean a working connection is available. The steps below assume you already have a service provider and subscription of your own. This site does not provide, sell, or recommend nodes or subscriptions. The installation package does not create service credentials.

  1. Go to Home and use the add option. Choose Subscribe as the subscription type, paste a subscription URL you already have, and save it. Don’t paste a subscription URL into the address field for an individual server.
  2. Update the subscription in Home and check that the expected configuration items appear. If the update returns nothing, first check the subscription’s validity, response content, and access status. Don’t reinstall the app right away.
  3. To route traffic by rules, open Config, confirm the relevant configuration is imported and enabled, then set Global Routing to Config.
  4. Select an available item, turn on the connection, complete any required network authorization when prompted, and test a website you know is accessible.

When troubleshooting, distinguish between a subscription update failure and an access failure after connecting. The first occurs while fetching configuration; the second can also involve service status, DNS, and routing rules. Don’t change the package and several settings at once, or it’ll be hard to tell what fixed—or caused—the issue.

Config

Recommended

Process requests using the active configuration. Rules are matched in order, and the final FINAL rule determines how requests that don’t match earlier rules are handled. A valid configuration is required.

Best for: Everyday rule-based routing after setting up Config.

Proxy

Send requests handled by the client through the selected proxy policy. This can help determine whether rules are causing an issue. It doesn’t mean that the route changes for all system traffic outside the client’s control.

Best for: Briefly checking proxy availability or comparing results with Config.

Direct

Handle requests taken over by the client as direct connections. If you can only reach sites that were already directly accessible in this mode, that doesn’t confirm that your proxy service is working.

Best for: Checking your local network and comparing direct and proxied access.

For your first test, connect manually. If you previously enabled automatic connections, check the current state of Settings → On Demand so existing conditions don’t change the connection during testing. Available options vary by platform; check what’s actually offered.

How to identify common errors

When recording an error, include the command, full error message, and system architecture. Don’t include subscription URLs, access tokens, or server passwords in public logs. The issues below are grouped by when they occur—before installation, at startup, or after connecting—to help distinguish dependency problems from subscription problems.

Why won’t Fedora install a downloaded DEB package?

First, confirm your system with cat /etc/os-release. Fedora users usually need the RPM package, installed with sudo dnf install "$pkg". Don’t change the file extension or run apt commands on a system that doesn’t have apt.

AppImage has execute permission but still won’t open?

Run "$app" in the same terminal to see the error. For an architecture error, compare file "$app" with uname -m. For a missing FUSE library, check the compatibility library. If it’s still a permissions error, check the file owner and mount options.

Installation succeeded, but why is the subscription still empty?

Go back to Home, confirm the add type is Subscribe, and update your own subscription. Check that the link hasn’t expired or acquired extra spaces, and look for a server-side error. Reinstalling the client won’t fix an empty response from the server.

Can’t open websites after connecting—should I reinstall?

First confirm that your local network can access websites without Shadowrocket. Then check Global Routing, the selected item, and the enabled Config. Temporarily try Proxy for comparison. If only Config fails, check the rule order rather than switching package formats.

Get the version for your platform

Get Shadowrocket for iPhone / iPad from the App Store for a one-time payment of $2.99. Check the App Store listing for system requirements. The Mac (Apple Silicon / Intel), Windows, Android, and Linux versions are free. To verify the iPhone / iPad listing, check the developer, Shadow Launch Technology Limited, and app ID 932747118. Choose your platform on the download page, then follow the guide to import your existing subscription and check the connection.

Download Shadowrocket for free