daemon
======

NAME
----
daemon - Gerrit network server

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

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 libaries 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[recieve-pack] (creates new changes
    or updates existing ones) or link:cmd-approve.html[approve]
    (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'.

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]
