You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
3.8 KiB

  1. Vagrant guide
  2. =============
  3. A quick way to get a development environment up and running is with Vagrant. You will need recent versions of [Vagrant](https://www.vagrantup.com/) and [VirtualBox](https://www.virtualbox.org/) installed.
  4. ## Basic setup
  5. Install the latest versions of Vagrant and VirtualBox for your operating systems, and then run:
  6. vagrant plugin install vagrant-hostsupdater
  7. This is optional, but will update your 'hosts' file when you start the virtual machine, allowing you to access the site at http://mastodon.dev (instead of http://localhost:3000).
  8. To create and provision a new virtual machine for Mastodon development:
  9. git clone git@github.com:tootsuite/mastodon.git
  10. cd mastodon
  11. vagrant up
  12. Running `vagrant up` for the first time will run provisioning, which will:
  13. - Download the Ubuntu 14.04 base image, if there isn't already a copy on your machine
  14. - Create a new VirtualBox virtual machine from that image
  15. - Run the provisioning script (located inside the Vagrantfile), which installs the system packages, Ruby gems, and JS modules required for Mastodon
  16. - Run the startup script
  17. ## Starting the server
  18. The Vagrant box will automatically start after provisioning. It can be started in future with `vagrant up` from the mastodon directory.
  19. Once the Ubuntu virtual machine has booted, it will run the startup script, which loads the environment variables from `.env.vagrant` and then runs `rails s -d -b 0.0.0.0`. This will start a Rails server. You can then access your development site at http://mastodon.dev (or at http://localhost:3000 if you haven't installed vagrants-hostupdater).
  20. To stop the server, simply run `vagrant halt`.
  21. ## Using the server
  22. You should now have a working Mastodon instance, although it will not federate, as it is not publicly accessible. Should you need temporary federation for development and testing, see the Ngrok information in the [Development Guide](Development-guide.md).
  23. By default, your instance's ActionMailer will use "Letter Opener Web" for email. This means that any email that would normally be sent, will instead be stored, and accessible at http://mastodon.dev/letter_opener - you can use this to verify a registered user account.
  24. ## Making changes/developing
  25. You are able to set environment variables, which are used for Mastodon configuration, by editing the `.env.vagrant` file. Any changes you make will take effect after a Vagrant restart.
  26. Vagrant has mounted your mastodon folder inside the virtual machine. This means that any change to the files in the folder(e.g. the Rails controllers or the React components in /app) should immediately take effect on the live server. This allows you to make and test changes, and create new commits, without ever needing to access the virtual machine.
  27. Should you need to access the virtual machine (for example, to manually restart the Rails process without restarting the box), run `vagrant ssh` from the mastodon folder. You will now be logged in as the `vagrant` user on the VirtualBox Ubuntu VM. You will want to `cd /vagrant` to see the app folder.
  28. ## Debugging
  29. You can find the Rails server logs in in the `log` folder, which will often have the information you need.
  30. If your Mastodon instance or Vagrant box are really not behaving, you can re-run the provisioning process. Stop the box with `vagrant halt`, and then run `vagrant destroy` - this will delete the virtual machine. You may then run `vagrant up` to create a new box, and re-run provisioning.
  31. ## Testing
  32. To run the `rspec` tests and `rubocop` style checker, you may either:
  33. * Install the relevant gems locally, or
  34. * SSH into the virtual machine, `cd /vagrant`, and then run the commands
  35. ## Support/help
  36. If you are confused, or having any issues with the above, the Mastodon IRC channel ( irc.freenode.net #mastodon ) is a good place to find assistance.