A VPS TUTORIAL FOR THOSE WHO WANT CONTROL

there are easier ways to host websites but don't you want control of everything in your world?
this is something that will be updated over time. i hope to screenshots and a video tutorial add on someday to follow along with.
INTRODUCTION

Hello. I’m going to make a server quick start guide (quick as in, it's still pretty long but easier than learning alone, right?) It is quick start but server stuff is kind of annoying, so you should probably do this in multiple sessions.  Also, please thank Kail (starbage) for letting me walk through this with him and drawing the so so cutes image.

But I will have a table of contents. This guide is also aimed at people who have a little bit of web developer experience and want to move onto a host / get PHP access,but newbies can start here too.

This server will walk you through getting a server, setting it up with the terminal, and having access to a panel that  you can use that’s free!

Also I guarantee you know someone with a server, so if you get lost in the weeds, you should ask them. Even if their an asshole about it as linux users can be (<-- love you as an asshole linux user <3 Googling this is hard, so it’s really not as simple as ‘googling it’ unfortunately which is why I got off my ass and wrote this.

What is a VPS? What is Self Hosting?

Well, everything on the internet is hosted on a computer or a server. Basic examples of things we use the word server in that will make this obvious is like a Minecraft server. That’s hosted on the same thing you’ll be using.

Some servers/physical machines are owned by someone else. These are virtual private servers. I know it sounds scary to rely on someone else, but keep in mind, everything on the internet is hosted on a server. Porn sites, imageboards, fediverse instances, manga sites, etcetera. And, also, you have all of your files locally on your machine if you follow this guide, so you’ll always be able to revive very easily. Your url will always be the same too, so even if one server goes down or a corporation goes insane, you always have options.

Disclaimer/My Own Philisophies

There are server hosts specifically geared towards web hosting, but I don't really like them. This is for cheap barebones servers where you do most of the work yourself. I believe this to me optimal because a lot of my friends are artists. We need large bandwidths, ability to upload large game files/zips, etc etc. This is why I am doing it this way as most webhosts use some kind of Panel like cpanel or are much more limited.

Popular hosts such as Neocities are not server hosts by the way- they are web hosts, and they're so cheap because of it's limitations. Teacake has low bandwidths / storage. A server gives you a lot of power, especially a nice one. Strong bandwidths, lots of storage, and really cheap. The drawback is setting up everything yourself. But well, I have a lot of things here, and transferring website files from one server to another is easy, especially with some stuff in the QOL section. That's why forums that are kicked off their main server never

And who knows.. Maybe you will learn to love servers.. maybe you'll end up just using it as an extra hard drive haha.

I hope to make a video tutorial at some point. I'd have to purchase another server to show things off on. If you have any questions, you're free to ask me, but well I am just a girl.

Social Media Posts

Lastly, I request, for my own philosophy/beliefs about the world that you share the posts on socials, so more people know they aren't trapped in social media hell forever. We cannot get out of social media prison if people on social media don't know about it, and I hope people with larger followings/resources can use this guide. Here are the links:

Twitter | Bluesky | TumblrFediverse (Mastodon, Misskey, Pleroma, Etc)

FAQ / SOFTWARE

Required/Recommended Software and FAQ

`

All of these software have some kind of alternative out there that exists though if you're on Windows, please use Putty. WinSCP and Brackets have their own alternatives. This guide focuses on my own programs and software/things I think will be easy to use, but I'm just a silly guy.

FAQ

 

  1. Is this hard? How long will it take?
    1. Well, for me setting up cloudpanel doesn't take long, but I am very used to it and interfacing with terminals due to my own self hosting adventures I've been on for the last few years. You may need to make multiple attempts as I had to do that when I first started using Linux, but I tried to write this tutorial in such a way to prevent that.
    2. It will involve learning though, but remember, you could be hosted on some jackass's site who hates you. Also, well, it's possible for multiple people to use one server, if you really want to do it that way. That's really how a lot of website hosts work sort of.
    3. Linux is known as not being something that holds your hand.. I would love to hold your hand, but I'm a tired person, so I apologize if I'm not as helpful as I'd like to be.

  2. This feels super technical?
    1. Girl I'm not gonna lie, some of it is, but a lot of the words and stuff I use can be easily searched. I try to define anything that's hard to find, but if something is really confusing, you're free to ask me.

  3. Does it cost money?
    1. Well, yeah usually at some point. It can be much cheaper than Neocities hosting depending on your provider, and I know there's servers that let you use them for free out there. A domain costs  money, but free ones exist and you could always use a friend's subdomain for testing.. I don't know anything about them though. I pay once  a year, and often friends help me out since my server benefits multiple people.

  4. Do I need Linux on my own computer?
    1. No, I don't use Linux on my PC. I use Windows. This tutorial is intended to be useful for most Operating Systems even if not all of it is applicable to you specifically.
    2. The server you will use runs on Linux, but this will not be run locally on your computer. Think of it as a virtual PC almost

  5. What is sudo?
    1. Sudo is Super User Do. It can only be done by Super Users (basically admins).

  6. What if I fuck up?
      1. It's chill. I can't offer every command for every mistake you may make but know I make them all the time, but an easy way to start over is reinstalling your OS or just deleting an entire directory with sudo rmdir (remove directory).
      2. It's also easy to transfer websites in servers to other servers. But hopefully you don't mess up so using a cheap server while you figure things out then getting off that fucked up server is an option.
      3. I use Cloudpanel and do what makes most sense to me, but theere's other free to use webpanels and some that costs money to. If this tutorial is too much or you dislike how I do things, be free. 
      4. But if you decide to do crazy server things, you will fuck up even if it's not immediately. I have many times, and I will again. But Cloudpanel is pretty good at not fucking up.

  7. Will you add more images or make a video tutorial?
    1. I plan to make a video and take screenshots as I go eventually, but I don't know if anyone will actually use this guide.. That's a lot of effort.. I'd have to pay for a new server for the screenshots too..

Features of my Own Site I Got Asked About

  1. How do you get rid of file extensions? (.html / .php. / etc) 
    1. I have to make a seperate tutorial for this, but in short, you do this in vhost. But back up your settings before you edit it.
    2. If you google this, it'll say look for .htaccess. There is no .htaccess file in Cloudpanel because it doesn't use the software .htacess uses.

  2. How do you have an askbox?
    1. My askbox is made with a database and PHP. I'll show you how to do this another time. 

  3. Webrings.. Listings.. ?
    1. You can make a webring with vanilla HTML/CSS/JS with onionring, but I don't recommend doing this for large rings. Most webrings stop updating on static sites because it is terrible to maintain my hand. I combine onion ring with a database, and I'll make a tutorial for that later.
`
CHOOSING PROVIDER (I USE RACKNERD)
So, I don’t host anything that would really make any provider jump on my ass. Providers tend to also not give a lot of a shit because it’s really hard for big harassment campaigns to jump on a server provider, and server providers also.., can be pretty resilient to that kind of thing. I use Racknerd, but I’m a cis lesbian making pretty tame games, so keep that in mind.  There are server providers that exist with a focus on adult content/free speech/etc.

There are a lot of providers, some more reliable than others. For a simple static or simple PHP website, I don’t think you need to be super concerned about providers vanishing because by the end of this guide, all of your field will be on your computer anyways.


https://lowendbox.com/

https://racknerdtracker.com/


I like Racknerd because it has a lot of easy things to see in the panel- like easy Debian 12 installation, easy root password resetting, etc etc. Tildeverse exists and is also free to use, but I don't know anything about Tildes unfortunately. I know you get access to a server though.


The Specs You Need for this Guide

Most servers will provide this, even many on the less than $1 guide, I recommend browsing through it as I think people spreading out across servers is the path of least resistance. Even if a cheap server goes down, you have your files locally. 

a note before you purchase a server:

Check hosting terms of a provider is overwhelming, you can just look up ‘cheapest VPS deals.’ I’m not going to lie. I don’t think you should discuss what servers you’re using publicly considering how things are going down right now. 

I don’t mind stating it to you privately or even helping you find one, but I request that if you use this guide, don’t publicly talk about the server especially if it’s a large corporately owned one because it will open you up, specifically, to being harassed in my opinion.

Server owners have been pushed to take sites off servers which is why I’m not saying which I use publicly. You’re to ask me privately, but if you yap a lot in public spaces like Bluesky, then I will probably be less helpful to you in the future. Which is fine, I don’t care, I just need you to know that it’s important to be quiet.


AFTER INSTALLING SERVER

INSTALLING CLOUDPANEL (OR WHATEVER WEBPANEL OF YOU'RE CHOOSING)

We’re going to use Cloudpanel but if you dislike cloudpanel because it isn’t FOSS or something, do as you like! There are more admin panels you can test out and I've done it before, but I disliked them for their complexity. I just think Cloudpanel is simple and nice. Some of you may be familiar with Cpanel if you use Teacake or something like, but Cpanel is really expensive, and I don’t think most of the features in it are needed for an average web dev.

These instructions are for Cloudpanel. It will secure your domain (https) by itself and has some other nifty features. So, let’s goo.

The docs are easy to follow, but because I know not everyone is accustomed to looking at docs, 

I will explain some things in the docs specifically in reference to ‘other section’  though I recommend looking at the docs before you do anything I say because god knows I can’t write documentation.

I’m going to steal some of the documentation as I know people get overwhelmed easily. You need to do this all in one go by the way lest you face the demons.

  1. Before running the installer, we need to update the system and install the required packages. You’ll see a beautiful installation that is a bit frightening but just.. bask in it.. terminal.. she is so beautiful..

    1. then a screen will pop up asking what version to keep or install. You can install the package maintainer’s version or keep local- both should be okay.

apt update && apt -y upgrade && apt -y install curl wget sudo

2.  Select one of the databases it. This is for MariaDB 11.4 but you can select anyone you want if using docs.

curl -sS https://installer.cloudpanel.io/ce/v2/install.sh -o install.sh; \

echo "a3ba69a8102345127b4ae0e28cfe89daca675cbc63cd39225133cdd2fa02ad36 install.sh" | \

sha256sum -c && sudo DB_ENGINE=MARIADB_11.4 bash install.sh

  1. You can now access CloudPanel via the url: https://yourIpAddress:8443.  (Your IP address with theinclusion of :8443). Proceed pass the warning certificate, you’ll fix this shortly. Make a login with the instructions it gives you. Make it a good one and don’t share your usernames/passwords with other services (but you can enable other authentication methods in cloudpanel itself so don’t worry too much).

DOMAIN


You  need a domain now. There are free domains out there, but aah, I don’t know them. You can probably find a free one and just.. Use it for testing.

So, when you make your site, you need to have a domain. I use namecheap but I know people who are so devoted to porkbun, they get aggro with me LOL, so I also recommend porkbun I guess.

You gotta buy a domain or get a free one. When you buy the domain, you just do the following in Namecheap. If you’re porkbun, just translate:

  1. Click Dashboard
  2. Click your domain
  3. Click advanced DNS
  4. Click A record, change to @, and put your VPS’s IP address

Subdomains are free to make by the way. Like, ophanimkei has a subdomain that I use for my portfolio. It can be put on any service as well. I believe the old portfolio is still on neocities because I’m lazy,


MAKING THE SITE

Okay, so, Cloudpanel gives you multiple options…  If you have no web development/programming experience, just make a static site. 

I want to say make a PHP site, but you’ll explode because PHP is so finicky.. I know. I know this to be true. And also, with a static site, you can follow basically any neocities tutorial.

When you make your site, only type the 

domainnet.extension

ie for this site, it’s just


ophanimkei.com

Don’t type www. It will work, but I don’t recommend it. On Cloudpanel, it is difficult to change domain names so don’t just type a random name.

Now, you can do anything you want via the file manager. In the file manager, you go to:

htdocs

sitedomainfolder (mine is ophanimkei.com)

You do basic set up. The home page of your site is index.html.Then you can link to other pages easily. It’s the same as neocities or anything like that. You can test by editing the index.html file into ‘Hello world’ or something, then navigate to your domain and see if any edits are live.

It also sometimes takes a moment for your site domain to propagate by the way, so yo may need to wait a bit. You'll know it's propagated when you go to SSL/TLS and make a bew let's encrypt certificate for sure. Just click the button.. but if it's not done.. Maybe you'll do some QOL things while waiting..?

you need to do this by the way lol

I MEAN YOU COULD STOP THERE.. If you wanted.. But.. doesn’t this suck? Isn’t the file manager kind of annoying? it doesn’t highlight mistakes, it’s annoying to upload files, it’s slow, easy to accidentally move directories.. 

Maybe you have an existing site already and moving the files over is annoying too… Well, it’s time for the Quality of Life section.

QUALITY OF LIFE / GOOD PRACTICES

EDITING ON YOUR OWN COMPUTER/DESKTOP (LOCALLY)

I love neocities, but the fact that so many users edit their files on site is deranged. You need to edit locally, and I’ll show you the easiest way to do this.

Number one, if you have no experience with local editors, install brackets. It works immediately and is great. 

https://brackets.io/

I give it to everyone just starting on neocities because it is so simple to use. No setup needed for live editing of static sites.

If you’re using things other than static site stuff, well, I use visual studio code myself.

UPLOADING FILES FROM YOUR DESKTOP

Next, I’m going to show you how to use an FTP thing. It basically shows you all the files from a site on your desktop and your server side by side, making the entire thing a drag and crop affair.

It’s better than neocities dav, it’s better than any online dav,okay? I promise you. If you don’t like it,that’s fine too. There’s other ways to easily update too, but this is what I use.

I use Filezilla, but not everyone does. Actually, I encourage you not to use it lol, so this will be WinSCP focused.

First, in Cloudpanel settings, go to SSH/FTP and make an FTP user. 

  1. Install FTP program of choice (WINSCP for this) 
  2. For file protocol (if this is in your transfer program), select SFTP/Secure File Transfer Protocol
  3. Type your site’s IP address (visible in cloudpanel) or type your domain. It doesn’t always work with domain, so IP address is safer
  4. Navigate to your site folders in cloudpanel and WINSCP via Cloudpanel. 
    1. When you created your site, you set a username. Type that username and the password. The password can be reset at anytime from cloudpanel by the way under your site settings and the password. Cloudpanel has its own FTP user management thing too, but it can be ignore
    1.  

  5. You can click local in WinSCP to open your normal file manager and navigate to your site folder. Your site should be easy to navigate in since you are just going to htdocs then your url folder name.
  6. Save your login to WinSCP so you don't have to type it every time. It should give you this option when you exit. 

There are certainly other ways to update servers with Github or some terminal application but I like this because I used neocities and drag and drop religious and you can drag entire directories.

This is my own set up by the way. I like to have the folders i'm looking at side by side, and I save my workspace in my website folders. You can have multiple workspaces too.



MAKING THE SITE ITSELF

MAKING THE SITE ITSELF.

Now, you just need to actually make your site. Unfortunately, um, due to Itchio not getting us much notice, I’ve been.. a bit too lazy to make templates as I never thought it’d be pressing, and my PHP script for my blog and RSS is unfinished, but I can share if people are interested, and it will receive updates over time anyways.

Luckily, the neocities community has many templates. And if you have money to burn, I and many other programmers do website commissions lol. But well, honestly, yo’ve gott his. I learned myself with HTMLDOG and W3Schools tutorials and random neocities codes / stackoverflow code. 

Here is a large resource list hosted by the community 32bitcafe. There are way more out there you can find just searching “neocities resources.”

https://discourse.32bit.cafe/t/resources-list-for-the-personal-web/49

WAITWAIT.

BUT WAIT. WAIT. DON’T GO.. YET.. WE MUST TALK ABOUT SECURITY. I PUT IT LAST BECAUSE I DIDN’T ANYONE TO FALL ASLEEP

SECURITY (I KNOW PEOPLE WILL SKIP BUT I IMPLORE YOU NOT TO BUT IM NOT YOUR MOM.)

Listen closely. I don’t want any of you guys to get fucked up, especially since many of you can become targets of harassment.

This part is hard for many people, especially the guinea pig Kail, and he’s a smart person. But I do think it’s very important, but at the end of the section, if you really cannot figure it out, I’ll have some easier things you can do to make safety easier, but I really urge you to figure this part out.

In this section, we are going to disable root user and make a new admin user to mitigate risks of bot logins / server access some nefarious parties.. 

I think many servers can exist without disabling root user- I’m sure many, many popular servers too, but I..know many people, especially trans people following this guide, can be targeted by harassment campaigns, and the kinds of people who harass trans people can often have tech experience or bot access. Servers don’t have the same security measures of neocities or any other social media. You have to do it yourself. 

THE TERMINAL WEEDS

  1. replace username. make sure the  username is not easy to guess/isn’t shared with any of your socials. it’s case sensitive. make the password really annoying for anyone. it needs to unguessable and bots should not be able to crack it. think combining things, using password generators, etc etc.

sudo adduser username sudo

  1. If it doesn’t prompt you for a password or you mess up, you can fix it with this (replace username)

sudo passwd username

  1. verify sudo access (replace username)

su - username

  1. Type this, If it doesn’t return  root. well, a step was missed.

sudo whoami

NEXT. We must disable root login. Even if your root password is really difficult to guess, you should disable it because servers don’t have the same security measures as social media so bots can continuously try testing logins with root.

For me, I like to logout and log back in with the user I’ve just created ot make sure I put the password in. Just type:

exit

And login with putty using the username and password you’ve made. If you fucked up the password, don’t worry. You can add new users, you can change the passwords, etc etc. But this is why I recommend using a password generator with a program like keepass.

Also, if you can’t login, don’t worry. Just login with root and try to solve the problem again from Putty.

I know some people willg et stuck here. You canemail me as always, or follow a video tutorial.

SIDENOTE:

The most secure way to access a sevrer is via an SSH key, but well, explaining it would be a heavy task and I've already been at this for a while. Just, if you don’t like passwords, just look up securing your server with SSH keys. Putty comes with a gen for generating SSH keys too. If you do that, you still need to make a new user IMO and disable some things.

 

DISABLING ROOT LOGIN

For protection from bots, we must now disable root login. We are going to do every admin command with the user you made.

This is easy.  Make sure you’re logged out of root and into your other user and your password is saved. Also, it’s not bad to  have other generated sudo users on hand smiles.

This part is so easy I promise.

First, paste or type this. You should be prompted to enter your password if you’re on a fresh user login by the way.

sudo nano /etc/ssh/sshd_config

 

Find this line:

PermitRootLogin yes

Change it to:

PermitRootLogin no


Type this or follow instructions on your screen to save and exit. It should be at the bottom.

Ctrl + OEnter → Exit: Ctrl + X

 Then type:

sudo systemctl restart ssh


This may seem scary, but um, you can still login with root from your server panel. Servers have rescue methods, this just prevents external logging.


Now your server is secure, and you can install cloudpanel! 

Did You Fail to Do This?

Well, it’s alright my love. We have a lot of other options that are easier, even if a bit less secure. If you struggled with that and don’t think you can get past it, you probably won’t be using the terminal much at all. 

So, there’s a few things you can do.

  1. Bots will continuously login with various password combinations, gathered leaks or other sources. So, for root, you can always just make a super uncrackable password. For this, I’d use some kind of password manager and combine many of them, add your own random phrases to it, save the password, and then change the root password to it.
    1. Root passwords can usually be changed from VNC or some providers just give you the option of changing it (Racknerd), so getting locked out isn’t usually too bad. Also, well, you’ll be doing everything from cloudpanel anyways.
  1. You can always disable root completely after installing Cloudpanel and if you ever need it, enable it with VNC. That’ll make logging into your server.. Actually impossible outside of VNC and annoying,but if you don’t intend to ever open the server because you hate it then I guess it’s fine ← she’s wincing a tiny bit.
    1. If you do this, even if you reset your password via the panel, you will have to VNC at some point and give yourself admin access if you ever need terminal access again by the way, but you can do everything with only Cloudpanel. Just know.. The unforeseen happens. 



 
 
REMEMBER TO ASK FOR HELP. YOU DON'T NEED CORPORATIONS. THE END
You've done it! Maybe. Or you're reading this after failing to. Listen, I'm sorry if you failed. It's a lot to take in. I was working with Kail on installing for 5 hours as I worked on this document due to me assuming the knowledge I had everyone has.

I want help a lot, but I struggle with hermit tendencies. I can't really be in big discord servers or make many friends, but I'll say this.

Cloudpanel is optimal for managing multiples sites. If you have any friends you are cool sharing Cloudpanel with and one is good with Linux, you should talk to them. Reach out. I can't make any sort of organization happen via communication, but I hope that with this in mind that you have an idea that you don't have to do this alone. My friends and I pull into funds for my server stuff often since we all use it.

Is it super secure? No, not at all, but when you think about it, Neocities, Nekoweb, Itchio, all of that, can access and delete your files at any time. Wouldn't you rather have a site with someone you trust? Though I can't recommend this if you're naive of course, but.. people.. are often nice. And chances are.. Someone you know is familiar with Linux, even if it's a weird girl who hates talking to people (hello.)

I hope to provide more tutorials in the future for making some things easier like webring management and share my PHP blog code and my RSS feed updater. Not tomorrow though because I'll be busy with my birthday tomorrow haha...

You're free to go to my askbox or email me (ophanimkei@disroot.org) with questions. You're also free and encouraged to pay me! I'll do anything for money! I'll stop everything and film a video tutorial for money honestly, and I love to develop things. I really made this because so many people are.. relying on Itchio for income and can't now. And god knows I know what it's like to poor and constantly dying. My server feels like the only peace I have from the external world..

A cheap racknerd is 10.99 a year, a domain can be generated, spoofed,or can be bought a cheap purchase early on and possibly changed later. You could even use subdomains one person owns to operate even (that's how neocities, tumblr, leprd, teacake all work) but if one person owns it, it doesn't even need to be tied to those hosts. The world is so beautiful.

And Cloudpanel.. leaves a lot of space on your server, so you can also use it for other things. I truthfully don't really know if anyone will use this guide because it's a lot of work, but.. It's so beautiful to me. I didn't mine writing this monster of a page because I just love hosting on my own so much.

I wish you luck!