Protobox is vagrant web GUI

Overview

Protobox

Protobox is a layer on top of vagrant and a web GUI to setup virtual machines for web development. A single YAML document controls everything that is installed on the virtual machine. You can install popular languages, software, and even popular web applications or your own private GIT repositories with a simple on/off toggle in YAML. You can read more about why this was developed in our about document or on our website at getprotobox.com.

Installation

Open terminal and run the following:

gem install protobox && protobox init

Then run vagrant up and follow the protobox instructions on screen.

Protobox can also be installed other ways, click here to check out alternative installation options.

Configuration

The protobox configuration file is found at data/config/common.yml. You can easily install new services by setting install: 1 under any of the software in the configuration file. Alternatively you can drag and drop your yml file to make changes with our web gui at getprotobox.com.

Functionality

Protobox has built in support for the following functionality:

  • Vast Module Selection: Protobox comes bundled with 15+ of the most common modules that PHP developer use everyday.
  • Application Installing: Set the path to a git repo (public or private) or a composer project and upon vagrant up it will be installed for you.
  • User Preferences: Upon boot up your dot files in data/dot will be copied to the virtual machine.
  • SSH Keys: Place your ssh keys in the data/ssh and reference them from the configuration file to be copied to the virtual machine to easily access any remote servers or github.
  • SQL Import: You can add any sql files in data/sql and reference them in the configuration file to be imported upon the bootup of the virtual machine.
  • Mailcatching: The mailcatcher package can catch any mail leaving the system for debugging and testing.
  • Ansible: Protobox is built using ansible. It's simplicity, yaml format, and agent operation make for a very powerful combination. Why Ansible?.

Modules

Protobox has built in support for any OS, common web servers, and languages. See the full list by reading the modules document or on our website at getprotobox.com.

Applications

Protobox has built in support for popular applications. See the full list by reading the applications document or on our website at getprotobox.com.

Contributing

Check out our roadmap for upcoming features and how to help.

Use GitHub Issues to file a bug report or new feature request. Please open a issue prior to opening a pull request to make sure it is something we can merge. The roadmap can be determined by looking at issues tagged as featured request.

Help!

Use GitHub Issues or #protobox on irc.freenode.net.

Credit

Protobox was developed by Patrick Heeney and inspired by the puphpet project. A special thanks goes out to our contributors for helping grow this project. Protobox is also made possible by the best orchestration engine in existence: ansible.

License

Protobox is licensed under the MIT license.

