Pavel Piatruk’ tech & personal blog

Psiphon: setting up own server & Linux client

Psiphon is obfuscated proxy, and its client & server are open-source.

The plan is:

  • setting up own Psiphon server
  • setting up Psiphon Client on Linux that connects to your own Psiphon server

Psiphon Server


  • consider changing OSSH port from 9991 to something cool e.g. 22, 443 etc…
  • when you change server port or server IP, regenerate the token & update the clients.
  • multiple protocols, on different ports, they all will be tried by a client. List of available protocols :


mkdir -p /opt/psiphond-server/
cd /opt/psiphond-server/
curl -o psiphond -L
chmod 755 psiphond
MYIP=`curl -4 -Ss`
echo $MYIP
./psiphond -ipaddress $MYIP  -protocol OSSH:9991 -protocol QUIC-OSSH:9996  -protocol UNFRONTED-MEEK-OSSH:9999 generate
cat server-entry.dat ; echo

Output: ~2500 letters and digits. It is the token for clients ; save it.

Run Psiphon server manually …

./psiphond  run

.. or stop & create Systemd unit:

vim /etc/systemd/system/psiphond.service 

ExecStart=/opt/psiphond-server/psiphond run


Enable the unit:

systemctl daemon-reload
systemctl start psiphond.service
systemctl enable psiphond.service
systemctl status  psiphond.service

Psiphon Client

rm -rf ~/
mkdir -p ~/
cd ~/
curl -o psiphon-tunnel-core-x86_64 -L
chmod 755 psiphon-tunnel-core-x86_64
vim client.own.conf

paste text below but replace __TOKEN__ to the Token from step above.

    "LocalHttpProxyPort" : 8081,
    "LocalSocksProxyPort" : 1081,
    "PropagationChannelId" : "FFFFFFFFFFFFFFFF",
    "SponsorId" :            "FFFFFFFFFFFFFFFF",
    "TargetServerEntry" : "__TOKEN__"
echo './psiphon-tunnel-core-x86_64 -config client.own.conf' > run.client
chmod 755 run.client

It will start Http proxy on local port 8081 and Socks proxy on port 1081. Test those proxies in another console.

curl -x localhost:8081 -v 

That gave me 700KB/s speed.

EDIT 2023-01-09

  • typos fixed