4.3. Installation and Initial Setup #

This section describes installation of the ProGate management service and initial setup. ProGate management service is a set of applications that supports ProGate web interface.

4.3.1. Hardware and Software Requirements #

The ProGate management service requires an allocated or virtual server with the following minimum characteristics:

  • CPU: 8 cores

  • RAM: 16 GB

  • Disk space: 100 GB

  • Network interface: 1Gb/sec

ProGate runs on the following Linux-based operating systems:

  • ALT 9/10/11, ALT SP Release 10

  • Astra Linux 1.7/1.8

  • Debian 12/13

  • Red OS Murom 7.3/8.2

  • Red Hat Enterprise (RHEL) Linux 8/9

  • ROSA Chrome 2021.2

  • SUSE Linux Enterprise Server (SLES) 15

  • Ubuntu 22.04/24.04

4.3.2. Components #

ProGate is shipped as the package progate, which includes all the needed dependencies.

The following utilities are included in progate, but they can also be installed individually (for example, to only use the command line):

  • procopy (package)

  • prosync (package)

  • procheck (package)

Note

procheck is not available through the web interface yet. So it can only be used as a command-line utility.

4.3.3. Installation Process #

To install and configure the ProGate management service, follow the steps below.

  1. Install the repository:

    wget -O pgpro-repo-add.sh https://repo.postgrespro.ru/progate/progate/keys/pgpro-repo-add.sh
    sh pgpro-repo-add.sh
    

  2. Install the package:

    apt install progate
            

    The result of the installation is as follows:

    • The user and group named progate are created.

    • The procopy, prosync, and procheck utilities are installed in the /opt/pgpro/progate/bin/ directory.

    • The progate.service service is added but initially disabled.

    Note

    At this point, only the procopy, prosync, and procheck command-line utilities are available. The web interface is not yet ready and requires additional setup. So follow the instructions from Section 4.3.4.

4.3.4. Initial Setup #

To start working with the ProGate web interface, execute the following steps:

  1. Create a dedicated schema.

    The ProGate web interface requires a PostgreSQL/Postgres Pro database. In this database, create a dedicated schema where the web interface will store its support data. For example, let the schema name be progate.

  2. Specify the database for the service.

    To specify the database, in the environment file /opt/pgpro/progate/etc/env_progate, edit the line under the comment below so that it looks as follows (for details, see Section 4.3.4.1):

    # PostgreSQL/Postgres Pro connection string
    PROGATE_DB="postgres://user:password@host:5430/dbname?sslmode=disable&search_path=progate"
    

    Set the value of search_path above to the name of the dedicated schema.

    When composing the connection string, double-check that:

    • The user specified in the connection string has permissions for the progate schema.

    • The schema is in the specified database.

  3. Re-launch the progate.service service:

    systemctl enable progate.service
    

  4. [Optional] If a firewall is used, allow network connections on the TCP/8081 port.

If all the steps are performed without errors, the ProGate management service is launched successfully. The ProGate web interface is available at http://<server IP address>:8081. See Section 4.3.5 for how to log in.

4.3.4.1. Setting up ProGate with the Environment File #

The environment file is located at /opt/pgpro/progate/etc/env_progate and has the contents like these:

# Port for progate_backend
PROGATE_HTTP_SERVER_PORT="8081"

# Progate backend serves static files from given directory
PROGATE_HTTP_SERVER_STATIC_DIR="/opt/pgpro/progate/ui"

# PostgreSQL/Postgres Pro connection string
PROGATE_DB="postgres://user:password@host:5430/dbname?sslmode=disable&search_path=progate"

# Logs format: json | pretty
PROGATE_LOGS_FORMAT=pretty

# Log level: debug | info | warn | error
PROGATE_LOGS_LEVEL=info

# Auth parameters
# The length of the secret token must be greater than or equal to 32 characters
PROGATE_AUTH_ACCESS_TOKEN_SECRET="mT-Y8ICZv-zhirL_j2K69vX_Upbo8B6rMKtplqv4U4I="
PROGATE_AUTH_ACCESS_TOKEN_LIFETIME="168h"
PROGATE_AUTH_REFRESH_TOKEN_LIFETIME="720h"

# Connection parameters
PROGATE_CONNECTION_SERVICE_CHECK_CONNECTION_TIMEOUT="1.5s"

# Path to prosync bin
PROGATE_TRANSFER_WORK_PROSYNC_BIN="/opt/pgpro/progate/bin/prosync"

# Path to procopy bin
PROGATE_TRANSFER_WORK_PROCOPY_BIN="/opt/pgpro/progate/bin/procopy"

# Path to directory with procopy/prosync configs and other progate_backend-specific service files
PROGATE_TRANSFER_WORK_WORKING_DIR="/var/lib/progate/execution"

PROGATE_TRANSFER_WORK_WORK_POLL_INTERVAL="5s"
PROGATE_TRANSFER_WORK_TRANSFER_POLL_INTERVAL="5s"

PROGATE_PROCESS_RUNNER_WAIT_POLL_INTERVAL="5s"
PROGATE_PROCESS_RUNNER_MONITORING_START_POLL_INTERVAL="5s"
PROGATE_PROCESS_RUNNER_STOP_PROCESS_WAIT_TIMEOUT="5m"

For how to set values of time environment variables, refer to Section 4.3.6.

4.3.4.2. Setting up ProGate with the Configuration File #

In addition to environment variables, ProGate can be set up by means of the .yaml configuration file. Pass the path to this file with the -c flag. For example:

/opt/pgpro/progate/bin/progate -c path/to/config.yaml

The configuration file defines the same characteristics as the environment variables and looks as follows:

http_server:
  port: 8081
  static_dir: "/opt/pgpro/progate/ui"
db: "postgres://dbaas@localhost:5430/dbaas?sslmode=disable&search_path=progate"
logs:
  format: pretty
  level: info
auth:
  access_token_secret: "mT-Y8ICZv-zhirL_j2K69vX_Upbo8B6rMKtplqv4U4I="
  access_token_lifetime: 168h
  refresh_token_lifetime: 720h
connection_service:
  check_connection_timeout: 1.5s
transfer_work:
  prosync:
    bin: "/opt/pgpro/progate/bin/prosync"
  procopy:
    bin: "/opt/pgpro/progate/bin/procopy"
  working_dir: "/var/lib/progate/execution"
  work_poll_interval: 5s
  transfer_poll_interval: 5s
process_runner:
  wait_poll_interval: 5s
  monitoring_start_poll_interval: 5s
  stop_process_wait_timeout: 5m

4.3.5. Logging in to the Web Application #

To log in to the web application, use the following credentials:

  • Login: progate

  • Password: progate

4.3.6. Setting Time Values #

In ProGate, time environment variables and configuration values follow the Golang duration string format. For example:

  • 100 ms — 100 milliseconds

  • 5.5s — five and a half seconds

  • 5m — five minutes

  • 5h — five hours

  • 1h7m — one hour and seven minutes