Distribution Single Node Debian Installation
The Debian installation bundles Distribution and all its dependencies.
The Debian installation bundles Distribution and all its dependencies. They are provided as native Debian packages, where you must separately install Distribution and its dependencies. Use this if you are automating installations.
Before you proceed, see System Requirements for information on supported platforms, supported browsers, and other requirements.
Distribution System Requirements
The following table lists the minimum requirements and assumes you are running Distribution with an external database. Actual values might change based on the amount of data in your application.
| Processor | Memory | Disk Space |
|---|---|---|
| 4 cores | 8 GB | 200 GB SSD |
Operating Systems and Platform Support
The following table lists the supported operating systems and their versions:
| Product | Debian | RHEL | Ubuntu | Amazon Linux | Windows Server |
|---|---|---|---|---|---|
| Distribution | 11.x, 12.x | 8.x, 9.x | 20.04, 22.04, 24.04 |
Note
Debian 12.x and Ubuntu 24.04 are supported from Artifactory 7.104 and Distribution 2.28.
Windows 2022 is supported from Artifactory 7.125.
Supported Platforms
The following table lists the supported platforms:
| Product | x86-64 | ARM64 | Kubernetes | OpenShift |
|---|---|---|---|---|
| Distribution | 1.27+ | 4.14+ |
Installation on Kubernetes environments is through Helm Charts. Supported Helm version is Helm 3.17+.
Kubernetes Sizing Requirements
We have included YAML files with different sizing configurations for Artifactory , Xray, and Distribution in our GitHub pages. You can use these YAML files when you set up your cluster.
ARM64 Support for Container-Based Installations
Artifactory, Xray and Distribution supports installation on ARM64 architecture specifically through Helm and Docker installations. When deploying a product on an ARM64 platform, an external database must be set up as Artifactory does not support the bundled database for ARM64 installations. The appropriate ARM64 Container Image is automatically pulled during the Helm or Docker installation process.
Database and Third-Party Applications in Distribution
Distribution supports the following versions of PostgreSQL:
- 16.x
- 15.x
- 14.x
- 13.x
Distribution HA requires an external database. Any changes to the configuration require the restart of a Distribution node for the changes to take effect across the entire Distribution cluster.
Distribution requires Redis and supports Redis 7.x. A supported Redis version is bundled with the Distribution installer.
Redis Password Restrictions
Redis password should contain only alphanumeric characters and should not contain any special characters.
Distribution Network Ports
Distribution uses the 8082 port by default for external communication.
Distribution uses the following internal ports by default for communication with JFrog Platform microservices.
Microservice | Port |
|---|---|
Distribution Server | 8080 |
Router | HTTP: 8082, 8046, 8049 gRPC: 8047 |
Redis | 6379 |
PostgreSQL (if you use the bundled Postgres database) | 5432 |
Observability | HTTP: 8036 gRPC: 8037 |
Follow these steps to install the product:
-
Extract the contents of the compressed archive, and go to the extracted folder.
tar -xvf jfrog-distribution-<version>-deb.tar.gz cd jfrog-distribution-<version>-deb -
Install PostgreSQL.
Already have a PostgreSQL installation?
Set your PostgreSQL connection details in the Shared Configurations section of the
$JFROG_HOME/distribution/var/etc/system.yamlfile. -
Install Redis.
-
Install Distribution.
dpkg -i ./distribution/distribution.debYou must run as a root user.
-
Customize the product configuration.
- Set the Artifactory connection details.
- Customize the PostgreSQL Database connection details. (optional)
- Set any additional configurations (for example: ports, node id) using the Distribution system.yaml file.
-
Start and manage the Distribution service.
systemd OS
systemctl start|stop distribution.servicesystemv OS
service distribution start|stop|status|restart -
Access Distribution from your browser at:
http://<jfrogUrl>/ui/.Go to the Distribution tab in the Application module in the UI.
-
Check the Distribution log.
tail -f $JFROG_HOME/distribution/var/log/console.log
Configure log rotation of the console log
The
console.logfile can grow quickly since all services write to it. For more information, see configure the log rotation.
Distribution Product Configuration
After installing and before running Distribution, you may set the following configurations.
Where to find the system configurations?
You can configure all your system settings using the system.yaml file located in the $JFROG_HOME/distribution/var/etc folder. For more information, see Distribution YAML Configuration.
If you don't have a System YAML file in your folder, copy the template available in the folder and name it system.yaml.
For the Helm charts, the system.yaml file is managed in the chart’s values.yaml.
Artifactory Connection Details for Distribution
Distribution requires a working Artifactory server and a suitable license.
The Distribution connection to Artifactory requires the following parameters.
-
jfrogUrl - URL to the machine where JFrog Artifactory is deployed, or the load balancer pointing to it. It is recommended to use DNS names rather than direct IPs. For example:
http://jfrog.acme.cominstead ofhttp://10.20.30.40:8082.Set it in the Shared Configurations section of the
$JFROG_HOME/distribution/var/etc/system.yamlfile. -
join.key - This is the secret key required by Artifactory for registering and authenticating the Distribution server.
You can fetch the Artifactory
joinKey(join Key) from the JPD UI in the Administration module | User Management | Settings | Join Key.Set the join.key used by your Artifactory server in the Shared Configurations section of the
$JFROG_HOME/distribution/var/etc/system.yamlfile.
Add Signing Keys to JFrog Distribution
The JFrog Platform supports signing keys to establish trust with your clients for downloading your packages from Artifactory. Signing keys consist of a public and a private key pair, which are used for signing and verifying release bundles. When installing a new Edge, you will need to propagate the public keys to the new Edge. To learn about how to add and propagate keys, see GPG Signing.
Change PostgreSQL Database Credentials
Distribution comes bundled with a PostgreSQL Database out-of-the-box, which comes pre-configured with default credentials
To change the default credentials:
# Access PostgreSQL as the Distribution user adding the optional -W flag to invoke the password prompt
$ psql -d distribution -U distribution -W
# Securely change the password for user "distribution". Enter and then retype the password at the prompt.
\password distribution
# Verify the update was successful by logging in with the new credentials
$ psql -d distribution -U distribution -WSet your PostgreSQL connection details in the Shared Configurations section of the $JFROG_HOME/distribution/var/etc/system.yaml file.
Change Redis Database Credentials
Redis Password Restrictions
Redis password should contain only alphanumeric characters and should not contain any special characters.
-
Set your Redis password in the Shared Configurations section of the
$JFROG_HOME/distribution/var/etc/system.yamlfile. -
For Helm installations, you can set the password in the
values.yamlfile.distribution: jfrogUrl: http://xx.xx.xxx.xx joinKey: 6a8d2eaa5eab7d6945c020245c98344b9b42b9665073a36c74645d52e565dce4 persistence: enabled: true redis: password: <password> -
Restart all the services.
Third Party Applications for Distribution
PostgreSQL for Distribution
You must install PostgreSQL before you proceed with the installation of Distribution.
PostgreSQL for Debian
We recommended to get your apt-get libraries up-to-date by using the following commands.
apt-get update
apt-get install -f -y
apt-get update-
Create the file repository configuration to pull PostgreSQL dependencies.
cp -f /etc/apt/sources.list /etc/apt/sources.list.origfile sh -c 'echo "deb http://ftp.de.debian.org/debian/ $(lsb_release -cs) main non-free contrib" >> /etc/apt/sources.list' sh -c 'echo "deb-src http://ftp.de.debian.org/debian/ $(lsb_release -cs) main non-free contrib" >> /etc/apt/sources.list' cp -f /etc/apt/sources.list.d/pgdg.list /etc/apt/sources.list.d/pgdg.list.origfile sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" >> /etc/apt/sources.list.d/pgdg.list' sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" >> /etc/apt/sources.list.d/pgdg.list' wget --no-check-certificate --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - -
Install PostgreSQL.
Run the following commands from the extracted
jfrog-distribution-<version>-debdirectory.mkdir -p /var/opt/postgres/dataUbuntu 18.04 (bionic)
dpkg -i ./third-party/postgresql/postgresql-13_13.2-1.pgdg18.04+1_amd64.debUbuntu 20.04 (focal)
dpkg -i ./third-party/postgresql/postgresql-13_13.2-1.pgdg20.04+1_amd64.debDebian 9 (stretch)
dpkg -i ./third-party/postgresql/postgresql-13_13.2-1.pgdg90+1_amd64.debDebian 10 (buster)
apt update -y apt-get install wget sudo -y apt-get install -y gnupg gnupg1 gnupg2 dpkg -i ./third-party/postgresql/postgresql-13_13.2-1.pgdg100+1_amd64.deb -
Stop the PostgreSQL service.
systemctl stop postgresql.service -
Change permissions for the PostgreSQL folder.
chown -R postgres:postgres /var/opt/postgres sed -i "s~^data_directory =.*~data_directory = '/var/opt/postgres/data'~" "/etc/postgresql/13/main/postgresql.conf" sed -i "s~^hba_file =.*~hba_file = '/var/opt/postgres/data/pg_hba.conf'~" "/etc/postgresql/13/main/postgresql.conf" sed -i "s~^ident_file =.*~ident_file = '/var/opt/postgres/data/pg_ident.conf'~" "/etc/postgresql/13/main/postgresql.conf" su postgres -c "/usr/lib/postgresql/12/bin/initdb --pgdata=/var/opt/postgres/data" -
Configure PostgreSQL to allow external IP connections.
-
By default PostgreSQL will only allow localhost clients communications. To enable different IPs to communicate with the database you need to configure the
pg_hba.conffile.The file is available at
/var/opt/postgres/data.To grant all IPs access add the following entry under the IPv4 local connections section:
host all all 0.0.0.0/0 trustAdd the following entry to
/etc/postgresql/13/main/postgresql.conf.listen_addresses='*' port=5432 -
Start PostgreSQL.
systemctl start postgresql-<version>.service or service postgresql-<version> start -
Set up the database and user.
Run the following commands to seed the tables and schemas needed by Distribution
sudo -u postgres psql -c "CREATE USER distribution WITH PASSWORD 'password';" sudo -u postgres psql -c "CREATE DATABASE distribution WITH OWNER=distribution ENCODING='UTF8';" sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE distribution TO distribution;" cp -f ./third-party/postgresql/createPostgresUsers.sh /tmp source /etc/default/locale cd /tmp && su postgres -c "POSTGRES_PATH=/usr/lib/postgresql/13/bin PGPASSWORD=postgres DB_PASSWORD=password bash /tmp/createPostgresUsers.sh" -
Put back the original
pgdg.list.mv /etc/apt/sources.list.d/pgdg.list /etc/apt/sources.list.d/pgdg.list.tmp && cp -f /etc/apt/sources.list.d/pgdg.list.origfile /etc/apt/sources.list.d/pgdg.list -
Remove the backup files.
rm -f /etc/apt/sources.list.d/pgdg.list.tmp rm -f /etc/apt/sources.list.d/pgdg.list.origfile -
Put back the original
sources.list.mv /etc/apt/sources.list /etc/apt/sources.list.tmp && cp -f /etc/apt/sources.list.origfile /etc/apt/sources.list -
Remove the backup files.
rm -f /etc/apt/sources.list.tmp && rm -f /etc/apt/sources.list.origfile
Redis for Distribution
Redis Password Restrictions
Redis password should contain only alphanumeric characters and should not contain any special characters.
Redis Debian Installation
Run the following commands from the extracted jfrog-distribution-<version>-deb directory.
dpkg -i ./third-party/redis/redis-tools_6.0.5-1chl1_xenial1_amd64.deb
dpkg -i ./third-party/redis/redis-server_6.0.5-1chl1_xenial1_amd64.deb
service redis-server start
# To verify if Redis is working. The command should return PONG.
redis-cli -a password ping
sed -i "s|# requirepass foobared|requirepass password|g" /etc/redis/redis.conf
echo "appendonly yes" >> /etc/redis/redis.conf
echo "appendfsync everysec" >> /etc/redis/redis.conf
sysctl vm.overcommit_memory=1
service redis-server restartUpdated 2 days ago
