# Ajustes, archivo config y carpetas de Flow

> Los ajustes de Flow (nombre, catálogos de componentes y plantillas, entorno, copia de seguridad, tokens), las líneas del archivo config, el entorno de los flujos y las carpetas para extensiones y componentes locales.

Framework: flow
Product: Flow (flow@11.1)
Language: es
Content-SHA256: 8ffb7543474d5959de782ab9115a48486bd7d96a59e042ff5981d9c4242bfde4
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## El archivo `config`

El archivo `config` de la raíz de Flow contiene las opciones de la aplicación. Las que importan:

| Línea | Significado |
|---|---|
| `name` | el nombre que muestra la aplicación (se puede cambiar en los ajustes) |
| `$api : /fapi/` | la dirección de la API JSON |
| `flowstream_worker : fork` | cada FlowStream se ejecuta en su propio proceso |
| `$proxytimeout : 120` | segundos que un flujo puede tardar en responder a una petición HTTP |
| `cookie`, `cookie_secret` | se generan en el primer arranque y se guardan en `databases/config.json` |

Se leen otras opciones cuando existen: `directory` (la carpeta de los flujos; por defecto es `flowstream/` junto a la aplicación), `flowstream_memory` (un límite de memoria por defecto para los flujos nuevos), `flowstream_sandbox` y `flowstream_asfiles` (se pasan a cada flujo), `components` y `templates` (los primeros valores de los catálogos) y `backup`.

## Ajustes en la aplicación

El superadministrador abre los ajustes y encuentra:

- **name** de la instalación;
- **components** y **components2**: la dirección del catálogo de componentes (un archivo `db.json`, por defecto `https://cdn.totaljs.com/flowstream/webcomponents/db.json`) y un segundo catálogo opcional, para que puedas ofrecer tus propios componentes junto a los oficiales;
- **templates**: el catálogo de plantillas de flujos (por defecto `https://cdn.totaljs.com/flowstream/templates/db.json`);
- **env**: `dev`, `test` o `prod`. Los flujos lo leen y cambiarlo los reinicia todos uno a uno;
- **backup**: cada guardado de los flujos renombra el `database.json` anterior a un archivo con la fecha y el minuto, `database_yyyyMMddHHmm.bk`;
- **token**: el token aleatorio para `/private/` (consulta [la API](/en/flow/manage-flowstreams-with-the-api/));
- **darkmode** y **notify**;
- **op_reqtoken** y **op_restoken**: los tokens de un [OpenPlatform](/en/openplatform/how-an-app-connects/); cuando ambos están definidos, las personas inician sesión con ese OpenPlatform.

Los plugins pueden añadir sus propios ajustes al mismo formulario. El repositorio incluye uno, *Bookmarks*, una lista de componentes guardados que pueden usar las personas con el permiso `bookmarks`.

## Variables

Cada flujo tiene sus propias **variables** y existe un conjunto de **variables globales**, ambos se editan en el editor o con `Variables|read` y `Variables|save`. Un componente las lee para no poner direcciones y claves en el diseño, y un cambio llega de inmediato a los flujos en ejecución.

## Componentes locales: `--components--`

La carpeta `--components--` del repositorio contiene unos pocos componentes que viajan con la aplicación: `checkfreespace`, `checklog`, `checkpg`, `checkurl`, `console` y `print`. El catálogo oficial es mucho mayor, consulta [el repositorio de componentes](/en/flow/the-components-repository/).

## Extensiones

Una extensión añade algo al editor de cada flujo. Copia un archivo `.html` a la carpeta `extensions/` (el repositorio lo documenta en `--extensions--/` con un ejemplo `test.html`) y Flow lo carga para cada flujo: la parte entre `<script total>` y `</script>` se ejecuta con el flujo y el resto del archivo se añade al editor.

## El entorno de un flujo

Al iniciar cada flujo, Flow le da la carpeta donde guarda sus archivos (`directory`), las variables globales, el `env` de la instalación, su límite de memoria y el cargador de extensiones (`extensions.js`). Un flujo que se cae es reiniciado por Flow, y sus estadísticas (mensajes, pendientes, errores, memoria e id de proceso) las devuelve `Streams`.
