:linkattrs:
= Gerrit Code Review - Standalone Daemon Installation Guide

[[prerequisites]]
== Prerequisites

To run the Gerrit service, the following requirement must be met on the host:

* JRE, versions 1.8 or 11 http://www.oracle.com/technetwork/java/javase/downloads/index.html[Download,role=external,window=_blank]
+
Gerrit is not yet compatible with Java 13 or newer at this time.

[[download]]
== Download Gerrit

Current and past binary releases of Gerrit can be obtained from
the link:https://gerrit-releases.storage.googleapis.com/index.html[
Gerrit Releases site,role=external,window=_blank].

Download any current `*.war` package. The war will be referred to as
`gerrit.war` from this point forward, so you may find it easier to
rename the downloaded file.

If you would prefer to build Gerrit directly from source, review
the notes under link:dev-readme.html[developer setup].

[[init]]
== Initialize the Site

Gerrit stores configuration files, the server's SSH keys, and the
managed Git repositories under a local directory, typically referred
to as `'$site_path'`.

You also have to decide where to store your server side git repositories. This
can either be a relative path under `'$site_path'` or an absolute path
anywhere on your server system. You have to choose a place before commencing
your init phase.

Initialize a new site directory by running the init command, passing
the path of the site directory to be created as an argument to the
'-d' option.  Its recommended that Gerrit Code Review be given its
own user account on the host system:

----
  sudo adduser gerrit
  sudo su gerrit

  java -jar gerrit.war init -d /path/to/your/gerrit_application_directory
----

[NOTE]
If you choose a location where your new user doesn't
have any privileges, you may have to manually create the directory first and
then give ownership of that location to the `'gerrit'` user.

If run from an interactive terminal, the init command will prompt through a
series of configuration questions.  If the terminal is not interactive,
running the init command will choose some reasonable default selections.
Once the init phase is complete, you can review your settings in the file
`'$site_path/etc/gerrit.config'`.

When running the init command, additional JARs might be downloaded to
support optional selected functionality.  If a download fails a URL will
be displayed and init will wait for the user to manually download the JAR
and store it in the target location.

When the init phase is complete, the daemon will be automatically started
in the background and your web browser will open to the site:

----
  Initialized /home/gerrit/review_site
  Executing /home/gerrit/review_site/bin/gerrit.sh start
  Starting Gerrit Code Review: OK
  Waiting for server to start ... OK
  Opening browser ...
----

When the browser opens, sign in to Gerrit through the web interface.
The first user to sign-in and register an account will be
automatically placed into the fully privileged Administrators group,
permitting server management over the web and over SSH.  Subsequent
users will be automatically registered as unprivileged users.


== Installation Complete

Your base Gerrit server is now installed and running.  You're now ready to
either set up more projects or start working with the projects you've already
imported.


[[project_setup]]
== Project Setup

See link:project-configuration.html[Project Configuration] for further details on
how to register a new project with Gerrit.  This step is necessary
if existing Git repositories were not imported during 'init'.


[[rc_d]]
== Start/Stop Daemon

To control the Gerrit Code Review daemon that is running in the
background, use the rc.d style start script created by 'init':

----
  review_site/bin/gerrit.sh start
  review_site/bin/gerrit.sh stop
  review_site/bin/gerrit.sh restart
----

('Optional') Configure the daemon to automatically start and stop
with the operating system.

Uncomment the following 3 lines in the `'$site_path/bin/gerrit.sh'`
script:

----
 chkconfig: 3 99 99
 description: Gerrit Code Review
 processname: gerrit
----

Then link the `gerrit.sh` script into `rc3.d`:

----
  sudo ln -snf `pwd`/review_site/bin/gerrit.sh /etc/init.d/gerrit
  sudo ln -snf /etc/init.d/gerrit /etc/rc3.d/S90gerrit
----

('Optional') To enable autocompletion of the gerrit.sh commands, install
autocompletion from the `/contrib/bash_completion` script.  Refer to the
script's header comments for installation instructions.

To install Gerrit into an existing servlet container instead of using
the embedded Jetty server, see
link:install-j2ee.html[J2EE installation].

[[installation_on_windows]]
== Installation on Windows

The `ssh-keygen` command must be available during the init phase to
generate SSH host keys. If you have
link:https://git-for-windows.github.io/[Git for Windows,role=external,window=_blank] installed,
start Command Prompt and temporary add directory with ssh-keygen to the
PATH environment variable just before running init command:

====
  PATH=%PATH%;c:\Program Files\Git\usr\bin
====

Please note that the path in the above example must not be
double-quoted.

To run the daemon after site initialization execute:

====
  cd C:\MY\GERRIT\SITE
  java.exe -jar bin\gerrit.war daemon --console-log
====

To stop the daemon press Ctrl+C.

=== Install the daemon as Windows Service

To install Gerrit as Windows Service use the
link:http://commons.apache.org/proper/commons-daemon/procrun.html[Apache
Commons Daemon Procrun,role=external,window=_blank].

Sample install command:

====
  prunsrv.exe //IS//Gerrit --DisplayName="Gerrit Code Review" --Startup=auto ^
        --Jvm="C:\Program Files\Java\jre1.8.0_65\bin\server\jvm.dll" ^
        --Classpath=C:\MY\GERRIT\SITE\bin\gerrit.war ^
        --LogPath=C:\MY\GERRIT\SITE\logs ^
        --StartPath=C:\MY\GERRIT\SITE ^
        --StartMode=jvm --StopMode=jvm ^
        --StartClass=com.google.gerrit.launcher.GerritLauncher --StartMethod=daemonStart ^
        --StopClass=com.google.gerrit.launcher.GerritLauncher --StopMethod=daemonStop
====

[[customize]]
== Site Customization

Gerrit Code Review supports some site-specific customization options.
For more information, see the related topics in this manual:

* link:config-reverseproxy.html[Reverse Proxy]
* link:config-sso.html[Single Sign-On Systems]
* link:config-themes.html[Themes]
* link:config-gitweb.html[Gitweb Integration]
* link:config-gerrit.html[Other System Settings]
* link:config-auto-site-initialization.html[Automatic Site Initialization on Startup]


[[anonymous_access]]
== Anonymous Access

Exporting the Git repository directory
(link:config-gerrit.html#gerrit.basePath[gerrit.basePath]) over the
anonymous, unencrypted git:// protocol is more efficient than
Gerrit's internal SSH daemon.  See the `git-daemon` documentation
for details on how to configure this if anonymous access is desired.

* http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html[man git-daemon,role=external,window=_blank]


[[plugins]]
== Plugins

Place Gerrit plugins in the review_site/plugins directory to have them loaded on Gerrit startup.


== External Documentation Links

* http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html[git-daemon,role=external,window=_blank]


[[backup]]
== Backup

See the link:backup.html[backup documentation].

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

SEARCHBOX
---------
