= 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]
  [--replica]
  [--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] located under
`<SITE_PATH>/etc`.

== 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 when --replica is not used.

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

--replica::
	Run in replica 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 '--enable-sshd'.

--console-log::
	Send log messages to the console. Log files will still be written to
	the error log file, if log.textLogging and/or log.jsonLogging is set to
	'true'.

--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
Replica daemon caches can quickly become out of date when modifications
are made on the primary node.  The following configuration is suggested in
a replica 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 "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 primary and replica systems is
planned to be implemented in a future version.

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

SEARCHBOX
---------
