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 environment | Choose a format | What to check |
|---|---|---|
| Ubuntu, Debian, and related distributions | deb | CPU architecture and distribution dependencies |
| Fedora and related distributions using dnf | rpm | CPU architecture and RPM dependencies |
| Other desktop distributions that meet the runtime requirements | AppImage | CPU 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.
-
Check your system
Run
cat /etc/os-releaseanduname -mto note your distribution family and CPU architecture. -
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.
-
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.
-
Check package details
For DEB files, use
dpkg-deb -f; for RPM files, userpm -qpi. For AppImage, start withfileto 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.
- “File not found”: Make sure you entered the full path to the downloaded file, not the downloads folder or a web address from your browser.
- “Unmet dependencies”: Note the full dependency names and version requirements, then check whether your distribution meets the package requirements.
- Out-of-date package indexes: Run
sudo apt updateand try again once it completes. This updates the package indexes; it doesn’t upgrade all your system software. - An earlier package operation is unfinished: Read apt’s prompts and resolve the package manager’s current state. Don’t start multiple installation processes at once.
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.
Permission denied: Check the owner and execute bit withls -l "$app". If the execute bit is set, check whether the file’s partition is mounted with thenoexecoption.- Missing
libfuse.so.2: The AppImage runtime needs a FUSE 2 compatibility library. Depending on your distribution, the package may be calledlibfuse2orlibfuse2t64. Check your system’s software sources for the right package, then install it. - Double-clicking opens only a file picker: Set the execute permission, then try running the file once from a terminal. A file manager’s double-click behavior is no substitute for checking the error log.
- The required
GLIBCversion is unavailable: This is a core runtime compatibility issue. Don’t replace the system libc manually; use a system environment that meets the runtime requirements.
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.
- Go to
Homeand use the add option. ChooseSubscribeas 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. - Update the subscription in
Homeand 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. - To route traffic by rules, open
Config, confirm the relevant configuration is imported and enabled, then setGlobal RoutingtoConfig. - 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
RecommendedProcess 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.