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 |
|
|
Timezone |
IANA name, e.g. |
|
Customer data path |
Where customer files will be stored, e.g. |
|
Linux group names |
Groups for SSH users and admins |
|
Email transport |
|
|
License key |
From |
|
Registry credentials |
From |
|
Deploy tokens |
From |
MySQL installs — also need (from your DBA):
|
Item |
Notes |
|---|---|
|
DB server host + port |
Reachable from this server |
|
Main database name |
e.g. |
|
DB user + password |
With |
Oracle installs — also need (from your DBA):
|
Item |
Notes |
|---|---|
|
TNS connect string |
Easy Connect format: |
|
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.mdinside 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 |
— |
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:
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:
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:
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:
Bashchcon -Rt svirt_sandbox_file_t /opt/pcr360/config /opt/pcr360/certs "${PCR360_DATA_PATH}"
Step 2: Extract the Install Package
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.
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
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 |
|
|
Pull pre-built images from registry? |
Y (default) |
|
Registry URL |
From |
|
Registry username |
From |
|
Registry password |
From |
|
PCR360 deploy token |
From |
|
sql360 deploy token |
From |
|
AI service tokens |
From |
|
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. |
|
Timezone |
e.g. |
|
Customer data group / admin group |
Your Linux group names for data directory access |
|
License key |
From |
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
manualmode) -
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 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):
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):
cp config/prod-custom.ini.example config/prod-custom.ini
vi config/prod-custom.ini
B3. Complete the Install
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
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:
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
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
sudo bash scripts/deploy.sh
Pulls images and starts containers. First run takes several minutes.
C3. Verify
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:
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:
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:
-
Check troubleshooting.md for common issues
-
View the full application log:
sudo bash scripts/logs.sh -
Contact PCR360 support with the output of
docker compose psand the relevant log lines