The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and ChromeOS

Overview

Outline Client

Build Status

The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and ChromeOS. The Outline Client is designed for use with the Outline Server software, but it is fully compatible with any Shadowsocks server.

The client's user interface is implemented in Polymer 2.0. Platform support is provided by Cordova and Electron, with additional native components in this repository.

Requirements for all builds

All builds require Node 16, in addition to other per-platform requirements.

đź’ˇ NOTE: if you have nvm installed, run nvm use to switch to the correct node version!

After cloning this repo, install all node dependencies:

npm install

Building the web app

Outline clients share the same web app across all platforms. This code is located in the src/www directory. If you are making changes to the shared web app and do not need to test platform-specific functionality, you can test in a desktop browser by running:

npm run action gulp -- build browser
npx cordova run browser

The latter command will open a browser instance running the app. Browser platform development will use fake servers to test successful and unsuccessful connections.

UI components are located in src/www/ui_components. The app logic is located in src/www/app.

Tip: Build with (export BUILD_ENV=development; npm run action gulp -- build browser) to enable source maps.

Building the Android app

Additional requirements for Android:

đź’ˇ NOTE: If you're running linux, you can automatically set up the development environment by running bash ./tools/build/setup_linux_android.sh

To build for android, run:

npm run action gulp -- build android

To rebuild after modifying platform dependent files, run:

npx cordova platform rm android && npm run action gulp -- build android

If this gives you unexpected Cordova errors, run:

npm run clean && npm ci && npm run action gulp -- build android

Cordova will generate a new Android project in the platforms/android directory. Install the built apk by platforms/android/app/build/outputs/apk/ /debug/app- -debug.apk (You will need to find the corresponding architecture if you choose to install the apk on a device).

To learn more about developing for Android, see docs/android-development.

Building for Android with Docker

A Docker image with all pre-requisites for Android builds is included. To build:

  • Install dependencies with ./tools/build/build.sh npm ci
  • Then build with ./tools/build/build.sh npm run action gulp -- build android

Apple (macOS and iOS)

Additional requirements for Apple:

  • An Apple Developer Account. You will need to be invited to join the "Jigsaw Operations LLC" team
  • XCode 13+ (download)
  • XCode command line tools: xcode-select --install

To build for macOS (OS X), run:

npm run action gulp -- build osx

To build for iOS, run:

npm run action gulp -- build ios

To open the macOS project on XCode:

open ./platforms/osx/Outline.xcodeproj

To open the iOS project on XCode:

open ./platforms/ios/Outline.xcodeproj

To learn more about developing for Apple, see docs/apple-development

Electron

Unlike the Android and Apple clients, the Windows and Linux clients use the Electron framework, rather than Cordova.

Windows

Additional requirements for building on Windows:

  • Cygwin. It provides the "missing Unix pieces" required by build system such as rsync (and many others). Besides the default selected Unix tools such as bash and rsync, please also make sure to install git during Cygwin installation as well. You will need to clone this repository using git in Cygwin instead of the native Windows version of git, in order to ensure Unix line endings.

To build the Electron clients, run:

npm run action src/electron/build -- windows

To run the Electron clients, run:

npm run action src/electron/start -- windows

To package the Electron clients into an installer executable, run:

npm run action src/electron/package_[linux|windows]

Error reporting

To enable error reporting through Sentry for local builds, run:

export SENTRY_DSN=[Sentry development API key]
[platform-specific build command]

Release builds on CI are configured with a production Sentry API key.

Support

For support and to contact us, see: https://support.getoutline.org.

