Skip to content

Instantly share code, notes, and snippets.

@antarr
Created February 28, 2020 14:29
Show Gist options
  • Select an option

  • Save antarr/967a080d2cfe1e231cd3ab9cc84de1d4 to your computer and use it in GitHub Desktop.

Select an option

Save antarr/967a080d2cfe1e231cd3ab9cc84de1d4 to your computer and use it in GitHub Desktop.

Revisions

  1. antarr created this gist Feb 28, 2020.
    130 changes: 130 additions & 0 deletions Vagrantfile
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,130 @@
    # frozen_string_literal: true

    # -*- mode: ruby -*-
    # vi: set ft=ruby :

    Vagrant.configure('2') do |config|
    config.vm.box = 'ubuntu/xenial64'

    config.vm.network 'forwarded_port', guest: 80, host: 80, auto_correct: true
    config.vm.network 'forwarded_port', guest: 443, host: 443, auto_correct: true
    config.vm.network 'forwarded_port', guest: 1234, host: 61_234, auto_correct: true
    config.vm.network 'forwarded_port', guest: 3000, host: 3000, auto_correct: true
    config.vm.network 'forwarded_port', guest: 4443, host: 4443, auto_correct: true
    config.vm.network 'forwarded_port', guest: 9515, host: 9515, auto_correct: true
    config.vm.network 'forwarded_port', guest: 10_000, host: 10_000, auto_correct: true
    config.vm.network 'forwarded_port', guest: 5002, host: 5002, auto_correct: true
    # config.vm.network 'forwarded_port', guest: 5432, host: 5432, auto_correct: true
    config.vm.network 'forwarded_port', guest: 6379, host: 6379, auto_correct: true

    # configure virtualbox host
    config.vm.provider 'virtualbox' do |vb|
    vb.memory = '4096'
    vb.cpus = '4'
    end

    # Create a private network, which allows host-only access to the machine using a specific IP.
    # config.vm.network :private_network, ip: '192.168.33.10'

    # Always upgrade to latest packages
    config.vm.provision 'shell', run: 'always', inline: <<-SHELL
    apt-get update
    apt-get -y upgrade
    sudo apt-get -y install g++ qt5-default libqt5webkit5-dev gstreamer1.0-plugins-base gstreamer1.0-tools gstreamer1.0-x
    debconf-set-selections <<< 'mysql-server mysql-server/root_password password vagrant'
    debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password vagrant'
    sudo apt-get -y install libmysqlclient-dev mysql-server libssl-dev
    sudo apt-get -y install unixodbc-dev
    curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
    sudo apt-get install -y nodejs
    sudo apt-get -y install npm
    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
    sudo apt update && sudo apt install yarn
    SHELL

    # Install Ruby2.6 from Brightbox APT repository
    config.vm.provision 'shell', inline: <<-SHELL
    apt-get -y install software-properties-common
    apt-add-repository -y ppa:brightbox/ruby-ng
    apt-get update
    apt-get -y install ruby-switch ruby-bundler ruby2.6 ruby2.6-dev
    sudo gem install bundler -v 1.17.3
    SHELL

    config.vm.provision 'shell', inline: <<-SHELL
    echo "installing redis"
    sudo apt-add-repository -y ppa:chris-lea/redis-server
    sudo apt-get update
    sudo apt-get -y install redis-server
    sudo sed -i 's/^appendonly no/appendonly yes/' /etc/redis/redis.conf
    sudo service redis-server restart
    SHELL

    # Install Passenger + Nginx through Phusion's APT repository
    config.vm.provision 'shell', inline: <<-SHELL
    apt-get install -y dirmngr gnupg
    apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
    echo "deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main" > /etc/apt/sources.list.d/passenger.list
    apt-get update
    apt-get install -y nginx-extras passenger
    SHELL

    ##
    ## Additional services that are not needed but may help in managing the server.
    ## Note that for webmin specifically, a port needs to be forwarded for it to work.
    ##
    ## WEBMIN
    ## ref.: https://doxfer.webmin.com/Webmin/Installation#apt-get_.28Debian.2FUbuntu.2FMint.29
    ## IMPORTANT: Make sure wget is being installed above. Credentials for webmin should be vagrant/vagrant.
    ##
    config.vm.provision 'shell', inline: <<-SHELL
    echo -e "\n --> Installing Webmin.\n\n"
    sh -c 'echo "deb http://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list'
    wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add -
    apt-get update
    apt-get install -y webmin >/dev/null 2>&1
    apt-get -y install memcached
    apt-get -y install xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2
    SHELL

    # # Run the shell script inline provisioner
    # config.vm.provision 'shell', inline: <<-SHELL
    # echo "-------------------- updating package lists"
    # sudo apt-get update -y
    # sudo apt upgrade -y
    # sudo apt -y install vim bash-completion wget ca-certificates libpq-dev
    # wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    # echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee /etc/apt/sources.list.d/pgdg.list
    # sudo apt update -y
    # echo "-------------------- installing postgresql"
    # sudo apt install -y postgresql-12 postgresql-client-12
    # systemctl status postgresql.service
    # SHELL

    # config.vm.provision 'shell', inline: <<-SHELL
    # # fix permissions
    # echo "-------------------- fixing listen_addresses on postgresql.conf"
    # sudo sed -i "s/#listen_address.*/listen_addresses '*'/" /etc/postgresql/12/main/postgresql.conf
    # echo "-------------------- fixing postgres pg_hba.conf file"
    # # replace the ipv4 host line with the above line
    # sudo cat >> /etc/postgresql/12/main/pg_hba.conf <<EOF
    # # Accept all IPv4 connections - FOR DEVELOPMENT ONLY!!!
    # host all all 0.0.0.0/0 md5
    # EOF
    # SHELL

    # config.vm.provision 'shell', inline: <<-SHELL
    # # fix permissions
    # echo "-------------------- fixing listen_addresses on postgresql.conf"
    # sudo sed -i "s/#listen_address.*/listen_addresses '*'/" /etc/postgresql/12/main/postgresql.conf
    # echo "-------------------- fixing postgres pg_hba.conf file"
    # # replace the ipv4 host line with the above line
    # sudo cat >> /etc/postgresql/12/main/pg_hba.conf <<EOF
    # # Accept all IPv4 connections - FOR DEVELOPMENT ONLY!!!
    # host all all 0.0.0.0/0 md5
    # EOF
    # SHELL

    # config.vm.provision 'shell', inline: 'sudo service postgresql restart'
    end