13
23 Comments

Deploying servers with minimal configuration, alternatives to AWS?

I've used AWS for several projects but for a lone hacker like myself who builds small-scale projects, the investment of time and energy into configuring and maintaining AWS configurations is a big drain. I'd rather spend time working on my product and customers.

So for now, I'm a fan of Heroku and I use it a lot. It prevents me from getting distracted with server configuration, so I can just focus on shipping. The downside of Heroku is the higher cost, especially once you start scaling, but for my current small projects it feels reasonable.

But lacking a good alternative for file storage I was still using S3. However recently I discovered Digital Ocean has a storage service called Spaces with an S3-compatible API. I started using it instead of S3 and it made my setups much simpler, I no longer need to deal with a web of AWS policies and permissions.

Any recommendations for other tools to help deploy projects faster with minimal configuration?

  1. 5

    I've been in the same boat as you, and I've done the exact same research as you are doing. For me, these are the biggest players and the ones you can trust:

    1. Nanobox.io and Dokku (https://github.com/dokku/dokku) - Their core is to mimic a platform like Heroku without their scary-once-you-scale costs. They are basically platforms that you install and configure once in a new VPS and it's done. The drawback in these specific platforms is that you must keep the VPS updated yourself and that... might come into the cost of you not knowing what you are doing and getting all your servers down.

    2. OpenShift.com - Heard great from it from some colleagues but never tried. Provides a Free Plan that might come in handy to do some testing but that plan only supports a public cloud for only one project, can't enable a custom domain and does not include support. The paid plan right after it is 50$ that allows for 10 projects, custom domain and basic support.

    3. As @devenjarvis pointed out, now.sh is a great solution for automating serverless pipelines. If you are indeed looking to go with a serverless solution, I would recommend serverless.com from my personal experience. You have your server... in one file. It is just awesome.

    1. 1

      Also have a look at https://github.com/apex/up
      It's very close to serverless or now.sh. Created by the creator of express.js

    2. 1

      Second Dokku for getting started.

  2. 4

    I don't really understand how this is preventing you from anything. S3 configuration is basically done once and then you never have to touch it again.

    Deploying can be completely automated that is also configured once and then functions the same as Heroku.

    My usual workflow is basically Git (Gogs/Gitea) -> Drone CI -> VMs -> Assets are synced on deploy to S3 with s3cmd or rclone. Everything is automated.

  3. 3

    Your post doesn't mention your stack, but if it's Ruby on Rails—also for others here—, do check out Hatchbox. Server setup and deployments to DigitalOcean, Vultr, Linode and custom VPS.
    Been using them for all of my side projects and don't/can't live without it. 👌

  4. 3

    Check Zeit’s now.sh - I haven’t gotten a chance to use it yet, but it’s top of my list if/when I need server-side compute in the future. They have a free plan and it’s all docker based. Only downside is you’ll need storage elsewhere like DO Spaces or a hosted dB on like Compose.

  5. 2

    +1 for Heroku
    Been using it for a project for about a year now and it's been a positive experience. Yes, the cost is higher, but IMO it's worth it.

    I still use S3 (I didn't care to, or need to, to ditch all of AWS), though Spaces does look interesting.

    The only other thing I would recommend is a CI tool (e.g. CircleCI) to automate your deployments. I trigger a build and subsequent deployment to Heroku when a release tag is created on GitHub.

  6. 1

    In case you're still looking for an alternative solution to Heroku, we've just soft-launched Unubo Cloud.

    Check out a quick demo video here.

    And sign up for early access here.

  7. 1

    We have 11 vhosts on digital ocean and love it.

  8. 1

    A couple of things you probably want to think about.

    DigitalOcean Spaces are very much easier to set up, but they don't yet offer custom domains, so the SEO suffers for anything you host there. Q2 should see custom domains for their own free CDN on Spaces which, to me, is preferable to the knots AWS ties me in.

    Also, I use something called EasyEngine v4 to create all my webservers, which I highly recommend --> https://easyengine.io/docs/commands/site/create/

    Be sure to read the v4 handbook and not the v3 docs or it will confuse the bejeebers out of you since v4 has just just been launched and uses Docker containers, whereas v3 was just a Python script.

  9. 1

    Given the OP and comments talking about struggling with server configuration/management, best advice is eliminate that layer from your concerns.

    Dockerize the app so you can have your essential server in a reproducible and code documented way.
    Then deploy on any system that allows docker, every modern host (not cheap shared hosts) have a ready to go solution, including the initially complained about AWS.

    Need to install a package, add the line to Dockerfile.
    Server dead? Kill it and launch new container?
    Can't handle server config or docker? Get on google or hire an expert.

  10. 1

    Have you checked out ovh? Not affiliated, but was thinking of using them myself.

  11. 1

    Wes Bos had a thread on Twitter about this exact problem the other day. Here’s his final report: https://mobile.twitter.com/wesbos/status/1068156668565950464

    Some great options there, especially Captain duck duck looks good to me. Personally, I use Nodechef. It handles deployment, automatic dB backups, and upgrading the server is easy. It’s worth the price imo, but the docs could use some work.

    1. 1

      That's a great recommendation: Captain duck duck.
      However you must keep in mind to secure the underlying server yourself.

  12. 1

    I created my product Codemason for this exact reason!

    Dealing with AWS was (and remains) a total nightmare. Sure, it's crazy powerful but for most of us who don't make a living off configuring AWS, it's just way too much to handle when we've still got to build our apps, update the landing page and actually commit to doing some marketing.

    Codemason kind of sits somewhere between Heroku and managing your own server. It's the Heroku experience with the savings and flexibility of running your own servers. You own all your servers, you can bring your own, you can connect to your preferred cloud provider (e.g. DigitalOcean, AWS or Vultr) and launch servers directly from Codemason or you can use "Codemason Servers"

    Would love to show it to you if you have the time!

  13. 1

    Kubernetes, both AWS and Google Cloud have Kubernetes deployment out of the box, all you have to do is add a Dockerfile to your projects, then those projects can be deployed with minimal config and those configs can be re-used between projects.

  14. 1

    I wrote up how I ended up on Dokku on DigitalOcean (think Heroku but not ridiculous pricing) + Netlify (after trying Heroku, now.sh, AWS, manually setup DO, Vultr)

    It's cheap, it works well (git push to deploy) and encompasses all the things you might want to do including database/cache hosting etc.

    https://codewithhugo.com/deployment-options-netlify---dokku-on-digitalocean-vs-now.sh-github-pages-heroku-and-aws

  15. 1

    Depends on your tech stack. If you just want to deploy some endpoints then https://zeit.co/now (multiple language support) or https://webtask.io/ (NodeJS) are some free options.

    If you want to use a full server(rather than serverless endpoints), I think the key would be to automate as much as possible, so that you can repeat it across your sub-projects. Have you thought about writing some deployment scripts to make this task easier? Ansible / Terraform / Chef etc are options for writing deploy scripts.

    I have been researching on this of late; can you share your current tech stack / AWS configurations ?

  16. 1

    Honestly, i'm spending way less time with just a docker-compose script ran on an OVH.com VPS. Plus, I'm paying WAY LESS than any other solution.

    No boilerplate to learn, not anything, just a docker-compose script and a VPS on which I control everything

  17. 1

    I feel your pain. I have had the same issues as you.
    AWS is a complete mess and yes, most of the tasks have to be done only once. But what if you plan to start multiple projects? That's a big issue for me.

    I have tried Dokku as somebody else suggested and I am happy with the results but bear in mind that you need to "maintain" that. Dokku will be updated and best case is "everything works" but worst case is "none of your deployments work anymore".

    What I personally do now is using PHP. Keep reading! I have a pretty big shared hosting with unlimited domains, etc. So whenever I want to start a new project I just setup a new domain and use a simple script I made to rsync everything.
    I play with js (reactjs) for the web and PHP for the server. It simply works for me.

    1. 1

      "most of the tasks have to be done only once. But what if you plan to start multiple projects? That's a big issue for me."

      Been in your situation before and gone the manual route, but learnt that if going to need to do something more than once, script it. AWS becomes beautiful once you start this mindset.

      And in your current setup, kubernetes could be ideal solution.

  18. 1

    This comment was deleted 8 years ago

  19. 1

    This comment was deleted 6 years ago

  20. 2

    This comment was deleted 4 years ago