Getting Started With DreamCompute on DreamHost

Setting Up A DreamCompute Server

I have been with DreamHost since 2013 and host many of my websites on their Shared Hosting. This is great for a lot of my mini websites that get a few dozen to a few hundred visitors a month. I also have DreamPress for one of my more popular website, Confessions of the Professions (which I may soon move to DreamCompute). These types of setup are great for hosting websites where you do not need much or a WordPress optimized website where you do not have to worry about your traffic going down due to a lot of bandwidth and visitors.

This now leaves us with one final area that I never explored because I never had a reason to do so until recently: a VPS on DreamHost. I missed what everyone enjoyed about the DreamHost VPS, so I do not personally know what it contained. I do know that when you sign up for a VPS plan, you have the ability to move all your sites to the VPS or you can choose to later move them individually. I believe this process is automated and may take up to a few hours to fully move them over. This whole process is automated and done by the DreamHost scripts. To this day, I have not purchased this plan from DreamHost, so I do not know what a "managed VPS" is really like, though I can tell you I do highly recommend DreamPress 2, an optimized server specifically for WordPress websites. While not perfect, and I have experienced downtime, it is up nearly 99% of the time.

So while managed VPS is great for some, there were many people who were very upset and angry at DreamHost for taking away their precious sudo access. The reasons DreamHost probably did this is pure speculation, but I can only guess that there were too many people doing things they should not have been or maybe they didn't understand. Whatever the reasons, DreamHost made the ultimate decision to revoke privileges for everyone. This left many people with no where to really turn. They did not want Shared Hosting, but they did not want a managed VPS, either. In their defense, they basically did not want to pay for overpriced Shared Hosting (no offense to you, DreamHost). In DreamHost's defense, it was more trouble than it was worth to keep the servers unmanaged. If DreamHost wishes to compromise with its users, it could at least do them the courtesy of dropping the managed VPS price by a few dollars.

As an alternative compromise, DreamHost then came up with a plan: DreamCompute. DreamCompute is basically a server in the cloud. It is also a great price with the cheapest plan being $4.50 (for 512 MB of RAM) and the next plan up being $6 (1 GB of RAM) with an 80-100 GB block of storage space. This certainly makes up for a lot of things, but to those who cannot figure it out, they feel they are SOL. Some of them have probably dropped DreamHost completely feeling that DreamHost simply turned their backs on them and did not care. Unfortunately, this cloud server is slightly more advanced than an unmanaged VPS, and many of its users who knew some sudo access were left in the dark. The more advanced users who knew what to do took to DreamCompute and loved it. The less experienced users were the ones who were in trouble, unable to find their place on DreamHost, unable to figure out how DreamCompute works.

While DreamHost has been helping out with documentation and even offers its users incentive to write documentation in exchange for $100 credit per article. Here is the line:
The DreamHost Cloud team is launching the “Cloud Documentation Bounty”, a program in which cloud users can submit documentation to the Cloud Knowledge Base and get free cloud resources in return. You can write an article on how to do a task with DreamHost DreamCompute or DreamObjects, and get up to $100 credit for your effort.

Read more on the blog post here: Get DreamHost Cloud Credit In Exchange For Your Knowledge

I spent hours trying to understand DreamHost's documentation on DreamCompute and while I won't say it was bad, it was just far too technical for anything my primitive brain could really understand. After spending more than several hours, and more hours than I would like to admit, I finally figured out how to work DreamCompute. With a little help from ServerPilot, you too can have your own cloud hosting in minutes instead of hours of frustration.   ServerPilot's documentation was slightly more easier to understand than DreamHost, but I still had to join the Server Pilot Slack community and although I asked a few questions, I was actually getting it. As jonleibowitz answered, I had figured it out and although I got disconnected from the server twice for whatever reason, I was able to get back in and set up the server with ServerPilot. ServerPilot will keep things up to date and do the hard work for you so that you don't have to, but it also allows you to keep your sudo access! ServerPilot does make everything easier and takes care of the "management" aspect of things that should come standard with any VPS.

Trust me, I've already gone through all the frustration parts so you don't have to and I'm here to help you. As much as I could have avoided all the trouble and simply given in and paid the $15 for a VPS managed server, I felt like I was missing out on the experience of knowing what it was like to run a server and actually manage it. Of course, I want some of it to be managed and taken care of for me, but for the most part, let me do some things on my own as well.

