{"id":50939,"date":"2025-07-27T11:28:17","date_gmt":"2025-07-27T11:28:17","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=50939"},"modified":"2025-07-30T06:50:14","modified_gmt":"2025-07-30T06:50:14","slug":"jfrog-artifactory-install-artifactory-7-with-postgresql","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/jfrog-artifactory-install-artifactory-7-with-postgresql\/","title":{"rendered":"Jfrog Artifactory: Install Artifactory 7 with Postgresql"},"content":{"rendered":"\n<p>Here\u2019s a clear, step-by-step command guide to install the <strong>latest JFrog Artifactory (7.117.7)<\/strong> on a Linux server with PostgreSQL as the external database. This walkthrough assumes Ubuntu\/Debian, but the logic applies to RHEL\/Rocky with minimal adjustments (swap <code>apt<\/code> for <code>yum<\/code> or <code>dnf<\/code>). Adapt commands as appropriate for your distribution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. <strong>System Preparation<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">$ <code>sudo apt update &amp;&amp; sudo apt upgrade -y<br>$ apt install curl wget unzip gnupg2 openjdk-21-jdk -y<br><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>No need to set JAVA_HOME; Artifactory 7.104+ auto-detects the bundled JDK.<\/em><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">2. <strong>Install &amp; Configure PostgreSQL<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">$ <code>sudo apt install postgresql postgresql-contrib -y<br><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">$ <code>sudo -u postgres psql<br>-- inside postgres shell, run:<br>CREATE DATABASE artifactory;<br>CREATE USER artifactory WITH PASSWORD 'StrongPassword';<br>GRANT ALL PRIVILEGES ON DATABASE artifactory TO artifactory;<br>\\q<br><\/code><\/pre>\n\n\n\n<p><em>Replace <code>'StrongPassword'<\/code> with a secure password. For external DB access, allow it in <code>pg_hba.conf<\/code>.<\/em><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>If logged in as the postgres Linux user:\npsql -d artifactory\n\n-- Allow artifactory user to use the schema:\nGRANT ALL ON SCHEMA public TO artifactory;\n\n-- Optionally, transfer schema ownership (recommended for new\/single-tenant DBs):\nALTER SCHEMA public OWNER TO artifactory;\n\n-- Allow artifactory user to manipulate all tables, sequences, and functions now and in the future:\nGRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO artifactory;\nGRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO artifactory;\nGRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO artifactory;\n\n-- (Optional, ensures future objects auto-grant privileges)\nALTER DEFAULT PRIVILEGES IN SCHEMA public\n  GRANT ALL ON TABLES TO artifactory;\nALTER DEFAULT PRIVILEGES IN SCHEMA public\n  GRANT ALL ON SEQUENCES TO artifactory;\nALTER DEFAULT PRIVILEGES IN SCHEMA public\n  GRANT ALL ON FUNCTIONS TO artifactory;\n  \nAfter running the above SQL, you can test as the artifactory user:\npsql -h localhost -U artifactory -d artifactory\n\nCREATE TABLE test_perm(id INT);\nDROP TABLE test_perm;\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">If<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">logged<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> the postgres Linux user:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">psql<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">d<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Allow<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">user<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">to<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">the<\/span><span style=\"color: #D8DEE9FF\"> schema<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">GRANT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ALL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ON<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">SCHEMA<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">TO<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Optionally<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">transfer<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">schema<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">ownership<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #D8DEE9\">recommended<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new\/<\/span><span style=\"color: #D8DEE9\">single<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">tenant<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">DBs<\/span><span style=\"color: #D8DEE9FF\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">ALTER<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">SCHEMA<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">OWNER<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">TO<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Allow<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">user<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">to<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">manipulate<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">all<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">tables<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">sequences<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">and<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">functions<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">now<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">and<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">the<\/span><span style=\"color: #D8DEE9FF\"> future<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">GRANT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ALL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PRIVILEGES<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ON<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ALL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">TABLES<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">IN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">SCHEMA<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">TO<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">GRANT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ALL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PRIVILEGES<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ON<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ALL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">SEQUENCES<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">IN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">SCHEMA<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">TO<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">GRANT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ALL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PRIVILEGES<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ON<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ALL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">FUNCTIONS<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">IN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">SCHEMA<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">TO<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #D8DEE9\">Optional<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ensures<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">future<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">objects<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">auto<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">grant<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">privileges<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">ALTER<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">DEFAULT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PRIVILEGES<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">IN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">SCHEMA<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">public<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">GRANT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ALL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ON<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">TABLES<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">TO<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">ALTER<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">DEFAULT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PRIVILEGES<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">IN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">SCHEMA<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">public<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">GRANT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ALL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ON<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">SEQUENCES<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">TO<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">ALTER<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">DEFAULT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PRIVILEGES<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">IN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">SCHEMA<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">public<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #D8DEE9\">GRANT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ALL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">ON<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">FUNCTIONS<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">TO<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">After<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">running<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">the<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">above<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">SQL<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">you<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">can<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">test<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> the artifactory user:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">psql<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">h<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">localhost<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">U<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">d<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artifactory<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">CREATE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">TABLE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">test_perm<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">id<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">INT<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">DROP<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">TABLE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">test_perm<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">3. <strong>Download Artifactory 7.117.7<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">bash<code>export JFROG_HOME=\/opt\/jfrog\nsudo mkdir -p $JFROG_HOME &amp;&amp; cd $JFROG_HOME\nwget https:\/\/releases.jfrog.io\/artifactory\/artifactory-pro\/org\/artifactory\/pro\/jfrog-artifactory-pro-7.117.7-linux.tar.gz\ntar -xvf jfrog-artifactory-pro-7.117.7-linux.tar.gz\nmv artifactory-pro-7.117.7 artifactory\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4. <strong>Configure Artifactory for PostgreSQL<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">bash<code>cp $JFROG_HOME\/artifactory\/var\/etc\/system.full-template.yaml $JFROG_HOME\/artifactory\/var\/etc\/system.yaml\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Edit <code>$JFROG_HOME\/artifactory\/var\/etc\/system.yaml<\/code><\/strong> and ensure:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">text<code>shared:\n  database:\n    type: postgresql\n    driver: org.postgresql.Driver\n    url: \"jdbc:postgresql:\/\/localhost:5432\/artifactory\"\n    username: artifactory\n    password: StrongPassword\n<\/code><\/pre>\n\n\n\n<p><em>Adjust hostname, username, and password as set above.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. <strong>Download PostgreSQL JDBC Driver<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">$ <code>wget -O $JFROG_HOME\/artifactory\/var\/bootstrap\/artifactory\/tomcat\/lib\/postgresql.jar https:\/\/jdbc.postgresql.org\/download\/postgresql-42.7.3.jar<br><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">6. <strong>Start Artifactory<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">$ <code>cd $JFROG_HOME\/artifactory<br>.\/app\/bin\/artifactoryctl start<br>$ tail -f $JFROG_HOME\/artifactory\/var\/log\/console.log<br><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Monitor logs to confirm successful startup.<\/em><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">7. <strong>Access the Artifactory Web UI<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>URL:<\/strong><br><code>http:\/\/&lt;server_ip&gt;:8082\/<\/code><\/li>\n\n\n\n<li><strong>Steps:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Complete the setup wizard (set administrator password)<\/li>\n\n\n\n<li>Upload your license<\/li>\n\n\n\n<li>Configure first repository<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Additional Production Recommendations<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Run PostgreSQL and Artifactory on separate VMs<\/strong> for best performance.<\/li>\n\n\n\n<li><strong>Use SSD storage<\/strong> for both binaries and database.<\/li>\n\n\n\n<li><strong>Open firewalls<\/strong> for port <code>8082\/tcp<\/code> as needed.<\/li>\n\n\n\n<li><strong>Enable server backup<\/strong> and configure SSL before internet exposure.<\/li>\n\n\n\n<li><strong>Automate startup:<\/strong> Set up Artifactory as a systemd service for resilience.<\/li>\n<\/ul>\n\n\n\n<p><strong>You now have a modern, secure, and production-ready Artifactory 7.117.7 instance, integrated with PostgreSQL, on Linux!<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Old method<\/h2>\n\n\n\n<p>Here is the <strong>complete step-by-step guide with commands<\/strong> to install <strong>JFrog Artifactory v7.117.7<\/strong> on a Linux server with <strong>PostgreSQL<\/strong> as the database:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>1\ufe0f\u20e3 Prerequisites<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Linux server (RHEL\/CentOS 8+, Ubuntu 20.04+\/Debian 10+)<\/li>\n\n\n\n<li>Root or sudo access<\/li>\n\n\n\n<li>Minimum 4 CPU cores, 8 GB RAM, 100 GB SSD<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>2\ufe0f\u20e3 Install PostgreSQL<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 On RHEL\/CentOS:<\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">sudo yum install -y postgresql-server postgresql-contrib\nsudo postgresql-setup initdb\nsudo systemctl enable postgresql\nsudo systemctl start postgresql\n<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 On Ubuntu\/Debian:<\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">sudo apt update\nsudo apt install -y postgresql postgresql-contrib\nsudo systemctl enable postgresql\nsudo systemctl start postgresql\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>3\ufe0f\u20e3 Configure PostgreSQL for Artifactory<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">sudo -u postgres psql\n<\/code><\/span><\/pre>\n\n\n<p>Inside the PostgreSQL shell, run:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">CREATE DATABASE artifactory WITH ENCODING UTF8;\nCREATE USER artifactory WITH PASSWORD <span class=\"hljs-string\">'StrongPassword123!'<\/span>;\nGRANT ALL PRIVILEGES ON DATABASE artifactory TO artifactory;\n\\q\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>4\ufe0f\u20e3 Download Artifactory 7.117.7<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 For RHEL\/CentOS:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">wget https:<span class=\"hljs-comment\">\/\/releases.jfrog.io\/artifactory\/artifactory-pro\/rpm\/jfrog-artifactory-pro-7.117.7.rpm<\/span>\nsudo yum install -y jfrog-artifactory-pro<span class=\"hljs-number\">-7.117<\/span><span class=\"hljs-number\">.7<\/span>.rpm\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 For Ubuntu\/Debian:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">wget https:<span class=\"hljs-comment\">\/\/releases.jfrog.io\/artifactory\/artifactory-pro\/deb\/jfrog-artifactory-pro-7.117.7.deb<\/span>\nsudo apt install -y .\/jfrog-artifactory-pro<span class=\"hljs-number\">-7.117<\/span><span class=\"hljs-number\">.7<\/span>.deb\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>5\ufe0f\u20e3 Configure Artifactory to Use PostgreSQL<\/strong><\/h2>\n\n\n\n<p>Edit the <code>system.yaml<\/code> file:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">sudo vi \/opt\/jfrog\/artifactory\/<span class=\"hljs-keyword\">var<\/span>\/etc\/system.yaml\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Add the database configuration:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">shared:\n  database:\n    type: postgresql\n    <span class=\"hljs-attr\">driver<\/span>: org.postgresql.Driver\n    <span class=\"hljs-attr\">url<\/span>: jdbc:postgresql:<span class=\"hljs-comment\">\/\/localhost:5432\/artifactory<\/span>\n    username: artifactory\n    <span class=\"hljs-attr\">password<\/span>: StrongPassword123!\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Save and exit.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>6\ufe0f\u20e3 Start and Enable Artifactory<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">sudo systemctl enable artifactory\nsudo systemctl start artifactory\n<\/code><\/span><\/pre>\n\n\n<p>Check if the service is running:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">sudo systemctl status artifactory\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>7\ufe0f\u20e3 Access Artifactory Web UI<\/strong><\/h2>\n\n\n\n<p>Open a browser and go to:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">http:<span class=\"hljs-comment\">\/\/&lt;your-server-ip&gt;:8082<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Default User:<\/strong> <code>admin<\/code><\/li>\n\n\n\n<li><strong>Default Password:<\/strong> <code>password<\/code> (you will be asked to change it on first login).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>8\ufe0f\u20e3 Check Logs<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">tail -f \/opt\/jfrog\/artifactory\/<span class=\"hljs-keyword\">var<\/span>\/log\/<span class=\"hljs-built_in\">console<\/span>.log\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 <strong>9\ufe0f\u20e3 (Optional) Open Firewall Ports<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">sudo firewall-cmd --add-port=8082\/tcp --permanent\nsudo firewall-cmd --reload\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 <strong>Installation Summary<\/strong><\/h3>\n\n\n\n<p>\u2714 Install and configure PostgreSQL<br>\u2714 Create database and user for Artifactory<br>\u2714 Install Artifactory v7.117.7 package<br>\u2714 Configure <code>system.yaml<\/code> with PostgreSQL connection<br>\u2714 Start service and access via <code>http:\/\/&lt;server-ip&gt;:8082<\/code><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Bash Script to Install Artifactory<\/h2>\n\n\n\n<script src=\"https:\/\/gist.github.com\/devops-school\/e595862da9915c14ea7dc5a61d8d89c9.js\"><\/script>\n","protected":false},"excerpt":{"rendered":"<p>Here\u2019s a clear, step-by-step command guide to install the latest JFrog Artifactory (7.117.7) on a Linux server with PostgreSQL as the external database. This walkthrough assumes Ubuntu\/Debian, but the logic&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[4879],"tags":[],"class_list":["post-50939","post","type-post","status-publish","format-standard","hentry","category-artifactory"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/50939","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=50939"}],"version-history":[{"count":4,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/50939\/revisions"}],"predecessor-version":[{"id":51065,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/50939\/revisions\/51065"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=50939"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=50939"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=50939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}