Comments
  • bash: protobox: command not found

    bash: protobox: command not found

    Installing protobox via gem

    gem install protobox && protobox init

    got this error: bash: protobox: command not found

    -> actually not possible to install any box...

    opened by heyalbert 19
  • Installing protobox on Ubuntu 12.0.4

    Installing protobox on Ubuntu 12.0.4

    Hello,

    I am trying to install protobox on Ubuntu 12.0.4 with no luck for some time. Can you please advise, i am following instructions as per the installation docs.

    root@ubuntu:/usr/local/bin# vagrant -v Vagrant version 1.0.1

    root@ubuntu:/usr/local/bin# gem install protobox && protobox init Successfully installed protobox-0.0.2 1 gem installed Installing ri documentation for protobox-0.0.2... Installing RDoc documentation for protobox-0.0.2... /var/lib/gems/1.8/gems/protobox-0.0.2/lib/protobox/commands.rb:37:in init': undefined methodrequire_relative' for Protobox::Commands:Module (NoMethodError) from /var/lib/gems/1.8/gems/protobox-0.0.2/lib/protobox/commands.rb:21:in send' from /var/lib/gems/1.8/gems/protobox-0.0.2/lib/protobox/commands.rb:21:inrun' from /var/lib/gems/1.8/gems/protobox-0.0.2/lib/protobox/cli.rb:16:in execute' from /var/lib/gems/1.8/gems/protobox-0.0.2/lib/protobox/cli.rb:12:inexecute' from /var/lib/gems/1.8/gems/protobox-0.0.2/bin/protobox:6 from /usr/local/bin/protobox:19:in `load' from /usr/local/bin/protobox:19

    Please let me know how to proceed and i have the custom.yml and let me know which location i need to place on Ubuntu file system as well.

    opened by rockysreenivasa 18
  • Nginx fails:

    Nginx fails: "Destination directory /etc/php5/fpm does not exist"

    @patrickheeney Its been a while since I have spun up a new VM with protobox and I am unable to get nginx to work.

    There have been loads of changes in the last month though (good work) so I may not be up to date with exactly the best workflow here now!

    The simplest way to reproduce this is just to use the stock common.yml and just change nginx install=1 and apache `install=0``.

    It gets most of the way through the install and then trips up with the following.

    TASK: [php | ini | set nginx ini] ********************************************* 
    failed: [localhost] => {"failed": true, "item": ""}
    msg: Destination directory /etc/php5/fpm does not exist
    
    FATAL: all hosts have already failed -- aborting
    

    Here is the full output for reference https://gist.github.com/BenBish/8261564

    opened by BenBish 17
  • Nginx woes:

    Nginx woes: "Error: Could not find class nginx::params for protobox on node protobox"

    First off, I love this concept. You saw the drawbacks with the already excellent puphpet and developed exactly what I wanted to be able to do with it. As a front end designer / dev, the common.yaml solution is the key to being the base for all my dev projects!

    If I understand correctly, I should be able to set the Apache section to install: 0 and set the Nginx section to install: 1 to use nginx as the web server?

    Unfortunately, its falling over when I try this though.

    From the end of the output,

    Finished running initial librarian-puppet
    [default] Running provisioner: puppet...
    Running Puppet with default.pp...
    stdin: is not a tty
    Warning: Could not retrieve fact fqdn
    Error: Could not find class nginx::params for protobox on node protobox
    Error: Could not find class nginx::params for protobox on node protobox
    The following SSH command responded with a non-zero exit status.
    Vagrant assumes that this means the command failed!
    
    FACTER_ssh_username='vagrant' puppet apply --hiera_config /vagrant/puppet/hiera/hiera.yaml --parser future --modulepath /vagrant/puppet/modules:/etc/puppet/modules:/usr/share/puppet/modules --manifestdir /tmp/vagrant-puppet/manifests --detailed-exitcodes /tmp/vagrant-puppet/manifests/default.pp || [ $? -eq 2 ]
    
    Stdout from the command:
    
    
    
    Stderr from the command:
    
    stdin: is not a tty
    Warning: Could not retrieve fact fqdn
    Error: Could not find class nginx::params for protobox on node protobox
    Error: Could not find class nginx::params for protobox on node protobox
    
    opened by BenBish 16
  • Task fail when Xdebug is required

    Task fail when Xdebug is required

    I've elected to install Xdebug, accepting the default configuration, but always see the following error:

    TASK: [php | xdebug | set ini] ************************************************  
    failed: [localhost] => {"failed": true, "item": ""}
    msg: Destination directory /etc/php5/mods-available does not exist
    
    FATAL: all hosts have already failed -- aborting
    
    PLAY RECAP ******************************************************************** 
             to retry, use: --limit @/root/site.retry`
    

    The operating system chosen is Ubuntu 10.04 Lucid x64.

    bug 
    opened by settermjd 14
  • xdebug-options.ini is not linked

    xdebug-options.ini is not linked

    in ansible/roles/php/tasks/xdebug.yml

    - name: xdebug | enable xdebug config
      shell: >
        chdir=/etc/php5/mods-available
        php5enmod xdebug-options;
      sudo: yes
      when: not php_version_53
      notify:
        - php-restart
    
    - name: xdebug | enable xdebug config on php 5.3
      file: >
        src=/etc/php5/mods-available/xdebug-options.ini
        dest=/etc/php5/conf.d/xdebug-options.ini
        state=link
      when: php_version_53
      notify:
        - php-restart
    

    however during provisioning I get:

    TASK: [php | xdebug | enable xdebug config] *********************************** 
    skipping: [localhost]
    
    TASK: [php | xdebug | enable xdebug config on php 5.3] ************************ 
    skipping: [localhost]
    

    and the file isn't linked in /etc/php5/conf.d/

    Not sure how to go about debugging but happy to try if you point me in the right direction.

    bug 
    opened by JacobDorman 12
  • Mailcatcher no longer installing

    Mailcatcher no longer installing

    Mailcatcher no longer installs when provisioning citing ruby version requirements.

    Below are my logs from the provisioning:

    ==> default: TASK: [php | mailcatcher | install packages] ********************************** ==> default: changed: [localhost] => (item=rdoc) ==> default: failed: [localhost] => (item=mailcatcher) => {"changed": true, "cmd": ["gem", "install", "mailcatcher", "--no-ri", "--no-rdoc"], "delta": "0:00:53.185896", "end": "2014-06-17 19:56:14.698558", "item": "mailcatcher", "rc": 1, "start": "2014-06-17 19:55:21.512662"} ==> default: stderr: ERROR: Error installing mailcatcher: ==> default: mime-types requires Ruby version >= 1.9.2. ==> default: stdout: Building native extensions. This could take a while... ==> default: ==> default: HEADS UP! Haml 4.0 has many improvements, but also has changes that may break ==> default: your application: ==> default: ==> default: * Support for Ruby 1.8.6 dropped ==> default: * Support for Rails 2 dropped ==> default: * Sass filter now always outputs