Entorno de prueba con Docker
El entorno de prueba ejecuta, en containers, Riversoft STCP Gemini y Riversoft STCP DirectLink completos, con la base de datos, la Riversoft STCP Gemini API y el Riversoft Console Portal. Sirve para evaluar los productos, capacitar equipos, reproducir problemas y validar versiones nuevas antes de actualizar producción.
Solo para pruebas
El entorno se ejecuta sin TLS, guarda contraseñas y secretos en el archivo .env y publica la base de datos en el host. No use estos archivos como base para un entorno de producción. Para producción, siga Instalación y Seguridad.
Descarga
Descargue el paquete con los archivos del entorno: stcp-test-environment.zip.
| Archivo | Contenido |
|---|---|
Dockerfile | Imagen base Oracle Linux 9 con el repositorio de Riversoft y un destino por servicio. |
docker-compose.yml | Servicios, volúmenes, puertos y perfiles del entorno. |
.env.example | Plantilla de las variables: instancia, base, secretos, licencias, puertos y versión del portal. |
entrypoints/ | Scripts que generan la configuración de cada componente a partir de la plantilla del paquete e inician el proceso en primer plano. |
db/init/ y scripts/download-db-scripts.sh (Linux y macOS) o scripts/download-db-scripts.ps1 (Windows) | Creación de las bases con los scripts de Riversoft para MariaDB y del usuario de base de datos de los productos. El script de Linux y macOS usa unzip, bsdtar, python3 o, si no hay ninguno, un contenedor temporal. |
README.md | Resumen del entorno, comandos y enlaces a esta página en los tres idiomas. |
El entorno se probó con Oracle Linux 9, MariaDB 10.11 y stcpdirectlink-portal 3.12.1-0.
Qué ejecuta el entorno
| Servicio | Contenido | Puerto en el host |
|---|---|---|
db | MariaDB 10.11, con la base de configuración y la base de log. | 3306 |
stcpgemini-api | Riversoft STCP Gemini API y Riversoft Console Portal (modo -lite). | 33070 |
stcpgemini-server | Riversoft STCP Gemini Server y Riversoft STCP Gemini Rename. | 3305 (OFTP) |
stcpdirectlink | Riversoft STCP DirectLink, Riversoft STCP DirectLink Portal y Riversoft STCP Gemini Rename. | 8080 |
flowchart LR
NAV[Navegador] -->|33070| API[stcpgemini-api<br/>Gemini API y Console Portal]
NAV -->|8080| DL[stcpdirectlink<br/>DirectLink y DirectLink Portal]
PARC[Socio OFTP] -->|3305| SRV[stcpgemini-server<br/>Gemini Server y Rename]
API -->|Supervisión 33050| SRV
API -->|Supervisión 33060| DL
API --> DB[(db<br/>MariaDB)]
SRV --> DB
DL --> DB
SRV --- CP[(Volumen<br/>mailboxes)]
DL --- CP
Riversoft STCP Gemini Server y Riversoft STCP DirectLink comparten el volumen de los buzones (/usr/local/stcp/data). Los puertos de supervisión solo son accesibles en la red interna del compose, para la Riversoft STCP Gemini API.
Requisitos previos
- Docker con el plugin Compose.
- En computadoras ARM, como Mac con Apple Silicon, la emulación
amd64habilitada. Los paquetes de Riversoft se distribuyen parax86_64, y los servicios de los productos usanplatform: linux/amd64. - Acceso a
repo.riversoft.com.bry awww.riversoft.com.brdurante el build. - Archivo de licencia de Riversoft STCP DirectLink y, si corresponde, de Riversoft STCP Gemini Rename, proporcionados por Riversoft.
- En Windows, Docker Desktop y PowerShell 5.1 o superior. Si la política de ejecución bloquea el script, ejecute
powershell -ExecutionPolicy Bypass -File .\scripts\download-db-scripts.ps1. - La clave de cifrado de las contraseñas (
STCP_CONFIG_PASSPHRASE), usada por todos los componentes. Vea Clave de cifrado de las contraseñas.
Paso a paso
Prepare los archivos
unzip stcp-test-environment.zip && cd stcp-test-environment
cp .env.example .env
./scripts/download-db-scripts.sh
cp <licencia>.jwt licenses/stcpdirectlink-license.jwtEn el .env, ajuste las contraseñas, los secretos y la clave de cifrado (STCP_CONFIG_PASSPHRASE). Todos los componentes usan el mismo valor. Revise en el script 0-STCPGeminiCreateDatabase_*.sql los nombres de las bases creadas y, si son diferentes, ajuste STCP_DB_CONFIG y STCP_DB_LOG.
Inicie la base, la API y el Console Portal
docker compose up -d --buildEn el primer inicio, MariaDB ejecuta los scripts de Riversoft y crea el usuario de base de datos de los productos.
Cree la instancia en el Riversoft Console Portal
Abra http://localhost:33070, inicie sesión con el operador administrador predeterminado (stcpadmin) y cambie la contraseña. Después:
- Cree la instancia con el nombre definido en
STCP_INSTANCE. - Registre los servicios de red de OFTP (puerto
3305) y de la API de Riversoft STCP DirectLink (puerto8080). Al crear el servicio de la API, el Console Portal completa las rutas predeterminadas de las páginas estáticas y de las plantillas. - Registre los servicios Supervisión (gemini), en el puerto
33050, y Supervisión (directlink), en el puerto33060, con la dirección0.0.0.0y una credencial de supervisión para cada uno. - En el registro API/Supervisión, indique
stcpgemini-server, puerto33050, ystcpdirectlink, puerto33060, con las credenciales de supervisión. - Registre un usuario de prueba.
Inicie Gemini Server y DirectLink
docker compose --profile transfer up -d --buildLos dos servicios no se inician sin la instancia. Vea Creación de la instancia.
Pruebe
- Riversoft STCP DirectLink Portal:
http://localhost:8080/portal, con el usuario de prueba. - API de Riversoft STCP DirectLink: siga el Inicio rápido de la Riversoft STCP DirectLink API con
http://localhost:8080/directlink/v2. - OFTP: configure un socio que apunte al puerto
3305del host.
Elimine el entorno
Al terminar las pruebas, detenga los containers y elimine los volúmenes, las imágenes creadas en el build y la red del entorno:
docker compose --profile transfer down -v --rmi localAtención
El -v elimina la base de datos y los buzones del entorno, incluidos la instancia y los registros hechos en el Console Portal. Para mantener los datos y solo detener el entorno, use docker compose --profile transfer down.
Después, elimine la carpeta stcp-test-environment, que contiene el .env con las contraseñas y el archivo de licencia.
Configuración generada
En el primer inicio, cada container genera su archivo de configuración a partir de la plantilla instalada por el paquete (example-*.json), con los valores del .env. Así, la configuración acompaña la versión instalada. Para usar un archivo propio, móntelo como volumen en la misma ruta: si el archivo existe, se mantiene.
| Componente | Archivo |
|---|---|
| Riversoft STCP Gemini API | /usr/local/stcpgemini-api/configs/config.json |
| Riversoft Console Portal | /usr/local/stcpgemini-api/portal/app/configs/config.json |
| Riversoft STCP Gemini Server | /usr/local/stcp/configs/stcpserver.config.json |
| Riversoft STCP DirectLink | /usr/local/stcpdirectlink/configs/config.json |
| Riversoft STCP DirectLink Portal | /usr/local/stcpdirectlink/static/portal/assets/configs/config.json |
| Riversoft STCP Gemini Rename | /usr/local/stcpren/configs/config.json |
docker-compose.yml
# Riversoft STCP Gemini and Riversoft STCP DirectLink test environment.
# Step 1: docker compose up -d --build (database + API + Console Portal)
# Step 2: create the instance and a test user in the Riversoft Console Portal
# Step 3: docker compose --profile transfer up -d --build (Gemini Server + DirectLink)
name: stcp-test
x-stcp-env: &stcp-env
STCP_INSTANCE: ${STCP_INSTANCE:?set STCP_INSTANCE in .env}
STCP_DB_HOST: db
STCP_DB_PORT: "3306"
STCP_DB_USER: ${STCP_DB_USER:-stcp}
STCP_DB_PASSWORD: ${STCP_DB_PASSWORD:?set STCP_DB_PASSWORD in .env}
STCP_DB_CONFIG: ${STCP_DB_CONFIG:-GEMINI_DBConfig}
STCP_DB_LOG: ${STCP_DB_LOG:-GEMINI_DBLog}
STCP_CONFIG_PASSPHRASE: ${STCP_CONFIG_PASSPHRASE:?set STCP_CONFIG_PASSPHRASE in .env}
STCPREN_LICENSE: ${STCPREN_LICENSE:-}
TZ: ${TZ:-America/Sao_Paulo}
services:
db:
image: mariadb:10.11
environment:
MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD:?set MARIADB_ROOT_PASSWORD in .env}
STCP_DB_USER: ${STCP_DB_USER:-stcp}
STCP_DB_PASSWORD: ${STCP_DB_PASSWORD}
STCP_DB_CONFIG: ${STCP_DB_CONFIG:-GEMINI_DBConfig}
STCP_DB_LOG: ${STCP_DB_LOG:-GEMINI_DBLog}
TZ: ${TZ:-America/Sao_Paulo}
command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
volumes:
- db-data:/var/lib/mysql
- ./db/init:/docker-entrypoint-initdb.d:ro
ports:
- "${DB_PORT:-3306}:3306"
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 30
start_period: 30s
stcpgemini-api:
platform: linux/amd64
build:
context: .
target: stcpgemini-api
environment:
<<: *stcp-env
STCP_API_PORT: "33070"
STCP_PORTAL_API_URL: http://localhost:${API_PORT:-33070}
depends_on:
db:
condition: service_healthy
ports:
- "${API_PORT:-33070}:33070"
restart: unless-stopped
stcpgemini-server:
platform: linux/amd64
profiles: ["transfer"]
build:
context: .
target: stcpgemini-server
environment:
<<: *stcp-env
depends_on:
db:
condition: service_healthy
stcpgemini-api:
condition: service_started
volumes:
- mailboxes:/usr/local/stcp/data
- ./licenses:/licenses:ro
# Gemini supervision: reached only by stcpgemini-api, on the compose internal network.
expose:
- "33050"
ports:
- "${OFTP_PORT:-3305}:${OFTP_PORT:-3305}"
restart: unless-stopped
stcpdirectlink:
platform: linux/amd64
profiles: ["transfer"]
build:
context: .
target: stcpdirectlink
args:
STCPDIRECTLINK_PORTAL_VERSION: ${STCPDIRECTLINK_PORTAL_VERSION:-3.12.1-0}
environment:
<<: *stcp-env
STCPDIRECTLINK_SECRET: ${STCPDIRECTLINK_SECRET:?set STCPDIRECTLINK_SECRET in .env}
STCPDIRECTLINK_LICENSE_FILE: /licenses/${STCPDIRECTLINK_LICENSE:-stcpdirectlink-license.jwt}
STCPDIRECTLINK_PORTAL_API_URL: http://localhost:${DIRECTLINK_PORT:-8080}/directlink/v2
depends_on:
db:
condition: service_healthy
stcpgemini-api:
condition: service_started
volumes:
- mailboxes:/usr/local/stcp/data
- ./licenses:/licenses:ro
# DirectLink supervision: reached only by stcpgemini-api, on the compose internal network.
expose:
- "33060"
ports:
- "${DIRECTLINK_PORT:-8080}:${DIRECTLINK_PORT:-8080}"
restart: unless-stopped
volumes:
db-data:
mailboxes:Comandos útiles
docker compose --profile transfer ps
docker compose --profile transfer logs -f stcpgemini-server stcpdirectlink
docker compose --profile transfer down # detiene, manteniendo los volúmenes
docker compose --profile transfer down -v # detiene y elimina la base y los buzonesSolución de problemas
| Síntoma | Causa probable | Solución |
|---|---|---|
stcpgemini-server o stcpdirectlink se reinicia continuamente. | La instancia no existe o su nombre difiere de STCP_INSTANCE. | Cree la instancia en el Console Portal con el mismo nombre e inicie de nuevo el perfil transfer. |
| El Console Portal no muestra la supervisión. | Los servicios de supervisión o el registro API/Supervisión no están configurados. | Revise los servicios en la instancia y use los nombres de los containers en el registro API/Supervisión. |
| Riversoft STCP DirectLink Portal no abre. | La ruta de las páginas estáticas del servicio de la API no es la predeterminada. | Verifique que la ruta sea /usr/local/stcpdirectlink/static, sin barra al final. |
| El build falla al instalar los paquetes en una computadora ARM. | La emulación amd64 no está habilitada. | Habilite la emulación en Docker. |