Comments
  • [Feature Request] Add

    [Feature Request] Add "proxy by rule" feature

    Feature description

    Add rules for URL/IP addresses so that they can connect DIRECTly or through the PROXY, or even REJECT to connect.

    Why?

    For some local applications, we may need to set them as "direct connect" due to speed or regional restrictions or security(they may collect VPS information and provide it to government agencies) reason and only need to proxy some blocked addresses.

    For example, some people in China maintain a list of addresses blocked by the government, called gfwlist(https://github.com/gfwlist/gfwlist). And some rules for 3rd ss/v2ray iOS client shadowrocket, like https://github.com/lhie1/Surge/blob/master/Shadowrocket.conf

    So could you add a feature that can subscribe to these online rules or manually add? Thanks a lot.

    feature request backlog 
    opened by obhasqr 26
  • windows client: delay before netsh can configure TAP device

    windows client: delay before netsh can configure TAP device

    Hi Outline team:

    On behalf of our users, we have been getting consistent support requests for Outline windows client.

    One of our users cannot connect to Outline at all. Here is what they get. The user updated to the latest version 1.2.17

    image

    Here is the list of network interfaces after installing Outine from route print. screen shot 2018-10-18 at 3 46 07 pm

    I asked the user to submit feedback multiple times. Please let me know if you require us to send another one.

    Please let me know if there are any other information that could help with debugging.

    bug prioritised 
    opened by kouhi 25
  • windows client:

    windows client: "Not able to configure routing tables successfully"

    Using ShadowSocks installed on VPS and I get the "We were not able to configure your routing tables successfully......" message when using the Windows Outline Client.

    I am able to connect to the same ShadowSocks server on my mobile phone.

    need more info 
    opened by birdmoney11 25
  • Support v2ray-plugin

    Support v2ray-plugin

    V2ray-plugin is a very useful plugin in order to improve the concealment of shadowsocks. This is almost necessary to use in China. Please consider this request again. Thank you for your outstanding work.

    https://github.com/shadowsocks/v2ray-plugin

    opened by laventofly 23
  • windows client: too many

    windows client: too many "another VPN is active" false positives

    • still shows same error "It seems like another VPN is active"
    • uninstall still does not remove Outline's tap - adapter nor does it remove VPN server settings from computer during uninstall...

    Win10 enterprise latest updates, normally use Cisco AnyConnect for VPN connection (so it is installed on my computer)

    bug prioritised 
    opened by mookrhodan 20
  • macOS ARM64 build on App Store

    macOS ARM64 build on App Store

    It would be nice to have a native ARM64 on macOS. I know that the x86-64 version works but I'm not installing Rosetta so I can keep all my software on my laptop native.

    feature request Fixit 2021 Q1 
    opened by kklem0 15
  • windows client: Internet Connection Problem related to TAP and outline

    windows client: Internet Connection Problem related to TAP and outline

    Last week, Suddenly my laptop didn't connect to Internet, the problem was related to DNS. And it was wonderful because the problem was between only my laptop (window 7) and my router. my laptop could connect to my phone's hot-spot and other devices could connect to WiFi and internet correctly.

    After googling a lot, finally I reset my tcp/ip by this command: netsh int ip reset

    After reseting, Ouline could not connect and showed 'Unexpected Error ...'. I had searched in issues and found the problem is related to TAP, so I deleted and inatlled tap again.

    Every thing was OK but after restart windows, the internet connection problem occurred again.

    I think it's related to new version of Outline.

    Best Regards

    bug prioritised 
    opened by mataqvazadeh 15
  • Problem with iOS and MacOS clients v1.2.1(Oct 19 2018 release)

    Problem with iOS and MacOS clients v1.2.1(Oct 19 2018 release)

    I've been using Outline on iOS for many months now (with a Digital Ocean droplet). Many thanks!

    Ever since the Oct 19 update to v1.2.1, however, I have been having problems.

    Specifically: periodically, the iOS Outline client (on iPhone 8+, iOS 12.0.1/16A404) gets into the following state:

    • No traffic seems to get through (e.g., trying to bring up any arbitrary web page -- even something well-known, such as cnn.com or google.com -- spins forever, and Safari eventually gives up)
    • The "VPN" indicator is still lit in the top left of my iOS status bar
    • If I open the Outline client, it's in a "reconnecting" loop. It seems to keep trying forever (or at least I haven't been patient enough to wait for it to give up -- I've always tapped "disconnect" to make it stop after 10-20 tries).

    After Outline disconnects, the "VPN" indicator (correctly) goes out, and traffic starts flowing again. If I immediately try to make the Outline client connect again, it tries several times and eventually gives up.

    This only seems to happen when on wifi. I have noticed that this seems to happen when I move from cellular to wifi, but I don't know if this is always the case.

    HOWEVER, when this problem occurs, I notice that if I leave Outline disconnected for a few minutes and then go back into the Outline client app and try to connect again, it connects just fine (i.e., the "VPN" indicator goes on and traffic is still flowing).

    Did something change in the v1.2.1 release with regards to cached connections to my Outline server, perchance? Or did something regarding my connection to my Outline server become sensitive to changing network routes (e.g., switching from cellular to wifi)?

    I ask because I see "Bypass LAN and private networks in the VPN" in the v1.2.1 release notes. What exactly does that mean?

    Please let me know if there's more information that I can provide to help debug this issue. Thanks!

    bug 
    opened by jsquyres 14
  • windows client: cannot rename TAP device when the new device has non-Latin characters

    windows client: cannot rename TAP device when the new device has non-Latin characters

    Hi

    I just download the latest windows client v1.2.12. my windows host is running Windows Server 2008 R2 64bit.

    during installation, it can create a new Tap device, but seems can't rename or next step configuration. Outline Setup will report "Could not rename TAP device." at the end.

    outline_v1 2 12_install_fail

    when I configure & connect to a server, it then always report the "Not able to configure routing tables successfully"

    I tried to: 1, manually rename the tap device to "outline-tap0", then the "Not able to configure routing tables successfully" error will not observe but the tap device can't receive any data. that is, connection is established, but the routing table seems not configured correctly as from "route print" the tap device IP is the invalid "169.254.xx.xx" 2, manually configure the tap IPv4 address as 10.0.85.12/255.255.255.0/10.0.85.1(GW), still the same issue that no data received in the tap NIC.

    bug prioritised 
    opened by yywudi 14
  • windows v1.2 client may use system's default DNS server(s)

    windows v1.2 client may use system's default DNS server(s)

    Hello

    Today my outline client app got updated to v1.2. It created a virtual adapter with preconfigured settings such as IP, Network Mask, DNS, etc. I don't know if it's a system bug or a conflict, although with newest version I can connect to the server but none of my traffic goes through server. I also changed my DNS settings with no luck. I had to uninstall outline v1.2 and reinstall my previous version beta v1.1.1 which solved my problem. Everything works fine now! It won't create a virtual adapter which I think is the source of my problem.

    bug prioritised 
    opened by ercxar 14
  • Outline VPN doesn't work on windows 10

    Outline VPN doesn't work on windows 10

    Describe the bug I am unable to connect to my VPN server. It just says connecting and disconnects

    To Reproduce Steps to reproduce the behavior:

    1. Go to 'outline VPN client'
    2. Click on 'connect'
    3. See error

    Expected behavior It should connect to VPN

    Screenshots image

    Desktop (please complete the following information):

    • OS: Windows 10 Home
    • Browser: Chrome
    • Version: Latest
    bug need more info os/windows Fixit 2021 Q1 failure/connect 
    opened by shubhindia 13
  • chore(cordova/android): make an Android library

    chore(cordova/android): make an Android library

    This change moves most of the Android platform code into a separate Android Studio project that can be developed and built independently. This should make maintenance much easier, because developers can make use of Android Studio's rich support for building, testing, and refactoring.

    The OutlinePlugin.java file remains in the Cordova project due to its dependence on CordovaLib.

    size/XL 
    opened by bemasc 0
  • Load balancer

    Load balancer

    What would you like the app to enable you to do? I want to have a load-balancing feature so it can check all servers simultaneously and connect to the fastest server based on latency.

    Describe alternatives you've considered There is no alternative automatic solution except for checking servers one by one manually.

    Additional context This feature in similar application named Clash: https://github.com/Dreamacro/clash/wiki/configuration#all-configuration-options

    feature request 
    opened by miladrahimi 0
  • Version 1.9.0 does not work on Windows.

    Version 1.9.0 does not work on Windows.

    The Outline Windows client software is automatically updated to version 1.9.0, but after this version update, trying to connect will find that it has been connected, but it is not actually connected, the corresponding network adapter is also in the unconnected state, only the client status is displayed as connected, which should be a bug.

    Microsoft Windows 11

    bug 
    opened by silmooninc 21
  • Let’s build a new solution for Iranian users.

    Let’s build a new solution for Iranian users.

    Describe the bug My Iranian friends are unable to connect and they get the “incorrect” key error.

    To Reproduce Try to connect to an outline server from

    Submit Feedback We should come up with a solution to ensure the governments can’t detect and block outline.

    bug 
    opened by wyntrson 0
Releases(windows-v1.8.1)
Owner
Jigsaw
Jigsaw is an incubator within Google that uses technology to address geopolitical issues.
Jigsaw
Cross-platform instrumentation and introspection library written in C

Gum Cross-platform instrumentation and introspection library written in C. This library is consumed by frida-core through its JavaScript bindings, Gum

Frida 524 Jan 4, 2023
A Swift cross-platform (Apple and Linux) networking library.

KippleNetworking A Swift library that offers cross-platform (Apple and Linux) networking support, intended for the creation of cross-platform SDKs to

Kipple 11 Sep 20, 2022
Easily generate cross platform Swift framework projects from the command line

SwiftPlate Easily generate cross platform Swift framework projects from the command line. SwiftPlate will generate Xcode projects for you in seconds,

John Sundell 1.8k Dec 27, 2022
Cross-platform, sophisticated frontend for the libretro API.

RetroArch is the reference frontend for the libretro API. Popular examples of implementations for this API includes video game system emulators and game engines as well as more generalized 3D programs. These programs are instantiated as dynamic libraries. We refer to these as "libretro cores".

null 7.4k Dec 27, 2022
Cross-platform Swift library for accessing the public GitHub API.

GoatHerb GoatHerb is a cross-platform Swift library for accessing the GitHub API. Features General Compatible with swift-log. Full concurrency (async/

Brian Drelling 3 Oct 30, 2022
Ported scrcpy for mobile platforms, to remotely control Android devices on your iPhone or Android phone.

scrcpy-mobile Ported scrcpy for mobile platforms, to remotely control Android devices on your iPhone or Android phone. Currently only supports control

Ethan 140 Jan 2, 2023
Alfred Workflow to be used with Wooshy, that brings any macOS windows to the foreground

Wooshy: Window to the Foreground! Switch apps with Alfred. Switch app windows with Wooshy: Window to the Foreground! ScreenFlow.mp4 Why Aren't you ann

G. 31 Dec 12, 2022
Windows 10/11 lock screen replica

Diary ?? Windows 10/11 lock screen replica Preview Installation Add this repository to your package manager: TBD Install Diary Compatibility iPhone, i

alexa 51 Dec 20, 2022
Keybase Go Library, Client, Service, OS X, iOS, Android, Electron

Keybase Hi, and welcome to the Keybase client repo. All our client apps (macOS, Windows, Linux, iOS, and Android) are being actively developed in this

Keybase 8.3k Dec 31, 2022
React Native utility library around image and video files for getting metadata like MIME type, timestamp, duration, and dimensions. Works on iOS and Android using Java and Obj-C, instead of Node 🚀.

Qeepsake React Native File Utils Extracts information from image and video files including MIME type, duration (video), dimensions, and timestamp. The

Qeepsake 12 Oct 19, 2022
Blazing⚡️Fast BTC and ETH Wallet Generator library for React Native, Android and iOS

Blazing ⚡️ Fast BTC and ETH Wallet Generator library for React Native, Android and iOS.

Coingrig 3 Feb 21, 2022
Fridax enables you to read variables and intercept/hook functions in Xamarin/Mono JIT and AOT compiled iOS/Android applications.

Fridax is a Node package for dealing with Xamarin applications while using the Frida API. Goal • Installation • Usage • Examples • Issues • License Bu

Northwave 125 Jan 3, 2023
iOS's Stocks App clone written in React Native for demo purpose (available both iOS and Android).

FinanceReactNative iOS's Stocks App clone written in React Native for demo purpose (available both iOS and Android). Data is pulled from Yahoo Finance

kf 2k Dec 29, 2022
Kotlin Multiplatform sample with SwiftUI and Compose (Desktop and Android) clients. Heavily inspired by Wordle game.

WordMasterKMP Kotlin Multiplatform sample heavily inspired by Wordle game and also Word Master and wordle-solver samples. The main game logic/state is

John O'Reilly 56 Oct 4, 2022
🏀 iOS and Android NBA app created with React Native

Swish An iOS and Android NBA app created with React Native. If you would like to request a feature, find a bug, have a question, or would like to leav

James Kuczmarski 108 Nov 11, 2022
The Bitwarden mobile application is written in C# with Xamarin Android, Xamarin iOS, and Xamarin Forms.

Bitwarden Mobile Application The Bitwarden mobile application is written in C# with Xamarin Android, Xamarin iOS, and Xamarin Forms. Build/Run Require

Bitwarden 4.2k Dec 29, 2022
Respresso is a centralized resource manager for shared Android, iOS and Web frontend projects

Introduction Respresso is a centralized resource manager for shared Android, iOS and Web frontend projects. It allows you to simply import the latest

Respresso 10 Nov 8, 2022
Allows you to emulate an Android native library, and an experimental iOS emulation

unidbg Allows you to emulate an Android native library, and an experimental iOS emulation. This is an educational project to learn more about the ELF/

Banny 2.5k Dec 30, 2022
Runtime Mobile Security (RMS) 📱🔥 - is a powerful web interface that helps you to manipulate Android and iOS Apps at Runtime

Runtime Mobile Security (RMS) ?? ?? by @mobilesecurity_ Runtime Mobile Security (RMS), powered by FRIDA, is a powerful web interface that helps you to

Mobile Security 2k Dec 29, 2022