This page consolidates the operational story that an IT or DBA reviewer needs in one place. It overlaps with Installation and Deployment Options; those are the how-to references, and this page is the what-to-expect security-review companion.


1. Deployment Model

The choice is reversible. You can start managed and migrate to self-hosted (or vice versa). The data volume is portable and the configuration travels.


2. Network Requirements

Inbound

FromToWhy
Your users (browsers)psLens UI on HTTPS (port per your TLS pattern)The whole point
Your monitoring systemGET /healthzLiveness check, returns 200 OK

Outbound

FromToWhen
psLensYour SWS endpoint (HTTPS)Every request that hits PeopleSoft
psLensYour SMTP serverOnly if auth.enabled: true and you’re using built-in magic-link
psLensAnywhere elseNever. No telemetry, no update checks, no callback to Cedar Hills Group.

This means psLens runs cleanly behind strict egress filtering. Allow it the SWS hostname (and SMTP host if applicable) and deny everything else.

TLS termination

Cross-link: Deployment Options → TLS compares 6 patterns (native cert, Let’s Encrypt, Caddy, nginx, Traefik, Tailscale Serve). Pick the one that matches your existing edge.


3. Sizing

Recommended minimums:

ResourceMinimumNotes
CPU1 vCPUMatches the smallest fly.io machine class currently in production
RAM512 MBMost requests are well under this; reports can spike briefly
Disk1 GB persistentNATS KV + uploaded project archives; grow if you upload many projects
Network~negligibleMetadata queries are small; most traffic is HTML rendering

For deployments handling many concurrent users or running heavy reports, scale up to 2 vCPU / 1 GB RAM. psLens is a single Go process; vertical scaling is the path, and there is no clustering model today.


4. Backup and Restore

What to back up

PathContentsLoss impact
/data/natsAlert history, report output, encrypted credentials, sessions, recently-viewedLose alert/report history; users re-enter PS DB passwords
/data/projectsUploaded PS project archivesRe-upload from source
/app/config.yamlConfigurationRe-create from your config-management tooling
PSLENS_MASTER_KEY (env var)Encryption key for credentials in /data/natsWithout it, the encrypted credentials in NATS KV are unreadable. Back up out of band (password manager, vault, secret store).

Suggested cadence

Example backup script (Docker host):

#!/usr/bin/env bash
set -euo pipefail
TS=$(date -u +%Y%m%dT%H%M%SZ)
docker run --rm \
  --volumes-from pslens \
  -v "$BACKUP_DIR":/backup \
  alpine \
  tar czf "/backup/pslens-${TS}.tar.gz" /data

Restore

  1. Stop the container.
  2. Restore the tarball into a fresh /data volume.
  3. Ensure PSLENS_MASTER_KEY matches the key that encrypted the credentials.
  4. Start the container.

5. Disaster Recovery

Today’s posture:

If you need a higher DR posture than this, the answer is usually “self-host and use your existing DR tooling for the volume.” Cedar Hills Group can help structure that.


6. Monitoring

What ships today

What doesn’t ship today

Recommended wiring for a customer environment:

SignalHow to monitor
Process aliveGET /healthz from your uptime monitor every 30–60 s
ErrorsForward stderr to your log aggregation; alert on error-rate spikes
Auth failuresSame: the request log includes status codes
SWS reachabilitypsLens already shows this; if you want it externalized, build a small probe against /healthz

7. Upgrades and Rollback

Pin production to a vMAJOR.MINOR tag. To upgrade:

docker compose pull
docker compose up -d

The data volume survives the restart. Schema migrations on the NATS KV layer (if any) run automatically on first start of the new version.

To roll back, pin to the prior vMAJOR.MINOR.PATCH tag, docker compose up -d. Downgrade compatibility within a vMAJOR.MINOR is guaranteed; across major versions, check the release notes.

Breaking change contract: breaking changes only land in major version bumps and are called out explicitly in release notes. Patch and minor releases preserve config compatibility.

Cross-link: Deployment Options → Image Tags for the full tag-flavor table.


8. Multi-Environment Support (DEV / TEST / PROD)

A single psLens instance can be configured to connect to multiple PeopleSoft databases (DEV, TEST, PROD, demo) via entries in config.yaml. The database selector appears on every search and report page.

This is usually the right deployment shape: one psLens instance per psLens user community, configured to see every PS environment that community needs. It is rarely useful to run multiple psLens instances unless those communities have non-overlapping access requirements that need to be enforced at the network layer.


9. DBA Concerns: What psLens Does to Your PS Server

For PeopleSoft admins who need to sign off on the load profile:

PropertyBehavior
Connection typeHTTPS to SWS, basic auth, no JDBC, no direct DB connection
Read or writeRead-only. No code path issues INSERT, UPDATE, or DELETE.
Table coverageOnly whitelisted PeopleTools metadata tables (PSRECDEFN, PSPNLDEFN, PSAUTHITEM, process scheduler, IB tables, etc.)
Query shapeMostly short metadata reads. Reports use a 90-second QuerySlow path; nothing runs longer.
ConcurrencyOne concurrent request per active user; small (handful) at any moment for typical customers
Service account permissionsRead on whitelisted tables; no write, no execute

The PS-side audit trail (SWS query log) captures every query psLens issues with timestamps and the SWS service-account OPRID. If psLens is misbehaving, that log shows what it actually did.

Cross-link: Installation → Whitelisting Tables for the full list and SQL.