Shadowrocket Linux Installation: DEB, RPM, or AppImage? apt and dnf Commands

Choose a package for your distro: install DEB files with apt on Debian or Ubuntu, RPM files with dnf on Fedora, or run an AppImage without installing. Includes first-launch checks.

At a glance

Before installing Shadowrocket on Linux, check your distribution and CPU architecture, then choose DEB, RPM, or AppImage. This guide is for Linux users with a graphical desktop. It explains how to choose a package, provides Bash commands that select the file you actually downloaded, and covers dependency errors, execute permissions, desktop launchers, and connection settings. Installing the app does not provide a working connection; the steps that follow assume you already have your own service and subscription.

1. Check your distribution, architecture, and download source

Debian and Ubuntu users should generally choose DEB; Fedora users should generally choose RPM and use dnf. If you prefer not to register the app in the system package database, consider AppImage. Package format and CPU architecture are separate requirements: a matching file extension does not mean the program inside supports your CPU.

Go to the Linux section on the download page for all platforms and choose from the packages and architectures actually listed there. The Linux version is free. The iPhone / iPad version costs $2.99 as a one-time App Store purchase; the Mac (Apple silicon and Intel), Windows, and Android versions are also free. Check the App Store page for iPhone / iPad system requirements.

  1. Identify your distribution

    Open a terminal and run cat /etc/os-release to check ID, ID_LIKE, and PRETTY_NAME. Don’t identify your distribution by desktop appearance alone: the same desktop can run on different package systems.

  2. Check your architecture

    Run uname -m. The output x86_64 indicates the common 64-bit Intel / AMD architecture; aarch64 indicates 64-bit ARM. Choose only a file that the download page explicitly lists for your architecture.

  3. Choose a package

    Open the Linux section of the download page and select a format supported by your distribution. Using RPM does not mean you should always use dnf. For other RPM-based distributions, follow their package manager’s instructions rather than copying Fedora commands.

  4. Locate the downloaded file

    Use your browser’s download history to open the folder containing the file and confirm the download is complete. The commands below assume the file is in $HOME/Downloads. If your system uses another download folder, replace the directory in the commands with the actual path.

cat /etc/os-release
uname -m
EnvironmentPreferred formatHow to install or run
Debian / UbuntudebInstall the local file with apt and resolve available dependencies
FedorarpmInstall the local file with dnf and review the transaction plan
Compatible graphical desktop environmentAppImageAdd execute permission and run; runtime requirements still apply

2. Debian / Ubuntu: Install a DEB with apt

To install a local DEB with apt install, pass the file as a path. Don’t omit the leading ./ from a relative path, or apt may interpret the input as a package name. apt can fetch dependencies from enabled repositories, but older distributions may not have every library the program requires.

Run the following commands in Bash. They list DEB files in your Downloads folder so you can select the actual file by number, without relying on a fixed filename. The folder may contain installers for other apps, so make sure you select the Shadowrocket file you just downloaded from this site. If no matching file is found, the script won’t run the installation.

