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.
| System | Recommended format | Installation or launch method |
|---|---|---|
| Debian, Ubuntu, and derivatives that use apt | deb | sudo apt install ./shadowrocket.deb |
| Fedora and RPM-based distributions that use dnf | rpm | sudo dnf install ./shadowrocket.rpm |
| Desktop environments where you want to run a standalone file | AppImage | Make 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.
-
Check your system
Open a terminal and run
cat /etc/os-releaseanduname -mto note your distribution and architecture. Choose a matching package based on the details on the download page. -
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.
-
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 runcd ~/Downloads. If the directory name is localized or customized, use its actual path. -
Choose the right command
Use apt for DEB and dnf for RPM. For AppImage, run
chmod u+xfirst, 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.
- File not found: Run
pwdandls -lhand check the directory, capitalization, and filename. - Architecture mismatch: Check
uname -magainst the package you downloaded. Don't add options that force the package manager to ignore the architecture. - Unsatisfied dependencies: First check that
sudo apt updatecompleted successfully, then confirm the package supports your distribution. - Package manager is locked: Wait for system updates or other installation tasks to finish. Don't delete the lock file.
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.
Permission denied: Check the execution permission first. If the file is on a disk mounted with thenoexecoption, it may not run even when marked executable. Move it to a user directory that allows execution.Exec format error: First check the architecture and make sure the file downloaded completely. Adding execute permission won't fix an architecture mismatch.- FUSE-related error: Some AppImage runtimes need a compatible FUSE library. Package names vary by distribution; follow your system's package instructions rather than replacing FUSE components blindly.
GLIBCversion or shared library missing: Check your system's runtime requirements. Don't manually overwrite the system libc or copy libraries from unknown sources into system directories.
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.
- 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.
- 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.
- Check the address, port, and credentials. Your service provider supplies the server port; don't change it to
443just because some connections commonly use that port. - 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
RecommendedChoose 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.