
Ask HN: How do you set up a VPS for personal projects? - mmwtsn
I have manually followed DigitalOcean&#x27;s guides in the past with success[1][2]. Do you go beyond what the linked guides recommend or use a configuration management solution (e.g. Ansible)? I&#x27;m curious what, if anything, people are doing.<p>[1] https:&#x2F;&#x2F;www.digitalocean.com&#x2F;community&#x2F;tutorials&#x2F;initial-server-setup-with-ubuntu-14-04
[2] https:&#x2F;&#x2F;www.digitalocean.com&#x2F;community&#x2F;tutorials&#x2F;additional-recommended-steps-for-new-ubuntu-14-04-servers
======
mattbillenstein
Bash scripts -- write scripts, check them into git, make sure they are
idempotent and repeatable. Whenever you start something new, reuse them and
fix whatever broke since the last time.

For testing the scripts, I've used virtualbox -- install the latest ubuntu
server LTS into a VMinstall your ssh keys, dotfiles, etc but leave it
otherwise bare-bones. Then, clone it (this takes just a few seconds) and do
your testing inside the clone. When you need a clean environment, delete the
clone and create a new one... Makes for fast iteration on testing that install
scripts always work. Don't configure anything by hand -- learn enough
sed/awk/grep/etc to modify what configs you need without invoking an editor.

If you need to scale this up to something real and in production on multiple
systems -- then start learning Ansible / Salt / etc. Doing in those systems
what you now have documented in bash scripts will be some work, but doable.

------
soulchild37
I wrote Chef script ([https://github.com/cupnoodle/rails-server-starter-
pack](https://github.com/cupnoodle/rails-server-starter-pack)) for setting up
Rails stack in VPS. Chef is similar to Ansible, I think it is quite handy.

------
newsat13
Depends on what you mean by "personal projects". I have never used the likes
of ansible for personal projects. Are you thinking of installing rails, django
or a lamp stack? Or setting up a VPN? Really depends on the use cases.

------
smt88
Is there a reason you're doing this stuff manually instead of using something
like Elastic Beanstalk or Lambda on AWS (or the equivalents on Azure or
Google)?

