Skip to content
Esta página fue generada y traducida con asistencia de IA. Si encuentra alguna imprecisión, no dude en ayudar a mejorarla. Editar en GitHub

Referencia de Configuración

Fenfa puede configurarse a través de un archivo config.json, variables de entorno o el panel de administración (para ajustes de runtime como almacenamiento y API de Apple).

Precedencia de Configuración

  1. Variables de entorno -- Prioridad más alta, sobreescriben todo
  2. Archivo config.json -- Cargado al iniciar
  3. Valores predeterminados -- Usados cuando no se especifica nada

Archivo de Configuración

Crea un config.json en el directorio de trabajo (o móntalo en Docker):

json
{
  "server": {
    "port": "8000",
    "primary_domain": "https://dist.example.com",
    "secondary_domains": [
      "https://cdn1.example.com",
      "https://cdn2.example.com"
    ],
    "organization": "Your Company Name",
    "bundle_id_prefix": "com.yourcompany.fenfa",
    "data_dir": "data",
    "db_path": "data/fenfa.db",
    "dev_proxy_front": "",
    "dev_proxy_admin": ""
  },
  "auth": {
    "upload_tokens": ["your-upload-token"],
    "admin_tokens": ["your-admin-token"]
  }
}

Ajustes del Servidor

ClaveTipoPredeterminadoDescripción
server.portstring"8000"Puerto de escucha HTTP
server.primary_domainstring"http://localhost:8000"URL pública usada en manifiestos, callbacks y enlaces de descarga
server.secondary_domainsstring[][]Dominios adicionales (CDN, acceso alternativo)
server.organizationstring"Fenfa Distribution"Nombre de organización mostrado en perfiles de configuración móvil de iOS
server.bundle_id_prefixstring""Prefijo de bundle ID para perfiles generados
server.data_dirstring"data"Directorio para la base de datos SQLite
server.db_pathstring"data/fenfa.db"Ruta explícita del archivo de base de datos
server.dev_proxy_frontstring""URL del servidor dev Vite para la página pública (solo desarrollo)
server.dev_proxy_adminstring""URL del servidor dev Vite para el panel de administración (solo desarrollo)

Dominio Principal

El ajuste primary_domain es crítico para la distribución OTA de iOS. Debe ser la URL HTTPS que los usuarios finales acceden. Los archivos manifest de iOS usan esta URL para enlaces de descarga, y los callbacks UDID redirigen a este dominio.

Autenticación

ClaveTipoPredeterminadoDescripción
auth.upload_tokensstring[]["dev-upload-token"]Tokens para la API de subida
auth.admin_tokensstring[]["dev-admin-token"]Tokens para la API de administración (incluye permiso de subida)

Cambiar Tokens Predeterminados

Los tokens predeterminados (dev-upload-token y dev-admin-token) son solo para desarrollo. Cámbialos siempre antes de desplegar en producción.

Se soportan múltiples tokens para cada ámbito, lo que permite emitir diferentes tokens a diferentes pipelines de CI/CD o miembros del equipo y revocarlos individualmente.

Variables de Entorno

Sobreescribe cualquier valor de configuración con variables de entorno:

VariableEquivalente en ConfigDescripción
FENFA_PORTserver.portPuerto de escucha HTTP
FENFA_DATA_DIRserver.data_dirDirectorio de la base de datos
FENFA_PRIMARY_DOMAINserver.primary_domainURL de dominio público
FENFA_ADMIN_TOKENauth.admin_tokens[0]Token de administrador (reemplaza el primer token)
FENFA_UPLOAD_TOKENauth.upload_tokens[0]Token de subida (reemplaza el primer token)

Ejemplo:

bash
FENFA_PORT=9000 \
FENFA_PRIMARY_DOMAIN=https://dist.example.com \
FENFA_ADMIN_TOKEN=secure-random-token \
./fenfa

Configuración de Almacenamiento

Almacenamiento Local (Predeterminado)

Los archivos se almacenan en uploads/{product_id}/{variant_id}/{release_id}/filename.ext relativo al directorio de trabajo. No se necesita configuración adicional.

Almacenamiento Compatible con S3

Configura el almacenamiento S3 en el panel de administración bajo Ajustes > Almacenamiento, o via la API:

bash
curl -X PUT http://localhost:8000/admin/api/settings \
  -H "X-Auth-Token: YOUR_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "storage_type": "s3",
    "s3_endpoint": "https://account-id.r2.cloudflarestorage.com",
    "s3_bucket": "fenfa-uploads",
    "s3_access_key": "your-access-key",
    "s3_secret_key": "your-secret-key",
    "s3_public_url": "https://cdn.example.com"
  }'

Proveedores soportados:

  • Cloudflare R2 -- Sin tarifas de egreso, compatible con S3
  • AWS S3 -- S3 estándar
  • MinIO -- Almacenamiento compatible con S3 auto-alojado
  • Cualquier proveedor compatible con S3

Dominio de Subida

Si tu dominio principal tiene límites de CDN en el tamaño de archivo, configura upload_domain como un dominio separado que evite las restricciones de CDN para subidas de archivos grandes.

API de Apple Developer

Configura las credenciales de la API de Apple Developer para el registro automático de dispositivos. Configúralas en el panel de administración bajo Ajustes > API de Apple Developer, o via la API:

CampoDescripción
apple_key_idID de clave API de App Store Connect
apple_issuer_idID del emisor (formato UUID)
apple_private_keyContenido de la clave privada en formato PEM
apple_team_idID de tu equipo de Apple Developer

Ver Distribución iOS para instrucciones de configuración.

Base de Datos

Fenfa usa SQLite via GORM. El archivo de base de datos se crea automáticamente en el db_path configurado. Las migraciones se ejecutan automáticamente al iniciar.

Copia de Seguridad

Para hacer una copia de seguridad de Fenfa, copia el archivo de base de datos SQLite y el directorio uploads/. Para almacenamiento S3, solo el archivo de base de datos necesita copia de seguridad local.

Ajustes de Desarrollo

Para desarrollo local con recarga en caliente:

json
{
  "server": {
    "dev_proxy_front": "http://localhost:5173",
    "dev_proxy_admin": "http://localhost:5174"
  }
}

Cuando dev_proxy_front o dev_proxy_admin están configurados, Fenfa redirige las solicitudes al servidor de desarrollo Vite en lugar de servir el frontend embebido. Esto habilita el reemplazo de módulos en caliente durante el desarrollo.

Siguientes Pasos

Released under the Apache-2.0 License.