Setup & Run Psiphon on Your Linux Machine

Alex Ssanya
3 min readOct 23, 2019

Are you censored by your country, corporation, or campus?

I personally live in a country where our government introduced a tax to access various social media sites like facebook, twitter, Linkedin. And because of this, my only preferred choice to access them sites was to go through a VPN.

I tried a number of them, till I got to Psiphon which now happens to be my VPN of choice; Though I was able to use it on my android phone, I could not be able to use it on my Linux box since up to now (the time of this writing) they exist no official binary for the Linux machines.

I searched around the internet on how to set up Psiphon on the Linux boxes via the web but I couldn’t happen to get to a working solution for months, till one day I fell to the writing of Yandere with the guide I successfully followed to setup Psiphon on my box.

So, You may now be wondering why I am even re-writing the procedures instead of just sharing his link?!. Well!!; His steps were not straight forward to me and I thought they could be someone who might get the same challenges I went through.

Okay, am now done with my verboseness (if this word even exists).

Setup

  1. Since Psiphon is in written with go language, you now need to install the go compiler by the instruction here.
  2. We also need GIT on your machine; for a Debian machine, you may run apt-get install git or this if you are using a different Linux build.

Build

  1. Now, you need to set the GOPATH,
$ export GOPATH=~/golang

2. Setup the Necessary Variables for the build versioning, by simply copying below content & pasting it in your terminal

BUILDDATE=$(date --iso-8601=seconds)BUILDREPO=$(git config --get remote.origin.url)BUILDREV=$(git rev-parse --short HEAD)GOVERSION=$(go version | perl -ne '/go version (.*?) / && print $1')DEPENDENCIES=$(echo -n "{" && go list -f '{{range $dep := .Deps}}{{printf "%s\n" $dep}}{{end}}' | xargs go list -f '{{if not .Standard}}{{.ImportPath}}{{end}}' | xargs -I pkg bash -c 'cd $GOPATH/src/pkg && echo -n "\"pkg\":\"$(git rev-parse --short HEAD)\","' | sed 's/,$/}/')LDFLAGS="\-X github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common.buildDate=$BUILDDATE \-X github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common.buildRepo=$BUILDREPO \go build-X github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common.buildgo buildRev=$BUILDREV \-X github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common.goVersion=$GOVERSION \-X github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common.dependencies=$DEPENDENCIES \"

3. Now let us clone the Psiphon project in our desired folder the command below in the terminal

$ git clone https://github.com/Psiphon-Labs/psiphon-tunnel-core.git

4. Now to cd into psiphon-tunnel-core/psiphon and run go get

$ cd psiphon-tunnel-core/psiphon
$ go get

5. Go to the ClientConsole folder and run go build to make the ConsoleClient binary, a console Psiphon client application.

$ go build

Configure

Now create a configuration file called psiphon.config in the ClientConsole folder and save it with the content below

{
"LocalHttpProxyPort":8081,
"LocalSocksProxyPort":1081,
"PropagationChannelId":"FFFFFFFFFFFFFFFF",
"RemoteServerListDownloadFilename":"remote_server_list",
"RemoteServerListSignaturePublicKey":"MIICIDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEAt7Ls+/39r+T6zNW7GiVpJfzq/xvL9SBH5rIFnk0RXYEYavax3WS6HOD35eTAqn8AniOwiH+DOkvgSKF2caqk/y1dfq47Pdymtwzp9ikpB1C5OfAysXzBiwVJlCdajBKvBZDerV1cMvRzCKvKwRmvDmHgphQQ7WfXIGbRbmmk6opMBh3roE42KcotLFtqp0RRwLtcBRNtCdsrVsjiI1Lqz/lH+T61sGjSjQ3CHMuZYSQJZo/KrvzgQXpkaCTdbObxHqb6/+i1qaVOfEsvjoiyzTxJADvSytVtcTjijhPEV6XskJVHE1Zgl+7rATr/pDQkw6DPCNBS1+Y6fy7GstZALQXwEDN/qhQI9kWkHijT8ns+i1vGg00Mk/6J75arLhqcodWsdeG/M/moWgqQAnlZAGVtJI1OgeF5fsPpXu4kctOfuZlGjVZXQNW34aOzm8r8S0eVZitPlbhcPiR4gT/aSMz/wd8lZlzZYsje/Jr8u/YtlwjjreZrGRmG8KMOzukV3lLmMppXFMvl4bxv6YFEmIuTsOhbLTwFgh7KYNjodLj/LsqRVfwz31PgWQFTEPICV7GCvgVlPRxnofqKSjgTWI4mxDhBpVcATvaoBl1L/6WLbFvBsoAUBItWwctO2xalKxF5szhGm8lccoc5MZr8kfE0uxMgsxz4er68iCID+rsCAQM=",
"RemoteServerListUrl":"https://s3.amazonaws.com//psiphon/web/mjr4-p23r-puwl/server_list_compressed",
"SponsorId":"FFFFFFFFFFFFFFFF",
"UseIndistinguishableTLS":true
}

Run

To run the Psiphon VPN ClientConsole, simply run

$ .\ClientConsole -config psiphon.config
the connection is established when you notice the URL attribute in the data object {“data”: {“url”:”https://….”}}

Remember to set up your machine proxy as below

It’s worth noting, that Psiphon is designed to provide you with open access to online content. Psiphon does not increase your online privacy, and should not be considered or used as an online security tool.

I hope, by now you have successfully configured Psiphon on your Linux box with no issues but if you happen to get any, I am very willing to assist simply drop in the comment

:) Happy browsing with Psiphon on your Linux boxes.

--

--