> ## Documentation Index
> Fetch the complete documentation index at: https://docs-visuolab.levantelab.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Installation and technical configuration

> Plan institutional VisuoLab infrastructure, deployment, security, backups and languages.

This guide supports technical teams planning an institutional **VisuoLab** installation, based on its technical summary.

<Note>
  The summary provides a high-level overview. Validate sizing and configuration for each institution. It does not supply executable installation commands or dependency versions.
</Note>

## Architecture and services

Services run in dedicated Docker containers coordinated with Docker Compose.

| Component | Technology |
| - | - |
| Backend | Laravel / PHP |
| Frontend | Nuxt.js / Vue.js and Vuetify |
| Database | MySQL or MariaDB |
| Cache and queues | Redis |
| Asynchronous jobs | Horizon |
| Video and audio processing | FFmpeg |
| Web server | NGINX |
| Collaborative text editing | Etherpad |
| Videoconferencing | Jitsi Meet |
| Deployment | Docker and Docker Compose |

Deploy on institutional infrastructure or cloud infrastructure according to local policies.

## Initial infrastructure profile

| Resource | Starting reference |
| - | - |
| CPU | 4 vCPUs |
| Memory | 16 GB RAM |
| Storage | 250 GB SSD |
| Operating system | Ubuntu Server 22.04 LTS or later |
| Connectivity | Stable connection with public IP or institutional reverse proxy |

This single-VM profile is intended as a starting point for testing, pilots and low to moderate usage. It does not guarantee a specific number of users or video sessions.

Estimate concurrent use, video upload frequency and size, processing demand, videoconferencing, retention, archive growth and backups. Larger deployments may separate services or use external/object storage; confirm support in the deployed version.

## Prepare deployment

### Step 0 — Contact Levante Lab

Contact the **Levante Lab technical team** at [contato@levantelab.com.br](mailto:contato@levantelab.com.br). Introduce the institution and its local technical contact to begin deployment coordination.

<Steps>
  <Step title="Connect Levante Lab with the local team">
    Introduce both technical teams and define communication channels. Together, identify the platform administrator and support contacts, and assign responsibility for hosting, domains, certificates, database, media, backups and updates.
  </Step>

  <Step title="Confirm the release and deployment files">
    Obtain the repository, approved release, Docker/Compose files and release-specific instructions. Confirm required PHP, Node.js, database and other dependency versions.
  </Step>

  <Step title="Prepare server and storage">
    Provision the agreed resources and persistent volumes. Database records and uploaded files must survive container recreation. Plan storage expansion.
  </Step>

  <Step title="Prepare domain and network">
    Set the institutional address, reverse proxy where applicable and HTTPS. Check Etherpad and Jitsi Meet connectivity requirements.
  </Step>

  <Step title="Configure and start services">
    Follow the release’s documented procedures. Configure credentials and environment settings, database, frontend, queues, media processing and integrations.
  </Step>

  <Step title="Configure institutional access">
    Prepare administrator access, permissions, enabled languages and user support arrangements.
  </Step>

  <Step title="Validate before opening access">
    Complete the checks below and record the release, configuration and responsible teams.
  </Step>
</Steps>

<Warning>
  The technical summary does not provide Compose service names, environment variables, migration, build, startup or update commands. Obtain and verify these in the repository for the installed release.
</Warning>

## Network and external access

The summary describes **HTTPS on port 443** and internal communication through a Docker network.

Verify domain routing, certificates and renewal, NGINX or proxy configuration, container connectivity and isolation, Etherpad integration and Jitsi Meet deployment requirements.

Port 443 is the web-access reference, not a complete firewall or videoconferencing port list.

## Video storage and processing

Uploaded media and processing outputs can significantly increase disk use. Monitor free space and volume growth, define alerts, plan expansion, and track job failures. Backups must include the database and files required for recovery.

Validate **Redis/Horizon** asynchronous processing and **FFmpeg** with a test video upload.

## Security and continuity

Confirm how each control described in the summary is implemented:

| Control | Institutional verification |
| - | - |
| TLS 1.3 | Enabled protocols at the HTTPS termination point. |
| AES-256 storage encryption | Protected volumes, storage services, backups and key management. |
| Role-based permissions | General User, Participant, Supervisor and administrator access. |
| SSH keys and multifactor authentication | Administrative access and applicable MFA mechanism. |
| Audit and monitoring | Logs, alerts, ownership and log access. |
| Updates and security checks | Application, container images and server maintenance. |
| Encrypted regular backups | Frequency, separate location and recovery. |

These controls are not automatically active simply because the application is installed.

### Backups

The summary describes encrypted backups in separate data centers. Agree on frequency, retention, ownership and restoration procedures. Perform a restoration test covering both database and media files.

## Data and retention

Account data, videos, audio, annotations, comments, collaborative content, IP addresses, browser information and usage records may be processed.

| Data | Summary reference |
| - | - |
| User data | May be deleted or anonymized 12 months after last activity. |
| Backups | Overwritten after 90 days. |
| Scientific datasets | May be archived in anonymized form for research. |

Confirm applicable periods and implementation mechanisms locally. The summary does not demonstrate automatic deletion or anonymization. Define institutional agreements, responsibilities and applicable data-protection requirements.

## Configure languages

Language configuration spans the administration panel and frontend. Changing the default also requires technical database intervention.

<Steps>
  <Step title="Prepare translations">
    Create a JSON file in **lang**, such as **en.json**, **pt.json** or **de.json**, with the interface translation keys and values.
  </Step>

  <Step title="Register the frontend locale">
    In **nuxt.config.js**, add code, name and file reference to the **i18n locales** array.
  </Step>

  <Step title="Register in administration">
    With **master** permissions, use **Platform → Platform Form → Languages**. The summary states that adding a language here does not require direct database insertion.
  </Step>

  <Step title="Set the default if required">
    After translations and frontend configuration are ready, a developer sets **is\_default** to **true** on the chosen language record. Verify default-language consistency.
  </Step>

  <Step title="Validate and publish">
    Check menus, messages, notifications and multilingual forms. Follow the repository’s frontend build and publication procedure.
  </Step>
</Steps>

Labels, navigation, notifications and system feedback are translated. Compatible multilingual forms provide fields for the new language. Videos, annotations and other records are **not automatically translated**.

<Note>
  The default-language field specified for VisuoLab is **is\_default**. Confirm the table name and change procedure in the installed release’s repository.
</Note>

## Validation checklist

* Open the institutional domain over HTTPS.
* Test login and permissions for expected roles.
* View and publish a test resource.
* Upload, process and play a test video.
* Check jobs and asynchronous workers.
* Test Spaces and activities.
* Test enabled Etherpad and Jitsi Meet integrations.
* Check languages and the default locale.
* Verify persistence and disk capacity.
* Validate backup and restoration.
* Record release, responsibilities and maintenance procedures.

## Requirements for executable instructions

To add reproducible commands, obtain the Compose files, dependency versions, environment configuration template, database procedures, frontend build, workers, scheduled tasks, integrations and release update procedure.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.