Don't get me wrong. I love Dreamhost. I'm not knocking them and I will continue using them as my host. I went through all that frustration, even looking into Vultr ($2.50 plan) and DigitalOcean ($5.00 plan) which would have probably been a lot easier. I spent almost 2 weeks researching Vultr and DigitalOcean and comparing them against DreamCompute. DigitalOcean vs Vultr. DreamCompute vs DigitalOcean. DreamCompute barely has any comparisons, but it is the only one that offers free bandwidth (this is likely to change in the future) and 80-100 GB of Block Storage. DreamCompute is ideal because despite the max cap of the cheapest plan at $4.50, you cannot be charged anymore than that. By this logic, it basically means there are no surprise fees or costs because someone linked to you and you got popular for one day. We will see in the future what DreamHost does about a bandwidth cap, but for now, it is definitely the better plan. You can read about my own write-up for DreamCompute vs. Vultr vs. DigitalOcean.

Part of me is extremely loyal to DreamHost. They have taken care of me. I can't tell you how many support tickets I've opened (now closed) to get help, and they've always tried their best, and 95% of the time they have been able to help me solve my issues. I still have a few open tickets right now for things they are "working on" and can't figure out, but nothing that prevents me or my websites from functioning. I get it: A managed VPS is probably more work than Shared Hosting is to maintain, but I argue that DreamHost did not do enough to help their loyal fans and customers out, and in doing so, I am sure they sacrificed a lot of good paying customers. So I am here to help you. I am not an employee of DreamHost. I am simply a customer and a loyal fan who did not want to give up DreamHost, but wanted to find a way to make it work. I wanted the semi-managed VPS and I wanted it to be with DreamHost.

DreamHost still has plenty of work to do to try and win back those people they lost. My suggestion to DreamHost: there are plenty of things you can still do to accommodate these users, who are frustrated and upset with you. First, for your managed VPS, drop the price by $5. What do you have to lose? A few dollars, but you will probably acquire more customers who are happy to pay $10 for a great affordable VPS?

For DreamCompute documentation: It needs work. It does work for people who are technical, but you need a way to help us idiots figure out how the hell to understand all that technical stuff. You can also start offering preset snapshot instances, loaded with Linux software already on them, and of course, WordPress, LEMP, or LAMP, but you are not there yet. I understand, but take heed to my advice: You need to get there and you need to do more for your customers. You have an insane amount of competition. I was at my wit's end and had the credit card page open to buy a VPS from another host. Sure, we would have still been together for Shared Hosting, but you would've lost out on money for VPS and Cloud computing from me. So work on it, DreamHost.

Lets get to setting up DreamCompute, shall we? This is the documentation in English and in steps to get to where you want to be: having a DreamCompute server set up and running with a website on it.

Total time this should all take: 10 minutes

DreamHost Steps

Setting up the DreamCompute System

Time: 2 minutes
1. Go to the DreamHost Panel
2. Click Cloud Services
3. Click DreamCompute
4. Enter in a password to get started
5. Wait for email or Dashboard to load into the DreamCompute dashboard
6. Click on Quick Launch
7. Click on Ubuntu-16.04 (required)

Terminal Steps

Setting up the SSH authentication keys

Time: 3 minutes
1. Open up Terminal (or Git Bash).
1a. If you are a Windows user, you can download PuTTy and Git Bash. While you are at it, also download the PuTTY Key generator
2. Get your SSH keys by typing in:
ssh-keygen -t rsa
3. Give it a filename and a passphrase (remember this password)
4. Locate the private and public key files, probably in your root directory in a folder called .ssh
4a. Windows only: Open up the PuTTy key generator and click on Load. Change the extension from *.ppk to all files and import the private key file
4b. Click on Save private key and save it as a .ppk file in the .ssh directory
4c. This will help you connect through PuTTy
4d. To connect through PuTTy:
  • Click on Session and add the hostname / IP Address
  • Click on Connection->Data and enter in the username in the Auto-login username field
  • Click on SSH->Auth and where it says Private key file for authentication, click Browse... and select the ppk file
5. Once you locate the two files with the extensions of (public key) and filename.key (private), open up .pub with a text editor
6. Copy the information in .pub
7. Navigate back to the DreamCompute panel and go to Access & Security and click on Key Pairs
8. Click on Import Key Pair
9. The Key Pair name should be the filename that you gave it in the Terminal
10. Paste the information into Public Key and click on Import Key Pair
11. This should be successful, but if it wasn't, you may have done something wrong. Go back and try again

DreamCompute Steps

Logging into make sure it actually works

