diff options
author | Effy Elden <git@effy.is> | 2017-01-07 23:22:24 +1100 |
---|---|---|
committer | Effy Elden <git@effy.is> | 2017-01-07 23:22:24 +1100 |
commit | f1289ca3c0b0a785b47d569e919a345b08136d28 (patch) | |
tree | 671f02e1f4285836f0be1e8970d5f13f3d96d8b5 /Vagrantfile | |
parent | 989c3f40022bc65d69915be597acda3c4d58de60 (diff) |
Add Vagrant development environment support
Diffstat (limited to 'Vagrantfile')
-rw-r--r-- | Vagrantfile | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 000000000..dabfd70c8 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,86 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +$script = <<SCRIPT +cd /vagrant # This is where the host folder/repo is mounted + +# Add repo for Ruby 2.3 binaries +sudo apt-add-repository ppa:brightbox/ruby-ng + +# Add repo for NodeJS +curl -sL https://deb.nodesource.com/setup_4.x | sudo bash - + +# Add firewall rule to redirect 80 to 3000 and save +sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000 +echo iptables-persistent iptables-persistent/autosave_v4 boolean true | sudo debconf-set-selections +echo iptables-persistent iptables-persistent/autosave_v6 boolean true | sudo debconf-set-selections +sudo apt-get install iptables-persistent -y + +# Add packages to build and run Mastodon +sudo apt-get install \ + git-core \ + ruby-build \ + libpq-dev \ + libxml2-dev \ + libxslt1-dev \ + imagemagick \ + nodejs \ + ruby2.3 \ + ruby2.3-dev \ + ruby-switch \ + redis-server \ + redis-tools \ + postgresql \ + postgresql-contrib \ + -y + +# Set Ruby 2.3 as 'ruby' +sudo ruby-switch --set ruby2.3 + +# Configure database +sudo -u postgres createuser -U postgres vagrant -s +sudo -u postgres createdb -U postgres mastodon_development + +# Install gems and node modules +sudo gem install bundler +bundle install +yarn install + +# Build Mastodon +bundle exec rails db:setup +bundle exec rails assets:precompile + +SCRIPT + +VAGRANTFILE_API_VERSION = "2" + +Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| + + config.vm.box = "ubuntu/trusty64" + + config.vm.provider :virtualbox do |vb| + vb.name = "mastodon" + vb.customize ["modifyvm", :id, "--memory", "1024"] + end + + config.vm.hostname = "mastodon.dev" + + # This uses the vagrant-hostsupdater plugin, and lets you + # access the development site at http://mastodon.dev. + # To install: + # $ vagrant plugin install hostsupdater + if defined?(VagrantPlugins::HostsUpdater) + config.vm.network :private_network, ip: "192.168.42.42" + config.hostsupdater.remove_on_suspend = false + else + # Otherwise, you can access the site at http://localhost:3000 + config.vm.network :forwarded_port, guest: 80, host: 3000 + end + + # Full provisioning script, only runs on first 'vagrant up' or with 'vagrant provision' + config.vm.provision :shell, inline: $script, privileged: false + + # Start up script, runs on every 'vagrant up' + config.vm.provision :shell, inline: "cd /vagrant && rails s -d -b 0.0.0.0", run: 'always', privileged: false + +end |