Skip to main content

AppImage vs DEB package

SlipStream GUI is available in two formats for Linux. Choose based on your distribution and preferences.
Advantages:
  • Works on most Linux distributions
  • No installation required
  • Self-contained with all dependencies
  • Easy to update (just replace the file)
How to use:
  1. Download .AppImage file
  2. Make it executable: chmod +x SlipStream-GUI-Linux-x64.AppImage
  3. Run it: ./SlipStream-GUI-Linux-x64.AppImage
Common issues:
  • FUSE errors on some distributions (see below)
  • No automatic desktop integration
Advantages:
  • Native installation on Debian-based systems
  • Automatic desktop integration (launcher, icon)
  • System-managed updates
How to install:
# Download the .deb file, then:
sudo dpkg -i SlipStream-GUI-Linux-x64.deb

# If dependencies are missing:
sudo apt-get install -f
Supported distributions:
  • Debian 10+
  • Ubuntu 20.04+
  • Linux Mint 20+
  • Pop!_OS 20.04+
  • Elementary OS 6+
Use AppImage if:
  • You’re on a non-Debian distribution (Fedora, Arch, openSUSE, etc.)
  • You want portability (run from USB, etc.)
  • You don’t have sudo access
Use DEB if:
  • You’re on Ubuntu, Debian, Mint, or derivatives
  • You want system integration (launcher icons, automatic updates)
  • You prefer traditional package management

Execution permissions

The AppImage must have execute permissions:
chmod +x SlipStream-GUI-Linux-x64.AppImage
./SlipStream-GUI-Linux-x64.AppImage
FUSE errors: If you see “FUSE” or “AppImage requires FUSE” errors:
# Ubuntu/Debian
sudo apt-get install fuse libfuse2

# Fedora
sudo dnf install fuse fuse-libs

