forked from asonix/mastodon
Prior to this commit, the vagrantfile installs ruby 2.3.3. Due to commit mastodon@7951e7f, this no longer works. Change the provision scrip so that 2.3.1 is installed via rbenv. Note this drastically increases provision time.
109 lines
2.9 KiB
Ruby
109 lines
2.9 KiB
Ruby
# -*- mode: ruby -*-
|
|
# vi: set ft=ruby :
|
|
|
|
$provision = <<SCRIPT
|
|
|
|
cd /vagrant # This is where the host folder/repo is mounted
|
|
|
|
# Add the yarn repo + yarn repo keys
|
|
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
|
sudo apt-add-repository 'deb https://dl.yarnpkg.com/debian/ stable main'
|
|
|
|
# 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 \
|
|
g++ \
|
|
libpq-dev \
|
|
libxml2-dev \
|
|
libxslt1-dev \
|
|
imagemagick \
|
|
nodejs \
|
|
redis-server \
|
|
redis-tools \
|
|
postgresql \
|
|
postgresql-contrib \
|
|
yarn \
|
|
libreadline-dev \
|
|
-y
|
|
|
|
# Install rbenv
|
|
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
|
|
cd ~/.rbenv && src/configure && make -C src
|
|
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
|
|
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
|
|
|
|
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
|
|
|
|
export PATH="$HOME/.rbenv/bin::$PATH"
|
|
eval "$(rbenv init -)"
|
|
|
|
echo "Compiling Ruby 2.3.1: warning, this takes a while!!!"
|
|
rbenv install 2.3.1
|
|
rbenv global 2.3.1
|
|
|
|
cd /vagrant
|
|
|
|
# Configure database
|
|
sudo -u postgres createuser -U postgres vagrant -s
|
|
sudo -u postgres createdb -U postgres mastodon_development
|
|
|
|
# Install gems and node modules
|
|
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)
|
|
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
|