Skip to main content

Your submission was sent successfully! Close

Thank you for signing up for our newsletter!
In these regular emails you will find the latest updates from Canonical and upcoming events where you can meet our team.Close

Thank you for contacting us. A member of our team will be in touch shortly. Close

  1. Blog
  2. Article

Hugo Huang
on 1 March 2023


Why do we need a VPN server? A VPN (Virtual Private Network) server is a network server that allows users to create a secure and encrypted connection to another network over the internet. Here are some reasons why we need a VPN server:

  • Security: VPNs provide a secure way to access the internet, protecting sensitive data from being intercepted by hackers, snoopers, and other malicious actors. A VPN server encrypts all data transmitted between a user’s device and the internet, making it virtually impossible for anyone to intercept or access the data.
  • Privacy: VPNs allow users to protect their privacy by hiding their online activity from their Internet Service Provider (ISP) and other third parties. A VPN server can mask a user’s IP address, making it difficult for anyone to track their online activity and location.
  • Access to restricted content: Many websites and online services are geo-restricted, meaning they can only be accessed from certain locations. A VPN server allows users to bypass these restrictions and access content from anywhere in the world.
  • Remote access: VPNs can be used to provide secure remote access to corporate networks and resources, allowing employees to work from anywhere while maintaining a secure connection to company data.

Create a Ubuntu Virtual Machine on Google Cloud

First, we need a Virtual Machine to host the VPN server. For this demo, we will create a Virtual Machine instance on Google Cloud (follow this video to create a VM on Google Cloud step by step) and pick a region close to the location of your client machines. Here I chose us-west2:

Choose your OS for your server. For security and stability, I chose Ubuntu 20.04 Pro:

Setup Shadowsocks VPN server

In a few seconds, your Ubuntu VM will be running. Now, SSH into the server through the “SSH” button on the right:

A SSH-in-browser will pop out like this:

Now, login as root:

sudo su

Update your OS:

apt-get update

Install pip:

apt-get install python3-pip

Install Shadowsocks

pip install shadowsocks

Create a configuration file for your Shadowsocks to configure the Shadowsocks server

vi /etc/shadowsocks.json

Add the following content to your config JSON file:

{
    "server":"0.0.0.0",
    "server_port":8000,
    "local_port":1080,
    "password":"Your_Password",
    "timeout":600,
    "method":"chacha20"
}

Start the server

ssserver -c /etc/shadowsocks.json -d start

If you want to stop the server

ssserver -c /etc/shadowsocks.json -d stop

If you want to re-start the server

ssserver -c /etc/shadowsocks.json -d restart

Now you successfully created a running Shadowsocks server on Google Cloud, you can connect to it through a Shadowscocks Client. 

Connecting to your Shadowsocks server

Download the Shadowsocks Client to your local machine.

From https://github.com/nojsja/shadowsocks-electron/releases/tag/v1.2.3, choose the version suitable for your personal computer. I downloaded the Mac version and then installed it.

After I successfully installed the client, I add the server in the Client UI:

The Server Address is the IP address of my server in Google Cloud. You can find the IP address in your GCP console. For more information about the Shadowsocks client, check out this github repo: https://github.com/nojsja/shadowsocks-electron.

Click “SAVE” and you are all set. Enjoy your own VPN!

Related posts


Canonical
1 July 2025

Chiseled Ubuntu containers for OpenJRE 8, 17 and 21

Cloud and server Article

Today we are announcing chiseled containers for OpenJRE 8, 17 and 21 (Open Java Runtime Environment), coming from the OpenJDK project. These images are highly optimized for size and security, containing only the dependencies that are strictly necessary. They are available for both AMD64 and ARM64 architectures and benefit from 12 years of ...


Canonical
1 July 2025

Introducing Canonical builds of OpenJDK

Canonical announcements Article

Java has long been the most popular language for software development in large enterprises, with 90% of Fortune 500 companies using it for backend development, particularly in industries like finance, healthcare, and government.  Java developers, more than most, are tasked with balancing the implementation of new features against the crit ...


Rajan Patel
1 July 2025

Update Livepatch Client for the newest kernel module signing certificate

Security Article

The kernel engineering team at Canonical has generated a new module signing certificate on May 16, 2025, and it is embedded in all Ubuntu kernels published after that date. Livepatch Client version 10.11.2 published on June 13, 2025 includes this new certificate. Livepatch Client 10.11.2 or greater is required to successfully Livepatch al ...