:linkattrs:
= 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,role=external,window=_blank]. The steps below install Gerrit 3.1.3:

....
wget https://gerrit-releases.storage.googleapis.com/gerrit-3.1.3.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:

....
export GERRIT_SITE=~/gerrit_testsite
java -jar gerrit*.war init --batch --dev -d $GERRIT_SITE
....

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_SITE/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_SITE/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
---------
