PCR-360 Wiki

Licensed Install

PCR360 Installation Guide — Licensed Self-Install

This guide covers both fresh installs and migrations from bare-metal PCR360 for customers who received a PCR360 install package and will run the installation themselves. Your server requires internet access to pull Docker images during install.

Air-gapped server? If your server cannot reach the internet, contact PCR360 support — you need the separate air-gap bundle instead. See Air-Gapped Install .


Before You Begin — Information to Gather

Have these values on hand before starting. The install wizard will prompt for them.

All installs:

Item

Where to get it

Server hostname(s)

DNS names for prod vhost, and optionally test vhost

SSL mode

self-signed, manual (customer CA cert), or letsencrypt (requires ACME)

Timezone

IANA name, e.g. America/New_York, America/Chicago

Customer data path

Where customer files will be stored, e.g. /data/pcr360

Linux group names

Groups for SSH users and admins

Email transport

FILE (writes to disk) or SMTP (host, port, from address)

License key

From INSTALL-CREDENTIALS.md

Registry credentials

From INSTALL-CREDENTIALS.md

Deploy tokens

From INSTALL-CREDENTIALS.md

MySQL installs — also need (from your DBA):

Item

Notes

DB server host + port

Reachable from this server

Main database name

e.g. pcr360_prod

DB user + password

With CREATE, ALTER, INDEX, SELECT, INSERT, UPDATE, DELETE, DROP on the DB

Oracle installs — also need (from your DBA):

Item

Notes

TNS connect string

Easy Connect format: host:port/service_name

Schema names

Main, archive, metadata schemas

Oracle Instant Client

Version + zip file from Oracle — you install this on the server

Migration from bare-metal PCR360 — also need:

Item

Notes

Existing database credentials

Same DB, same credentials — no migration to a new DB is required

Old installation accessible

The deploy wizard will prompt for the paths it needs during import


What PCR360 Provided

Your install package contains:

  • pcr360-licensed-{version}-{date}.tar.gz — the deployment scripts, docs, and configuration templates

  • INSTALL-CREDENTIALS.md inside the archive — your registry credentials, deploy tokens, and license key

Keep these credentials secure. Delete INSTALL-CREDENTIALS.md after completing the installation.


Server Requirements

Requirement

Minimum

Recommended

OS

Ubuntu 24.04 LTS or RHEL 9

Ubuntu 24.04 LTS or RHEL 9

CPU

2 cores

4 cores

RAM

4 GB

8 GB

Disk

40 GB

100 GB

Ports

80, 443 open inbound

Internet

Must reach registry.gitlab.com

External database required: PCR360 does not run a database inside Docker. You need a MySQL or Oracle database server reachable from this server.


Step 1: Install Docker

If Docker is not already installed:

Ubuntu / Debian:

Bash
apt-get update && apt-get install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
    | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
    https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
    > /etc/apt/sources.list.d/docker.list
apt-get update && apt-get install -y docker-ce docker-ce-cli containerd.io \
    docker-buildx-plugin docker-compose-plugin

RHEL 8/9, Rocky Linux, AlmaLinux:

Bash
dnf install -y dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io \
    docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker

Verify:

Bash
docker compose version   # should print v2.x.x or higher

SELinux (RHEL/Rocky/Alma): If SELinux is enforcing, run this after deploying to allow Docker bind mounts:

Bash
chcon -Rt svirt_sandbox_file_t /opt/pcr360/config /opt/pcr360/certs "${PCR360_DATA_PATH}"

Step 2: Extract the Install Package

Bash
sudo mkdir -p /opt/pcr360
sudo tar -xzf pcr360-licensed-{version}-{date}.tar.gz -C /opt/pcr360 --strip-components=1
cd /opt/pcr360

Open INSTALL-CREDENTIALS.md and keep it nearby — you will enter these values during the install wizard.

Bash
cat INSTALL-CREDENTIALS.md

Step 3: Oracle Instant Client (Oracle only — skip for MySQL)

If your PCR360 database runs on Oracle, install Oracle Instant Client on this server before continuing. See oracle-instant-client.md for the full steps.

A common install location is /opt/oracle/instantclient. The install wizard will prompt you for the path.


Section B: Fresh Install

Follow this section if you are installing PCR360 on a clean database with no existing data.

Skip to Section C if you are moving from a bare-metal PCR360 installation.

B1. Run the Install Wizard

Bash
sudo bash scripts/deploy.sh

The wizard walks through everything interactively. Use the values from INSTALL-CREDENTIALS.md when prompted for registry credentials, deploy tokens, and the license key.

Wizard sections and what to enter:

Wizard prompt

Where the value comes from

Template selection (MySQL / Oracle / SSO)

Your DB type — confirm with your DBA

Which components to deploy

PCR360 will have told you (prod, test, AI, etc.)

Hostname(s)

Your DNS name for this server

SSL mode

self-signed, manual (your CA cert), or letsencrypt

Pull pre-built images from registry?

Y (default)

Registry URL

From INSTALL-CREDENTIALS.md

Registry username

From INSTALL-CREDENTIALS.md

Registry password

From INSTALL-CREDENTIALS.md

PCR360 deploy token

From INSTALL-CREDENTIALS.md

sql360 deploy token

From INSTALL-CREDENTIALS.md

AI service tokens

From INSTALL-CREDENTIALS.md (if applicable)

Migrate from bare-metal?

N

Database host / port / name / user / password

From your DBA

Data directory path

Where you want customer data files stored, e.g. /data/pcr360

Timezone

e.g. America/New_York, America/Chicago

Customer data group / admin group

Your Linux group names for data directory access

License key

From INSTALL-CREDENTIALS.md

B2. Before the Build — Pre-Build Tasks

The wizard will pause and ask:

Continue to build now? (Y/n):

Answer n if you still need to:

  • Create the database and grant permissions

  • Place SSL certificates (if using manual mode)

  • Configure custom application settings

Then re-run sudo bash scripts/deploy.sh when ready — it will resume from where it stopped.

Create the database:

Run the database setup generator to produce the SQL you need:

Bash
bash scripts/gen-db-setup.sh --output setup.sql

Have your DBA review and run setup.sql against your database server. See db-setup.md for full details and options.

Place SSL certificates (manual mode only):

Bash
sudo cp your-cert.crt /opt/pcr360/certs/prod/vhost1.crt
sudo cp your-key.key  /opt/pcr360/certs/prod/vhost1.key

Configure application settings (optional):

Bash
cp config/prod-custom.ini.example config/prod-custom.ini
vi config/prod-custom.ini

B3. Complete the Install

Bash
sudo bash scripts/deploy.sh

The wizard resumes from the saved checkpoint and goes straight to the image pull step. First run takes several minutes as images are downloaded from the registry.

When asked to initialize the database — answer y.

B4. Verify

Bash
docker compose ps        # web-prod should show "healthy"
sudo bash scripts/logs.sh

Log in at <https://your-hostname/> using the admin credentials from INSTALL-CREDENTIALS.md.

After confirming the install works, delete the credentials file:

Bash
rm /opt/pcr360/INSTALL-CREDENTIALS.md

Section C: Migration from Existing PCR360

Follow this section if you are moving from an existing bare-metal (non-Docker) PCR360 installation to Docker. The deploy wizard handles the import process interactively — the steps are almost identical to a fresh install.

C1. Run the Install Wizard

Bash
sudo bash scripts/deploy.sh

Use INSTALL-CREDENTIALS.md for registry and token values, the same as a fresh install. When the wizard asks whether to import from an existing bare-metal installation, answer y — it will prompt for the paths it needs and run the import scripts automatically.

Migration-specific wizard answers:

Wizard prompt

Answer

Import from bare-metal installation?

Y

Initialize database?

N — database already has data

Database host / port / name / user / password

Same as the existing installation

All other prompts (hostnames, SSL, timezone, groups, license key) are the same as a fresh install.

When the wizard pauses at Continue to build now? — answer n only if you still need to place SSL certs or configure prod-custom.ini, then re-run. Otherwise y.

C2. Complete the Install

Bash
sudo bash scripts/deploy.sh

Pulls images and starts containers. First run takes several minutes.

C3. Verify

Bash
docker compose ps        # web-prod should show "healthy"
sudo bash scripts/logs.sh

Log in at <https://your-hostname/> and confirm your existing data is intact.

After verifying, delete the credentials file:

Bash
rm /opt/pcr360/INSTALL-CREDENTIALS.md

For details on what the import scripts do, see migration-install.md.


Section D: Updating to a New Version

Once installed, updates are self-service — no new package from PCR360 is required. Run:

Bash
cd /opt/pcr360
bash scripts/update.sh

The script checks for new commits on your current branch, prompts to confirm the update, pulls new images, restarts containers, and runs any required SQL migrations. Your registry and deploy tokens are reused automatically.

See updating.md for the full update walkthrough.


Getting Help

If you run into problems during installation:

  1. Check troubleshooting.md for common issues

  2. View the full application log: sudo bash scripts/logs.sh

  3. Contact PCR360 support with the output of docker compose ps and the relevant log lines