daemon
======

NAME
----
daemon - Gerrit network server

SYNOPSIS
--------
--
'java' -jar gerrit.war 'daemon'
	-d <SITE_PATH>
	[--enable-httpd | --disable-httpd]
	[--enable-sshd | --disable-sshd]
	[--console-log]
	[--slave]
	[--headless]
	[--init]
	[-s]
--

DESCRIPTION
-----------
Runs the Gerrit network daemon on the local system, configured as
per the local copy of link:config-gerrit.html[gerrit.config].

The path to gerrit.config is read from the metadata database,
which requires that all slaves (and master) reading from the same
database must place gerrit.config at the same location on the local
filesystem.  However, any option within gerrit.config, including
link:config-gerrit.html#gerrit.basePath[gerrit.basePath] may be set
to different values.

OPTIONS
-------

-d::
--site-path::
	Location of the gerrit.config file, and all other per-site
	configuration data, supporting libraries and log files.

--enable-httpd::
--disable-httpd::
	Enable (or disable) the internal HTTP daemon, answering
	web requests.  Enabled by default.

--enable-sshd::
--disable-sshd::
	Enable (or disable) the internal SSH daemon, answering SSH
	clients and remotely executed commands.  Enabled by default.

--slave::
	Run in slave mode, permitting only read operations
    by clients.  Commands which modify state such as
    link:cmd-receive-pack.html[receive-pack] (creates new changes
    or updates existing ones) or link:cmd-review.html[review]
    (sets approve marks) are disabled.
+
This option automatically implies '--disable-httpd --enable-sshd'.

--console-log::
	Send log messages to the console, instead of to the standard
	log file '$site_path/logs/error_log'.

--headless::
	Don't start the default Gerrit UI. May be useful when Gerrit is
	run with an alternative UI.

--init::
	Run init before starting the daemon. This will create a new site or
	upgrade an existing site.

--s::
	Start link:dev-inspector.html[Gerrit Inspector] on the console, a
	built-in interactive inspection environment to assist debugging and
	troubleshooting of Gerrit code.
+
This options requires 'jython.jar' from the http://www.jython.org[Jython distribution]
to be present in '$site_path/lib' directory.

CONTEXT
-------
This command can only be run on a server which has direct
connectivity to the metadata database, and local access to the
managed Git repositories.

LOGGING
-------
Error and warning messages from the server are automatically written
to the log file under '$site_path/logs/error_log'.  This log file
is automatically rotated at 12:00 AM GMT each day, allowing an
external log cleaning service to clean up the prior logs.

KNOWN ISSUES
------------
Slave daemon caches can quickly become out of date when modifications
are made on the master.  The following configuration is suggested in
a slave to reduce the maxAge for each cache entry, so that changes
are recognized in a reasonable period of time:

----
[cache "accounts"]
  maxAge = 5 min
[cache "accounts_byemail"]
  maxAge = 5 min
[cache "diff"]
  maxAge = 5 min
[cache "groups"]
  maxAge = 5 min
[cache "projects"]
  maxAge = 5 min
[cache "sshkeys"]
  maxAge = 5 min
----

and if LDAP support was enabled, also include:
----
[cache "ldap_groups"]
  maxAge = 5 min
[cache "ldap_usernames"]
  maxAge = 5 min
----

Automatic cache coherency between master and slave systems is
planned to be implemented in a future version.

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

SEARCHBOX
---------
