Today, I'm going to attempt to install Servus to my test server. I'll be using a raspberry Pi4 4GB version with a 16GB microSD card (because what I have laying around). And, as you know... if it'll run on a Pi, it'll run pretty much anywhere.
What is SERVUS?
From GitHub... "Servus is a CMS, personal Nostr relay and personal Blossom server fully self-contained within one executable file."
Here's what you'll need:
-
A spare server. It can be a VPS, old laptop, old computer, 3rd market server from a decommissioned datacenter that you got for cheap on Ebay, a NUC... something that can run Linux.
-
An understanding of the Linux terminal.
-
install git and cargo.
-
A web browser (don't you side-eye me!).
Let Us Begin...
I'm assuming you're using a Debian-based system. Open your terminal and enter the following:
Go ahead and ssh into your server with something like: "ssh yourusername@ipaddress" or "ssh yourusername@domainname.tld" enter your password when prompted and hit enter.
If you plan to do other stuff with your server later on, you might even consider using "ssh-copy-id yourusername@ipaddress" in order to not have to enter you password, all-the-time.
(Without the quotes) "su", or "sudo su". Whatever means you use to get to superuser (root). Then, enter your password.
Once in root, type: "apt install git cargo -y" Then, hit enter.
You'll see a wall text... yadda yadda.
Now, you'll type (without quotes): "git clone https://github.com/servuscms/servus.git" and hit enter. You'll see a progress bar.
If you type "ls" you should see a folder labeled, "servus". We now change directories by typing, "cd servus". Inside of the servus folder you'll see a few other folders and a few files by typing "ls" again.
According the the servus github, there are a few build options. I'm going to use the "release" version for this tutorial. We do this by typing, "cargo build --release". You'll see a fetch progress bar and a wall of text.
NOTE I'm using a raspberry pi 4, in this tutorial. At the end of trying "cargo build --release" I got a version error for a package called "anstream v0.6.14" because it requires "rustc 1.65.0", or higher. The error message gives you a fix by typing "cargo update -p anstream@0.6.14 --precise ver"
BUT that won't work. Here's how to fix it:
Type the following (without quotations): "apt purge rustc -y && apt install curl -y && curl https://sh.rustup.rs -sSf | sh"
This will remove the outdated rustc. Then, you're installing curl so that you can install the latest version of rustc and cargo because they aren't in the distro repo. Restart your machine with: "sudo reboot". Once you're back into your servus directory, just run the "cargo build" command, again. Now back to the show!
Now that we have run the "cargo build" command, it's time to move on to setting up access and ssl. According to github, there are a few options. They are as follows:
-
./target/debug/servus - this starts Servus on port 4884, without SSL
-
sudo ./target/debug/servus --ssl-acme[-production] --contact-email youremail@example.com - this starts Servus on port 443 and obtains SSL certificates from Let's Encrypt using ACME by providing a contact email.
-
sudo ./target/debug/servus --ssl-cert <SSL_CERT_FILE> --ssl-key <SSL_KEY> - this starts Servus on port 443 using the provided <SSL_CERT> and <SSL_KEY> I'll be using the command no calling for SSL. More information can be found here: https://github.com/servuscms/servus
So from the terminal we input (without quotes): "./target/release/servus" because, as you may recall, I used the "cargo build --release" version earlier.
It will ask a few questions. Here's what I put...
Domain: test.local
Admin pubkey: npub1rsvhkyk2nnsyzkmsuaq9h9ms7rkxhn8mtxejkca2l4pvkfpwzepql3vmtf
Then, you'll get a bit of output with your ip and port interface. In this case, it's http://localhost:4884 Now go to your browser and input that address, it's local, or the IP address of the server... something like, http://192.168.x.x:4884 and HUZZAH!!! Just like that, you should see your site. To get to the admin section of your site, just add "/.admin" (without quotes) to the IP address you just input into the browser.
CONGRATS! I hope this was helpful :-)
While Servus is extremely experimental, and it is advised to not run it in production. There are a number of features worth taking a look at. More information about what Servus can do can be found here: https://github.com/servuscms/servus
DONE.