# Arch
sudo pacman -S fuse2
Alternative (extract and run):
./SlipStream-GUI-Linux-x64.AppImage --appimage-extract
./squashfs-root/AppRun
The SlipStream client binary must have execute permissions:Check permissions:
ls -l /path/to/binaries/slipstream-client-linux
Set execute permission:
chmod +x /path/to/binaries/slipstream-client-linux
The app automatically sets execute permissions on startup, but manual intervention may be needed if the binary was extracted incorrectly.
If you see “Permission denied” when starting the VPN:
  1. Check binary location:
    # AppImage
    ls -l ~/.cache/appimage-run/*/binaries/
    
    # DEB install
    ls -l /opt/SlipStream\ GUI/resources/binaries/
    
  2. Fix permissions recursively:
    # AppImage
    chmod +x ~/.cache/appimage-run/*/binaries/*
    
    # DEB install
    sudo chmod +x /opt/SlipStream\ GUI/resources/binaries/*
    

System proxy configuration

Linux system proxy varies by desktop environment.
SlipStream GUI uses gsettings to configure GNOME proxy.Automatic configuration:
  • Enable “Configure System Proxy” in the app
  • The app will run: gsettings set org.gnome.system.proxy mode 'manual'
Manual configuration:
# Set HTTP proxy
gsettings set org.gnome.system.proxy.http host '127.0.0.1'
gsettings set org.gnome.system.proxy.http port 8080

# Set HTTPS proxy
gsettings set org.gnome.system.proxy.https host '127.0.0.1'
gsettings set org.gnome.system.proxy.https port 8080

# Enable proxy
gsettings set org.gnome.system.proxy mode 'manual'
Disable proxy:
gsettings set org.gnome.system.proxy mode 'none'
Check current settings:
gsettings get org.gnome.system.proxy mode
gsettings get org.gnome.system.proxy.http host
gsettings get org.gnome.system.proxy.http port
KDE doesn’t use gsettings. Configure manually:Via System Settings:
  1. System SettingsNetworkSettingsProxy
  2. Select Manually specify the proxy settings
  3. HTTP Proxy: http://127.0.0.1:8080
  4. HTTPS Proxy: http://127.0.0.1:8080
  5. Click Apply
Via environment variables: Add to ~/.bashrc or ~/.zshrc:
export http_proxy="http://127.0.0.1:8080"
export https_proxy="http://127.0.0.1:8080"
export HTTP_PROXY="http://127.0.0.1:8080"
export HTTPS_PROXY="http://127.0.0.1:8080"
export no_proxy="localhost,127.0.0.1,::1"
These desktop environments don’t have centralized proxy management.Configure per-application:
  • Firefox: Settings → Network Settings → Manual proxy
  • Chrome/Chromium: Launch with --proxy-server="127.0.0.1:8080"
System-wide via environment variables: Add to /etc/environment (requires sudo):
http_proxy="http://127.0.0.1:8080"
https_proxy="http://127.0.0.1:8080"
HTTP_PROXY="http://127.0.0.1:8080"
HTTPS_PROXY="http://127.0.0.1:8080"
no_proxy="localhost,127.0.0.1,::1"
Then reboot or log out and back in.
Most terminal tools respect proxy environment variables:Temporary (current session):
export http_proxy="http://127.0.0.1:8080"
export https_proxy="http://127.0.0.1:8080"

# Now use curl, wget, etc.
curl https://httpbin.org/ip
Permanent (add to shell RC file):
echo 'export http_proxy="http://127.0.0.1:8080"' >> ~/.bashrc
echo 'export https_proxy="http://127.0.0.1:8080"' >> ~/.bashrc
source ~/.bashrc

Binary architecture

uname -m
Output meanings:
  • x86_64 = 64-bit Intel/AMD (most common)
  • aarch64 or arm64 = 64-bit ARM (Raspberry Pi 4, Pine64, etc.)
  • i686 = 32-bit x86 (not supported)
Currently, only x64 builds are available. ARM64 Linux builds are not yet provided.
If you see “cannot execute binary file: Exec format error”:
  1. Verify binary architecture:
    file binaries/slipstream-client-linux
    
    Should show: ELF 64-bit LSB executable, x86-64
  2. Check system architecture:
    uname -m
    
    Must be x86_64 for current builds
  3. If on ARM64:
    • ARM64 Linux is not currently supported
    • Watch the GitHub releases for future ARM builds

Distribution-specific issues

Missing dependencies for DEB:
# Install dependencies
sudo apt-get install -f

# Or manually install common dependencies
sudo apt-get install libgtk-3-0 libnotify4 libnss3 libxss1 libxtst6 xdg-utils libatspi2.0-0 libuuid1 libsecret-1-0
AppImage FUSE issues:
sudo apt-get install fuse libfuse2
Missing dependencies:
# For AppImage
sudo dnf install fuse fuse-libs

# Common Electron dependencies
sudo dnf install gtk3 nss libXScrnSaver libnotify
Convert DEB to RPM (if needed):
sudo dnf install alien
sudo alien -r SlipStream-GUI-Linux-x64.deb
sudo rpm -i slipstream-gui-*.rpm
Missing dependencies:
# For AppImage
sudo pacman -S fuse2

# Electron dependencies (usually already installed)
sudo pacman -S gtk3 nss libxss
Build from AUR (if available): Check AUR for community packages.
Missing dependencies:
# For AppImage
sudo zypper install fuse libfuse2

# Electron dependencies
sudo zypper install libgtk-3-0 mozilla-nss libXScrnSaver1

SELinux / AppArmor considerations

SELinux may block network operations.Check if SELinux is enforcing:
getenforce
View SELinux denials:
sudo ausearch -m avc -ts recent
Temporarily set to permissive (testing only):
sudo setenforce 0
Test if SlipStream works. If it does, SELinux is the issue.Re-enable SELinux:
sudo setenforce 1
Create SELinux policy (permanent fix):
# Generate policy from denials
sudo ausearch -m avc -ts recent | audit2allow -M slipstream
# Apply policy
sudo semodule -i slipstream.pp
AppArmor rarely blocks Electron apps, but check if issues occur:Check AppArmor status:
sudo aa-status
View AppArmor denials:
sudo dmesg | grep -i apparmor
Temporarily disable (testing only):
sudo systemctl stop apparmor
Re-enable:
sudo systemctl start apparmor
Linux firewalls may block ports.Check iptables:
sudo iptables -L -n
Allow ports (iptables):
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5201 -j ACCEPT
Check firewalld (Fedora/CentOS):
sudo firewall-cmd --list-all
Allow ports (firewalld):
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=5201/tcp
sudo firewall-cmd --reload

Linux-specific logs

AppImage:
  • Settings: ~/.config/SlipStream GUI/settings.json
  • Logs: Check app’s Logs panel or run from terminal
DEB install:
  • Settings: ~/.config/SlipStream GUI/settings.json
  • Binaries: /opt/SlipStream GUI/resources/binaries/
AppImage:
./SlipStream-GUI-Linux-x64.AppImage
DEB install:
/opt/SlipStream\ GUI/slipstream-gui
All output (errors, warnings, logs) will appear in the terminal.
# Check what's using port 8080
sudo lsof -i :8080

# Check what's using port 5201
sudo lsof -i :5201

# Kill process by port
sudo lsof -ti:8080 | xargs kill -9
sudo lsof -ti:5201 | xargs kill -9
journalctl (systemd distributions):
# View recent logs
journalctl -xe

# Filter for errors
journalctl -p err -xe
dmesg (kernel messages):
dmesg | tail -50

Sharing VPN over network

# Show all network interfaces
ip addr show

# Or simpler
hostname -I
Look for your local IP (usually 192.168.x.x or 10.0.x.x).
Android:
  1. SettingsWi-Fi → Long-press network → Modify
  2. AdvancedProxyManual
  3. Hostname: Your Linux IP (e.g., 192.168.1.100)
  4. Port: 8080
iOS:
  1. SettingsWi-Fi → Tap (i) next to network
  2. HTTP ProxyManual
  3. Server: Your Linux IP
  4. Port: 8080
iptables:
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
sudo iptables -A INPUT -p tcp -s 192.168.0.0/16 --dport 8080 -j ACCEPT
firewalld:
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
ufw (Ubuntu):
sudo ufw allow 8080/tcp
sudo ufw reload
For issues not covered here, see Common issues or open an issue on GitHub.

Build docs developers (and LLMs) love