## How To Setup A Lokinet Exit Node for "Normies" aka newbies aka non-developers. _by: yidakee (aka @`super_duderino`)_ if you appreciate this tutorial and would like to buy me a beer, feel free to send some loki love over to `L58ck1CcByFHaQu18c4YQg6UkH1vTX1SBKYL6ecRxY87if4iNKcBAH55GS9ahVt6hS6oLP7LC5TA1Lmdb8B8o5MuSyohRJ4` #A Lokinet Exit Node is a next-generation onion routing service that works like a VPN. It is similar to TOR or I2P, though a heck of a lot better. You will be able to surf Lokinet as well as regular 'ol clearnet (the "real" main internet everyone uses) with complete state-of-the-art privacy and anonymity. For example, if you are a TOR regular, you likely use a VPN for that extra protection against ISP snooping. Well, now you can just use a Lokinet Exit Node for a vastly superior protection in comparisson to regular VPNs You can find free Lokinet Exit Nodes around, although performance mileage may vary. Alternatively, some super high performance Exit Nodes exist, where for a very small fee you will be able to surf the entire internet with great performance. You can find offers over at http://cafe.loki Alternatively, you can run your own Exit Node! This guide is intended for everyone out there who struggles with classic build instructions given by developlers. What is terribly logical to them is often weird and alien to the rest of us. The purpose of this tutorial is to give you an idiot-proof copy/paste procedure that should work with virtually any VPS (virtual private server) running Ubuntu 18.04 or Ubuntu 20.04. Other flavours are likely to work, however not tested. A Lokinet Exit is very CPU dependent. Be sure to buy a quality dedicated server, or a very high quality VPS. Recommended is 2 or more cores, and 4GB RAM. RAM is not so important, but the more cores with higher frequencies, the better. Be sure to check their bandwidth limitations and your personal usage to avoid nasty surprises come billing. Alright, enough talk, let's get our hands dirty. ## Brief list of VPS poviders - | URL | Specs | Bandwidth | Storage| Price/month | | ------------- |:---------:| :--------:| :-----:| :--------------:| | https://vultr.com | 2vCPU 4GB | 3 TB | 60GB | $20 | | https://digitalocean.com | 2vCPU 4GB | 4 TB | 80GB | $100 Free Trial | | https://www.hetzner.com/ | 2vCPU 4GB | 20TB | 40TB | 4,90€ | | https://contabo.com/ | 4 CPU 8GB | Unlimited | 200 GB | 4,99€ | | https://www.linode.com/ | 2vCPU 4GB | 4TB | 80GB | $20 | | https://www.ovh.com/ | 2vCPU 7GB | ? | 50GB | $26.40 | * Link to Digital Ocean free $100 Trial (must provide Credit Card) - https://try.digitalocean.com/performance/ * There are thousands of VPS providers out there, these are just "usual suspects" to help get you started. * There are way better deals out there. duckduckgo is your friend. * These are not suggestions for high preformance Exit Node VPS! * Start by selecting a VPS provider, spin up a node selecting Ubuntu 18.04 or Ubuntu 20.04 ## Initial server Setup First off, the usual system update and upgrade. SSH into your server as root ````bash apt update && apt upgrade -y ```` Next, we need to add some goodies. We will likely add some redundant packages. However, given the evolution of Lokinet they may all not be required. Nevertheless, we'll add them just in case. ````bash apt-get install -y gnupg gnupg2 policykit-1 htop build-essential cmake git libcap-dev curl libuv1-dev libsodium-dev libcurl4-openssl-dev pkg-config pkg-config gunicorn curl ```` Now we'll create a system user. Right now you are logged in as `root`, but typical linux good practice is to set up stuff as a user. You can use whatever name you want, but for this tutorial we will use a user called `user123` ````bash adduser user123 ```` You will be prompted for a password and some extra info. Select your pssword, but you can simply skip the extra info by pressing `Enter`all the way to the end. Next, add user to sudoers list, and change from `root` over to `user123` ````bash usermod -aG sudo user123 su - user123 ```` Next, we'll install jagerman42's (aka Professor Podnocker, aka Jason) public keys that is used to sign binaries. ````bash curl -s https://deb.imaginary.stream/public.gpg | sudo apt-key add - ```` Next, we'll find the packages ````bash echo "deb https://deb.imaginary.stream $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/imaginary.stream.list ```` Now to resync package repositories... ````bash sudo apt update ```` ... and install Lokinet ````bash sudo apt install lokinet ```` #Congrats! Lokinet is now running in the background, but we're not done just yet. Lokinet is running and you can already find your Lokinet address, but it will not be persistant in case of a service restart or server reboot. So let's go ahead and create a persistant Lokinet address. Let's edit the file `lokinet.ini` and add an entry. ````bash sudo nano /etc/loki/lokinet.ini ```` Copy the following and add to the `[network] section ````bash keyfile=/var/lib/lokinet/exit.private ```` To save, press `CTRL+x`and confirm with `Y` and press `Enter` Now, we can restart Lokinet, and it will create a persitant Lokinet address ````bash sudo systemctl restart lokinet ```` You can check your Lokinet address by issuing this commands ````bash dig @127.3.2.1 -t cname +short localhost.loki ```` # Final steps - Enable Exit Node functionality We're almost there! To enable Exit Node functionality, we need to go back and edit a few entries in `lokinet.ini` again. ````bash sudo nano /etc/loki/lokinet.ini ```` If some settings are commented out, enable them by removing the `#`symbol at the beggining of the line`. Carefully check and modify to these settings ````bash [router] min-connections=8 max-connections=16 [network] exit=true keyfile=/var/lib/lokinet/exit.private reachable=1 ifaddr=172.16.0.1/16 hops=1 paths=8 ```` To save, press `CTRL+x`and confirm with `Y` and press `Enter` Finally, we need to create some `iptable` rules Let's edit the file `/etc/rc.local` and add some stuff ````bash sudo nano /etc/rc.local ```` Add This ````bash #!/bin/sh iptables -t nat -A POSTROUTING -s 172.16.0.1/16 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward ````