How to set up a VPS to host websites without a control panel

About VPS hosting and this guide

When it comes to hosting a website, there are three options. Shared hosting, VPS hosting and dedicated server hosting.

Shared hosting is the most basic and fine for very small low-traffic websites, but sometimes you want that extra bit of control over your website without having to pay the cost of renting a dedicated server. This is where a VPS (virtual private server) comes in. You get full root access to a virtual machine, which is fully isolated and therefore acts like a dedicated server, but is much cheaper!

Since the price of hosting has come down in price so much lately, if you don’t mind putting in a little effort, it’s often more cost-effective to get a VPS than shared hosting.

This guide will go through the steps of setting up and securing your VPS, as well as installing a webserver (Lighttpd), a database server (MySQL) and some other things required to run most websites (like PHP and phpMyAdmin).

Purchasing a VPS and setting up PuTTY

One of the best and most highly recommended VPS hosts is Ramnode. They offer VPS hosting for as low as $15/year (including 128MB RAM, 64MB VSwap, 12GB pure SSD disk space and 500GB bandwidth). For further information you can read my post on Why Ramnode is the best VPS provider. I also recommend Vultr if you’re looking for more locations worldwide!

This guide will assume you’re using a VPS from Ramnode running Debian, but it should work with any VPS running Debian or Ubuntu.

The first thing you need to do is purchase your VPS. It should ask you to choose an operating system, so Once you’ve done this, you should receive an email from your host with your server’s IP and root password.

If you’re using Windows, you will also need to download PuTTY (choose putty.exe from the list). If you’re using Linux or OSX on your local machine you don’t need this.

Once you’ve downloaded PuTTY, open it up, and in the Host Name box, enter your server IP. Then, under Connection on the left click Data and in the Auto-login username box type in root.

Then, click Session on the left and click Default Settings. Then click Save (so you don’t have to enter this every time) and finally click OK.

If you use Linux or OSX, instead of using PuTTY, just open up a terminal and enter ssh [email protected] (where xxx.xxx.xxx.xxx is your server’s IP address).

You should now have a screen which says:

Using username “root”.
[email protected]’s password:

Just enter the root password you were given and press enter. You should now see the following:

[email protected]:~#

Setting up the VPS

Once I’ve logged into a recently set up VPS, I always like to change the password before anything else.

Enter passwd and press enter.

Enter a new password, press enter and then enter your new password again to confirm it. Of course, next time you log in (using the steps above) you’ll need to use this password.

The next thing we’re going to do is remove some applications we don’t need or want, and update everything else.

Type the following commands into PuTTY/terminal and press enter.

apt-get update && apt-get remove --purge -y apache2* bind9* sendmail* samba* && apt-get -y autoremove && apt-get -y upgrade

Sometimes, sendmail doesn’t get fully removed, so once that has finished, press the up arrow on your keyboard (which repeats the previous command, without submitting it) and then press enter and let it run again.

Now it’s time to start installing things, so enter the following command and press enter. During this stage, you’ll be prompted for a MySQL password.

apt-get install -y lighttpd php5-cgi mysql-server php5-mysql fail2ban unattended-upgrades

Once this has been completed, enter the following command and press enter to enable PHP and restart the webserver

lighty-enable-mod fastcgi-php && /etc/init.d/lighttpd restart

Next, we need to replace the MySQL config file with one which uses less memory and then restart MySQL. Enter the following command and press enter

mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bk && cp /usr/share/doc/mysql-server-5.5/examples/my-small.cnf /etc/mysql/my.cnf && /etc/init.d/mysql restart

Installing phpMyAdmin

If you’re using a PHP/MySQL script, you’ll probably want phpMyAdmin to help you set up the database. This is easily done. First, enter the following command and press enter

cd /var/www/

Now go to the phpMyAdmin download page and find the latest version ending in .tar.gz. Right click on the link and choose copy link address. The end of the link will have something like #!md5!79f36ee849381ad93c71f7cbbd5ef2a9 so remove this, including the hash, and then add the link into the command below where specified (including the quotes) and press enter

wget --no-check-certificate https://your-link-here.com/file.tar.gz

It will then download a .tar.gz file to your server. It will be something like phpMyAdmin-4.4.9-english.tar.gz. Now we will extract the files and remove this file. Enter the following command, replacing yourfile.tar.gz with the actual name of your .tar.gz file and press enter.

tar -zxvf yourfile.tar.gz && rm yourfile.tar.gz

You will then be left with a folder named something similar to phpMyAdmin-4.4.9-english depending on the version you downloaded. You can now access this by going to the following link where xxx.xxx.xxx.xxx is your server IP and foldername is the name of the phpmyadmin folder. I would advise renaming this to something of your choosing, just to avoid bots which actively look for phpMyAdmin installations.

http://xxx.xxx.xxx.xxx/foldename

Keeping everything updated and setting up your sites

That’s it! You now have a fully working VPS with a webserver (lighttpd) and a database server (MySQL) along with PHP  and phpMyAdmin installed. We also installed fail2ban to help protect us against bots trying to guess our SSH password, and unattended-upgrades to install critical updates automatically.

However, you should also log into your VPS often and run the following command to make sure everything is updated

apt-get update && apt-get -y upgrade

To install your sites/scripts (WordPress, phpBB, etc.) you need to move them into the /var/www/ directory. This is the root folder for lighttpd and the files/folders in here are what you see when accessing the following (where xxx.xxx.xxx.xxx is your server IP)

http://xxx.xxx.xxx.xxx/fileorfolder

Finished

That’s it! Now you can actually set up your websites. If you have any issues please leave a comment below.

Thanks for reading.

Why Ramnode is the best VPS provider (a Ramnode review)

About Ramnode

Whenever someone asks me to recommend a VPS host, my first recommendation is nearly always Ramnode.

They offer both OpenVZ and KVM plans, and have 5 different locations. 4 in the US (New York City, Atlanta, Seattle, Los Angeles) and an EU location (Netherlands).

The main reasons I (and many others) recommend Ramnode is because the performance and support are simply unbeatable, especially at the prices they offer.

Note: Ramnode currently has a 15% off coupon which you can see here

Speed Tests

Here are some speedtests from Ramnode’s 128MB OpenVZ SSD plan located in the Netherlands. Naturally, the further away the speedtest server, the lower the results are going to be. So if your target traffic was in the US, you would of course be better off choosing from on of their US locations.

Ramnode Speedtest Netherlands

Speedtest to Amsterdam, Netherlands

Ramnode Speedtest England

Speedtest to London, England

Ramnode Speedtest Italy

Speedtest to Milan, Italy

Ramnode Speedtest USA

Speedtest to New York, America

Ramnode Speedtest India

Speedtest to New Delhi, India

FreeVPS Benchmark

CPU model : Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz
Number of cores : 1
CPU frequency : 3300.209 MHz
Total amount of ram : 128 MB
Total amount of swap : 64 MB
System uptime : 59 days, 18:03,
Download speed from CacheFly: 85.0MB/s
Download speed from Coloat, Atlanta GA: 13.9MB/s
Download speed from Softlayer, Dallas, TX: 25.0MB/s
Download speed from Linode, Tokyo, JP: 8.29MB/s
Download speed from i3d.net, Rotterdam, NL: 108MB/s
Download speed from Leaseweb, Haarlem, NL: 92.5MB/s
Download speed from Softlayer, Singapore: 10.7MB/s
Download speed from Softlayer, Seattle, WA: 23.5MB/s
Download speed from Softlayer, San Jose, CA: 22.0MB/s
Download speed from Softlayer, Washington, DC: 36.4MB/s
I/O speed : 638 MB/s

Support

Another area where Ramnode shows why it’s number one is the support times. The support are extremely quick and very helpful. Here is a low-priority ticket from when I simply wanted to get my VPS changed from an SSD-cached plan to an SSD plan.

Ramnode Support Response Times

Ramnode Support Response Tmes

You can see how even just for a low-priority request (not even an incident) they reply extremely quickly and the request is completed within 8 minutes of my confirmation.

Conclusion

As you can see above, even with their cheapest $15/year plan the performance is amazing. And with Ramnode, you can expect this kind of performance on every single node, in every single location.

There’s also no need to just take my word for it, have a look on Google, WebHostingTalk, LowEndTalk, etc. and you will see nothing but praise for Ramnode.

Well done Nick + staff!

How to install Windows 10, Windows 7, 8, Windows Server 2008, 2012 on Vultr as a custom ISO

Note: I want this guide to be simple, while also allowing anyone to follow it, regardless of their technical skills. If you have any issues, or any ideas that could improve this guide for yourself and others, please leave a comment!

Update: I have a ready made Server 2008 ISO available for download

You can download a ready made ISO of Windows Server 2008 from here

Note: This is NOT activated or cracked in any way. It is a 180 day trial version downloaded directly from Microsoft with VirtIO drivers integrated (downloaded from the Fedora Project), just like this guide shows you how to do.

If you don’t have a Vultr account already, please consider signing up with this link to help support me and my future projects 🙂

Thanks

About Vultr and this guide

Vultr is a Digital Ocean competitor which offers cheap, KVM based VPSes across Europe, Asia and North America.

One major advantage Vultr has over Digital Ocean is the fact they allow custom ISOs, so we can use Vultr as a cheap Windows VPS in almost any part of the World. However, with Windows you need to integrate VirtIO drivers into the ISO before you can install it. In this guide I will explain how to do this easily. I am going to assume that you are able to access/download an original Windows ISO.

The first thing you will need to do is sign up to Vultr. You can sign up by using this link. You can also check my post on Vultr coupons to get some free credit.

Next, we’re going to create integrate the VirtIO drivers into the ISO, and upload it to Vultr. The ISO will be about 3GB, so if you have a slow internet connection it would take a long time to upload. To speed up the process and make it easier, we can integrate the drivers on a Vultr instance, and take advantage of the gbit connection for just a few cents (as we only need the instance for an hour or two).

Note: If you have a fast internet connection, you can integrate the drivers on your own computer and skip this next part.

Spinning up a Vultr instance (if you have a slow internet connection)

Once you have created a Vultr account and made a deposit, go to the Deploy tab and choose a location close to you, then for the Operating System choose Windows 2012 R2 x64) and click Place Order.

Note: this will show up as being more expensive due to the license costs, however since we only need it for a couple of hours, it will only cost around $0.10.

Once the VPS is setup (this will take a minute or so) you can click Manage and then View Console to finish setting up Windows.

When this is complete, you will have access to a Windows desktop (note: the default password wlll be shown in the Vultr control panel) with a 1gbit connection. The next thing to do is enable downloads, so you can download the original ISO.

Once Windows has finished installing, and you are logged in, open Internet Explorer then go to Settings (the little cog top right) then Internet Options then Security then Internet then click Custom Level.

Then, in the list find File Downloads and click Enable. Then find Allow Scripting and click Enable. Then click OK and restart Internet Explorer. You should now be able to properly browser the web and download files.

Once you’ve done this you can proceed to the next step.

Downloading, modifying and preparing the ISO

Now the explanation and boring parts are over with, here’s what you’re really looking for.

The first step is to get an original copy of the Windows OS you want (this guide is confirmed to work with Windows 10, Server 2008 and Windows 7). It should be a 64-bit (x64) ISO. You can either insert the DVD into your computer and copy the files over from My Computer, download an ISO from Microsoft (you will need a serial key for this) or if you just want a trial version, you can find it on a torrent site (note: make sure it’s a reputable upload from a reputable user on a reputable site).

If you have a disc, simply copy the files into a folder on the desktop called Windows. If you have an ISO, then you can install WinRAR and extract the files from the ISO (extract them into a folder and rename the folder to Windows).

Next, download the VirtIO ISO from here. Once the ISO has downloaded, extract the files using WinRAR into a folder called VirtIO and copy the VirtIO folder into the Windows folder.

Building the ISO

Now you have done most of the hard work, it’s time to build the ISO and upload it to Vultr. To build the ISO, we will use ImgBurn so download and install it from here.

Once it’s installed, open it up and choose Create image file from files/folders.

Then, to the right of Source click on the folder icon with a magnifying glass and navigate to your Windows folder (the one you extracted the ISO to).

Click the same icon next to Destination and choose a location for the ISO. Call it something like WinVirtIO.iso

Then click on the Options tab and set File System to UDF.

Then click on the Labels tab and next to UDF type WindowsVirtIO.

Then click on the Advanced tab and click Bootable Disc.

Enable the following options

  • Emulation Type: None (Custom)
  • Boot Image: (click the folder icon, navigate to your Windows ISO folder and choose etfsboot.com in the boot folder.
  • Developer ID: Microsoft Corporation
  • Sectors To Load: 8

Then click Build (the image with the folder and an arrow pointing to a DVD) and wait for it to finish.

Uploading the ISO to Vultr

Now you have the ISO, download Mongoose Web Server from here and place the .exe file in the same folder as your new ISO (WinVirtIO.iso). Once you’ve done that, double-click on it and it will take you to a webpage with a list of files on. Your ISO should be in the list.

After that, go to the Windows Control Panel then click Windows Firewall then Allow programs to communicate through Windows Firewall then Allow another program then Browse then navigated to mongoose.exe and click Add.

Now, from your local machine, access http://<YOUR VULTR IP>:8080 and see if it loads your files. If you can see your ISO, it’s working.

Now, log into the Vultr control panel, go to My Servers, then ISOs, then in the Remote URL box enter the following:

http://<YOUR VULTR IP>:8080/WinVirtIO.iso and click Upload.

Installing the custom ISO

Once the ISO has finished installing, you’re ready to deploy an instance. Go to the Deploy tab, choose your location, then for Operating System choose Custom and select your ISO from the dropdown menu.

After about a minute, click Manage then View Console and wait for the installation screen. Select your language, and click OK.

Latest VirtIO

When it asks what type of installation you want, choose Custom (advanced) then click Load Driver, then Browse and navigate to your the VirtIO folder (on the DVD), then expand viostor and then WIN7 (or WIN8.1 for Windows 10 and WIN8 for Windows 8, Server 2012) and click AMD64 then click OK.

After that, select the Red Hat VirtIO driver from the list and click Next. Once Windows has been installed, you will need to go into the device manager (type devmgmt.msc in the search bar next to the Windows button on the taskbar and press enter).

Then right click on the ethernet adapter (with an exclamation mark next to it) go to update driver software then Browse then navigate to the Windows DVD (usually D:), then your virtio folder, then NetKVM then WIN7 (or WIN8 for Windows Windows 10, Windows 8, Server 2012) and click AMD64 then click OK.

Older VirtIO

When it asks what type of installation you want, choose Custom (advanced) then click Load Driver, then Browse and navigate to your VirtIO folder (on the DVD), then expand WIN7 (or WIN8 for Windows Windows 10, Windows 8, Server 2012) and click AMD64 then click OK.

After that, select both Red Hat VirtIO drivers from the list (hold Ctrl down on the keyboard while you click on them) and click Next.

After that, continue the Windows setup like normal.

Finished

That’s it, you’re all done. Enjoy your cheap Windows VPS, and if you have any issues please leave a comment below.

Thanks for reading.