<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

  <atom:link href="https://community.pyramidanalytics.com/rss/category/install-upgrade-cloud" rel="self" type="application/rss+xml"/>
  <title>Pyramid Analytics User Community&#32;Deployment &#x26; Setup</title>
  <link>https://community.pyramidanalytics.com/category/install-upgrade-cloud/</link>
  <description></description>
  <language>en-us</language>
<ttl>240</ttl>
  <item>
          <title>Migrating the Pyramid Database from PostgreSQL 9.6 to PostgreSQL 18 (Linux)</title>
          <link>https://community.pyramidanalytics.com/t/60yjmmq/migrating-the-pyramid-database-from-postgresql-9-6-to-postgresql-18-linux</link>
          <description><![CDATA[<h1 style="margin-bottom:18px;">CRITICAL: Required Before Upgrading to Pyramid 2025.11 or Later</h1>
<div style="border-left:5px solid #d9534f; background:#fdf2f2; padding:16px 20px; margin:18px 0;">
 <p style="margin:8px 0 12px 0;"><strong>IMPORTANT:</strong> This migration from <strong>PostgreSQL 9.6 to PostgreSQL 18</strong> MUST be completed <strong>BEFORE</strong> upgrading Pyramid to version <strong>2025.11 or any later version</strong>. If you attempt to upgrade Pyramid without completing this database migration first, it will fail.</p>
 <p style="margin:8px 0 12px 0;"><strong>This article only applies to you, if you installed Pyramid using the "New Internal Repository" option.</strong><a rev="auto" rel="nofollow noopener noreferrer" href="https://help.pyramidanalytics.com/Content/Root/Guides/installation/Main/Database%20Repository.htm" target="_blank">https://help.pyramidanalytics.com/Content/Root/Guides/installation/Main/Database%20Repository.htm</a></p>
</div>
<div style="border-left:5px solid #f0ad4e; background:#fff8e5; padding:14px 18px; margin:18px 0;">
 <p style="margin:8px 0 12px 0;">Migrate → verify for 24 hours → then upgrade Pyramid.</p>
</div>
<p style="margin:8px 0 12px 0;">Supported platforms: Ubuntu, Debian, RHEL, Oracle Linux, Amazon Linux.</p>
<h2 style="margin-top:32px; margin-bottom:14px;">Before You Start</h2>
<p style="margin:8px 0 12px 0;">Pyramid’s bundled PostgreSQL always runs on port 12130.</p>
<p style="margin:8px 0 12px 0;">Two values are specific to your install — you get both in Step 5:</p>
<table style="width:100%; border-collapse:collapse; margin:16px 0 24px 0;">
 <tbody>
  <tr>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top; font-weight:bold; background:#f5f5f5;">Placeholder</td>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top; font-weight:bold; background:#f5f5f5;">Replace with</td>
  </tr>
  <tr>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top;">&lt;YOUR_DATABASE&gt;</td>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top;">Your database name from config.ini</td>
  </tr>
  <tr>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top;">&lt;YOUR_PASSWORD&gt;</td>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top;">The password you derive in Step 5</td>
  </tr>
 </tbody>
</table>
<div style="border-left:5px solid #d9534f; background:#fdf2f2; padding:14px 18px; margin:18px 0;">
 <p style="margin:8px 0 12px 0;">The database service is pyramidPG.service. Stopping it before the backup is the most common way to break this migration.</p>
</div>
<p style="margin:8px 0 12px 0;">See what’s on your box:</p>
<pre class="language-none"><code class="language-none">systemctl&nbsp;list-units&nbsp;--type=service&nbsp;--all&nbsp;|&nbsp;grep&nbsp;-i&nbsp;pyramid</code></pre>
<h2 style="margin-top:32px; margin-bottom:14px;">Paths by Platform</h2>
<table style="width:100%; border-collapse:collapse; margin:16px 0 24px 0;">
 <tbody>
  <tr>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top; font-weight:bold; background:#f5f5f5;">Item</td>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top; font-weight:bold; background:#f5f5f5;">Ubuntu / Debian</td>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top; font-weight:bold; background:#f5f5f5;">RHEL / Oracle / Amazon</td>
  </tr>
  <tr>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top;">pg_hba.conf</td>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top;">/etc/postgresql/18/main/pg_hba.conf</td>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top;">/var/lib/pgsql/18/data/pg_hba.conf</td>
  </tr>
  <tr>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top;">postgresql.conf</td>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top;">/etc/postgresql/18/main/postgresql.conf</td>
   <td style="border:1px solid #d9d9d9; padding:10px 12px; vertical-align:top;">/var/lib/pgsql/18/data/postgresql.conf</td>
  </tr>
 </tbody>
</table>
<p style="margin:8px 0 12px 0;">By default Pyramid installs to /opt/Pyramid with config.ini inside it.</p>
<h2 style="margin-top:32px; margin-bottom:14px;">Prerequisites</h2>
<ul style="margin:8px 0 18px 24px;">
 <li style="margin:5px 0;">sudo access</li>
 <li style="margin:5px 0;">2x the current database size free on the backup filesystem</li>
 <li style="margin:5px 0;">Pyramid offline during the migration</li>
</ul>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 1: Install PostgreSQL 18</h2>
<h3 style="margin-top:24px; margin-bottom:10px;">Ubuntu / Debian</h3>
<pre class="language-none"><code class="language-none">sudo&nbsp;apt&nbsp;install&nbsp;-y&nbsp;curl&nbsp;ca-certificates
sudo&nbsp;install&nbsp;-d&nbsp;/usr/share/postgresql-common/pgdg
sudo&nbsp;curl&nbsp;-o&nbsp;/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc&nbsp;\
--fail&nbsp;https://www.postgresql.org/media/keys/ACCC4CF8.asc
.&nbsp;/etc/os-release
echo&nbsp;"deb&nbsp;[signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc]&nbsp;\
https://apt.postgresql.org/pub/repos/apt&nbsp;${VERSION_CODENAME}-pgdg&nbsp;main"&nbsp;\
|&nbsp;sudo&nbsp;tee&nbsp;/etc/apt/sources.list.d/pgdg.list
sudo&nbsp;apt&nbsp;update
sudo&nbsp;apt&nbsp;install&nbsp;-y&nbsp;postgresql-18&nbsp;postgresql-client-18</code></pre>
<p style="margin:8px 0 12px 0;">Initialises and starts automatically — no initdb.</p>
<h3 style="margin-top:24px; margin-bottom:10px;">RHEL / Oracle Linux</h3>
<pre class="language-none"><code class="language-none">sudo&nbsp;dnf&nbsp;install&nbsp;-y&nbsp;\
https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm&nbsp;-E&nbsp;%{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo&nbsp;dnf&nbsp;-qy&nbsp;module&nbsp;disable&nbsp;postgresql
sudo&nbsp;dnf&nbsp;install&nbsp;-y&nbsp;postgresql18-server&nbsp;postgresql18-contrib
sudo&nbsp;/usr/pgsql-18/bin/postgresql-18-setup&nbsp;initdb
sudo&nbsp;systemctl&nbsp;enable&nbsp;--now&nbsp;postgresql-18</code></pre>
<p style="margin:8px 0 12px 0;">If Oracle’s own PostgreSQL packages conflict:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;dnf&nbsp;install&nbsp;-y&nbsp;postgresql18-server&nbsp;--disablerepo=ol\*&nbsp;--enablerepo=pgdg18</code></pre>
<h3 style="margin-top:24px; margin-bottom:10px;">Amazon Linux 2023</h3>
<pre class="language-none"><code class="language-none">rpm&nbsp;-E&nbsp;%{rhel}&nbsp;doesn’t&nbsp;resolve&nbsp;here,&nbsp;so&nbsp;pin&nbsp;EL9:</code></pre>
<pre class="language-none"><code class="language-none">sudo&nbsp;dnf&nbsp;install&nbsp;-y&nbsp;\
https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo&nbsp;dnf&nbsp;-qy&nbsp;module&nbsp;disable&nbsp;postgresql&nbsp;2&gt;/dev/null&nbsp;||&nbsp;true
sudo&nbsp;dnf&nbsp;install&nbsp;-y&nbsp;postgresql18-server&nbsp;postgresql18-contrib
sudo&nbsp;/usr/pgsql-18/bin/postgresql-18-setup&nbsp;initdb
sudo&nbsp;systemctl&nbsp;enable&nbsp;--now&nbsp;postgresql-18</code></pre>
<p style="margin:8px 0 12px 0;">GPG key complaints:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;rpm&nbsp;--import&nbsp;https://download.postgresql.org/pub/repos/yum/keys/PGDG-RPM-GPG-KEY-RHEL</code></pre>
<h3 style="margin-top:24px; margin-bottom:10px;">Verify</h3>
<pre class="language-none"><code class="language-none">sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-c&nbsp;"SELECT&nbsp;version();"</code></pre>
<p style="margin:8px 0 12px 0;">Do Step 2 before anything else.</p>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 2: Configure PostgreSQL 18</h2>
<h3 style="margin-top:24px; margin-bottom:10px;">2a. postgresql.conf</h3>
<p style="margin:8px 0 12px 0;">Ubuntu / Debian:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;nano&nbsp;/etc/postgresql/18/main/postgresql.conf</code></pre>
<p style="margin:8px 0 12px 0;">RHEL / Oracle / Amazon:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;nano&nbsp;/var/lib/pgsql/18/data/postgresql.conf</code></pre>
<p style="margin:8px 0 12px 0;">In the CONNECTIONS AND AUTHENTICATION section:</p>
<pre class="language-none"><code class="language-none">listen_addresses&nbsp;ships&nbsp;commented&nbsp;out,&nbsp;which&nbsp;means&nbsp;it&nbsp;defaults&nbsp;to&nbsp;localhost&nbsp;and&nbsp;refuses&nbsp;remote&nbsp;connections.&nbsp;Remove&nbsp;the&nbsp;#&nbsp;and&nbsp;set:</code></pre>
<pre class="language-none"><code class="language-none">listen_addresses&nbsp;=&nbsp;'*'</code></pre>
<p style="margin:8px 0 12px 0;">Single-server installs can leave this at the default. Multi-server must change it.</p>
<p style="margin:8px 0 12px 0;">port should already read:</p>
<pre class="language-none"><code class="language-none">port&nbsp;=&nbsp;5432</code></pre>
<pre class="language-none"><code class="language-none">max_connections&nbsp;—&nbsp;100&nbsp;is&nbsp;too&nbsp;low&nbsp;for&nbsp;Pyramid’s&nbsp;service&nbsp;pools:</code></pre>
<pre class="language-none"><code class="language-none">max_connections&nbsp;=&nbsp;1000</code></pre>
<h3 style="margin-top:24px; margin-bottom:10px;">2b. pg_hba.conf</h3>
<p style="margin:8px 0 12px 0;">Ubuntu / Debian:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;nano&nbsp;/etc/postgresql/18/main/pg_hba.conf</code></pre>
<p style="margin:8px 0 12px 0;">RHEL / Oracle / Amazon:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;nano&nbsp;/var/lib/pgsql/18/data/pg_hba.conf</code></pre>
<p style="margin:8px 0 12px 0;">Pick one based on your security requirements.</p>
<p style="margin:8px 0 12px 0;">Allow all (simplest, least secure):</p>
<pre class="language-none"><code class="language-none">#&nbsp;TYPE&nbsp;&nbsp;DATABASE&nbsp;&nbsp;USER&nbsp;&nbsp;ADDRESS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;METHOD
local&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;peer
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;127.0.0.1/32&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;::1/0  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;::/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256</code></pre>
<p style="margin:8px 0 12px 0;">Allow a subnet — replace with your own (v4 and v6):</p>
<pre class="language-none"><code class="language-none">#&nbsp;TYPE&nbsp;&nbsp;DATABASE&nbsp;&nbsp;USER&nbsp;&nbsp;ADDRESS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;METHOD
local&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;peer
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;127.0.0.1/32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;192.168.1.0/24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;::1/128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256</code></pre>
<p style="margin:8px 0 12px 0;">Keep the local ... peer line — later steps need it.</p>
<h3 style="margin-top:24px; margin-bottom:10px;">2c. Restart and verify</h3>
<p style="margin:8px 0 12px 0;">Ubuntu / Debian:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;systemctl&nbsp;restart&nbsp;postgresql@18-main</code></pre>
<p style="margin:8px 0 12px 0;">RHEL / Oracle / Amazon:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;systemctl&nbsp;restart&nbsp;postgresql-18</code></pre>
<p style="margin:8px 0 12px 0;">Then:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-c&nbsp;"SHOW&nbsp;listen_addresses;"
sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-c&nbsp;"SHOW&nbsp;max_connections;"
sudo&nbsp;ss&nbsp;-lntp&nbsp;|&nbsp;grep&nbsp;5432</code></pre>
<h3 style="margin-top:24px; margin-bottom:10px;">2d. Firewall</h3>
<p style="margin:8px 0 12px 0;">Ubuntu / Debian — replace with your subnet:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;ufw&nbsp;allow&nbsp;from&nbsp;192.168.1.0/24&nbsp;to&nbsp;any&nbsp;port&nbsp;5432&nbsp;proto&nbsp;tcp</code></pre>
<p style="margin:8px 0 12px 0;">RHEL / Oracle Linux:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;firewall-cmd&nbsp;--permanent&nbsp;--add-port=5432/tcp
sudo&nbsp;firewall-cmd&nbsp;--reload</code></pre>
<p style="margin:8px 0 12px 0;">Amazon Linux / EC2 has no local firewall by default — add an inbound TCP 5432 rule to the instance’s Security Group.</p>
<p style="margin:8px 0 12px 0;">RHEL / Oracle with SELinux issues:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;ausearch&nbsp;-m&nbsp;avc&nbsp;-ts&nbsp;recent
sudo&nbsp;setsebool&nbsp;-P&nbsp;httpd_can_network_connect_db&nbsp;on</code></pre>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 3: Create the Backup Directory</h2>
<p style="margin:8px 0 12px 0;">Own it yourself, or later steps hit permission errors:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;mkdir&nbsp;-p&nbsp;/var/backups/pyramid
sudo&nbsp;chown&nbsp;-R&nbsp;$(whoami):$(whoami)&nbsp;/var/backups/pyramid
chmod&nbsp;700&nbsp;/var/backups/pyramid
ls&nbsp;-ld&nbsp;/var/backups/pyramid</code></pre>
<p style="margin:8px 0 12px 0;">The output should show your username, not root. If you created it root-owned earlier, the chown -R above fixes it.</p>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 4: Confirm the Pyramid Path</h2>
<pre class="language-none"><code class="language-none">ls&nbsp;-l&nbsp;/opt/Pyramid/config.ini</code></pre>
<p style="margin:8px 0 12px 0;">If it’s elsewhere:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;find&nbsp;/&nbsp;-name&nbsp;config.ini&nbsp;-path&nbsp;'*yramid*'&nbsp;2&gt;/dev/null</code></pre>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 5: Get Your Database Name and Password</h2>
<pre class="language-none"><code class="language-none">sudo&nbsp;sed&nbsp;-n&nbsp;'/\[data\]/,/^\[/p'&nbsp;/opt/Pyramid/config.ini</code></pre>
<p style="margin:8px 0 12px 0;">Output looks like:</p>
<pre class="language-none"><code class="language-none">[data]
password=encG_0_KsIojX/E13v+ylAocWuRpaTALBicK864V7YWlmGCU/UuCPGd5n/ZpTMI/y4=
type=postgres
port=12130
username=pyramid
database=pyramidb3e0d8e8
dbhost=localhost</code></pre>
<p style="margin:8px 0 12px 0;">The username is always pyramid, the port always 12130. You need the database= value.</p>
<p style="margin:8px 0 12px 0;">Derive the password. The config.ini value is encrypted, but the real password is built from the database name — you are not decrypting anything. The rule is pyramid! plus everything after pyramid in the database name:</p>
<p style="margin:8px 0 12px 0;">database name:&nbsp;&nbsp; pyramidb3e0d8e8<br> password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pyramid!b3e0d8e8</p>
<p style="margin:8px 0 12px 0;">Print your actual values:</p>
<pre class="language-none"><code class="language-none">DB=$(sudo&nbsp;sed&nbsp;-n&nbsp;'/\[data\]/,/^\[/p'&nbsp;/opt/Pyramid/config.ini&nbsp;|&nbsp;grep&nbsp;'^database='&nbsp;|&nbsp;cut&nbsp;-d=&nbsp;-f2)
if&nbsp;[[&nbsp;"$DB"&nbsp;==&nbsp;pyramid*&nbsp;]];&nbsp;then
echo&nbsp;"Database&nbsp;name:&nbsp;$DB"
echo&nbsp;"Password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pyramid!${DB#pyramid}"
else
echo&nbsp;"Database&nbsp;'$DB'&nbsp;does&nbsp;not&nbsp;start&nbsp;with&nbsp;'pyramid'&nbsp;-&nbsp;the&nbsp;rule&nbsp;does&nbsp;not&nbsp;apply."
echo&nbsp;"Get&nbsp;the&nbsp;password&nbsp;from&nbsp;whoever&nbsp;built&nbsp;this&nbsp;environment."
fi</code></pre>
<p style="margin:8px 0 12px 0;">Verify them:</p>
<pre class="language-none"><code class="language-none">PGPASSWORD='&lt;YOUR_PASSWORD&gt;'&nbsp;psql&nbsp;-h&nbsp;127.0.0.1&nbsp;-p&nbsp;12130&nbsp;-U&nbsp;pyramid&nbsp;\
-d&nbsp;&lt;YOUR_DATABASE&gt;&nbsp;-c&nbsp;"\dt"&nbsp;|&nbsp;head</code></pre>
<p style="margin:8px 0 12px 0;">You should see a table list. If not, stop and fix it — the backup will fail the same way.</p>
<p style="margin:8px 0 12px 0;">Use 127.0.0.1, not localhost. On some hosts localhost resolves to IPv6 first and the bundled PostgreSQL isn’t bound to it.</p>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 6: Check Disk Space</h2>
<pre class="language-none"><code class="language-none">df&nbsp;-h&nbsp;/var/backups/pyramid
PGPASSWORD='&lt;YOUR_PASSWORD&gt;'&nbsp;psql&nbsp;-h&nbsp;127.0.0.1&nbsp;-p&nbsp;12130&nbsp;-U&nbsp;pyramid&nbsp;-d&nbsp;postgres&nbsp;\
-c&nbsp;"SELECT&nbsp;pg_size_pretty(pg_database_size('&lt;YOUR_DATABASE&gt;'));"</code></pre>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 7: Stop the Pyramid Services — Leave pyramidPG Running</h2>
<div style="border-left:5px solid #d9534f; background:#fdf2f2; padding:14px 18px; margin:18px 0;">
 <p style="margin:8px 0 12px 0;">pyramidPG is the source database. The backup fails without it.</p>
</div>
<p style="margin:8px 0 12px 0;">This stops every Pyramid service except the database, and skips anything not installed on this server:</p>
<pre class="language-none"><code class="language-none">for&nbsp;u&nbsp;in&nbsp;$(systemctl&nbsp;list-unit-files&nbsp;--type=service&nbsp;--no-legend&nbsp;\
|&nbsp;awk&nbsp;'{print&nbsp;$1}'&nbsp;|&nbsp;grep&nbsp;-i&nbsp;pyramid&nbsp;|&nbsp;grep&nbsp;-vi&nbsp;pyramidPG);&nbsp;do
echo&nbsp;"Stopping&nbsp;$u"
sudo&nbsp;systemctl&nbsp;stop&nbsp;"$u"
done</code></pre>
<p style="margin:8px 0 12px 0;">Confirm the database is still up — this must print active:</p>
<pre class="language-none"><code class="language-none">systemctl&nbsp;is-active&nbsp;pyramidPG.service</code></pre>
<p style="margin:8px 0 12px 0;">If it prints inactive:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;systemctl&nbsp;start&nbsp;pyramidPG.service
sleep&nbsp;5
systemctl&nbsp;is-active&nbsp;pyramidPG.service</code></pre>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 8: Back Up config.ini</h2>
<pre class="language-none"><code class="language-none">cp&nbsp;-a&nbsp;/opt/Pyramid/config.ini&nbsp;\
/var/backups/pyramid/config.ini.backup_$(date&nbsp;+%Y%m%d_%H%M%S)</code></pre>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 9: Back Up the Database. -- replace 'your_password' and 'yourdatabase' with your details.</h2>
<p style="margin:8px 0 12px 0;">PostgreSQL 18’s pg_dump can dump from a 9.6 server, so no 9.6 binaries are needed.</p>
<p style="margin:8px 0 12px 0;">Do not use sudo — it creates a root-owned file that breaks Step 12.</p>
<h3 style="margin-top:24px; margin-bottom:10px;">Ubuntu / Debian</h3>
<pre class="language-none"><code class="language-none">BACKUP=/var/backups/pyramid/pyramid_backup_$(date&nbsp;+%Y%m%d_%H%M%S).backup
PGPASSWORD='&lt;YOUR_PASSWORD&gt;'&nbsp;/usr/lib/postgresql/18/bin/pg_dump&nbsp;\
-h&nbsp;127.0.0.1&nbsp;-p&nbsp;12130&nbsp;-U&nbsp;pyramid&nbsp;\
-Fc&nbsp;-b&nbsp;-v&nbsp;-f&nbsp;"$BACKUP"&nbsp;&lt;YOUR_DATABASE&gt;
ls&nbsp;-lh&nbsp;"$BACKUP"</code></pre>
<h3 style="margin-top:24px; margin-bottom:10px;">RHEL / Oracle Linux / Amazon Linux</h3>
<pre class="language-none"><code class="language-none">BACKUP=/var/backups/pyramid/pyramid_backup_$(date&nbsp;+%Y%m%d_%H%M%S).backup
PGPASSWORD='&lt;YOUR_PASSWORD&gt;'&nbsp;/usr/pgsql-18/bin/pg_dump&nbsp;\
-h&nbsp;127.0.0.1&nbsp;-p&nbsp;12130&nbsp;-U&nbsp;pyramid&nbsp;\
-Fc&nbsp;-b&nbsp;-v&nbsp;-f&nbsp;"$BACKUP"&nbsp;&lt;YOUR_DATABASE&gt;
ls&nbsp;-lh&nbsp;"$BACKUP"</code></pre>
<p style="margin:8px 0 12px 0;">-Fc custom format (required for pg_restore), -b include blobs, -v verbose, -f output file. The database name goes at the end with no flag — that’s normal for pg_dump.</p>
<p style="margin:8px 0 12px 0;">Verify before continuing. ls -lh must show a real size owned by your user. If it’s 0 bytes or missing, the dump failed — do not go to Step 10.</p>
<p style="margin:8px 0 12px 0;">In a new shell, recover the variable with:</p>
<pre class="language-none"><code class="language-none">BACKUP=$(ls&nbsp;-t&nbsp;/var/backups/pyramid/*.backup&nbsp;|&nbsp;head&nbsp;-1)</code></pre>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 10: Disable pyramidPG</h2>
<pre class="language-none"><code class="language-none">sudo&nbsp;systemctl&nbsp;disable&nbsp;--now&nbsp;pyramidPG.service
systemctl&nbsp;is-enabled&nbsp;pyramidPG.service</code></pre>
<p style="margin:8px 0 12px 0;">Should print disabled.</p>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 11: Create the pyramid Role in PostgreSQL 18</h2>
<pre class="language-none"><code class="language-none">sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-c&nbsp;"CREATE&nbsp;USER&nbsp;pyramid&nbsp;WITH&nbsp;PASSWORD&nbsp;'&lt;YOUR_PASSWORD&gt;';"
sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-c&nbsp;"ALTER&nbsp;USER&nbsp;pyramid&nbsp;WITH&nbsp;SUPERUSER&nbsp;CREATEDB&nbsp;LOGIN;"</code></pre>
<pre class="language-none"><code class="language-none">If&nbsp;the&nbsp;role&nbsp;already&nbsp;exists,&nbsp;use&nbsp;ALTER&nbsp;USER&nbsp;pyramid&nbsp;WITH&nbsp;PASSWORD&nbsp;'&lt;YOUR_PASSWORD&gt;';&nbsp;instead&nbsp;of&nbsp;CREATE.</code></pre>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 12: Restore into PostgreSQL 18</h2>
<p style="margin:8px 0 12px 0;">Create the database — the name must match the original exactly:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-c&nbsp;'CREATE&nbsp;DATABASE&nbsp;"&lt;YOUR_DATABASE&gt;"&nbsp;OWNER&nbsp;pyramid;'</code></pre>
<p style="margin:8px 0 12px 0;">Restore as pyramid over TCP, not as the postgres OS user. The postgres user can’t read into your 700 backup directory; connecting over TCP means the file is read with your permissions.</p>
<h3 style="margin-top:24px; margin-bottom:10px;">Ubuntu / Debian</h3>
<pre class="language-none"><code class="language-none">PGPASSWORD='&lt;YOUR_PASSWORD&gt;'&nbsp;/usr/lib/postgresql/18/bin/pg_restore&nbsp;\
-h&nbsp;127.0.0.1&nbsp;-p&nbsp;5432&nbsp;-U&nbsp;pyramid&nbsp;\
-d&nbsp;&lt;YOUR_DATABASE&gt;&nbsp;--exit-on-error&nbsp;-v&nbsp;"$BACKUP"</code></pre>
<h3 style="margin-top:24px; margin-bottom:10px;">RHEL / Oracle Linux / Amazon Linux</h3>
<pre class="language-none"><code class="language-none">PGPASSWORD='&lt;YOUR_PASSWORD&gt;'&nbsp;/usr/pgsql-18/bin/pg_restore&nbsp;\
-h&nbsp;127.0.0.1&nbsp;-p&nbsp;5432&nbsp;-U&nbsp;pyramid&nbsp;\
-d&nbsp;&lt;YOUR_DATABASE&gt;&nbsp;--exit-on-error&nbsp;-v&nbsp;"$BACKUP"</code></pre>
<p style="margin:8px 0 12px 0;">--exit-on-error matters — without it pg_restore exits successfully even when every object failed.</p>
<p style="margin:8px 0 12px 0;">To start over:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-c&nbsp;'DROP&nbsp;DATABASE&nbsp;"&lt;YOUR_DATABASE&gt;";'
sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-c&nbsp;'CREATE&nbsp;DATABASE&nbsp;"&lt;YOUR_DATABASE&gt;"&nbsp;OWNER&nbsp;pyramid;'</code></pre>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 13: Verify the Restore</h2>
<div style="border-left:5px solid #d9534f; background:#fdf2f2; padding:14px 18px; margin:18px 0;">
 <p style="margin:8px 0 12px 0;">All three must pass before you touch config.ini.</p>
</div>
<p style="margin:8px 0 12px 0;">Table count must be greater than zero:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-d&nbsp;&lt;YOUR_DATABASE&gt;&nbsp;-t&nbsp;-A&nbsp;\
-c&nbsp;"SELECT&nbsp;COUNT(*)&nbsp;FROM&nbsp;information_schema.tables&nbsp;WHERE&nbsp;table_schema='public';"</code></pre>
<p style="margin:8px 0 12px 0;">Size should be comparable to the original:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;-u&nbsp;postgres&nbsp;psql&nbsp;-t&nbsp;-A&nbsp;\
-c&nbsp;"SELECT&nbsp;pg_size_pretty(pg_database_size('&lt;YOUR_DATABASE&gt;'));"</code></pre>
<p style="margin:8px 0 12px 0;">This is how Pyramid itself will connect:</p>
<pre class="language-none"><code class="language-none">PGPASSWORD='&lt;YOUR_PASSWORD&gt;'&nbsp;psql&nbsp;-h&nbsp;127.0.0.1&nbsp;-p&nbsp;5432&nbsp;\
-U&nbsp;pyramid&nbsp;-d&nbsp;&lt;YOUR_DATABASE&gt;&nbsp;-c&nbsp;"\dt"&nbsp;|&nbsp;head</code></pre>
<p style="margin:8px 0 12px 0;">config.ini is still untouched at this point, so Pyramid can be brought back on the old database if anything’s wrong.</p>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 14: Update config.ini</h2>
<p style="margin:8px 0 12px 0;">Change only the port:</p>
<pre class="language-none"><code class="language-none">sudo&nbsp;sed&nbsp;-i&nbsp;'s/^port=12130$/port=5432/'&nbsp;/opt/Pyramid/config.ini
sudo&nbsp;grep&nbsp;'^port='&nbsp;/opt/Pyramid/config.ini</code></pre>
<p style="margin:8px 0 12px 0;">Leave everything else alone, including the encrypted password= field.</p>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 15: Start the Pyramid Services</h2>
<p style="margin:8px 0 12px 0;">pyramidPG stays disabled.</p>
<pre class="language-none"><code class="language-none">for&nbsp;u&nbsp;in&nbsp;$(systemctl&nbsp;list-unit-files&nbsp;--type=service&nbsp;--no-legend&nbsp;\
|&nbsp;awk&nbsp;'{print&nbsp;$1}'&nbsp;|&nbsp;grep&nbsp;-i&nbsp;pyramid&nbsp;|&nbsp;grep&nbsp;-vi&nbsp;pyramidPG);&nbsp;do
echo&nbsp;"Starting&nbsp;$u"
sudo&nbsp;systemctl&nbsp;start&nbsp;"$u"
sleep&nbsp;3
done
systemctl&nbsp;list-units&nbsp;--type=service&nbsp;--all&nbsp;|&nbsp;grep&nbsp;-i&nbsp;pyramid</code></pre>
<p style="margin:8px 0 12px 0;">Wait 60–90 seconds. Investigate anything that failed:</p>
<pre class="language-none"><code class="language-none">journalctl&nbsp;-u&nbsp;&lt;unit-name&gt;&nbsp;-n&nbsp;50&nbsp;--no-pager</code></pre>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 16: Update the Data Source in Admin Hub</h2>
<ol style="margin:8px 0 18px 24px;">
 <li style="margin:6px 0;">Admin → Data → Data Source</li>
 <li style="margin:6px 0;">Select Local PG</li>
 <li style="margin:6px 0;">Change Port from 12130 to 5432</li>
 <li style="margin:6px 0;">Test — wait for the green check</li>
 <li style="margin:6px 0;">Apply</li>
</ol>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 17: Other Servers in the Cluster</h2>
<p style="margin:8px 0 12px 0;">On each remaining Pyramid server, stop the services, change the port, start them again:</p>
<pre class="language-none"><code class="language-none">for&nbsp;u&nbsp;in&nbsp;$(systemctl&nbsp;list-unit-files&nbsp;--type=service&nbsp;--no-legend&nbsp;\
|&nbsp;awk&nbsp;'{print&nbsp;$1}'&nbsp;|&nbsp;grep&nbsp;-i&nbsp;pyramid&nbsp;|&nbsp;grep&nbsp;-vi&nbsp;pyramidPG);&nbsp;do
sudo&nbsp;systemctl&nbsp;stop&nbsp;"$u"
done
sudo&nbsp;sed&nbsp;-i&nbsp;'s/^port=12130$/port=5432/'&nbsp;/opt/Pyramid/config.ini
sudo&nbsp;grep&nbsp;-E&nbsp;'^(port|dbhost)='&nbsp;/opt/Pyramid/config.ini
for&nbsp;u&nbsp;in&nbsp;$(systemctl&nbsp;list-unit-files&nbsp;--type=service&nbsp;--no-legend&nbsp;\
|&nbsp;awk&nbsp;'{print&nbsp;$1}'&nbsp;|&nbsp;grep&nbsp;-i&nbsp;pyramid&nbsp;|&nbsp;grep&nbsp;-vi&nbsp;pyramidPG);&nbsp;do
sudo&nbsp;systemctl&nbsp;start&nbsp;"$u"
sleep&nbsp;3
done</code></pre>
<p style="margin:8px 0 12px 0;">Check that dbhost= points at the server running PostgreSQL 18 — not localhost.</p>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 18: Verify</h2>
<p style="margin:8px 0 12px 0;">Log into Pyramid and confirm that it is working as it should.</p>
<h2 style="margin-top:32px; margin-bottom:14px;">Step 19: Upgrade Pyramid</h2>
<div style="border-left:5px solid #5cb85c; background:#f2faf2; padding:14px 18px; margin:18px 0;">
 <p style="margin:8px 0 12px 0;">After 24 hours of clean operation, proceed with the 2025.11+ upgrade.<br> Rollback</p>
</div>
<p style="margin:8px 0 12px 0;">Checklist</p>
<ul style="margin:8px 0 18px 24px;">
 <li style="margin:5px 0;">PostgreSQL 18 installed (RHEL / Oracle / Amazon: initdb run)</li>
 <li style="margin:5px 0;">listen_addresses uncommented and set (multi-server)</li>
 <li style="margin:5px 0;">max_connections = 300</li>
 <li style="margin:5px 0;">pg_hba.conf configured, local all all peer kept</li>
 <li style="margin:5px 0;">PG18 restarted, settings confirmed with SHOW</li>
 <li style="margin:5px 0;">Firewall / Security Group allows 5432</li>
 <li style="margin:5px 0;">Backup directory owned by your user, not root</li>
 <li style="margin:5px 0;">Database name and password verified against port 12130</li>
 <li style="margin:5px 0;">config.ini backed up</li>
 <li style="margin:5px 0;">All Pyramid services stopped except pyramidPG</li>
 <li style="margin:5px 0;">systemctl is-active pyramidPG.service printed active before the backup</li>
 <li style="margin:5px 0;">pg_dump run without sudo, file has a real size</li>
 <li style="margin:5px 0;">pyramidPG disabled after the backup</li>
 <li style="margin:5px 0;">Restore run over TCP with --exit-on-error</li>
 <li style="margin:5px 0;">Table count greater than zero</li>
 <li style="margin:5px 0;">pyramid connects over TCP on 5432</li>
 <li style="margin:5px 0;">config.ini port updated on every server</li>
 <li style="margin:5px 0;">Admin Hub → Local PG on 5432, Test passes</li>
 <li style="margin:5px 0;">24 hours clean before upgrading Pyramid</li>
</ul>
<h2 style="margin-top:32px; margin-bottom:14px;">Leave pyramidPG disabled — it costs nothing and keeps rollback available.</h2>]]></description>
          <pubDate>Tue, 08 Sep 2026 06:58:06 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/60yjmmq/migrating-the-pyramid-database-from-postgresql-9-6-to-postgresql-18-linux</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>Migrating the Pyramid Database from PostgreSQL 9.6 to PostgreSQL 18 (Windows)</title>
          <link>https://community.pyramidanalytics.com/t/m1yjmxm/migrating-the-pyramid-database-from-postgresql-9-6-to-postgresql-18-windows</link>
          <description><![CDATA[<h1>CRITICAL: Required Before Upgrading to Pyramid 2025.11 or Later</h1>
<div style="border-left:5px solid #d9534f; background:#fdf2f2; padding:16px 20px; margin:20px 0;">
 <p style="margin:0;"><strong>IMPORTANT:</strong> This migration from <strong>PostgreSQL 9.6 to PostgreSQL 18</strong> MUST be completed <strong>BEFORE</strong> upgrading Pyramid to version <strong>2025.11 or any later version</strong>. If you attempt to upgrade Pyramid without completing this database migration first, it will fail.</p>
 <p><strong>This article only applies to you, if you installed Pyramid using the "New Internal Repository"</strong> option.</p>
 <p><a href="https://help.pyramidanalytics.com/Content/Root/Guides/installation/Main/Database%20Repository.htm" rel="nofollow noopener noreferrer" target="_blank">https://help.pyramidanalytics.com/Content/Root/Guides/installation/Main/Database%20Repository.htm</a></p>
</div>
<h3>Required Timeline</h3>
<ol>
 <li>Complete this migration. -- Taking the initial backup of the Pyramid repository database is critical.&nbsp;</li>
 <li>Verify everything is working properly.&nbsp;</li>
 <li>Proceed with the Pyramid 2025.11 or later upgrade.</li>
</ol>
<hr>
<h2>Overview</h2>
<p>This guide walks you through migrating your Pyramid Postgres server from <strong>PostgreSQL 9.6</strong> to <strong>PostgreSQL 18</strong>. You can follow the manual process step-by-step or use the provided <u><strong>PowerShell script for automation(see the end of this article).</strong></u></p>
<h2>Prerequisites</h2>
<ul>
 <li>Administrative access to your Pyramid server(s).</li>
 <li>PostgreSQL 18 installer (download from <a href="https://www.postgresql.org/download/windows/" rel="nofollow noopener noreferrer" target="_blank">postgresql.org</a>).</li>
 <li>A database backup location with at least <strong>2x the current database size</strong> in free disk space.</li>
 <li>All Pyramid services will be offline during this process.</li>
 <li>Note your Pyramid installation directory (default: <code>C:\Program Files\Pyramid</code>, but it may differ).</li>
 <li><strong>PostgreSQL 18 must be installed before running this migration.</strong></li>
</ul>
<hr>
<h2>Manual Migration Process</h2>
<h3>Step 1: Install PostgreSQL 18</h3>
<ol>
 <li>Download PostgreSQL 18 from <a href="https://www.postgresql.org/download/windows/" rel="nofollow noopener noreferrer" target="_blank">postgresql.org</a>.</li>
 <li>Run the installer.</li>
 <li>Accept the default settings: 
  <ul>
   <li><strong>Installation directory:</strong> <code>C:\Program Files\PostgreSQL\18</code></li>
   <li><strong>Port:</strong> <code>5432</code></li>
   <li><strong>Username:</strong> <code>postgres</code></li>
   <li><strong>Password:</strong> Set a secure password for the <code>postgres</code> superuser.</li>
  </ul></li>
 <li>Skip Stack Builder at the end of the installation.</li>
 <li>Complete the installation.</li>
</ol>
<h3>Step 2: Configure PostgreSQL 18 Host-Based Authentication</h3>
<p>After installing PostgreSQL 18, you must configure which servers can connect to it. This is controlled by the <code>pg_hba.conf</code> file.</p>
<div style="border-left:5px solid #d9534f; background:#fdf2f2; padding:14px 18px; margin:18px 0;"><strong>WARNING:</strong> This step must be completed before the database migration, or remote Pyramid servers will not be able to connect.
</div>
<ol>
 <li>Open the following file with a text editor such as Notepad:<br> <code>C:\Program Files\PostgreSQL\18\data\pg_hba.conf</code></li>
 <li>Find the sections labeled <strong>IPv4 local connections</strong> and <strong>IPv6 local connections</strong>.</li>
 <li>Edit the below lines to allow your Pyramid servers to connect.</li>
</ol>
<p>Below are two example configurations. Choose the configuration appropriate for your security requirements and work with your IT team to determine what is appropriate for your environment.</p>
<h4>Example 1: Allow All Servers</h4>
<p><strong>Simplest configuration, but least secure:</strong></p>
<pre class="language-none"><code class="language-none">
#&nbsp;IPv4&nbsp;local&nbsp;connections:
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;127.0.0.1/32&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256

#&nbsp;IPv6&nbsp;local&nbsp;connections:
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;::1/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;::/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256</code></pre>
<h4>Example 2: Allow a Specific Subnet</h4>
<p><strong>More restrictive and secure:&nbsp; ---<u> change the ip's (ipv4 and v6) to your subnet ip's</u></strong></p>
<pre class="language-none"><code class="language-none">
#&nbsp;IPv4&nbsp;local&nbsp;connections:
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;127.0.0.1/32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;192.168.1.0/24&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256

#&nbsp;IPv6&nbsp;local&nbsp;connections:
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;::1/0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  scram-sha-256
host&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;fe80::/10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scram-sha-256</code></pre>
<ol start="4">
 <li>Save the file.</li>
 <li><p><strong>Increase max_connections.</strong> The default of 100 is too low for Pyramid's service pools. Open <code>C:\Program Files\PostgreSQL\18\data\postgresql.conf</code> in a text editor, find the <strong>CONNECTIONS AND AUTHENTICATION</strong> section, and set:</p> <pre class="language-none"><code class="language-none">max_connections&nbsp;=&nbsp;1000</code></pre></li>
 <li>Restart the PostgreSQL 18 service: 
  <ul>
   <li>Open <code>services.msc</code>.</li>
   <li>Locate the PostgreSQL 18 service. The name may be <code>PostgreSQL18</code>, <code>postgres-x64-18</code>, or similar.</li>
   <li>Right-click the service and select <strong>Restart</strong>.</li>
   <li>Wait approximately 10–15 seconds for it to restart fully.</li>
  </ul></li>
</ol>
<h4>Verification</h4>
<p>If you have secondary servers, test the connection from one of them:</p>
<pre class="language-none"><code class="language-none">psql&nbsp;-h&nbsp;[PostgreSQL18_IP]&nbsp;-U&nbsp;postgres&nbsp;-d&nbsp;postgres&nbsp;-p&nbsp;5432</code></pre>
<p>When prompted, enter the <code>postgres</code> superuser password. If the connection succeeds, authentication is configured correctly.</p>
<h3>Step 3: Locate Your Pyramid Installation Directory</h3>
<p>Your Pyramid installation may be in a non-default location. To locate it:</p>
<ol>
 <li>Open <code>services.msc</code>.</li>
 <li>Right-click any Pyramid service and select <strong>Properties</strong>.</li>
 <li>On the <strong>General</strong> tab, note the path shown for the service executable.</li>
</ol>
<p><strong>Common locations include:</strong></p>
<ul>
 <li><code>C:\Program Files\Pyramid</code></li>
 <li><code>C:\Pyramid</code></li>
 <li><code>D:\Applications\Pyramid</code></li>
</ul>
<p><strong>Remember this path—you will need it throughout this guide.</strong></p>
<h3>Step 4: Retrieve Database Credentials from config.ini</h3>
<p>Extract your database connection details so that you can connect to the existing PostgreSQL 9.6 instance.</p>
<ol>
 <li>Navigate to your Pyramid installation directory.</li>
 <li>Open <code>config.ini</code> with a text editor.</li>
 <li>Find the <code>[data]</code> section.</li>
 <li>Locate the relevant database values.</li>
</ol>
<p>For example:</p>
<pre class="language-none"><code class="language-none">
[data]
password=
type=postgres
port=12130
username=pyramid
database=pyramidb3e0d8e8
dbhost=EC2AMAZ-2TTQ7TS
dblocation=0
dbssl=0</code></pre>
<p><strong>Extract the following values:</strong></p>
<ul>
 <li><strong>Username:</strong> <code>pyramid</code></li>
 <li><strong>Database Name:</strong> the value from <code>database=</code></li>
 <li><strong>Port:</strong> the value from <code>port=</code></li>
 <li><strong>Server/Host:</strong> the value from <code>dbhost=</code></li>
</ul>
<h4>Construct the Password</h4>
<p>The password stored in <code>config.ini</code> is encrypted, but the actual password Pyramid uses is constructed from the database name.&nbsp;</p>
<ul>
 <li>Take the database name and extract everything after the word <code>pyramid</code>.</li>
 <li>Password format: <code>pyramid![everything_after_pyramid]</code></li>
</ul>
<p><strong>Example:</strong></p>
<ul>
 <li>Database name: <code>pyramidb3e0d8e8</code></li>
 <li>Everything after <code>pyramid</code>: <code>b3e0d8e8</code></li>
 <li>Password: <code>pyramid!b3e0d8e8</code></li>
</ul>
<h4>Verify the PostgreSQL 9.6 Connection</h4>
<ol>
 <li>Open pgAdmin 4.</li>
 <li>Create a new server connection: 
  <ul>
   <li>Right-click <strong>Servers</strong> → <strong>Create</strong> → <strong>Server</strong>.</li>
   <li><strong>Name:</strong> <code>Pyramid_9.6_Backup</code></li>
   <li>Open the <strong>Connection</strong> tab.</li>
   <li><strong>Host name/address:</strong> the value from <code>dbhost=</code></li>
   <li><strong>Port:</strong> the value from <code>port=</code></li>
   <li><strong>Username:</strong> <code>pyramid</code></li>
   <li><strong>Password:</strong> the password constructed above.</li>
   <li><strong>Save password:</strong> Yes</li>
  </ul></li>
 <li>Click <strong>Save</strong>.</li>
 <li>Expand the connection and verify that you can see your databases.</li>
</ol>
<p>This confirms that your credentials are correct before proceeding with the backup.</p>
<h3>Step 5: Verify PostgreSQL 18 is Installed</h3>
<ol>
 <li>Verify that <code>C:\Program Files\PostgreSQL\18\bin</code> exists.</li>
 <li>Open <code>services.msc</code>.</li>
 <li>Verify that the PostgreSQL 18 service exists.</li>
 <li>Verify that you completed <strong>Step 2</strong> and configured <code>pg_hba.conf</code>.</li>
</ol>
<h3>Step 6: Check Available Disk Space</h3>
<ol>
 <li>Right-click the backup destination drive and select <strong>Properties</strong>.</li>
 <li>Verify that free space is at least <strong>2x the current database size</strong>.</li>
</ol>
<p>To estimate the database size in pgAdmin 4:</p>
<ul>
 <li>Right-click the Pyramid database.</li>
 <li>Select <strong>Properties → Statistics</strong>.</li>
 <li>Note the <strong>Size</strong> value.</li>
</ul>
<h3>Step 7: Stop Pyramid Services</h3>
<div style="border-left:5px solid #d9534f; background:#fdf2f2; padding:14px 18px; margin:18px 0;"><strong>IMPORTANT:</strong> Do <strong>not</strong> stop <code>PyramidPostgreSQL</code> yet. This service hosts the source database, and the backup in Step 10 will fail if it is not running.
</div>
<ol>
 <li>Open <code>services.msc</code>.</li>
 <li>Stop every service starting with <strong>Pyramid</strong>, except <code>PyramidPostgreSQL</code>.</li>
 <li>Confirm that <code>PyramidPostgreSQL</code> is still <strong>Running</strong>.</li>
 <li>Verify that all other Pyramid services are stopped before proceeding.</li>
</ol>
<h3>Step 8: Back Up config.ini</h3>
<ol>
 <li>Navigate to your Pyramid installation directory.</li>
 <li>Copy <code>config.ini</code> to a safe location.</li>
 <li>Name the copy something such as <code>config.ini.backup_[date]</code>.</li>
 <li>Keep this file so that the original configuration can be restored if necessary.</li>
</ol>
<h3>Step 9: Create the Pyramid User in PostgreSQL 18</h3>
<ol>
 <li>Open pgAdmin 4 installed with PostgreSQL 18.</li>
 <li>Connect using the <code>postgres</code> superuser credentials.</li>
 <li>Right-click <strong>Login/Group Roles → Create → Login/Group Role</strong>.</li>
 <li>Configure the role: 
  <ul>
   <li><strong>Name:</strong> <code>pyramid</code></li>
   <li><strong>Password:</strong> Use the password constructed in Step 4.</li>
   <li>Under <strong>Definition</strong>, ensure <strong>Can login?</strong> is enabled.</li>
   <li>Under <strong>Privileges</strong>, enable <strong>Can create databases?</strong> and <strong>Superuser?</strong>.</li>
  </ul></li>
 <li>Save and close.</li>
</ol>
<h3>Step 10: Back Up the Current PostgreSQL 9.6 Database</h3>
<ol>
 <li>Open pgAdmin 4 and connect to the existing PostgreSQL 9.6 instance.</li>
 <li>Expand <strong>Databases</strong> and locate the Pyramid database identified in Step 4.</li>
 <li>Right-click the database and select <strong>Backup</strong>.</li>
 <li>Configure the backup: 
  <ul>
   <li><strong>Format:</strong> Custom or TAR</li>
   <li><strong>Filename:</strong> <code>pyramid_backup_[date].backup</code></li>
   <li><strong>Compression:</strong> Medium</li>
   <li><strong>Path:</strong> A backup location with sufficient free space</li>
  </ul></li>
 <li>Click <strong>Backup</strong>.</li>
 <li>Wait for completion and monitor the <strong>Messages</strong> tab.</li>
</ol>
<h4>Verify the Backup</h4>
<ul>
 <li>Confirm that the <code>.backup</code> file was created.</li>
 <li>Confirm that its file size is reasonable compared with the source database size.</li>
</ul>
<h3>Step 11: Disable the Old PostgreSQL Service</h3>
<div style="border-left:5px solid #f0ad4e; background:#fff8e5; padding:14px 18px; margin:18px 0;">
 Only perform this step after confirming that the backup from Step 10 exists and has a sensible file size. Taking the old database offline before you have a verified backup leaves you with nothing to restore.
</div>
<ol>
 <li>Open <code>services.msc</code>.</li>
 <li>Locate <code>PyramidPostgreSQL</code>. On some installations it may appear as <code>PostgreSQL96</code> or <code>postgresql-x64-9.6</code>.</li>
 <li>Right-click → <strong>Properties</strong> and set <strong>Startup type</strong> to <strong>Disabled</strong>.</li>
 <li>Click <strong>Stop</strong>.</li>
 <li>Confirm that the service is stopped and its startup type is <strong>Disabled</strong>.</li>
</ol>
<h3>Step 12: Restore the Database to PostgreSQL 18</h3>
<ol>
 <li>Open pgAdmin 4 and connect to PostgreSQL 18.</li>
 <li>Create a new database: 
  <ul>
   <li>Right-click <strong>Databases → Create → Database</strong>.</li>
   <li><strong>Name:</strong> Use the exact database name identified in Step 4.</li>
   <li><strong>Owner:</strong> <code>pyramid</code></li>
   <li>Click <strong>Save</strong>.</li>
  </ul></li>
 <li>Right-click the new database and select <strong>Restore</strong>.</li>
 <li>Select the backup file created in Step 10.</li>
 <li>Click <strong>Restore</strong> and monitor for errors.</li>
 <li>Verify that the restore completes successfully.</li>
</ol>
<h4>Verify the Restore</h4>
<ul>
 <li>Right-click the restored database and select <strong>Properties → Statistics</strong>.</li>
 <li>Verify that its size is similar to the original database.</li>
 <li>Expand the database and verify that the expected tables exist.</li>
</ul>
<h3>Step 13: Update Pyramid Configuration on the Primary Server</h3>
<ol>
 <li>Navigate to your Pyramid installation directory.</li>
 <li>Open <code>config.ini</code>.</li>
 <li>Locate the <code>[data]</code> section.</li>
 <li>Change <strong>only</strong> the port: <pre class="language-none"><code class="language-none">port=5432</code></pre></li>
</ol>
<div style="border-left:5px solid #5bc0de; background:#f2f9fc; padding:14px 18px; margin:18px 0;"><strong>Do not change the other database settings.</strong>
 <ul style="margin-bottom:0;">
  <li><code>username=pyramid</code> — unchanged</li>
  <li><code>password=</code> — unchanged</li>
  <li><code>database=</code> — unchanged</li>
  <li><code>dbhost=</code> — unchanged</li>
  <li><code>dbssl=</code> — unchanged</li>
 </ul>
</div>
<ol start="5">
 <li>Save the file.</li>
</ol>
<h3>Step 14: Update Additional Servers</h3>
<p>If you have multiple Pyramid servers in your deployment:</p>
<ol>
 <li>On each additional Pyramid server: 
  <ul>
   <li>Connect to the server.</li>
   <li>Locate its Pyramid installation directory.</li>
   <li>Back up <code>config.ini</code>.</li>
   <li>Open <code>config.ini</code>.</li>
   <li>Locate the <code>[data]</code> section.</li>
   <li>Change only the port to <code>5432</code>.</li>
   <li>Do not change the username, password, database name, or <code>dbhost</code>.</li>
   <li>Save the file.</li>
  </ul></li>
 <li>Stop all Pyramid services on each secondary server, except <code>PyramidPostgreSQL</code>.</li>
 <li>Restart the required Pyramid services on each secondary server.</li>
</ol>
<h3>Step 15: Restart Services on the Primary Server</h3>
<ol>
 <li>Open <code>services.msc</code>.</li>
 <li>Start all Pyramid services except <code>PyramidPostgreSQL</code>. 
  <ul>
   <li>Right-click each service and select <strong>Start</strong>.</li>
   <li>Wait approximately 3–5 seconds between each service start.</li>
  </ul></li>
 <li>Wait approximately 60–90 seconds for all services to fully initialize.</li>
</ol>
<h3>Step 16: Update the Data Source Connection in Pyramid Admin Hub</h3>
<ol>
 <li>Access Pyramid Admin Hub. Allow 1–2 minutes for services to fully start.</li>
 <li>Navigate to <strong>Admin → Data → Data Source</strong>.</li>
 <li>Locate and select <strong>Local PG</strong>.</li>
 <li>In the <strong>Connection</strong> section, change the port from <code>12130</code> to <code>5432</code>.</li>
 <li>Click <strong>Test</strong> to verify connectivity.</li>
 <li>If the test succeeds, click <strong>Apply</strong>.</li>
 <li>Restart the remaining Pyramid services if prompted.</li>
</ol>
<h3>Step 18: Upgrade to Pyramid 2025.11 or Later</h3>
<div style="border-left:5px solid #5cb85c; background:#f2faf2; padding:16px 20px; margin:20px 0;">
 <p style="margin:0;"><strong>Migration complete.</strong> Once you have verified that everything is working properly, you can safely upgrade to <strong>Pyramid 2025.11 or any later version</strong>.&nbsp;</p>
</div>
<p>The PostgreSQL 9.6 to PostgreSQL 18 database migration is a <strong>prerequisite</strong> for upgrading to Pyramid 2025.11 or later.</p>
<p><strong>Automate the process</strong></p>
<p>Instead of doing all the above steps manually, you can use the attached Power shell script "Migrate-PyramidPostgres.ps1.zip" . To use the Power shell script attached to this article, <strong><u>first follow all steps 1-2.</u></strong></p>
<p>Then download the attached Power shell script , unzip it and run as Administrator and it will do all the manually steps for you excluding steps 1-2.</p>]]></description>
          <pubDate>Tue, 08 Sep 2026 06:58:01 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/m1yjmxm/migrating-the-pyramid-database-from-postgresql-9-6-to-postgresql-18-windows</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>How to Pull Satellite Images From Docker Hub on an Offline Kubernetes Deployment</title>
          <link>https://community.pyramidanalytics.com/t/h7ygdzn/how-to-pull-satellite-images-from-docker-hub-on-an-offline-kubernetes-deployment</link>
          <description><![CDATA[<p>Starting with Pyramid version 2025.02.222, the cluster infrastructure has been updated. The Runtime Engine (RTE) and Task Engine (TE) now utilize separate Satellite pods rather than running inside their respective containers.</p>
<p>For clusters with internet access, the RTE and TE deployments pull these Satellite images automatically without requiring any changes to your YAML files or Helm charts.</p>
<p>If your cluster's internet access is blocked, you must manually pull these images to your internal registry.<br> The images can be found in this registry:<br> <a href="https://hub.docker.com/r/pyramidanalytics/satellite/tags" rel="nofollow noopener noreferrer" target="_blank">https://hub.docker.com/r/pyramidanalytics/satellite/tags</a></p>
<p>To allow the pods to successfully pull the Satellite images from your internal registry, you will need to apply the following configuration steps based on your deployment method.</p>
<h4>Option 1: Using YAML</h4>
<p>In the runtime-service and task-service&nbsp;deployment files, locate the <code>env</code> block and append the <code>PYRAMID_DOCKER_REGISTRY</code> variable:</p>
<p>YAML</p>
<pre class="language-none"><code class="language-none">env:
&nbsp;&nbsp;-&nbsp;name:&nbsp;PYRAMID_DOCKER_REGISTRY
&nbsp;&nbsp;&nbsp;&nbsp;value:&nbsp;"&lt;your.registry.address&gt;"</code></pre>
<p>(Note: Replace <code>&lt;your.registry.address&gt;</code> with the actual URL of your internal registry).</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/92ce5300-c14d-4703-8a49-89f4e922052c/h/547.png" style="" width="530"></p>
<p>&nbsp;</p>
<h4>Option 2: Using Helm</h4>
<p>If you are managing your deployments via Helm, ensure your registry is defined in your <code>values.yaml</code> file (e.g., as <code>repo</code>).</p>
<p>Then, update the <code>rte_deployment</code> and <code>te_deployment</code> templates by adding the following to the <code>env</code> block:</p>
<p>YAML</p>
<pre class="language-none"><code class="language-none">env:
&nbsp;&nbsp;-&nbsp;name:&nbsp;PYRAMID_DOCKER_REGISTRY
&nbsp;&nbsp;&nbsp;&nbsp;value:&nbsp;"{{&nbsp;.Values.repo&nbsp;}}"</code></pre>]]></description>
          <pubDate>Mon, 01 Jun 2026 14:31:02 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h7ygdzn/how-to-pull-satellite-images-from-docker-hub-on-an-offline-kubernetes-deployment</guid>
          <dc:creator>Omri Zach</dc:creator>
        </item>

      <item>
          <title>How to check for missing print libraries in Offline Installations for RED HAT 9 ONLY</title>
          <link>https://community.pyramidanalytics.com/t/x2ykg37/how-to-check-for-missing-print-libraries-in-offline-installations-for-red-hat-9-only</link>
          <description><![CDATA[<p>To install Pyramid in an offline environment, you may need to manually install certain libraries that are usually downloaded during the installation process.</p>
<p>Follow the steps below to complete this task.</p>
<p>Please note that the steps are written to be used with Red Hat 9 and may differ for other Linux versions.</p>
<p>&nbsp;</p>
<ol>
 <li><h3><strong><u>Run the following on a server that can connect to the internet:</u></strong></h3> <pre class="language-shell"><code class="language-shell">sudo&nbsp;subscription-manager&nbsp;repos&nbsp;--enable&nbsp;codeready-builder-for-rhel-9-$(arch)-rpms
sudo&nbsp;dnf&nbsp;install&nbsp;-y&nbsp;https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm&nbsp;-y</code></pre></li>
 <li><p><u><strong>Download the rpm to print-packages folder</strong></u></p> <pre class="language-shell"><code class="language-shell">sudo&nbsp;dnf&nbsp;install&nbsp;--downloadonly&nbsp;--downloaddir&nbsp;print-packages&nbsp;pango.x86_64&nbsp;libXcomposite.x86_64&nbsp;libXcursor.x86_64&nbsp;libXdamage.x86_64&nbsp;libXext.x86_64&nbsp;libXi.x86_64&nbsp;libXtst.x86_64&nbsp;cups-libs.x86_64&nbsp;libXScrnSaver.x86_64&nbsp;libXrandr.x86_64&nbsp;GConf2.x86_64&nbsp;alsa-lib.x86_64&nbsp;atk.x86_64&nbsp;gtk3.x86_64&nbsp;xorg-x11-fonts-100dpi&nbsp;xorg-x11-fonts-75dpi&nbsp;xorg-x11-utils&nbsp;xorg-x11-fonts-cyrillic&nbsp;xorg-x11-fonts-Type1&nbsp;xorg-x11-fonts-misc&nbsp;libnss3.so&nbsp;libgbm&nbsp;libxshmfence&nbsp;google-noto-sans-cjk-ttc-fonts&nbsp;</code></pre></li>
 <li><u><strong>Copy all rpm from online machine to the offline</strong></u><br> &nbsp;</li>
 <li><p><strong><u>Install all the rpm's inside that folder</u></strong></p> <pre class="language-shell"><code class="language-shell">sudo&nbsp;rpm&nbsp;-ivh&nbsp;print-packages/*.rpm</code></pre></li>
 <li><p><u><strong>5. Make <em>printerpyramid</em> and </strong><em><strong>chrome&nbsp;</strong></em><strong>executable&nbsp;in core file</strong></u></p> <pre class="language-shell"><code class="language-shell">chmod&nbsp;+x&nbsp;/opt/Pyramid/core/prt/puppet/chromium/chrome
chmod&nbsp;+x&nbsp;/opt/Pyramid/core/prt/puppet/pyramidPrinter</code></pre> <p>&nbsp;</p></li>
 <li><u><strong>Check if the printer works</strong></u> <pre class="language-shell"><code class="language-shell">/opt/Pyramid/core/prt/puppet/pyramidPrinter --port=10012 --proxy="{\"enableProxyServer\":false,\"useCredentials\":false,\"bypassProxyServerLocal\":false,\"proxyServer\":{\"address\":\"\",\"port\":0},\"loginUser\":{\"inheritanceType\":\"LoginUser\",\"name\":\"\",\"password\":\"\"}}" --localProxyPort=15000 --tabs=4 --uuid=aacb720a-7e4e-4989-bf76-6e81c2964a17</code></pre> <p>&nbsp;</p></li>
</ol>]]></description>
          <pubDate>Tue, 17 Jun 2025 02:05:10 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/x2ykg37/how-to-check-for-missing-print-libraries-in-offline-installations-for-red-hat-9-only</guid>
          <dc:creator>Carey Doughty</dc:creator>
        </item>

      <item>
          <title>Run Pyramid under a web path instead of the root</title>
          <link>https://community.pyramidanalytics.com/t/83yfxnl/run-pyramid-under-a-web-path-instead-of-the-root</link>
          <description><![CDATA[<h2>Background</h2>
<p>Running Pyramid from a path is sometimes required (e.g., https:/<code>/mysite.com/pyramid</code>) instead of the root (e.g. https:/<code>/mysite.com)</code>. In embedding scenarios, this allows Pyramid to run under the same web domain instead of a subdomain - facilitating easier integrations and simplified authentication/security operations.</p>
<h3><strong>Prerequisites</strong></h3>
<ul>
 <li>This applies <strong>only</strong> to Pyramid <strong>2023.16.083 / 2024.01.013</strong> and later.</li>
 <li>Earlier versions <strong>do not support this feature</strong>.</li>
</ul>
<h3><strong>1. Configuring Pyramid to Use a Virtual Directory</strong></h3>
<ol>
 <li>Log in to <strong>Pyramid Admin</strong>.</li>
 <li>Navigate to:<br> <strong>Services</strong> → <strong>Web Services</strong> → <strong>Web Settings</strong>.</li>
 <li>Enable <strong>"Deploy via&nbsp;Virtual Directory"</strong>.</li>
 <li>Set your desired virtual directory/path name, e.g., <strong><code>/pyramid</code></strong>.</li>
 <li>Click <strong>Apply</strong> and restart all Pyramid web servers. <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/4420a68d-b321-4624-aaf0-a8f4fbf60b7f/h/547.jpg" style="" width="1919"></p> &nbsp;Now, users can access Pyramid at:</li>
</ol>
<p><span class="pen4"><code><a rev="auto" rel="nofollow noopener noreferrer" href="http://localhost:8181/pyramid" target="_blank">http://localhost:8181/pyramid</a></code></span></p>
<h4><strong>Important Notes:</strong></h4>
<p>Pyramid may&nbsp;<strong>still be accessible at the root (<code>/</code>)</strong> by default. This is because Pyramid assumes that a <strong>load balancer or reverse proxy</strong> will manage access to <code>/pyramid</code>. If you only want users to access Pyramid at <code>/pyramid</code>, configure your <strong>load balancer</strong> accordingly and block access.</p>
<hr>
<p><strong>The next sections explain how to facilitate the virtual path for Pyramid using various load balancing / reverse proxy technologies.</strong></p>
<hr>
<h3><strong>2. Configuring AWS Load Balancer to Serve Pyramid Under <code>/pyramid</code></strong></h3>
<p><em>(Assumes you already have an AWS Load Balancer set up. If not, see <a href="/t/edit/83yfxdl" rel="nofollow noopener noreferrer">this guide</a> for setup instructions.)</em></p>
<h4><strong>Steps:</strong></h4>
<ol>
 <li>Go to <strong>AWS Console</strong> → <strong>EC2</strong> → <strong>Load Balancers</strong>.</li>
 <li>Select the <strong>Load Balancer</strong> that will serve Pyramid.</li>
 <li>Click <strong>"Add Rule"</strong>.</li>
</ol>
<h4><strong>Rule Configuration:</strong></h4>
<ul>
 <li><strong>Name:</strong> <code>pyramid</code></li>
 <li><strong>Condition Type:</strong> <code>Path</code></li>
 <li><strong>Path:</strong> <code>/pyramid*</code> ( use the path you setup for the virtual directory in the Pyramid admin)</li>
 <li><strong>Action:</strong> <code>Forward to target group</code></li>
 <li><strong>Target Group:</strong> Choose the group that points to your Pyramid web servers (port <code>8181</code>).</li>
</ul>
<h4><strong>Setting Rule Priority</strong></h4>
<ul>
 <li>The rule <strong>must have a lower number</strong> (higher priority) than any rule that routes traffic to <code>/</code>.</li>
 <li>Example: If there is a rule for <code>/</code> that sends traffic to another website, your <code>/pyramid</code> rule should have <strong>a lower number than that rule</strong>.</li>
 <li>This ensures <code>/pyramid</code> traffic is forwarded correctly and doesn't get overridden.</li>
</ul>
<h4><strong>Example Rule Evaluation Order:</strong></h4>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/ec44eb7f-584b-43cd-baae-b27160743eb5/h/547.jpg" style="" width="749"></p>
<p>Now, users browsing to <code>/pyramid</code> will be forwarded to Pyramid <strong>before</strong> the root rule is applied.</p>
<hr>
<h3><strong>3. </strong>Configuring IIS to Serve Pyramid Under<strong> </strong>to Serve Pyramid Under <code>/pyramid</code></h3>
<h4><strong>Step 1: Open IIS Manager</strong></h4>
<ol>
 <li>Open <strong>IIS Manager</strong> (<code>inetmgr</code> from the Run dialog).</li>
 <li>In the <strong>Connections</strong> panel, click on your site (e.g., <code>Default Web Site</code>).</li>
</ol>
<h4><strong>Step 2: Configure URL Rewrite Rules</strong></h4>
<ol>
 <li>Double-click <strong>"URL Rewrite"</strong> in the middle panel.</li>
 <li>Click <strong>"Add Rules…"</strong> in the right panel.</li>
 <li>Select <strong>"Blank Rule"</strong> under <strong>Inbound Rules</strong> and click <strong>OK</strong>.</li>
</ol>
<h4><strong>Step 2.1: Create Rewrite Rule for <code>/pyramid</code></strong></h4>
<ol>
 <li>Enter <strong>"Rewrite Pyramid Path"</strong> as the rule name.</li>
 <li>Under <strong>Conditions</strong>, click <strong>"Match URL"</strong>: 
  <ul>
   <li>Set <strong>Requested URL</strong> to <strong>Matches the Pattern</strong></li>
   <li>Use the <strong>Regular Expressions</strong> option.</li>
   <li>In the <strong>Pattern</strong> field, enter: <pre class="language-none"><code class="language-none">^pyramid(/.*)?$</code></pre></li>
  </ul></li>
 <li>Scroll to <strong>Action</strong> and set: 
  <ul>
   <li><strong>Action Type</strong>: <code>Rewrite</code></li>
   <li><strong>Rewrite URL</strong>: <pre class="language-none"><code class="language-none">http://localhost:8181/pyramid{R:1}</code></pre></li>
   <li><strong>Append Query String</strong>: <code>Yes</code></li>
   <li><strong>Stop Processing of Subsequent Rules</strong>: <code>Yes</code></li>
  </ul></li>
 <li>Click <strong>Apply</strong> in the right panel.</li>
</ol>
<h4><strong>Step 3: Restart IIS and Test</strong></h4>
<ol>
 <li>Click <strong>Restart</strong> on the right panel under <strong>Manage Server</strong>.</li>
 <li>Open a browser and visit: <pre class="language-none"><code class="language-none">http://yourserver/pyramid</code></pre> It should correctly forward to <code><a rev="auto" rel="nofollow noopener noreferrer" href="http://localhost:8181/pyramid" target="_blank">http://localhost:8181/pyramid</a></code>.<br> <br><strong>Access the main site at:</strong> <pre class="language-none"><code class="language-none">http://yourserver/</code></pre> Any request that is <strong>not for <code>/pyramid</code></strong> will automatically be handled by the main site, so no additional rules are needed</li>
</ol>
<p>Now, Pyramid should be accessible at <code>/pyramid</code> via IIS.&nbsp;</p>
<p>When browsing to the main site i.e <a rev="auto" rel="nofollow noopener noreferrer" href="http://mysite.com" target="_blank">mysite.com</a> you will get the site</p>
<h3><strong>3. </strong>Configuring Nginx to Serve Pyramid Under&nbsp;<code>/pyramid</code></h3>
<p><strong>This process is identical to the one described <a href="/t/60ylh92/how-to-configure-nginx-to-act-as-a-reverse-proxy-to-support-ssl" rel="nofollow noopener noreferrer">here</a>; however, in step 3, use the below configuration instead</strong></p>
<p>&nbsp;</p>
<pre class="language-none"><code class="language-none">server&nbsp;{
&nbsp;&nbsp;listen&nbsp;443&nbsp;ssl;
&nbsp;&nbsp;&nbsp;&nbsp;ssl_certificate&nbsp;/etc/nginx/certs/chain.pem;
&nbsp;&nbsp;&nbsp;&nbsp;ssl_certificate_key&nbsp;/etc/nginx/certs/privkey.pem;
&nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;yourServername.mycompany.com;
&nbsp;&nbsp;&nbsp;&nbsp;access_log&nbsp;/var/log/nginx/nginx.vhost.access.log;
&nbsp;&nbsp;&nbsp;&nbsp;error_log&nbsp;/var/log/nginx/nginx.vhost.error.log;
&nbsp;&nbsp;&nbsp;&nbsp;client_max_body_size&nbsp;300M;
&nbsp;&nbsp;&nbsp;&nbsp;location&nbsp;/&nbsp;{
proxy_pass&nbsp;http://localhost:8181/pyramid;
&nbsp;&nbsp;&nbsp;&nbsp;}
location&nbsp;/events&nbsp;{
proxy_pass&nbsp;http://localhost:8181/pyramid/events;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_http_version&nbsp;1.1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header&nbsp;Upgrade&nbsp;$http_upgrade;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header&nbsp;Connection&nbsp;"upgrade";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
}</code></pre>]]></description>
          <pubDate>Wed, 26 Mar 2025 14:30:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/83yfxnl/run-pyramid-under-a-web-path-instead-of-the-root</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>Terminate SSL on AWS Amazon Load Balancers (ALB)</title>
          <link>https://community.pyramidanalytics.com/t/83yfxdl/terminate-ssl-on-aws-amazon-load-balancers-alb</link>
          <description><![CDATA[<h2><strong>Background</strong></h2>
<p>AWS ALB (and possibly other load balancers/reverse proxies) terminate SSL at the load balancer level and communicate with backend servers (Pyramid) over HTTP. The <code>"X-Forwarded-Proto"</code> header ensures that Pyramid correctly identifies requests as <strong>HTTPS</strong> and responds accordingly. <strong>For most reverse proxies / load balancers this setting is NOT needed as they know how to handle the SSL termination correctly.&nbsp;</strong></p>
<h2>Prerequisites</h2>
<ul>
 <li>This guide applies <strong>only</strong> to <strong>Pyramid 2023.16.083 / 2024.01.013 and later </strong>.</li>
 <li>Earlier versions <strong>do not</strong> support the <code>"X-Forwarded-Proto"</code> header.</li>
</ul>
<hr>
<h2>1. Enabling "X-Forwarded-Proto" in Pyramid</h2>
<p>Pyramid must be configured to recognize HTTPS requests forwarded by the AWS Application Load Balancer (ALB). This is done using the <code>"X-Forwarded-Proto"</code> header.</p>
<h3>Steps:</h3>
<ol class="steps">
 <li>Log in to <strong>Pyramid Admin</strong>.</li>
 <li>Navigate to:<br> <strong>Services</strong> → <strong>Web Services</strong> → <strong>Web Settings</strong>.</li>
 <li>Check the box for <strong>"Proxy SSL Handling (X-Forwarded-Proto)"</strong>.</li>
 <li>Click <strong>Apply</strong>.</li>
 <li><strong>Restart all Pyramid web servers</strong> for the change to take effect. <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/8218b8ed-911f-4ea7-8670-d705353b9e8a/h/547.jpg" style="" width="1919"></p></li>
</ol>
<hr>
<h2>2. Configuring an AWS Application Load Balancer (ALB)</h2>
<blockquote>
 <div class="note"><strong>Note:</strong> AWS configurations may change over time. Always refer to the latest <a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html" rel="nofollow noopener noreferrer" target="_blank">AWS documentation</a> for updates.
 </div>
</blockquote>
<h3>Step 1: Create an Application Load Balancer</h3>
<ol class="steps">
 <li>Open the <strong>AWS Console</strong>.</li>
 <li>Go to <strong>EC2</strong> → <strong>Load Balancers</strong>.</li>
 <li>Click <strong>"Create Load Balancer"</strong> and select <strong>Application Load Balancer</strong>.</li>
</ol>
<h4>Basic Configuration:</h4>
<table>
 <tbody>
  <tr>
   <th>Setting</th>
   <th>Value</th>
  </tr>
  <tr>
   <td><strong>Load Balancer Name</strong></td>
   <td>Choose a name (e.g., <code>Pyramid-ALB</code>)</td>
  </tr>
  <tr>
   <td><strong>Scheme</strong></td>
   <td>Internet-facing (or Internal if needed)</td>
  </tr>
  <tr>
   <td><strong>IP Address Type</strong></td>
   <td>IPv4 (or Dualstack for IPv6 support)</td>
  </tr>
 </tbody>
</table>
<h4>Network Mapping:</h4>
<table>
 <tbody>
  <tr>
   <th>Setting</th>
   <th>Value</th>
  </tr>
  <tr>
   <td><strong>VPC</strong></td>
   <td>Select the VPC where Pyramid is running</td>
  </tr>
  <tr>
   <td><strong>Availability Zones &amp; Subnets</strong></td>
   <td>Choose based on your infrastructure</td>
  </tr>
 </tbody>
</table>
<h4>Security Groups:</h4>
<ul>
 <li>Select or create a security group that allows inbound <strong>HTTPS (443)</strong> traffic.</li>
</ul>
<hr>
<h3>Step 2: Configure Listeners &amp; Routing</h3>
<table>
 <tbody>
  <tr>
   <th>Setting</th>
   <th>Value</th>
  </tr>
  <tr>
   <td><strong>Protocol</strong></td>
   <td>HTTPS</td>
  </tr>
  <tr>
   <td><strong>Port</strong></td>
   <td>443</td>
  </tr>
  <tr>
   <td><strong>Default Action</strong></td>
   <td>Forward requests to a <strong>target group</strong> (if none exists, create one in the next step).</td>
  </tr>
 </tbody>
</table>
<hr>
<h3>Step 3: Create a Target Group</h3>
<ol class="steps">
 <li>Click <strong>"Create Target Group"</strong>.</li>
 <li>Select <strong>"Instances"</strong> as the <strong>Target Type</strong>.</li>
 <li>Configure the settings:</li>
</ol>
<table>
 <tbody>
  <tr>
   <th>Setting</th>
   <th>Value</th>
  </tr>
  <tr>
   <td><strong>Target Group Name</strong></td>
   <td>Pyramid</td>
  </tr>
  <tr>
   <td><strong>Protocol</strong></td>
   <td>HTTP</td>
  </tr>
  <tr>
   <td><strong>Port</strong></td>
   <td>8181 (default Pyramid web port)</td>
  </tr>
  <tr>
   <td><strong>IP Address Type</strong></td>
   <td>Choose based on your setup</td>
  </tr>
  <tr>
   <td><strong>VPC</strong></td>
   <td>Select the Pyramid VPC</td>
  </tr>
 </tbody>
</table>
<h4>Health Check Configuration:</h4>
<table>
 <tbody>
  <tr>
   <th>Setting</th>
   <th>Value</th>
  </tr>
  <tr>
   <td><strong>Health Check Path</strong></td>
   <td><code>/login/login.html</code></td>
  </tr>
  <tr>
   <td><strong>Protocol</strong></td>
   <td>HTTP</td>
  </tr>
  <tr>
   <td><strong>Port</strong></td>
   <td>Traffic port (or <code>8181</code>)</td>
  </tr>
  <tr>
   <td><strong>Healthy Threshold</strong></td>
   <td>Default recommended</td>
  </tr>
  <tr>
   <td><strong>Unhealthy Threshold</strong></td>
   <td>Default recommended</td>
  </tr>
  <tr>
   <td><strong>Timeout</strong></td>
   <td>Default recommended</td>
  </tr>
  <tr>
   <td><strong>Interval</strong></td>
   <td>Default recommended</td>
  </tr>
 </tbody>
</table>
<ol class="steps" start="4">
 <li>Click <strong>Next</strong> and <strong>register targets</strong>: 
  <ul>
   <li>Select the EC2 instances running Pyramid.</li>
   <li>Ensure the port is set to <strong>8181</strong>.</li>
   <li>Click <strong>"Include as pending below"</strong>, then <strong>"Create Target Group"</strong>.</li>
  </ul></li>
</ol>
<hr>
<h3>Step 4: Assign the Target Group to the Load Balancer</h3>
<ol class="steps">
 <li>Return to the <strong>"Listeners &amp; Routing"</strong> section of the ALB setup.</li>
 <li>Under <strong>Default Action</strong>, select <strong>"Forward to Target Group"</strong>.</li>
 <li>Choose the <strong>Pyramid target group</strong> created earlier.</li>
</ol>
<hr>
<h3>Step 5: Configure SSL/TLS Certificate</h3>
<ol class="steps">
 <li>Under <strong>Secure Listener Settings</strong>, select <strong>"Default SSL/TLS Certificate"</strong>.</li>
 <li>Upload or select an existing <strong>SSL certificate</strong>.</li>
 <li><em>(Optional)</em> Configure additional security settings based on your company's policies.</li>
</ol>
<hr>
<h2>3. Final Configuration &amp; Testing</h2>
<h3>Modify ALB Listener Rules (Optional)</h3>
<p>If needed, edit the listener rules:</p>
<ol class="steps">
 <li>Go to <strong>EC2</strong> → <strong>Load Balancers</strong>.</li>
 <li>Select the <strong>ALB</strong> and navigate to <strong>Listeners → HTTPS:443 → Edit Default Rule</strong>.</li>
 <li>Ensure the action is <strong>"Forward to Target Groups"</strong> and the correct <strong>Pyramid target group</strong> is selected.</li>
</ol>
<hr>
<h3>1. Increase ALB Idle Timeout</h3>
<table>
 <tbody>
  <tr>
   <th>Setting</th>
   <th>Value</th>
  </tr>
  <tr>
   <td><strong>Default</strong></td>
   <td>60 seconds</td>
  </tr>
  <tr>
   <td><strong>Recommended</strong></td>
   <td>600 seconds</td>
  </tr>
 </tbody>
</table>
<h4>Steps:</h4>
<ol class="steps">
 <li>Go to <strong>EC2 Dashboard</strong> → <strong>Load Balancers</strong>.</li>
 <li>Select your <strong>Application Load Balancer (ALB)</strong>.</li>
 <li>Go to the <strong>Attributes</strong> tab.</li>
 <li>Click <strong>Edit</strong>.</li>
 <li>Set <strong>Idle Timeout</strong> to <strong>600 seconds</strong>.</li>
 <li>Click <strong>Save</strong>.</li>
</ol>
<hr>
<h3>2. Adjust Target Group Health Check Settings</h3>
<p>Increase timeout &amp; interval to prevent premature failures.</p>
<table>
 <tbody>
  <tr>
   <th>Setting</th>
   <th>Recommended Value</th>
  </tr>
  <tr>
   <td><strong>Timeout</strong></td>
   <td>10 seconds</td>
  </tr>
  <tr>
   <td><strong>Interval</strong></td>
   <td>30 seconds</td>
  </tr>
  <tr>
   <td><strong>Unhealthy Threshold</strong></td>
   <td>5</td>
  </tr>
  <tr>
   <td><strong>Healthy Threshold</strong></td>
   <td>3</td>
  </tr>
 </tbody>
</table>
<h4>Steps:</h4>
<ol class="steps">
 <li>Go to <strong>EC2 Dashboard</strong> → <strong>Target Groups</strong>.</li>
 <li>Select your <strong>Target Group</strong>.</li>
 <li>Go to the <strong>Health Checks</strong> tab → Click <strong>Edit</strong>.</li>
 <li>Apply the recommended values above.</li>
 <li>Click <strong>Save</strong>.</li>
</ol>
<hr>
<h3>Update Security &amp; DNS Settings</h3>
<ul>
 <li><strong>Security Group:</strong> Ensure inbound port <strong>443</strong> is open to allow user connections.</li>
 <li><strong>DNS Configuration:</strong> Update external <strong>DNS records</strong> to point to the ALB DNS name.</li>
</ul>
<hr>
<h2>4. Summary</h2>
<p class="check">✅ <strong>Pyramid is now configured</strong> to recognize HTTPS requests using <code>"X-Forwarded-Proto"</code>.</p>
<p class="check">✅ The <strong>AWS Load Balancer terminates SSL</strong> and forwards requests to Pyramid over HTTP.</p>
<p class="check">✅ Users can securely access Pyramid at <strong><code><a rev="auto" rel="nofollow noopener noreferrer" href="https://your-domain.com" target="_blank">https://your-domain.com</a></code></strong> via the ALB.</p>
<p>For further assistance, refer to the <a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html" rel="nofollow noopener noreferrer" target="_blank"><strong>AWS Load Balancer Documentation</strong></a> or contact <strong>AWS Support</strong>.</p>]]></description>
          <pubDate>Wed, 26 Mar 2025 14:20:27 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/83yfxdl/terminate-ssl-on-aws-amazon-load-balancers-alb</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>Discontinued support for EOL operating systems and databases 2024</title>
          <link>https://community.pyramidanalytics.com/t/60y8mn5/discontinued-support-for-eol-operating-systems-and-databases-2024</link>
          <description><![CDATA[<p><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/fb0a2c22-15b8-4c41-a6d6-973b498cd4ea/h/547.png" style="float:left" width="58"></p>
<p>&nbsp;Various operating systems and technologies are out of support or nearing end of life (EOL). In tandem, Pyramid will start to drop official support for them.</p>
<h2>Operating Systems&nbsp;</h2>
<ul>
 <li><strong>Windows 2012</strong>&nbsp;reached end of life in&nbsp;October 10, 2023. Consequently, the final version of Pyramid that will support&nbsp;Windows 2012&nbsp;will be Pyramid 2023.12 (not yet released). Customers should already be making plans to migrate off this&nbsp;Windows version.&nbsp;</li>
 <li><strong>Red Hat Enterprise Linux 7</strong> and <strong>CentOS 7</strong>&nbsp;are set to be out of support in&nbsp;June 2024. While we plan to support them&nbsp;beyond their&nbsp;EOL date, customers should start planning to migrate off them.&nbsp;</li>
 <li><strong>Ubuntu 16 and 18 </strong>are both out of standard support.&nbsp;While we plan to support them&nbsp;beyond their support dates until their official EOL dates, customers should start planning to migrate off them.&nbsp;</li>
</ul>
<p>We anticipate adding support for newer operating systems in the next few releases, this includes Red Hat Enterprise Linux 9, Oracle Linux 9, Ubuntu 24 and Amazon 2023.</p>
<h2>Repository Databases</h2>
<p>The discontinued support for these database engines relates to them as a repository, <strong>NOT as analytical data sources.&nbsp;</strong></p>
<p><strong>MS SQL Server</strong></p>
<ul>
 <li><strong>SQL 2012&nbsp;</strong>reached end of life in Jul&nbsp;12th&nbsp;2022.&nbsp;Consequently, the final version of Pyramid that will support&nbsp;SQL 2012&nbsp;will be Pyramid 2023.12 . Customers should already be making plans to migrate off this&nbsp;SQL version.</li>
 <li><strong>SQL 2014&nbsp;</strong>will reach end of life later this year. While we plan to support it beyond its EOL date, customers should start planning to migrate off it as well.&nbsp;</li>
</ul>
<p><strong>PostgreSQL</strong></p>
<ul>
 <li><strong>Postgres SQL 11&nbsp;</strong>reached end of life in November 9th&nbsp;2023.&nbsp;Consequently, the final version of Pyramid that will support&nbsp;Postgres SQL will be Pyramid 2023.12. Customers should already be making plans to migrate off this&nbsp;Postgres SQL version.</li>
 <li><strong>Postgres SQL 12&nbsp;</strong>will reach end of life later this year.&nbsp;While we plan to support it beyond its EOL date, customers should start planning to migrate off it as well.&nbsp;</li>
</ul>
<p><strong>Oracle Database</strong></p>
<ul>
 <li><strong>Oracle 10c&nbsp;</strong>reached end of life in June 30th&nbsp;2021.&nbsp;Consequently, the final version of Pyramid that will support&nbsp;Oracle 10c database will be Pyramid 2023.12. Customers should already be making plans to migrate off this&nbsp;Oracle version.</li>
</ul>]]></description>
          <pubDate>Thu, 14 Mar 2024 11:16:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/60y8mn5/discontinued-support-for-eol-operating-systems-and-databases-2024</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>How to Upgrade a Pyramid Kubernetes Cluster</title>
          <link>https://community.pyramidanalytics.com/t/x2h9rc5/how-to-upgrade-a-pyramid-kubernetes-cluster</link>
          <description><![CDATA[<p><span class="pen1"><b>Before upgrading your production install of Pyramid, it is imperative that you upgrade a test install&nbsp;of Pyramid based on a copy of your production database. </b></span><br> <span class="pen1"><strong>This step is crucial to guarantee that all content operates correctly before upgrading.<br> Upgrading without testing in a separate environment is strongly discouraged and not supported by our team.</strong></span></p>
<p>Before upgrading the cluster, <strong>take a full backup of the Pyramid repository</strong>.</p>
<p>Please&nbsp;navigate on the customer's portal to the <a href="https://customers.pyramidanalytics.com/kubernetes/" rel="nofollow noopener noreferrer" target="_blank">Pyramid&nbsp;Kubernetes Cluster configurator page.</a></p>
<p>&nbsp;</p>
<p>Select a version and configure the number of pods for each Pyramid service.<br> Ensure that you maintain the previous Port and Persistent storage settings during the upgrade.</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/1c9fd19b-3e6e-41bf-91b9-5f54889d76c9/h/547.png" style="" width="686"></p>
<p>After proceeding to the next page, you can skip steps 1 and 2 as there is no need to repeat them. However, make sure to obtain the YAML file in step 3.</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/71f9966f-6a44-432f-95e1-018b241cdfaa/h/547.png" style="" width="811"></p>
<p>Before deploying the YAML, <strong><u>ensure</u></strong>&nbsp;the cluster hosts have enough resources (CPU and RAM).</p>
<p>To deploy the YAML file, just run the command below(step 4):</p>
<div class="code-toolbar">
 <pre class="language-none"><code class="language-none">kubectl&nbsp;apply&nbsp;-f&nbsp;pyramid-analytics-config.yaml</code></pre>
</div>
<p>Please note that the Kubernetes engine will initiate all the new pods before terminating the old ones.<br> This process may consume more resources until Kubernetes has terminated the old pods. However, it&nbsp;minimizes the&nbsp;amount of downtime taken during the upgrade process.</p>
<hr>
<p>If you choose to use <strong>Helm</strong> instead of YAML, you can perform an upgrade by executing the following command.<br> However, Please make sure to update the version number to the latest or the one that you want to install. This version <strong>must be newer</strong> than the one currently installed. You can find the version number in the drop-down list on the <a href="https://customers.pyramidanalytics.com/kubernetes/" rel="nofollow noopener noreferrer" target="_blank">Pyramid Kubernetes Cluster configurator page</a>.</p>
<div class="code-toolbar">
 <pre class="language-none"><code class="language-none">helm&nbsp;install&nbsp;pyramid&nbsp;pyramid/pyramidanalytics&nbsp;--version&nbsp;2023.00.361</code></pre>
</div>]]></description>
          <pubDate>Mon, 17 Jul 2023 10:48:32 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/x2h9rc5/how-to-upgrade-a-pyramid-kubernetes-cluster</guid>
          <dc:creator>Omri Zach</dc:creator>
        </item>

      <item>
          <title>How to fully uninstall the Pyramid 2023 &#x22;Archimedes&#x22; Limited Testing Program 1 (LTP1) release on Windows OS</title>
          <link>https://community.pyramidanalytics.com/t/35hc9ff/how-to-fully-uninstall-the-pyramid-2023-archimedes-limited-testing-program-1-ltp1-release-on-windows-os</link>
          <description><![CDATA[<p>This article is relevant for you if you are planning to uninstall the Pyramid 2023 "Archimedes" Limited Testing Program 1 (LTP1) release when using Windows OS.</p>
<p>If you have uninstalled the Pyramid LTP1 release using the uninstaller,&nbsp;but some components&nbsp;were not removed, please take the following steps:</p>
<ol>
 <li>Check if all Pyramid services were removed by the installer, you can check it by going to task manager -&gt; services -&gt; search for Pyramid services.<br> <strong>Should there be any services left over, go to step 2 to see how to remove them, otherwise skip to step 3.</strong></li>
 <li>If there are any services left, first make sure to stop them.<br> Then use the "sc delete" command from a command line prompt ran as an administrator to remove them.<br> The command needs the service name.<br> To get the service name, right-click on the service -&gt; Properties and look for the "service name" property.&nbsp;<br> For example, to remove the "Pyramid AI" service run the following:<br>
  <div class="code-toolbar">
   <pre class="language-none"><code class="language-none">sc&nbsp;delete&nbsp;PyramidAI</code></pre>
  </div> &nbsp; <p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/207afd63-1d27-4789-ac38-51a8da1200d8/h/547.png" style="" width="550"></p></li>
 <li>Check that the installation folder and Pyramid services&nbsp;are&nbsp;completely removed.<br> If the folder was&nbsp;not&nbsp;<u>deleted, then manually&nbsp;delete it</u>.&nbsp;(default location is C:\Program Files\Pyramid).<br> You may need to restart the server before it allows you to delete it.<br> &nbsp;</li>
 <li>Reboot the machine before trying to re-install again.</li>
</ol>]]></description>
          <pubDate>Thu, 04 May 2023 15:27:37 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/35hc9ff/how-to-fully-uninstall-the-pyramid-2023-archimedes-limited-testing-program-1-ltp1-release-on-windows-os</guid>
          <dc:creator>Omer Ansher</dc:creator>
        </item>

      <item>
          <title>How to set up Decision Intelligence on the Amazon AWS Marketplace</title>
          <link>https://community.pyramidanalytics.com/t/83h0swx/how-to-set-up-decision-intelligence-on-the-amazon-aws-marketplace</link>
          <description><![CDATA[<h2>Installing Pyramid Decision Intelligence</h2>
<p>Using the Amazon AWS Marketplace to set up your Decision Intelligence Environment from Pyramid Analytics is a straight forward an simple process.</p>
<h3>Choosing Pyramid Analytics from the AWS Marketplace</h3>
<p style="text-align:left"><a href="https://t.sidekickopen07.com/s3t/c/5/f18dQhb0V1-gmb8c7Z85VMCqM959hl3kW7_k2841CX6NGN36Q29qsN2V3Vs7_5r5Zmm-Yf197v5Y04?te=W3R5hFj4cm2zwW3zjKqY3zdx6KW43Tw8L43T4P1W3zgDmV4fM93QW3F6bYR45lYzqW43PsLV3KbPk3W41W2Y93P4zdjf4mJ2cZ04&amp;si=8000000026403301&amp;pi=ce789345-b08b-4af9-ad54-e32abb3825be" rel="nofollow noopener noreferrer" target="_blank"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/32d759c3-ebf6-42e9-902d-f5b996d1c5d2/h/547.png" style="" width="816"></a></p>
<p>Here's a link to the AWS Marketplace listing:&nbsp;<br> <a href="https://t.sidekickopen07.com/s3t/c/5/f18dQhb0V1-gmb8c7Z85VMCqM959hl3kW7_k2841CX6NGN36Q29qsN2V3Vs7_5r5Zmm-Yf197v5Y04?te=W3R5hFj4cm2zwW3zjKqY3zdx6KW43Tw8L43T4P1W3zgDmV4fM93QW3F6bYR45lYzqW43PsLV3KbPk3W41W2Y93P4zdjf4mJ2cZ04&amp;si=8000000026403301&amp;pi=ce789345-b08b-4af9-ad54-e32abb3825be" rel="nofollow noopener noreferrer" target="_blank">https://aws.amazon.com/marketplace/pp/prodview-qnnjmgo5pwscu</a>.&nbsp;</p>
<h3>Deployment Guide:</h3>
<p>If you click below, you will find a detailed deployment guide, but it's usually not needed as the default settings are fine in most cases:&nbsp;&nbsp;</p>
<p style="text-align:left"><a href="https://content.pyramidanalytics.com/hubfs/Guides/Pyramid%20for%20AWS%20Marketplace%20Technical%20Documentation.pdf" rel="nofollow noopener noreferrer" target="_blank"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/890be31a-0127-488b-acd2-49bee76996fa/h/547.png" style="" width="670"></a></p>
<p><a href="https://t.sidekickopen07.com/s3t/c/5/f18dQhb0V1-gmb8c7Z85VMCqM959hl3kW7_k2841CX6NGN36Q29qsN2V3Vs7_5r5Zmm-Yf197v5Y04?te=W3R5hFj4cm2zwW3FbtcT3K78fMW45XLT93_Vqx9W41PFYJ4fJd-3W1JxwY51Ly8kHW3M7H4r4hGPyLW4cgxgp49HS1VW3GC6jM3M662XW1S1pJf322RMCW2RHDSN3K9FNKW3z8mJQ1S1rmBW3F7yWf3F4Fn5W1S1pZX3FdZ-DW41Yx_q3T1McH4PDdn1&amp;si=8000000026403301&amp;pi=ce789345-b08b-4af9-ad54-e32abb3825be" rel="nofollow noopener noreferrer" target="_blank">https://content.pyramidanalytics.com/hubfs/Guides/Pyramid%20for%20AWS%20Marketplace%20Technical%20Documentation.pdf</a></p>
<p>Please reach out to us directly,&nbsp;if you need further help with the deployment.</p>
<h3>Generating the Machine Key:</h3>
<p>To embed your license file, you will need to generate a machine key.&nbsp;To get the machine key for your deployment, go to the Licensing screen above and hit “Get Machine Key” as highlighted.</p>
<p>Step one:</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/cdd5f537-8faa-4740-87ac-36bfb66cb15d/h/547.png" style="" width="447"></p>
<p>Step two:</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/1cb44cea-ad48-48e8-815b-433af2403c3c/h/547.png" style="" width="449"></p>
<h3>Receiving your Pyramid License File:</h3>
<p>Then please&nbsp;go to the download site in our customer&nbsp; portal:&nbsp;<a href="https://customers.pyramidanalytics.com/" rel="nofollow noopener noreferrer" target="_blank">https://customers.pyramidanalytics.com/</a>&nbsp;&nbsp;and enter the machine Key to be associated with the license and you should get a .pli file to upload bay in the Environment and your good to go.</p>
<p style="text-align:left"><img alt="" class="fb-img" src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/2e3ffc57-a5ad-4e39-afd2-689ae7861615/h/547.png" style="" width="507"></p>
<p>To upload the license into the application:</p>
<ul>
 <li>Click on “Licenses”</li>
 <li>Click on the upload symbol under “Keys”</li>
 <li>Enter the Machine Key from the application</li>
</ul>
<p>&nbsp;You will find full instructions via this link “<a href="https://t.sidekickopen07.com/s3t/c/5/f18dQhb0V1-gmb8c7Z85VMCqM959hl3kW7_k2841CX6NGN36Q29qsN2V3Vs7_5r5Zmm-Yf197v5Y04?te=W3R5hFj4cm2zwW4fdKmB3H4SKkW3F8Qq03K72hyW1JxwY51LDDN2W1LvZPS1LxcpgW3GYwZn1NlTqVW2zyKxB3j0zzPW2Rs7wB24VhW4W3Zvp__21fNbbW22WkbG3d2HQpW3b2SH_4mKLkGW23jQsD2-vyvjW47Gn1P21gXK5W1SqJ7324Wd9BW3f-J9p4fGwKVW1Vg4hg2zYs83W3_szmf3b2W7_W1QjDYX2KxVmhW2Yx04F3HdKxHW1VzQn_2sCp3zW49tDmq1V1H4rW21q1xQ1VmBQzW1Ztkkh3gy8MBW3b3ltj1Vk2v8W1VjzHn2PDR8jW2CKhmz1XmPfxW4cvb7Y3DZ-mSW3BMXtt4tf5DJW1W_NQ93M7fZMW3Hf4Lb3b2ZMxW4ckTjn1QywW6W2vSs6X1XwGNyW1SzB6g1S4NpYW1Vkqq-3_tgVVW4tGbZY32JT8qW1P-NS72dPKx0W1N4h9z1N4KmfW1S1nDP1YTZBGW2dMj3p3M0CxWW3JF3LW22VtW8W24VJ_G3BQrmvW1Gc-Fz22V41KW3BPxp43DF5b4W3_QfJ73_YkBwW3P48s03zgF8KW3K8R3n4hMnzcW3_SMDQ4hJp1mW3_R5921pKtp1W3_Vm4q1Q5MxDW1Q2Stt1pKtp1W3K76Nr45n5SRW47TcH93v3jKwW3F6KZb45SWvSW49lXRz3vk2FyW21nnBL3VJ-n-W3M9PSp3M8yf2W3VZn334hstqWW3BNLWp3tZ40QW30JDNM41q8vZW2MBFwg3_FZqDW2PKSV81Z9_1zW2zPyvc25hnDtW3C2HCF3K7YNBW3d3yZn3F6LLkW4t6rkL3BXF6kW3bwwzJ360s7vW3_QfJp41YylgW4flSMS20YCFpW1N81Kg4hMnzcW4cNcV-3F6d92W4cFxy74fLMHXf4fJg0T04&amp;si=8000000026403301&amp;pi=ce789345-b08b-4af9-ad54-e32abb3825be" rel="nofollow noopener noreferrer" target="_blank">New Deployment Activation</a>”</p>
<h3><em>If you are not yet a customer please contact us for a trial license</em></h3>]]></description>
          <pubDate>Wed, 25 Jan 2023 17:38:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/83h0swx/how-to-set-up-decision-intelligence-on-the-amazon-aws-marketplace</guid>
          <dc:creator>Christian Langmayr</dc:creator>
        </item>

      <item>
          <title>Pyramid installation tips</title>
          <link>https://community.pyramidanalytics.com/t/y4h0tvt/pyramid-install-tips</link>
          <description><![CDATA[<p style="text-align:start">In the following article, we will provide a few tips to keep in mind when approaching the installation process for Pyramid.&nbsp;</p>
<p style="text-align:start">Follow these tips to ensure a smooth and successful installation.</p>
<ul>
 <li>To ensure a successful installation of Pyramid, it is important to confirm that the system meets our supported specifications and meets the minimum requirements.<br> Please refer to our <a href="https://help.pyramidanalytics.com/Content/Root/Guides/installation/Main/Recommended%20Setup.htm" rel="nofollow noopener noreferrer" target="_blank">help section</a>&nbsp;for the most up-to-date installation requirements and verify that your system meets these requirements before proceeding with the installation.<br> &nbsp;</li>
 <li>It is important to exclude the Pyramid installer and installation location from any <strong>active antivirus (AV) scanning</strong>.<br> This is <strong>especially crucial</strong> if the installer continues to fail, as it could be due to AV interference.<br> If it still fails to install, it's likely due to the AV still interfering with the installation process.<br> Therefore, the AV should be completely disabled only for the installation process.<br> &nbsp;</li>
 <li>If you have a firewall running on your server, it is important to ensure that you have properly configured the required Pyramid services ports.<br> This will ensure that the Pyramid services on each server can communicate properly between themselves and provide the necessary security measures.<br> To view a list of the required ports, please refer <a href="/t/k9wbhv/firewall-settings-for-pyramid" rel="nofollow noopener noreferrer">here</a>.</li>
 <li><p style="text-align:start">For the Pyramid repository database, regular database instances such as SQL, Postgres, or Oracle, it is essential that the installer is granted the necessary permissions to create the database.<br> This includes ensuring that the database <strong>user</strong> has sufficient privileges to perform administrative tasks and create a new database.</p> <p style="text-align:start">On the other hand, if you are using an RDS service for the Pyramid repository database, the database must be created by the RDS administrator before the installation can commence(plus use the RDS option in the installer).</p></li>
 <li><p style="text-align:start">If you are experiencing installation issues, please try the following steps:</p>
  <ol>
   <li>Re-install the software, as explained in detail <a href="/t/h4g9v6/how-to-fully-uninstall-pyramid" rel="nofollow noopener noreferrer">here</a>.</li>
   <li>If the issue persists, please&nbsp;<a href="https://support.pyramidanalytics.com/hc/en-us/requests/new" rel="nofollow noopener noreferrer" target="_blank">open a support ticket</a> and include the following information: 
    <ul>
     <li>The installer logs ("installbuilder_installer" and "pyramidInstaller").<br> These can be found in the user's temp directory on Windows (e.g. by accessing %temp% from the Run menu)<br> or in the "tmp" directory on Linux (e.g. /tmp).</li>
     <li>A detailed description of the issue you are experiencing, including any error messages you may have received.</li>
     <li>Steps you have already taken to troubleshoot the issue.</li>
     <li>Any other relevant information that may help us understand and resolve the issue.</li>
    </ul></li>
  </ol></li>
</ul>]]></description>
          <pubDate>Tue, 03 Jan 2023 14:45:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/y4h0tvt/pyramid-install-tips</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>Uncaught SyntaxError when using Embedding</title>
          <link>https://community.pyramidanalytics.com/t/63cxd5/uncaught-syntaxerror-when-using-embedding</link>
          <description><![CDATA[<p> <u><strong>ISSUE:</strong></u> </p> 
<p> When trying to&nbsp;embed Pyramid content the following type of error is shown: </p> 
<p> <em>Uncaught SyntaxError: Invalid regular expression: /[A-Za-zªµºÀ-ÖØ-öø-ƺƻƼ-ƿǀ-ǃǄ-ʓʔʕ-ʯʰ-ʸʻ-ˁː-ˑˠ-ˤˮͰ-ͳͶ-ͷͺͻ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҂Ҋ-ԯԱ-Ֆՙ՚-՟ա-և։ःऄ-हऻऽा-ीॉ-ौॎ-ॏॐक़-ॡ।-॥०-९॰ॱॲ-ঀং-ঃঅ-ঌএ-ঐও-নপ-রলশ-হঽা-ীে-ৈো-ৌৎৗড়-ঢ়য়-ৡ০-৯ৰ-ৱ৴-৹৺ਃਅ-ਊਏ-ਐਓ-ਨਪ-ਰਲ-ਲ਼ਵ-ਸ਼ਸ-ਹਾ-ੀਖ਼-ੜਫ਼੦-੯ੲ-ੴઃઅ-ઍએ-ઑઓ-નપ-રલ-ળવ-હઽા-ીૉો-ૌૐૠ-ૡ૦-૯૰ଂ-ଃଅ-ଌଏ-ଐଓ-ନପ-ରଲ-ଳଵ-</em> </p> 
<p> <em>Range out of order in character class</em> </p> 
<p> <em>&nbsp;&nbsp;&nbsp;&nbsp;at new RegExp (&lt;anonymous&gt;)</em> </p> 
<p> <em>&nbsp;&nbsp;&nbsp;&nbsp;at Object.&lt;anonymous&gt; (no-shell.2018.05.925.js:1)</em> </p> 
<p> <em>&nbsp;&nbsp;&nbsp;&nbsp;at n (no-shell.2018.05.925.js:1)</em> </p> 
<p> <em>&nbsp;&nbsp;&nbsp;&nbsp;at Object.&lt;anonymous&gt; (no-shell.2018.05.925.js:1)</em> </p> 
<p> <em>&nbsp;&nbsp;&nbsp;&nbsp;at n (no-shell.2018.05.925.js:1)</em> </p> 
<p> <em>&nbsp;&nbsp;&nbsp;&nbsp;at Object.&lt;anonymous&gt; (no-shell.2018.05.925.js:1)</em> </p> 
<p> <em>&nbsp;&nbsp;&nbsp;&nbsp;at n (no-shell.2018.05.925.js:1)</em> </p> 
<p> <em>&nbsp;&nbsp;&nbsp;&nbsp;at Object.&lt;anonymous&gt; (no-shell.2018.05.925.js:1)</em> </p> 
<p> <em>&nbsp;&nbsp;&nbsp;&nbsp;at n (no-shell.2018.05.925.js:1)</em> </p> 
<p> <em>&nbsp;&nbsp;&nbsp;&nbsp;at Object.&lt;anonymous&gt; (no-shell.2018.05.925.js:1)</em> </p> 
<p> <strong><u>Solution</u></strong> </p> 
<p> Check to make sure that the below exits in your html header section and if it does not, try adding it: </p> 
<p> &nbsp;"&lt;meta charset=”utf-8” /&gt;" </p> 
<p> E.g: </p> 
<p> &lt;html&gt;<br> &nbsp;&lt;head&gt;<br> <strong>&nbsp;&lt;meta charset="UTF-8"&gt;</strong><br> &nbsp;&lt;/head&gt; </p>]]></description>
          <pubDate>Thu, 23 Jul 2020 08:04:32 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/63cxd5/uncaught-syntaxerror-when-using-embedding</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>Build 2020.02.078 and MS SQL Server Repository</title>
          <link>https://community.pyramidanalytics.com/t/h4v5sz/build-2020-02-078-and-ms-sql-server-repository</link>
          <description><![CDATA[<p> A problem has been found in build 2020.02.078 with certain versions of MS SQL Server when it is used as the repository. </p> 
<p> A hotfix has been issued and included in the latest bits that can be downloaded from the customer portal. A simple upgrade to the latest version (2020.02.079 or later) will correct the issue. </p>]]></description>
          <pubDate>Tue, 24 Dec 2019 23:47:07 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h4v5sz/build-2020-02-078-and-ms-sql-server-repository</guid>
          <dc:creator>Avi Perez</dc:creator>
        </item>

      <item>
          <title>IMDB hangs during install on Linux Centos</title>
          <link>https://community.pyramidanalytics.com/t/h40r0y/imdb-hangs-during-install-on-linux-centos</link>
          <description><![CDATA[<p> We found that in some case when installing Pyramid on Linux Centos, the installer hangs on the IMDB phase. </p> 
<p> In the current installer&nbsp;2018.05.642 (5.4)<br> there's a missing switch "-y" that enable the installation to proceed without the user intervention. </p> 
<p> in order to fix the problem please follow the instruction below: </p> 
<p>&nbsp;</p> 
<ol> 
 <li>Stop the installation.<br> &nbsp;</li> 
 <li>Delete the following files:<br> Under /<strong>etc</strong>&nbsp;folder, delete the following file: <strong>pareg.ini</strong><br> Under /<strong>etc</strong>&nbsp;you will have the&nbsp;following folder:<strong>&nbsp;init.d</strong>, inside the folder you will need to delete the following files: 
  <ul> 
   <li><u>pyramidAgent,</u></li> 
   <li><u>pyramidFs,</u></li> 
   <li><u>pyramidPG,</u></li> 
   <li><u>pyramidRTE,</u></li> 
   <li><u>pyramidTE,</u></li> 
   <li><u>pyramidWeb.</u></li> 
  </ul> </li> 
 <li>Now install the missing feature: <strong>sudo yum install yum-utils</strong><br> &nbsp;</li> 
 <li>Run the installation again.</li> 
</ol> 
<p>&nbsp;</p> 
<p> For a clean install, simply start from step 3, then 4.<br> This should be fixed for version 6 onwards. </p>]]></description>
          <pubDate>Wed, 12 Jun 2019 08:32:40 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h40r0y/imdb-hangs-during-install-on-linux-centos</guid>
          <dc:creator>Yakov Shaul</dc:creator>
        </item>

      <item>
          <title>Issues re-installing Pyramid on Linux</title>
          <link>https://community.pyramidanalytics.com/t/m20l5z/issues-re-installing-pyramid-on-linux</link>
          <description><![CDATA[<p> If after a failed attempt to install Pyramid you try to&nbsp;re-install (after running the uninstaller), and you get the following error message: <strong>“Error reading INI File /home/admin/Pyramid 2018/config.ini”</strong> </p> 
<p> &nbsp;<img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/6701bdbe-4dfa-422a-811b-ba5a1f250d08/547.jpg">&nbsp; </p> 
<p> You will need to delete the following files: </p> 
<ol> 
 <li>Under /<strong>etc</strong> folder, delete the following file: pareg.ini</li> 
 <li>Under /<strong>etc</strong> you will have the following folder: <strong>init.d</strong>, inside the folder you will need to delete the following files: 
  <ul> 
   <li><strong>pyramidAgent, </strong></li> 
   <li><strong>pyramidFs,</strong></li> 
   <li><strong>pyramidPG, </strong></li> 
   <li><strong>pyramidRTE, </strong></li> 
   <li><strong>pyramidTE, </strong></li> 
   <li><strong>pyramidWeb</strong>.</li> 
  </ul> </li> 
</ol> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/0278354d-a076-4d83-91e2-41d9ffcde0c5/547.jpg"> </p> 
<p> Once you have deleted the files above run the installation again. </p>]]></description>
          <pubDate>Mon, 03 Jun 2019 09:48:22 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/m20l5z/issues-re-installing-pyramid-on-linux</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>How to revert back to a previous version of Pyramid</title>
          <link>https://community.pyramidanalytics.com/t/m2wwcy/how-to-revert-back-to-a-previous-version-of-pyramid</link>
          <description><![CDATA[<p> On this page, you will find how to revert back your Pyramid version to a previous&nbsp;one. </p> 
<p> <strong>Pre-requisites:</strong> </p> 
<ul> 
 <li>A backup of the Pyramid repository from the version you wish to revert back to.</li> 
 <li>The installer of the version you need.</li> 
</ul> 
<p> <strong>First Steps:</strong> </p> 
<ul> 
 <li>If it wasn't already done, If you're using an IMDB (In-Memory DB), backup the 'imdata'&nbsp;folder to restore later.<br> The default location is: "C:\Program Files\<strong>Pyramid</strong>\repository\imdata"</li> 
 <li>If you're using publications, backup the below folder to have the ability to review and open published publications:<br> "C:\Program Files\<strong>Pyramid</strong>\repository\general"<br> This step should be done on each Pyramid server.</li> 
 <li>Copy the machine key from <strong>config.ini&nbsp;</strong><br> (C:\Program Files\<strong>Pyramid</strong>\config.ini).<br> After the reinstallation copy the old machine key to the new <strong>config.ini</strong><br> look for:<br> <em>[machine]<br> installType=1<br> host=myPyramidserver.com<br> <strong>machineKey</strong>=0e93adc283152805cceb676d9a38ec1e</em></li> 
</ul> 
<p> <strong>Uninstall:</strong> </p> 
<ul> 
 <li>Remove <strong>Pyramid </strong>completely from the server(s) through the control panel.<br> For more details, please follow up on this article:<br> '<a href="/t/h4g9v6/how-to-fully-uninstall-pyramid-2018-when-the-installer-fails" rel="nofollow noopener noreferrer">How to fully uninstall Pyramid</a>'</li> 
</ul> 
<p> <strong>Re-install:</strong> </p> 
<ul> 
 <li>Restore the backup of the Pyramid repository.</li> 
 <li>Install the previous version of Pyramid<br> * Use the option of using an existing DB and point it to the restored DB.</li> 
 <li>After the installation is complete, copy the old machine key into the new <strong>config.ini</strong></li> 
 <li>Remove all the <strong>new </strong>server entries in the table "server_instances" (In Pyramid repository)&nbsp;(check according to the date they were added)</li> 
 <li>Restart Pyramid services and try to log in.</li> 
 <li>Restore the contents of the&nbsp;IMDB and&nbsp;General folder to their relative locations.</li> 
</ul>]]></description>
          <pubDate>Thu, 07 Feb 2019 13:48:21 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/m2wwcy/how-to-revert-back-to-a-previous-version-of-pyramid</guid>
          <dc:creator>Guy Lavi</dc:creator>
        </item>

      <item>
          <title>After upgrading Pyramid, it is not possible to access Pyramid using the URL host name defined in IIS</title>
          <link>https://community.pyramidanalytics.com/t/h42hhb/after-upgrading-pyramid-it-is-not-possible-to-access-pyramid-using-the-url-host-name-defined-in-iis</link>
          <description><![CDATA[<p> <u><strong>ISSUE:</strong></u> </p> 
<p> After upgrading a Pyramid install that uses IIS, the site is no longer accessible, please check that the following is correct: </p> 
<p> 1) </p> 
<p> Open IIS &gt;Double click on the server name(1)&gt;Double&nbsp;Click on "Application Request Routing Cache"(2)<br> &nbsp;<img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/4f41dcf7-1cdd-4828-a721-f867e37f9315/547.png">&nbsp;<br> <br>Make sure that the box "Enable proxy" is ticked and if not tick it (3)&gt;Click on Apply(4) </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/8492cf0b-6482-4636-b020-e65e6b408bc5/547.png">&nbsp; </p> 
<p> 2) </p> 
<p> Check that the Rewrite URL rule is correct on the Pyramid2018 website.&nbsp;Double click on the Pyramid2018 website&nbsp;&gt;"URL Rewrite"&gt;"ReveseProxyInboundRule1" </p> 
<p> The Rewrite URL should be&nbsp;"<span class="pen6">http</span><span class="pen6">://localhost:8181/{R:1}</span>" as shown below, if it is not, please update it, click apply and do an IISRESET. </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/19f562ad-23a2-4ca0-8d5e-ca1bfe4b0e50/547.jpg">&nbsp; </p>]]></description>
          <pubDate>Wed, 05 Sep 2018 08:18:41 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h42hhb/after-upgrading-pyramid-it-is-not-possible-to-access-pyramid-using-the-url-host-name-defined-in-iis</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>How to fully uninstall Pyramid.</title>
          <link>https://community.pyramidanalytics.com/t/h4g9v6/how-to-fully-uninstall-pyramid</link>
          <description><![CDATA[<p><strong>General Note:</strong><br> Attachments and the article were modified to remove the 'Pyramid' product completely.<br> If your original installation was with 'Pyramid 2018' and then upgraded, then you should look for 'Pyramid 2018' folders instead of just 'Pyramid'</p>
<p><strong>Steps:</strong><br> If your installer failed, or if you have uninstalled Pyramid but some components&nbsp;were not removed, please take the following steps:</p>
<ol>
 <li>Uninstall the application properly from Windows. (from the control panel)</li>
 <li>Check that the installation folder and Pyramid services&nbsp;are&nbsp;completely removed.<br> If the folder was&nbsp;not deleted, <u>then manually delete it</u>.&nbsp;<br> (The default location is C:\Program Files\Pyramid)</li>
 <li>Uninstall the R installation if not removed by the uninstaller.&nbsp;</li>
 <li>Run the <strong>attached</strong> command-line script if the uninstaller does not remove the Pyramid services.<br> Run the script&nbsp;as an administrator.&nbsp;It will stop and delete the services and remove folder shares.<br> This script will wipe out all services and&nbsp;remove the registry entries.<br> - Make sure NO "Pyramid ..." services exist.<br> -&nbsp;Check that the Registry entry was removed<br> If it wasn't, delete it manually. (See attached image)</li>
 <li>Reboot the machine before trying to re-install again.</li>
</ol>
<p>Please note that when re-installing, if using a&nbsp;SQL instance for the Pyramid repository database, please do not use a password for the SQL account&nbsp;that contains any special characters.<br> This also applies when asked to set up the initial user.<br> The password MUST NOT&nbsp;contain any special characters.&nbsp;&nbsp;</p>
<p><strong>Further assistance:</strong><br> If you require assistance, please open a support request by opening a support ticket on our <a href="https://Support.PyramidAnalytics.com" rel="nofollow noopener noreferrer" target="_blank">Support site</a> and attach the two installer log files.</p>
<ol>
 <li>Pyramidinstaller.log</li>
 <li>installbuilder_installer.log</li>
</ol>
<p>The installer logs are in the temp folder of the user who did the installation.<br> By default, it can be found here:&nbsp;C:\Users\<strong>USERNAME</strong>\AppData\Local\Temp<br> *replace the username with the username of the person that did the install.</p>
<p>The location can also be found by opening a Run box and typing&nbsp;%temp%.</p>]]></description>
          <pubDate>Tue, 10 Apr 2018 12:56:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/h4g9v6/how-to-fully-uninstall-pyramid</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>How to upgrade Pyramid 2020 to the latest version</title>
          <link>https://community.pyramidanalytics.com/t/q5p7tc/how-to-upgrade-pyramid-2020-to-the-latest-version</link>
          <description><![CDATA[<ol> 
 <li>Backup the underlying Pyramid 2020 content&nbsp;database</li> 
 <li>Download the latest installer from&nbsp;<a href="https://www.pyramidanalytics.com/download" rel="nofollow noopener noreferrer" target="_blank">https://www.pyramidanalytics.com/download</a></li> 
 <li>Run the downloaded installer on all Pyramid 2020 Machines in the deployment, one at a time.</li> 
 <li>Once all servers have been upgraded, try to log in and perform basic tests.</li> 
</ol> 
<p> The version number can be seen as shown below: </p> 
<p> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/8f0f82b7-43bd-4be1-b15d-77868b759973/547.jpg">&nbsp; </p> 
<p> More info on the <a href="http://help.pyramidanalytics.com/Content/Root/Guides/installation/Main/Upgrades.htm?Highlight=upgrade" rel="nofollow noopener noreferrer" target="_blank">online help</a> </p>]]></description>
          <pubDate>Mon, 12 Feb 2018 13:46:10 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/q5p7tc/how-to-upgrade-pyramid-2020-to-the-latest-version</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>How to update your license when moving your Pyramid 2018 install to a new server</title>
          <link>https://community.pyramidanalytics.com/t/6311rj/how-to-update-your-license-when-moving-your-pyramid-2018-install-to-a-new-server</link>
          <description><![CDATA[<p> <u><strong>NOTE</strong>: Relevant for version&nbsp;.81</u> </p> 
<p> The Pyramid 2018 license is tied to the machine key which is unique to each server/computer. Therefore when moving a Pyramid 2018 install to a new server it will be necessary to update the license with the new machine key.<br> Without doing this update a license violation error will be shown when logging in. </p> 
<p> Your Pyramid account manager can update your license for you.&nbsp;<br> For them to do so,&nbsp;they will require the deactivation key from the current install and the machine key from the new install.&nbsp;See below on how to get these keys: </p> 
<ol> 
 <li>Deactivate the Pyramid 2018 install where is currently is installed as shown below:<br> Admin&gt;Access&gt;Licensing&gt;Deactivate Machine&nbsp;<br> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/7cbd0418-f7bc-42a0-a4a3-2c1c296152c2/547.png">After clicking on the "Deactivate machine" button, the deactivation key will be shown which should be copied and saved to send to your account manager to update the license key.<br> <br>Click on the Copy key button to save the key to the clipboard and save this in a safe place.<br> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/a236bc3d-58c5-4a1d-a88a-555d1d41a9c0/547.png">&nbsp;<br> &nbsp;</li> 
 <li>Once you have installed Pyramid 2018 on the new server, log in to it, and click on the "New Deployment" tab &gt; Generate Machine Key&gt;Copy.<br> <img src="https://s3-us-west-2.amazonaws.com/media.forumbee.com/i/9a2eed9b-f288-4d11-874b-ba7cfd86eade/547.png">&nbsp;&nbsp;<br> <br>Once the deactivation&nbsp;key from the old install and the machine key from the new install have been acquired, send them to your Pyramid account manager. They will then issue a new license key which can be uploaded using the "Upload" button shown above.</li> 
</ol>]]></description>
          <pubDate>Sun, 17 Dec 2017 15:58:37 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/6311rj/how-to-update-your-license-when-moving-your-pyramid-2018-install-to-a-new-server</guid>
          <dc:creator>Daniel</dc:creator>
        </item>

      <item>
          <title>How to best uninstall/Re-install the Pyramid 2018</title>
          <link>https://community.pyramidanalytics.com/t/80k19s/how-to-best-uninstallre-install-the-pyramid-2018</link>
          <description><![CDATA[<p> Before uninstalling, please note that: </p> 
<ul> 
 <li>When uninstalling the <strong>Alpha&nbsp;</strong>or <strong>Beta releases </strong>that are using the built-in&nbsp;repository,&nbsp;uninstalling will wipe out the database permanently.<br> If you wish to keep the database, please back it up manually before the uninstall.</li> 
 <li>During the uninstall of the <strong>RTM</strong>, you can back up the built-in&nbsp;repository during uninstall.</li> 
 <li>Content that was created in the <strong>Alpha </strong>or <strong>Beta </strong>releases will not work in the <strong>RTM </strong>release.</li> 
 <li>R is uninstalled on its own. Just confirm&nbsp;it was removed.</li> 
 <li>The services and shares removed by the uninstaller as well. Just confirm&nbsp;they were removed.</li> 
 <li>The IIS website is removed by the uninstaller. If it was not removed, it can be removed manually. You can manually uninstall IIS if you wish.</li> 
</ul> 
<p> <br> If your installer fails, or if you have uninstalled Pyramid 2018 but some components&nbsp;were not removed, do the following: </p> 
<ol> 
 <li>Uninstall the application properly from windows.</li> 
 <li>Check that the installation folder is completely removed.<br> if not <u>delete it completely</u>.</li> 
 <li>Uninstall the R installation.</li> 
 <li>Optional: Download and run the attached* command script.<br> This script will wipe out all services and folder shares and&nbsp;remove the registry entries.<br> - Make sure NO "Pyramid ..." services exists.<br> -&nbsp;Check that Registry entry was removed.<br> &nbsp; If it wasn't, delete it manually. (See attached image)</li> 
 <li>In some cases, a reboot is required.</li> 
</ol> 
<p> *Save the attached&nbsp;script to your computer (you will need to unzip the file).&nbsp;Then run it as an administrator.&nbsp;It will stop and delete services and removed folder shares. </p> 
<p> <u>Note.</u><br> The installer enables to install&nbsp;to IIS and to remote or local existing SQL/Postgres repository.<br> Currently, with the RTM version, you CANNOT install on top of an existing repository.<br> <br>When the machine is clean, you can attempt to reinstall if needed.<br> &nbsp; </p> 
<p> If you require assistance, please open a support request by sending an email to <a rev="auto" rel="nofollow noopener noreferrer" href="mailto:Support@PyramidAnalytics.com"> Support@PyramidAnalytics.com </a></p>]]></description>
          <pubDate>Wed, 01 Nov 2017 20:55:00 +0000</pubDate>
          <guid>https://community.pyramidanalytics.com/t/80k19s/how-to-best-uninstallre-install-the-pyramid-2018</guid>
          <dc:creator>John Hormaechea</dc:creator>
        </item>

      </channel>
</rss>
