= Quickstart for Installing Gerrit on Linux

This content explains how to install a basic instance of Gerrit on a Linux
machine.

[NOTE]
====
This quickstart is provided for demonstration purposes only. The Gerrit instance
they install must not be used in a production environment.

Instead, to install a Gerrit production environment, see
link:install.html[Standalone Daemon Installation Guide].
====

== Before you start

Be sure you have:

. A Unix-based server, including any Linux flavor, MacOS, or Berkeley Software
    Distribution (BSD).
. Java SE Runtime Environment version 1.8. Gerrit is not compatible with Java
    9 or newer yet.

== Download Gerrit

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

. Open a terminal window.
. Download the desired Gerrit archive.

To view previous archives, see
link:https://gerrit-releases.storage.googleapis.com/index.html[Gerrit Code Review: Releases]. The steps below install Gerrit 2.15.1:

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

NOTE: To build and install Gerrit from the source files, see
link:dev-readme.html[Gerrit Code Review: Developer Setup].

== Install and initialize Gerrit

From the command line, enter:

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

This command takes two parameters:

* `--batch` assigns default values to several Gerrit configuration
    options. To learn more about these options, see
    link:config-gerrit.html[Configuration].
* `--dev` configures the Gerrit server to use the authentication
  option, `DEVELOPMENT_BECOME_ANY_ACCOUNT`, which enables 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[Gerrit Code Review: Developer Setup].

While this command executes, status messages are displayed in the terminal
window. For example:

....
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 confirms that the Gerrit service is running:

`Starting Gerrit Code Review: OK`.

== Update the listen URL

To prevent outside connections from contacting your new Gerrit instance
(strongly recommended), change the URL on which Gerrit listens from `*` to
`localhost`. For example:

....
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

To view your new basic installation of Gerrit, go to:

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

== Next steps

Now that you have a simple version of Gerrit running, use the installation to
explore the user interface and learn about Gerrit. For more detailed
installation instructions, see
link:[Standalone Daemon Installation Guide](install.html).

GERRIT
------

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

SEARCHBOX
---------