Time: 2 minutes
1. In Terminal, type:
ssh -i filename.key username@instance_ip
username is as follows depending on the instance you built
Ubuntu: ubuntu
Fedora: fedora
Debian: debian
CentOS: centos
CoreOS: core
2. If everything went well, you should now be connected

ServerPilot Steps

Connecting ServerPilot to DreamCompute as a management system

Time: 3 minutes
1. If you have not already done so, Sign up for ServerPilot
2. Click on Servers
3. Click on Connect App
4. Get the IP address of the instance from the DreamCompute dashboard located under Instances
5. Click on "I don't have a root password or public IP address"
6. Add the IP address to Hostname
7. Choose the password that you will use to login using SFTP
8. Click Connect to ServerPilot and wait for it to connect
9. If successful, it should take you to a screen to install the ServerPilot installer
10. Copy the code
11. Paste it into the Terminal and wait for the downloads, updates, and installations to finish
12. Return back to the ServerPilot screen where you will now see it automatically setting up PHP and everything else you need

That is it. You are done with the necessary installation! Congratulations!

Now you can click the Create App button and add WordPress or login through SFTP and add files via CyberDuck.

ServerPilot installs:

  • ServerPilot Agent (helps manage the server through ServerPilot)
  • Nginx
  • Apache
  • PHP 5.4 - PHP 7.1
  • Postfix (ability to send mail – does not support receiving)
  • MySQL

To install most things, you will still have to login to your root, which in this case, will be ubuntu. To upload and change files, with Cyberduck, you can login using the username serverpilot.

Common Issues

Just some issues I ran into that will save you the headache and frustration

1. Don't panic
2. Rather than use the SSH key that DreamCompute generates, use Terminal to generate your keys
2a. If using Windows, you may want to use PuTTy to generate a ppk file just in case.
3. You are in Terminal but you are not in the correct directory that points to the SSH keys. (command: cd ssh)
4. If you choose a passphrase, most Terminals will not show the actual password, so you may be typing it in wrong (A passphrase is not necessary, but will add additional security if anyone happens to get a hold of those two SSH key files)
5. If ServerPilot or DreamCompute is doing automatic updates and you are trying to use Terminal or CyberDuck to SSH into the system, you may get some type of fail, like server connection refused or not responding
6. There are times where your key or the user will not be recognized and it may take a few tries for whatever reason -- don't panic, just try it a few times, even closing and re-opening Terminal
7. Remember that the root user ubuntu and the user serverpilot are two separate accounts and unless you set the same password, the passwords may be different, which may cause confusion and render you with the inability to login
8. You may be unable to login at all because the system generated a file called "known_hosts" which has different information than what it is looking for. Simply delete this file and reconnect.
9. You may come across some permission denied, either in Terminal or Cyberduck. Some folders may be locked and you will need to login to the root user ubuntu on Terminal and chmod those directories to 777. Don't forget to set them back to 644 (or 755) afterwards, for security reasons (you can also type the command sudo -i which should switch you from ubuntu to root
10. Most of your problems will occur simply because the ubuntu user may lack the privileges to do something, so you may just need to use root or give ubuntu full admin privileges

IMPORTANT: Make sure you create a zip file of your SSH keys and store them somewhere. If you ever need to use another computer, you can simply unzip the file, point to that directory, and login from anywhere. These SSH keys are your username and password to login to your website. Lose them and you will have some work to do to get access to your website. (I haven't experience this issue, so I can't help you if you lose them)

Useful Links

You still have to change your DNS settings to actually point to the website and render as your instead of the actual IP address.

Setting Up Your Domain

Pointing the DNS to your new IP address
1. Go to the DreamHost Panel
2. Domains > Manage Domains
3. If your domain is already listed with DreamHost, find it, and click on DNS
3a. If it is not, add it, but add DNS hosting only
4. Click on Edit.
5. Scroll all the way down and click on Host DNS Only!
6. Return back to the Domain panel, find your domain, and click on DNS.
5. Add these:
Type: A, Value: (change this to the IP address of your instance) Add Record Now!
Name: www, Type: A, Value: (change this to the IP address of your instance) Add Record Now!

Feel free to refresh your DNS so it propagates faster. It could take anywhere from 30 minutes to 4+ hours for it to start showing the new domain.

I am by no means an expert. The total time all this took me was too long. I learn as I go along. Feel free to ask questions and I will try to answer, but I probably won't be able to help. I highly suggest you hop in the Server Pilot Slack Channel or the DreamCompute forums and ask questions there.