Outline VPN - Making it safer to break the news.
Journalists need safe access to information to research issues, communicate with sources, and report the news. Outline lets news organizations easily provide their network safer access to the open internet.
Outline makes it easy for news organizations to set up a corporate virtual private network (VPN) on their own server to more safely connect to the internet and keep their communication private.
Outline is completely open source and was audited by Radically Open Security (2017) and Cure53 (2018).
Outline gives you control over your privacy by letting you operate your own server and Outline never logs your web traffic. Strong encryption helps keep your communications private.
Outline servers automatically update with the latest security settings, so you don't have to worry about keeping software up-to-date.
Outline is easy to set up and manage. Organizations can set up their own server in just a few minutesno tech savvy required.
Owning your server lets you control the number of people who have access to it, which can help maintain consistent internet speeds even during peak traffic hours.
Outline is an open source project created by Jigsaw to provide a safer way for news organizations and journalists to access the internet.
Outline is powered by Shadowsocks and is still an early stage project. You can contribute to the code on GitHub, and follow us on Reddit and Medium to hear when we expand to more platforms and add new features.
The Outline Manager application creates and manages Outline servers, powered by Shadowsocks. It uses the Electron framework to offer support for Windows, macOS and Linux.
An Outline server runs instances of Shadowsocks proxies and provides an API used by the Outline Manager application.
OS | Download |
---|---|
Windows 7.0+ | ![]() |
Most of Linux Releases | ![]() |
macOS 10.9+ | ![]() |
The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and Chrome OS. 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.
OS | Download |
---|---|
Windows 7.0+ | ![]() |
Most of Linux Releases | ![]() |
macOS 10.11+ | ![]() |
iOS 9.0+ | ![]() |
Android 5.0+ |
![]() ![]() |
Chrome OS 64.0+ | ![]() |
According to partial Table of Ubuntu versions from Wikipedia:
By default, the above versions of the 64-Bit Ubuntu operating system meets these requirements.
Docker is an application that simplifies the process of managing application processes in containers. Containers let you run your applications in resource-isolated processes. They're similar to virtual machines, but containers are more portable, more resource-friendly, and more dependent on the host operating system.
For a detailed introduction to Docker, check out Docker Official Documentation.
First, update your existing list of packages:
$ sudo apt update
Next, install a few prerequisite packages which let apt
use packages over HTTPS:
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
Then add the GPG key for the official Docker repository to your system:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Add the Docker repository to APT sources and assume x86_64 architecture:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable edge test"
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Next, update the package database with the Docker CE packages from the newly added repo:
$ sudo apt update
Make sure you are about to install from the Docker CE repo instead of the default Ubuntu repo:
$ apt-cache policy docker-ce
You'll see output like this, although the version number for Docker CE may be different:
docker-ce:
Installed: (none)
Candidate: 5:19.03.0~2.3.rc3-0~ubuntu-disco
Version table:
5:19.03.0~2.3.rc3-0~ubuntu-disco 500
500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
5:19.03.0~2.2.rc2-0~ubuntu-disco 500
500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
5:19.03.0~1.5.beta5-0~ubuntu-disco 500
500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
5:19.03.0~1.4.beta4-0~ubuntu-disco 500
500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
5:19.03.0~1.3.beta3-0~ubuntu-disco 500
500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
5:19.03.0~1.2.beta2-0~ubuntu-disco 500
500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
5:19.03.0~1.1.beta1-0~ubuntu-disco 500
500 https://download.docker.com/linux/ubuntu disco/test amd64 Packages
Notice that docker-ce
is not installed, but the candidate for installation is from the Docker CE repository for Ubuntu 19.04 (disco
).
Then, install Docker CE:
$ sudo apt install docker-ce
Docker CE should now be installed, the daemon started, and the process enabled to start on boot. Check that it's running:
$ sudo systemctl status docker.service
The output should be similar to the following, showing that the service is active and running:
docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-07-15 15:13:17 UTC; 1min 50s ago
Docs: https://docs.docker.com
Main PID: 24270 (dockerd)
Tasks: 9
Memory: 45.0M
CGroup: /system.slice/docker.service
24270 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Finally, set the service to boot from the boot:
$ sudo systemctl enable docker.service
First, get an Outline official server one-click installation bash script install_server.sh
and run this bash script:
$ sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)"
You will see lots of output from the script: first, it checks for the necessary programs (Docker), creates secret keys, and then downloads and starts two Docker containers: a shadowbox server and a watchtower server to update shadowbox as needed.
When the Outline VPN server installation script finishes, you'll see some output similar to the following:
> Verifying that Docker is installed .......... OK
> Verifying that Docker daemon is running ..... OK
> Creating persistent state dir ............... OK
> Generating secret key ....................... OK
> Generating TLS certificate .................. OK
> Generating SHA-256 certificate fingerprint .. OK
> Starting Shadowbox .......................... OK
> Starting Watchtower ......................... OK
> Waiting for Outline server to be healthy .... OK
> Creating first user ......................... OK
> Adding API URL to config .................... OK
> Checking host firewall ...................... OK
CONGRATULATIONS! Your Outline server is up and running.
To manage your Outline server, please copy the following line (including curly
brackets) into Step 2 of the Outline Manager interface:
{"apiUrl":"https://YOUR_UBUNTU_SERVER_IP_ADDRESS_EXAMPLE:TCP_PORT_EXAMPLE/XXXXXXXXXXXXXXXXXXXXXX","certSha256":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
You wont be able to access it externally, despite your server being correctly
set up, because there's a firewall (in this machine, your router or cloud
provider) that is preventing incoming connections to ports TCP_PORT_EXAMPLE and TCP_AND_UDP_PORT_EXAMPLE.
Make sure to open the following ports on your firewall, router or cloud provider:
- Management port TCP_PORT_EXAMPLE, for TCP
- Access key port TCP_AND_UDP_PORT_EXAMPLE, for TCP and UDP
Keep that information safe, as you'll need it in the other steps. For now, rejoice: You have successfully installed an Outline VPN server!
First, download Linux AppImages for Outline-Manager Client and Outline Client by above steps #2 Get Outline Manager Client and #3 Get Outline Client. And then, download icons for the two clients:
$ sudo wget https://raw.githubusercontent.com/seingshinlee/outline-vpn-mirrors/dev/statics/outline-manager-client.png && sudo wget https://raw.githubusercontent.com/seingshinlee/outline-vpn-mirrors/dev/statics/outline-client.png
Recursively, create the specified directories:
$ sudo mkdir -p outline/{outline-manager-client,outline-client}
Grant permissions that two client programs can execute:
$ sudo chmod a+x *.AppImage
Move the two programs to the two directories you just created:
$ sudo mv Outline-Manager.AppImage outline/outline-manager-client && sudo mv Outline-Client.AppImage outline/outline-client
Then, move the two icons to the same two directories you just created:
$ sudo mv outline-manager.png outline/outline-manager-client && sudo mv outline.png outline/outline-client
For Outline Manager:
$ sudo cat >$(pwd)/outline-manager-client/outline-manager.desktop <<-EOF
[Desktop Entry]
Encoding=UTF-8
Name=Outline Manager
GenericName=Outline VPN - Outline Manager Client
Comment=The Outline Manager application creates and manages Outline servers, powered by Shadowsocks.
Exec=/opt/outline/outline-manager-client/Outline-Manager.AppImage %f
Icon=/opt/outline/outline-manager-client/outline-manager-client.png
Terminal=false
Type=Application
Categories=Internet
StartupNotify=true
EOF
For Outline:
$ sudo cat >$(pwd)/outline/outline.desktop <<-EOF
[Desktop Entry]
Encoding=UTF-8
Name=Outline
GenericName=Outline VPN - Outline Client
Comment=The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and Chrome OS.
Exec=/opt/outline/outline-client/Outline-Client.AppImage %f
Icon=/opt/outline/outline-client/outline-client.png
Terminal=false
Type=Application
Categories=Internet
StartupNotify=true
EOF
outline
to /opt
$ sudo mv outline/ /opt
For outline-manager.desktop
:
$ sudo ln -s /opt/outline/outline-manager-client/outline-manager.desktop /usr/share/applications/outline-manager.desktop
For outline.desktop
:
$ sudo ln -s /opt/outline/outline-client/outline.desktop /usr/share/applications/outline.desktop
Last, run the command and pop-up the window about Startup application preferences
:
$ gnome-session-properties
Choose Outline-Manager.AppImage
, click Edit
, modify the command
to /opt/outline/outline-manager-client/Outline-Client.AppImage
, and finally save it.
The same reason, you can choose Outline-Client.AppImage
, click Edit
, modify the command
to /opt/outline/outline-client/Outline-Client.AppImage
, and finally save it.
At this point, you completely installed and configured all. Now, Let us reboot computer and try it!
Usage:
Directly, you can take the command into Terminal and enter to continue.
$ sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/seingshinlee/outline-vpn-mirrors/dev/scripts/outline-vpn-ubuntu-one-click-script.sh)"
Or you can Download this script to you computer.
$ sudo unzip outline-vpn-mirrors-dev.zip
$ cd outline-vpn-mirrors-dev/scripts
$ bash outline-vpn-ubuntu-one-click-script.sh
`VPNShadowSocks
Proxy``GFW``GFW Proxy``One-click Script``Ubuntu`````````````````````````````