Install Artifactory with a Linux Archive

Install Artifactory from a Linux archive on any Linux distribution for single-node and HA deployments.

Installing Artifactory from a Linux archive involves manually downloading the compressed file, extracting it, and then configuring the extracted directories. While it does not use the operating system's native package manager for installation, Artifactory can still be configured to run as an OS-managed service (for example, using systemd).

The steps below cover single-node and high-availability (HA) installations of JFrog Artifactory with a Linux archive.

Prerequisites

Complete the common prerequisites before you begin. In summary:

Install Artifactory from Linux Archive

These steps cover both single-node and HA installations.

  1. Create JFrog Home Directory and Set JFROG_HOME Variable

    1. Create Dedicated Directory:

      Create a dedicated directory for your JFrog installation. This can be any directory of your choice (for example, /app/jfrog, /usr/local/jfrog, or a custom path).

      # Replace <path to your directory> with your chosen directory
      sudo mkdir -p <path to your directory> 
      cd <path to your directory>
    2. Set JFROG_HOME Variable:

      Set the JFROG_HOME environment variable to easily refer to this path in your terminal. This must match the directory you created in the previous step.

      # Replace <path to your directory> with your chosen directory
      export JFROG_HOME=<path to your directory>

    For more information, see JFrog Product Directory Structure.

  2. Download and Extract Artifactory Linux Archive

    1. Download Artifactory Linux Archive:

      To download a specific version, replace [RELEASE] with the exact version number (for example, 7.161.15) in the command below. The placeholders <pro|oss|cpp-ce> signify the different editions of JFrog Artifactory that you can choose to install.

      # Example for Artifactory Pro (replace with your desired version)
      curl -g -L -O -J 'https://releases.jfrog.io/artifactory/artifactory-pro/org/artifactory/pro/jfrog-artifactory-pro/[RELEASE]/jfrog-artifactory-pro-[RELEASE]-linux.tar.gz'
      
      # For example, to download Artifactory Pro 7.161.15
      curl -g -L -O -J 'https://releases.jfrog.io/artifactory/artifactory-pro/org/artifactory/pro/jfrog-artifactory-pro/7.161.15/jfrog-artifactory-pro-7.161.15-linux.tar.gz'
      
      # For example, to download Artifactory OSS 7.161.15
      curl -g -L -O -J 'https://releases.jfrog.io/artifactory/bintray-artifactory/org/artifactory/oss/jfrog-artifactory-oss/7.161.15/jfrog-artifactory-oss-7.161.15-linux.tar.gz'
      
      # For example, to download Artifactory Community Edition for C/C++ 7.161.15
      curl -g -L -O -J 'https://releases.jfrog.io/artifactory/bintray-artifactory/org/artifactory/cpp/ce/jfrog-artifactory-cpp-ce/7.161.15/jfrog-artifactory-cpp-ce-7.161.15-linux.tar.gz'
      ⚠️

      Only Pro Uses a Dedicated Repository

      The <pro|oss|cpp-ce> placeholder pattern above only fully applies to Pro. OSS and cpp-ce are not hosted in artifactory-oss or artifactory-cpp-ce repositories. Use bintray-artifactory as the repository name for both, as shown in the examples above. The C/C++ Community Edition package also uses cpp/ce (two path segments, not cpp-ce) in the org/artifactory/ path.

    2. Extract Linux Archive and Move:

      Extract the downloaded .tar.gz file into your chosen $JFROG_HOME directory. The extraction typically creates a directory like artifactory-pro-[VERSION] inside. Move the contents of this extracted directory into a simpler artifactory directory within $JFROG_HOME.

      # Extract the downloaded Artifactory archive file.
      tar -xvf jfrog-artifactory-pro-7.161.15-linux.tar.gz
      
      # Move the extracted directory (for example, artifactory-pro-7.161.15) to a simpler 'artifactory' name.
      mv artifactory-pro-7.161.15 artifactory
  3. Run Artifactory as a Service (Recommended for Production):

    Artifactory provides a script to install it as a systemd or init.d service. This is recommended for production environments to ensure proper startup and shutdown.

    1. Navigate to the bin Directory:

      cd $JFROG_HOME/artifactory/app/bin
    2. Run the Installation Script:

      ./installService.sh

    This script will set up the necessary service files for Artifactory.

  4. Set up Artifactory Database

    Artifactory requires an external database for production. JFrog highly recommends using PostgreSQL for all products in the JFrog Platform, although Artifactory supports additional databases. For more information, see Database Configuration.

    1. Configure Artifactory to Use PostgreSQL:

      On each Artifactory node, edit $JFROG_HOME/artifactory/var/etc/system.yaml to point Artifactory to your external database.

      shared:
        database:
          type: postgresql
          driver: org.postgresql.Driver
          url: jdbc:postgresql://<DB_SERVER_IP_OR_HOSTNAME>:5432/artifactory_db
          username: artifactory_user
          password: your_secure_password

      The database configuration in system.yaml must be identical on all Artifactory nodes, and all nodes must have reliable network access to the single shared external database instance.

    2. Configure Other Supported Databases (Optional):

      To use databases other than PostgreSQL, set shared.database.allowNonPostgresql to true in your system.yaml and configure the database details. The following is an example for MySQL:

      shared:
        database:
          allowNonPostgresql: true
          type: mysql
          driver: com.mysql.jdbc.Driver
          url: jdbc:mysql://<your db url, for example: localhost:3306>/artdb?characterEncoding=UTF-8&elideSetAutoCommits=true&useSSL=false
          username: artifactory
          password: password

    For more information about creating and configuring databases, see Set up Database.

  5. Set up Supported Filestores

    The filestore is where Artifactory physically stores the binaries.

    • Single-Node: A local filesystem is the default, but externalizing it (for example, to a dedicated volume) is recommended for easier management and potential migration.
    • High Availability (HA): A shared filestore is mandatory. This can be NFS, S3, Azure Blob Storage, Google Cloud Storage, or another supported object storage solution. All Artifactory nodes in the cluster must have unified and reliable network access to this single shared filestore.

    For more information about configuring filestores, see Set up Filestore.

  6. Start the First Artifactory Node

    This step details the critical steps for starting Artifactory, especially for an HA cluster.

