<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

<!--
  SPDX-License-Identifier: LGPL-2.1-or-later

  Copyright © 2015 Chris Morgan
-->

<refentry id="journal-remote.conf" conditional='HAVE_MICROHTTPD'
          xmlns:xi="http://www.w3.org/2001/XInclude">
  <refentryinfo>
    <title>journal-remote.conf</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>journal-remote.conf</refentrytitle>
    <manvolnum>5</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>journal-remote.conf</refname>
    <refname>journal-remote.conf.d</refname>
    <refpurpose>Configuration files for the service accepting remote journal uploads</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <para><filename>/etc/systemd/journal-remote.conf</filename></para>
    <para><filename>/etc/systemd/journal-remote.conf.d/*.conf</filename></para>
    <para><filename>/run/systemd/journal-remote.conf.d/*.conf</filename></para>
    <para><filename>/usr/lib/systemd/journal-remote.conf.d/*.conf</filename></para>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para>These files configure various parameters of
    <citerefentry><refentrytitle>systemd-journal-remote.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
    See
    <citerefentry><refentrytitle>systemd.syntax</refentrytitle><manvolnum>7</manvolnum></citerefentry>
    for a general description of the syntax.</para>
  </refsect1>

  <xi:include href="standard-conf.xml" xpointer="main-conf" />

  <refsect1>
    <title>Options</title>

    <para>All options are configured in the
    [Remote] section:</para>

    <variablelist class='config-directives'>
      <varlistentry>
        <term><varname>Seal=</varname></term>

        <listitem><para>Periodically sign the data in the journal using Forward Secure Sealing.
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>SplitMode=</varname></term>

        <listitem><para>One of <literal>host</literal> or <literal>none</literal>.
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ServerKeyFile=</varname></term>

        <listitem><para>SSL key in PEM format.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>ServerCertificateFile=</varname></term>

        <listitem><para>SSL certificate in PEM format.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>TrustedCertificateFile=</varname></term>

        <listitem><para>SSL CA certificate.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>MaxUse=</varname></term>
        <term><varname>KeepFree=</varname></term>
        <term><varname>MaxFileSize=</varname></term>
        <term><varname>MaxFiles=</varname></term>

        <listitem><para>These are analogous to <varname>SystemMaxUse=</varname>,
        <varname>SystemKeepFree=</varname>, <varname>SystemMaxFileSize=</varname>
        and <varname>SystemMaxFiles=</varname> in
        <citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>

        <para><varname>MaxUse=</varname> controls how much disk space
        the <command>systemd-journal-remote</command> may use up at most.
        <varname>KeepFree=</varname> controls how much disk
        space <command>systemd-journal-remote</command> shall leave free for other uses.
        <command>systemd-journal-remote</command> will respect both limits
        and use the smaller of the two values.</para>

        <para><varname>MaxFiles=</varname> controls how many
        individual journal files to keep at most. Note that only
        archived files are deleted to reduce the number of files until
        this limit is reached; active files will stay around. This
        means that, in effect, there might still be more journal files
        around in total than this limit after a vacuuming operation is
        complete.</para></listitem>
      </varlistentry>

    </variablelist>

  </refsect1>

  <refsect1>
      <title>See Also</title>
      <para>
        <citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
        <citerefentry><refentrytitle>systemd-journal-remote.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
        <citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
      </para>
  </refsect1>

</refentry>
