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

Shadowrocket for Linux is free and available as DEB, RPM, and AppImage packages. Find the right format for your distribution, with apt and dnf commands and AppImage permission tips.

At a glance

Before installing Shadowrocket for Linux, check your distribution and CPU architecture. Debian and Ubuntu-based systems generally use DEB packages; Fedora and other systems using dnf generally use RPM. Choose AppImage when you want to run a standalone file. This guide covers local installation commands, execution permissions, and startup troubleshooting. After installation, import a subscription from your service provider; a successful installation does not mean the connection is ready to use.

1. Check your distribution before choosing a package

DEB, RPM, and AppImage are different distribution formats, not proxy protocols. Choose based first on your system's package manager, then on the architecture and runtime requirements listed on the download page. The same file extension does not guarantee compatibility with every Linux distribution, and a successful download does not mean the package will run on your machine.

SystemRecommended formatInstallation or launch method
Debian, Ubuntu, and derivatives that use aptdebsudo apt install ./shadowrocket.deb
Fedora and RPM-based distributions that use dnfrpmsudo dnf install ./shadowrocket.rpm
Desktop environments where you want to run a standalone fileAppImageMake the file executable, then launch it as a regular user

Start by running these commands in a terminal. Use ID and ID_LIKE in /etc/os-release to identify your distribution, and uname -m to check your machine's architecture. Don't identify your system by its desktop appearance alone, and don't skip dependency checks just because another computer uses the same CPU.

cat /etc/os-release
uname -m

For example, x86_64 and aarch64 indicate different architectures. Check the download page for a build that matches your machine. If there isn't one, don't try installing a package built for another architecture. AppImage also depends on your system architecture and runtime libraries; it isn't a universal architecture converter.

2. Prepare the local package in four steps

In the commands below, shadowrocket.deb, shadowrocket.rpm, and shadowrocket.AppImage are example local filenames for convenience, not the package filenames on the server. Download the actual file first, then rename it in your file manager to match, or keep its original name and replace the command's filename with the full name on disk.

  1. Check your system

    Open a terminal and run cat /etc/os-release and uname -m to note your distribution and architecture. Choose a matching package based on the details on the download page.

  2. Download the file

    Go to the Linux section of the download page and choose DEB, RPM, or AppImage. Wait for the browser to finish downloading before running an installation command on the file.

  3. Open the containing folder

    Find the package in your file manager and use “Open in Terminal” to switch to its folder. If the file is actually in ~/Downloads, you can also run cd ~/Downloads. If the directory name is localized or customized, use its actual path.

  4. Choose the right command

    Use apt for DEB and dnf for RPM. For AppImage, run chmod u+x first, then launch it as a regular user. Choose one of these methods; there is no need to install all three package formats.

Before you start, run pwd to confirm the current directory and ls -lh to check that the file is there. Put paths containing spaces in quotes, for example sudo apt install "./shadowrocket linux.deb". The ./ explicitly refers to a local file in the current directory, so don't remove it.

3. Install a DEB package with apt and its dependencies

On Debian, Ubuntu, and other systems that use apt, use apt to install a local DEB package. It reads the package's dependency information and tries to get any missing dependencies from your configured software repositories. The package is local, but the installation process may still need an internet connection.

sudo apt update
sudo apt install ./shadowrocket.deb

The first command refreshes the package index; the second installs the file in the current directory. When you enter your sudo password, the terminal usually shows no characters or asterisks—this is normal. Review any packages it plans to install, upgrade, or remove before confirming. Don't ignore unexpected dependency changes.

If another tool left your package dependencies in an incomplete state, you can run sudo apt --fix-broken install. Review the proposed changes before confirming. This repairs your system's package dependency state; it won't make an incompatible package work on your system. Once installation is complete, launch Shadowrocket from your desktop's application list. Don't run the entire graphical app with sudo.

4. Install an RPM package with dnf

On Fedora and other systems that use dnf, install the local RPM package with dnf. RPM is a package format; dnf is a package manager that can handle dependencies. Other RPM-based distributions may not use dnf. Follow your distribution's package management instructions rather than installing another package manager for this purpose.

sudo dnf install ./shadowrocket.rpm

dnf displays a transaction summary, including dependencies it needs to install and any proposed changes. If a dependency is unavailable, check your system version, repository availability, and whether the package supports your system. Don't bypass dependency checks with --nodeps or replace system libraries without a clear reason.

DEB installation checklist