📘

Note

For High Availability installations, the first Artifactory node must be fully up and running, and its generated masterKey must be copied to all other nodes before starting any subsequent Artifactory services. Failure to do so will prevent the cluster from forming correctly and lead to startup failures.

You have two main options for starting Artifactory:

  • Running it as an OS Service (recommended for production)
  • Running it as a Process (foreground or daemon)

Option 1: Start as an OS Service (Recommended for Production)

This method uses the service script installed in Step 3.

Run the following command to start the Artifactory service. On the first HA node, Artifactory will initialize the database and potentially generate the master.key if it does not already exist.

# For systemd-based systems
sudo systemctl start artifactory.service 

# For init.d-based systems
sudo service artifactory start

Optionally, for systemd, enable it to start on boot:

sudo systemctl enable artifactory.service

Option 2: Run as a Process

You can run Artifactory as a foreground process or as a daemon process (runs in the background).

Once you are in the $JFROG_HOME/artifactory/app/bin/ directory, run Artifactory as follows

  • To run as a foreground process:

    Run the following command:

    ./artifactoryctl
  • To run as a daemon process (in the background):

    Run the following command:

    ./artifactoryctl start
  1. Initial HA Setup and Licensing

    After the first node is running, complete the initial setup and apply licenses. For HA installations, you must enable HA on the first node before you can add licenses for additional nodes.

    1. Access the Artifactory UI: Open your browser and go to http://<SERVER_HOSTNAME>:8082/, replacing <SERVER_HOSTNAME> with your server's actual IP address or host name.

    2. Complete the Onboarding Wizard:

      • Change Default Admin Password: The default credentials are admin/password. Change this immediately.
      • Configure Base URL: Configure the Base URL.
      • Apply Your First License: Apply the license key for the first Artifactory node.
    3. Enable HA on the First Node (HA only): Edit $JFROG_HOME/artifactory/var/etc/system.yaml on the first node and add the HA configuration:

      shared:
        node:
          haEnabled: true
          taskAffinity: any

      Restart the first node for the changes to take effect:

      # For systemd
      sudo systemctl restart artifactory.service
      
      # For init.d
      sudo service artifactory restart
      
      # OR as a process
      $JFROG_HOME/artifactory/app/bin/artifactoryctl stop
      $JFROG_HOME/artifactory/app/bin/artifactoryctl start
    4. Apply Remaining Cluster Licenses (HA only): After HA is enabled and the first node has restarted, navigate to Administration > Licenses in the Artifactory UI and add the license keys for all remaining nodes in your cluster.

