<sect1 id="install-requirements" xreflabel="installation requirements">

  <indexterm>
   <primary>installation</primary>
   <secondary>requirements</secondary>
  </indexterm>

  <title>Requirements for installing repmgr</title>
  <para>
    repmgr is developed and tested on Linux and OS X, but should work on any
    UNIX-like system supported by PostgreSQL itself. There is no support for
    Microsoft Windows.
  </para>

  <para>
   From version 4.0, repmgr is compatible with all PostgreSQL versions from 9.3, including PostgreSQL 10.
   Note that some &repmgr; functionality is not available in PostgreSQL 9.3 and PostgreSQL 9.4.
  </para>

  <note>
   <simpara>
    If upgrading from &repmgr; 3.x, please see the section <xref linkend="upgrading-from-repmgr-3">.
   </simpara>
  </note>

  <para>
   All servers in the replication cluster must be running the same major version of
   PostgreSQL, and we recommend that they also run the same minor version.
  </para>

  <para>
   &repmgr; must be installed on each server in the replication cluster.
   If installing repmgr from packages, the package version must match the PostgreSQL
   version. If installing from source, repmgr must be compiled against the same
   major version.
  </para>

  <para>
   A dedicated system user for &repmgr; is *not* required; as many &repmgr; and
   <application>repmgrd</application> actions require direct access to the PostgreSQL data directory,
   these commands should be executed by the <literal>postgres</literal> user.
  </para>

  <para>
   Passwordless <command>ssh</command> connectivity between all servers in the replication cluster
   is not required, but is necessary in the following cases:
   <itemizedlist>
     <listitem>
       <simpara>if you need &repmgr; to copy configuration files from outside the PostgreSQL
       data directory (in which case <command>rsync</command> is also required)</simpara>
     </listitem>
     <listitem>
       <simpara>to perform <link linkend="performing-switchover">switchover operations</link></simpara>
     </listitem>
     <listitem>
       <simpara>
        when executing <command><link linkend="repmgr-cluster-matrix">repmgr cluster matrix</link></command>
        and <command><link linkend="repmgr-cluster-crosscheck">repmgr cluster crosscheck</link></command>
       </simpara>
     </listitem>
   </itemizedlist>
  </para>

  <tip>
   <simpara>
    We recommend using a session multiplexer utility such as <command>screen</command> or
    <command>tmux</command> when performing long-running actions (such as cloning a database)
    on a remote server - this will ensure the &repmgr; action won't be prematurely
    terminated if your <command>ssh</command> session to the server is interrupted or closed.
    </simpara>
  </tip>
 </sect1>