(
  cd "$HOME/Downloads" || exit 1
  shopt -s nullglob
  packages=(./*.deb)
  if ((${#packages[@]} == 0)); then
    printf '%s\n' 'No DEB files in this directory. Check the download location.'
    exit 1
  fi
  PS3='Enter the number for the Shadowrocket DEB file: '
  select pkg in "${packages[@]}"; do
    if [[ -n "$pkg" ]]; then
      sudo apt install "$pkg"
      break
    fi
    printf '%s\n' 'Enter a valid number from the list.'
  done
)

3. Fedora: Install an RPM with dnf

On Fedora, dnf can install a local RPM and check dependencies and conflicts in the same transaction. Don’t assume an RPM built for another distribution will work just because it has the same file extension. Library names, dependency requirements, and desktop integration can all differ.

(
  cd "$HOME/Downloads" || exit 1
  shopt -s nullglob
  packages=(./*.rpm)
  if ((${#packages[@]} == 0)); then
    printf '%s\n' 'No RPM files in this directory. Check the download location.'
    exit 1
  fi
  PS3='Enter the number for the Shadowrocket RPM file: '
  select pkg in "${packages[@]}"; do
    if [[ -n "$pkg" ]]; then
      sudo dnf install "$pkg"
      break
    fi
    printf '%s\n' 'Enter a valid number from the list.'
  done
)

If you see an architecture mismatch, dependency conflict, or package verification error, stop the transaction and save the full message. Don’t add options to skip verification or force file replacement. If the terminal says the same package is already installed, check its current status first; repeatedly running the install command won’t fix connection problems.

DEB installation essentials

Supported environment
Debian / Ubuntu and compatible distributions
Local path
Start with ./ and quote the full path
Dependency source
Repositories enabled on the current system
What to check if it fails
Dependency names, architecture, and apt transaction summary

The package file and dependency environment must both be compatible.

RPM installation essentials

Covered here
Fedora with dnf
Local path
Pass the actual RPM path to dnf
What to check
The transaction list before dnf runs
Stop if you see
Architecture mismatch, conflicts, or verification errors

Don’t use Fedora commands on every RPM-based system.

4. AppImage: Add execute permission and launch

An AppImage typically runs as a single executable file, without the package installation transaction required by DEB or RPM. That doesn’t mean it has no system dependencies. CPU architecture, the graphical environment, runtime libraries, and mount options can all affect startup. Move the file to a location where you plan to keep it so it won’t be lost when you clear your Downloads folder.

These Bash commands add execute permission only to the selected file for the current user, then launch it as that user. Don’t recursively change permissions for your entire Downloads folder, and don’t use sudo to launch the graphical app.

(
  cd "$HOME/Downloads" || exit 1
  shopt -s nullglob
  packages=(./*.AppImage)
  if ((${#packages[@]} == 0)); then
    printf '%s\n' 'No AppImage files in this directory. Check the download location.'
    exit 1
  fi
  PS3='Enter the number for the Shadowrocket AppImage file: '
  select pkg in "${packages[@]}"; do
    if [[ -n "$pkg" ]]; then
      chmod u+x -- "$pkg" && "$pkg"
      break
    fi
    printf '%s\n' 'Enter a valid number from the list.'
  done
)

5. First launch: Check startup and connectivity separately

If the window opens, the app has passed the startup check. Establishing a connection also depends on your existing configuration, network, name resolution, and selected policy. This site does not provide, sell, or recommend nodes or subscriptions. A connection timeout by itself does not indicate an installation problem.

  1. Launch as a regular user: Open Shadowrocket from the applications menu or launch the AppImage. If the app requests necessary system permissions, read each prompt carefully. Don’t launch the entire client as root preemptively.
  2. Have your own connection details ready: Check the address, port, protocol, and authentication details provided by your service provider. Treat subscription links as credentials and don’t post them in public support requests.
  3. Check where settings are: Review existing connection entries in Home, the configuration you plan to use in Config, and relevant options in Settings. Available options vary by platform; refer to what your current interface shows.
  4. Check the routing mode: If the interface offers Global Routing, first check whether it is set to Config, Proxy, or Direct. Direct is not a suitable way to determine whether a proxy connection is working.
  5. Test one thing at a time: Start with the same destination and change only one variable at a time. Note whether the connection times out, whether name resolution fails, and whether only certain destinations are affected. Don’t change the protocol, rules, and DNS all at once.

To test rule behavior, use this minimal example in Config to understand the order. example.com is a documentation domain, not a server address; PROXY must match a policy available in your current configuration. Don’t replace an existing complete configuration with this snippet.

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

Rules are evaluated from top to bottom; the policy on the first matching line is applied. Put FINAL last to handle requests that don’t match earlier rules. The example uses 192.168.0.0/16 to demonstrate direct access to a local network; it does not cover all private addresses. no-resolve means the app won’t actively resolve a domain for that IP rule. It is not a switch that fixes every DNS problem.

6. Global Routing: Choose a mode for your test

During installation troubleshooting, routing mode helps narrow down the cause; no single mode is always better. These comparisons cover Shadowrocket’s own settings only. The traffic it can handle still depends on platform permissions and the current network connection method; they do not imply unconditional handling of all system traffic.

Config

Recommended

Choose a policy using the rules in the active configuration. First check the active configuration in Config, then review rule order and FINAL. Rules can specify PROXY, DIRECT, or REJECT; don’t assume unmatched requests always go direct.

Best for: everyday use and rule testing with explicit rules already in place

Proxy

Route requests handled by the client through a proxy to temporarily rule out the effects of rule-based routing. If the same destination works in Proxy but not in Config, check the matching rules and policy first rather than reinstalling the app.

Best for: temporarily isolating differences between rules and connectivity

Direct

Route requests handled by the client directly to see how the current network reaches a destination. Success in Direct does not mean the proxy connection works or confirm that subscription details are valid.

Best for: establishing a direct-connection baseline and comparing network behavior

7. Common issues: Troubleshoot by stage

Before asking for help, identify whether the issue occurs during download, package installation, app startup, or connection. Include the full error message, distribution name, and CPU architecture; these are more useful than simply saying “it won’t open.” Before sharing logs, remove authentication details, subscription links, and personal addresses.

apt says it can’t find the package. Did I download the wrong file?

First check that the command includes a file path. A DEB in the current directory should start with ./; the selection script in this guide preserves that prefix. If the file can’t be found, check your browser’s download history for its actual location and make sure the download has finished. Don’t guess the filename from memory.

What should I do if dnf reports a dependency conflict partway through installation?

Cancel the transaction, note the names of the conflicting packages, and check your distribution and architecture. Don’t proceed with a transaction that would remove many packages, and don’t bypass the issue by forcing file replacement. Return to the download page to verify that the RPM supports your environment, then consider another compatible format listed there.

Why won’t my AppImage run even after I added execute permission?

Run the file from a terminal and troubleshoot based on the error: for Permission denied, check file permissions and mount options; for Exec format error, check the architecture; for libfuse.so.2 errors, check the FUSE compatibility library. These are different causes. Repeating chmod helps only in some Permission denied cases.

The window opens, but the connection fails. Should I reinstall?

First check the selected entry in Home, then the current Global Routing mode and active rules in Config. Confirm that your own connection address, port, and authentication details are still valid. Test the same destination in both Direct and Proxy modes. Return to the installation steps only if there’s evidence of a missing executable or a failed package transaction.

Can I just delete the old files when updating?

Install new DEB or RPM files downloaded from this site with the corresponding package manager, and review the upgrade transaction. Don’t manually delete program files from system directories. For AppImage, quit the running app before replacing the saved file, then check its execute permission. Back up your own configuration before updating, and check the launcher and active configuration afterward.

Download Shadowrocket