⚠️

Warning

If you are setting up an HA cluster, apply licenses for all nodes through the first node's UI before starting any additional nodes. If you start new nodes before applying their licenses, the front-end microservices may fail to start with the following error message: [jfrt] [WARN] ... - License is not installed.

  1. Configure and Start Remaining HA Nodes

    Once all licenses are applied and the first node is fully operational with HA enabled, configure and start the other nodes.

    1. Configure system.yaml on Remaining Nodes

      Edit $JFROG_HOME/artifactory/var/etc/system.yaml on each remaining node.

      • In the node section, set haEnabled to true.
      • Setting taskAffinity to any lets all nodes in the HA cluster act as primary nodes.
      shared:
        node:
          haEnabled: true
          taskAffinity: any
    2. Ensure the database section (as configured in Step 4) is also present and identical on all nodes.

    3. Copy master.key to Other Nodes:

      Copy the master.key file from $JFROG_HOME/artifactory/var/etc/security/ of the first node to the identical path on all other nodes.

    4. Start Remaining Nodes for HA:

      Once the masterKey is synchronized across all nodes, start the Artifactory service on the remaining nodes:

      # Using OS Service (recommended)
      # For systemd
      sudo systemctl start artifactory.service
      
      # For init.d
      sudo service artifactory start
      
      # OR
      
      # As a daemon process
      $JFROG_HOME/artifactory/app/bin/artifactoryctl start
  2. Monitor Artifactory

    To check the Artifactory status, run the following command:

    • If running as an OS Service:

      Run the following command:

      # For systemd
      sudo systemctl status artifactory.service
      
      # For init.d
      sudo service artifactory status
    • If running as a Process:

      Once you are in the $JFROG_HOME/artifactory/app/bin/ directory, run the following command:

      ./artifactoryctl check

      To stop a process-managed Artifactory, run the following command:

      ./artifactoryctl stop
  3. Access Artifactory UI

    After you start a new Artifactory node, you can access its UI through one of the following methods:

    Direct Access:

    • Open your browser and navigate to http://<ARTIFACTORY_NODE_IP>:8082/.
    • You must do this for each newly started Artifactory node.

    Load Balancer Access:

    • The load balancer directs traffic to http://<ARTIFACTORY_NODE_IP>:8082/ on each of your HA nodes.
    • Configure your load balancer to point to the IP addresses of all your Artifactory nodes. When you access the load balancer's URL, it distributes your requests across the nodes in the cluster.

Related Topics

Frequently Asked Questions

This section provides answers to frequently asked questions about installing Artifactory from a Linux archive.

plusFAQs
Q: Which directory should I use as JFROG_HOME for a Linux archive installation?

A: Use any dedicated directory of your choice, for example /app/jfrog, /usr/local/jfrog, or a custom path. Create the directory, then set JFROG_HOME to the same path. Extract the archive into this directory and move the extracted contents into a directory named artifactory inside it.

Q: Do I have to run Artifactory as a service?

A: No, but running it as a service is recommended for production because it ensures proper startup and shutdown. Run ./installService.sh from $JFROG_HOME/artifactory/app/bin to set up a systemd or init.d service. Alternatively, run Artifactory as a process from the same bin directory with ./artifactoryctl for the foreground or ./artifactoryctl start for a daemon.

Q: Why can't I find the OSS or Community Edition for C/C++ archive in an artifactory-oss or artifactory-cpp-ce repository?

A: Only Pro uses a dedicated repository. Use bintray-artifactory as the repository name for both OSS and Community Edition for C/C++, as shown in the download examples. The C/C++ Community Edition package also uses cpp/ce (two path segments, not cpp-ce) in the org/artifactory/ path.

Q: What must I do before starting the other nodes in an HA cluster?

A: The first Artifactory node must be fully up and running, and its generated masterKey must be copied to all other nodes before you start any subsequent Artifactory services. If you skip this, the cluster does not form correctly and nodes fail to start up. You must also enable HA on the first node and apply licenses for all nodes through the first node's UI before you start any additional nodes. If you start new nodes before applying their licenses, the front-end microservices may fail to start with the error [jfrt] [WARN] ... - License is not installed.


Did this page help you?