Package manager
apt
Local installation
sudo apt install ./shadowrocket.deb
Dependency source
Configured system repositories
How to launch
Open it from the application list after installation

Don't pass a DEB file to dnf or omit the local file path.

RPM installation checklist

Package manager
Commands in this guide use dnf
Local installation
sudo dnf install ./shadowrocket.rpm
Dependency source
Enabled system repositories
How to launch
Open it from the application list after installation

An RPM package isn't guaranteed to run on every RPM-based distribution.

5. Run an AppImage directly after making it executable

AppImage files are generally not registered as system packages through apt or dnf. Move the file to a suitable location in your user directory, make it executable, and launch it directly. Don't leave it in a temporary folder that may be cleared, and don't try to install it with a package manager as if it were a DEB or RPM package.

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

chmod u+x adds execute permission for the file owner only; there is no need to use chmod 777. Launching the file from a terminal also keeps error output visible, helping you distinguish permission, architecture, and runtime library problems. If double-clicking opens no window, that doesn't prove the app is running in the background.

To update an AppImage, quit the running app first, replace the file, and check that the new file has execution permission. Keep a backup of your existing configuration, but don't assume replacing the file will remove it. Installing a DEB or RPM package locally doesn't add an automatic update repository; get future releases from this site's download page.

6. After installation, check configuration and routing separately

Installation answers “Can the app run?” Subscriptions and routing answer “How is the connection established, and how is traffic handled?” After launching Shadowrocket, first check that the connection details in Home are complete, then review Config and Global Routing. Button locations can vary between Linux desktop environments, so use the controls shown in your version of the app.

  1. Get a subscription link from your service provider and import it through Subscribe. After importing, check that the entries appear, then review them again after an update.
  2. To add a server manually, choose the matching Type in Add Server. The fields for Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard are not interchangeable.
  3. Check the address, port, and credentials. Your service provider supplies the server port; don't change it to 443 just because some connections commonly use that port.
  4. Check the current Global Routing mode, then test a destination you know should be accessible. Whether the app launches, the configuration saves, and the connection works are three separate checks.

Config

Recommended

Choose a policy based on the rules in your current configuration. Review the rules against your needs. FINAL determines how unmatched traffic is handled; it doesn't always mean proxy or direct connection.

Best for: applying rules to route traffic by destination when you already have a working rules configuration

Proxy

Use a proxy policy for connections covered by proxy handling. This can help you compare results with Config, but it doesn't mean all traffic from Linux apps is being routed through the proxy.

Best for: checking whether a failure is related to rule selection

Direct

Use a direct connection for traffic within the configured scope to compare results over your local network. If Direct is selected, an accessible webpage is not evidence that the proxy connection is working.

Best for: comparing access over a direct connection and a proxy

If a browser and terminal get different results, first check whether they use the same proxy endpoint and whether each reads the system proxy settings or environment variables. Don't guess a local listening port; check the address, port, and proxy type actually enabled in the app. Changing the package format won't fix incorrect subscription settings or replace routing configuration.

7. Common issues: check terminal output before choosing what to do next

I downloaded a DEB, but my system doesn't have apt. What should I do?

Run cat /etc/os-release to identify your distribution, then return to the download page and choose a compatible format. Don't add apt to a non-Debian system just to install a DEB, or convert the package to bypass compatibility checks.

AppImage does nothing when I double-click it. Do I need to run it as an administrator?

In the file's directory, run chmod u+x ./shadowrocket.AppImage, then run ./shadowrocket.AppImage to see any error messages. You don't need sudo for a normal launch. Use the output to troubleshoot permissions, mount options, FUSE, or runtime libraries.

The installation finished, but there's no app menu entry. What should I do?

Running an AppImage directly may not create a menu entry, so try launching it from a terminal first. For a DEB or RPM, confirm the package manager finished successfully, then reopen the application list. Don't mistake an installation error for a completed installation.

A subscription import failed. Should I reinstall the Linux package?

First check that the subscription link from your service provider is complete and hasn't expired, and that your current network can reach it. When reporting an error, share only a redacted message—never expose a token, UUID, password, or full subscription link. If the app launches normally, troubleshoot the configuration and network before reinstalling.

When contacting support, note your distribution, the output of uname -m, the package format, the command you ran, and the full error text. Describe “dependency installation failed,” “the window won't launch,” “subscription update failed,” and “destinations won't open after connecting” as separate issues to avoid conflating different stages.

Download Shadowrocket