= Quickstart for Installing Gerrit on Linux

This quickstart shows you how to install Gerrit on a Linux machine.

[NOTE]
====
The installation steps provided in this quickstart are for
demonstration purposes only. They are not intended for use in a production
environment.

For a more detailed installation guide, see
link:install.txt[Standalone Daemon Installation Guide].
====

== Before you begin

To complete this quickstart, you need:

. A Unix-based server such as any of the Linux flavors or BSD.
. Java SE Runtime Environment version 1.8 or later.

== Download Gerrit

From the Linux machine on which you want to install Gerrit:

. Open a terminal window.
. Download the Gerrit archive. See
link:https://gerrit-releases.storage.googleapis.com/index.html[Gerrit Code
Review - Releases] for a list of available archives.

The steps in this quickstart used Gerrrit 2.14.2, which you can download using
a command such as:

....
wget https://www.gerritcodereview.com/download/gerrit-2.14.2.war
....

NOTE: If you want to build and install Gerrit from the source files, see
link:dev-readme.html[Developer Setup].

== Install and initialize Gerrit

From the command line, type the following:

....
java -jar gerrit*.war init --batch --dev -d ~/gerrit_testsite
....

The preceding command uses two parameters:

* `--batch`. This parameter assigns default values to a variety of Gerrit
  configuration options. To learn more about these configuration options, see
  link:config-gerrit.html[Configuration].
* `--dev`. This parameter configures the server to use the authentication
  option, `DEVELOPMENT_BECOME_ANY_ACCOUNT`. This authentication type makes it
  easy for you to switch between different users to explore how Gerrit works.
  To learn more about setting up Gerrit for development, see
  link:dev-readme.html[Developer Setup].

This command displays a number of messages in the terminal window. The following
is an example of these messages:

....
Generating SSH host key ... rsa(simple)... done
Initialized /home/gerrit/gerrit_testsite
Executing /home/gerrit/gerrit_testsite/bin/gerrit.sh start
Starting Gerrit Code Review: OK
....

The last message you should see is `Starting Gerrit Code Review: OK`. This
message informs you that the Gerrit service is now running.

== Update the listen URL

Another recommended task is to change the URL that Gerrit listens to from `*`
to `localhost`. This changes helps prevent outside connections from contacting
the instance.

....
git config --file gerrit_testsite/etc/gerrit.config httpd.listenUrl 'http://localhost:8080'
....

== Restart the Gerrit service

You must restart the Gerrit service for your authentication type and listen URL
changes to take effect.

....
~/gerrit_testsite/bin/gerrit.sh restart
....

== Viewing Gerrit

At this point, you have a basic installation of Gerrit. You can view this
installation by opening a browser and entering the following URL:

....
http://localhost:8080
....

== Next steps

Through this quickstart, you now have a simple version of Gerrit running on your
Linux machine. You can use this installation to explore the UI and become
familiar with some of Gerrit's features. For a more detailed installation guide,
see link:install.txt[Standalone Daemon Installation Guide].

To learn more about Gerrit, see the following How-to topics:

* Adding users to Gerrit
* Cloning a repository into Gerrit
* Making a change
* Reviewing a change

GERRIT
------

Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
