diff options
author | Eugen <eugen@zeonfederated.com> | 2017-01-07 18:31:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-07 18:31:59 +0100 |
commit | 2fbb38e4b253243e0b7b9303f54d7547fab1187e (patch) | |
tree | 4c9be165c8d2c3c4411034ee7eed8f763ac9c536 /Vagrantfile | |
parent | be6ae3546f1673e497e5d9e74e5a7dfad9f1ff72 (diff) | |
parent | 11ea7336e9e0f1985768797007406fc3df4d9a8f (diff) |
Merge pull request #425 from ineffyble/vagrant
Add Vagrant support for easy development environments
Diffstat (limited to 'Vagrantfile')
-rw-r--r-- | Vagrantfile | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 000000000..5041dde39 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,96 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +$provision = <<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 + +$start = <<SCRIPT + +cd /vagrant +export $(cat ".env.vagrant" | xargs) +killall ruby2.3 +rails s -d -b 0.0.0.0 + +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 + end + + # Otherwise, you can access the site at http://localhost:3000 + config.vm.network :forwarded_port, guest: 80, host: 3000 + + # Full provisioning script, only runs on first 'vagrant up' or with 'vagrant provision' + config.vm.provision :shell, inline: $provision, privileged: false + + # Start up script, runs on every 'vagrant up' + config.vm.provision :shell, inline: $start, run: 'always', privileged: false + +end |