Guía de requisitos previos, instalación y configuración de App Builder On-Premises

    Requisitos previos

    Esta sección enumera los requisitos previos para instalar la versión On-premises de App Builder y está dirigida a administradores de sistemas que configuran parámetros operacionales que mantienen y respaldan Linux/Mac OS/Windows.

    Gestión de bases de datos

    Según sus requisitos, puede decidir utilizar sistemas de gestión de bases de datos MySQL, MSSQL Server o PostgreSQL.

    Instalación de MySQL

    1 - Instale MySQL community edition (enlace directo para windows)

    • Seleccione:

      • Developer default, Next y Execute.

      Nota: si recibe un mensaje que dice "one or more products requirements have not been satisfied. Do you want to continue?" Solo seleccione Sí)

    • Después de que finalice la instalación:

      • Seleccione siguiente para configurar el servidor, cuando se le solicite, ingrese la contraseña raíz que desee, luego Execute.
      • Después de que finalice la configuración del servidor, seleccione Cancel para salir del instalador, ya que el resto de la configuración no es necesaria.

    2 - Permita la conexión del contenedor a MySQL.

    Conéctese a MySQL con el usuario raíz y la contraseña del paso 1 y ejecute el siguiente script sql (el nombre de usuario y la contraseña serán los utilizados en AppBuilder).

    Nota: puede usar la herramienta MySQL Workbench para ejecutar scripts sql.

    CREATE USER 'username'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
    

    Instalación de MSSQL Server

    1 - Instale Sql Server (enlace directo)

    Instalación de On-Premises Sql Express

    Nota: Un servidor On-premises debe tener un Sql Server real, no un Sql Server Express incrustado de VS

    2 - Habilite tcp/ip - explicación detallada aquí.

    SqlServer Config Manager

    3 - Agregue un nuevo usuario App_Builder como parte de Sql Express. Puede instalar Sql Server Management Studio y utilizarlo para ese propósito.

    Diálogo de parámetros de inicio de sesión

    Nota: Se pueden denegar los permisos de crear base de datos para el usuario recién agregado. Debería considerar otorgarles un rol de servidor que les otorgue credenciales para crear base de datos como dbcreator.

    Nota: Según la decisión del administrador, un cambio del modo de autenticación con SSMS podría ser necesario. El motor de base de datos de SQL Server está configurado en modo de autenticación de Windows o modo de autenticación de SQL Server y Windows.

    Instalar Docker

    Guía de Windows -> guía de docs.microsoft.com

    Instalación

    Esta sección supone que ya tiene Docker y una base de datos (MySQL, MSSQL Server o PostgreSQL) instalados.

    Instalación por primera vez

    1 - Descargue el appbuilder.zip que forma parte de su sección de Descargas en el Portal del cliente de Infragistics.
    2 - Extraiga el appbuilder.tar contenido en el archivo appbuilder.zip.
    3 - Abra una ventana de terminal o símbolo del sistema en la ubicación extraída.
    4 - Cargue y verifique la imagen.

    Ejecute:

    docker load --input appbuilder.tar
    

    Para verificar que la imagen se cargó correctamente, consulte el ejemplo con la tabla a continuación:

    docker images
    
    REPOSITORY TAG IMAGE ID CREATED SIZE
    appbuilder 1.0 2a05977e039b 12 days ago 854MB

    5 - Ejecute el contenedor:

    docker run --restart always -p 80:5000 -e "ConnectionStrings:AppBuilderMySqlConnection=server=<your-mysql-database-ip>;database=<your-mysql-schema>;user=<your-mysql-database-user>;password=<your-mysql-database-password>;oldguids=false" -v <external-folder-for-logs>:/appbuilder/logs -v <external-folder-for-storage>:/appbuilder/storage --name appbuilder appbuilder:1.0
    
    • Ejemplo de MySQL - Este sería el comando suponiendo que su instancia de MySql está ejecutando un esquema llamado IndigoAppBuilderOnPrem en 192.168.2.5 con username=appbuilder y password=appbuilder y que ha seleccionado C:/AppBuilder como la carpeta externa para almacenar los registros y almacenamiento.
    docker run --restart always -p 80:5000 -e "ConnectionStrings:AppBuilderMySqlConnection=server=192.168.2.5;database=IndigoAppBuilderOnPrem;user=appbuilder;password=appbuilder;oldguids=false" -v C:/AppBuilder/logs:/appbuilder/logs -v C:/AppBuilder/storage:/appbuilder/storage --name appbuilder appbuilder:1.0
    
    • Ejemplo de MSSQL Server - Este sería el comando suponiendo que su instancia de Sql Server está ejecutando un esquema llamado IndigoAppBuilderOnPrem con servidor SQLEXPRESS, con USER ID=APP_BUILDER y password=Appbuilder2023! y que ha seleccionado C:/AppBuilder como la carpeta externa para almacenar los registros y almacenamiento.
    docker run --restart always -p 80:5000 -e "ConnectionStrings:Provider=SqlServer" -e "ConnectionStrings:AppBuilderSqlServerConnection=Data Source=DEV-ZKOLEV\SQLEXPRESS,1433;Database=IndigoAppBuilderOnPrem;User ID=APP_BUILDER;Password=Appbuilder2023!;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" -v C:/AppBuilder/logs:/appbuilder/logs -v C:/AppBuilder/storage:/appbuilder/storage --name appbuilder appbuilder:1.0
    

    6 - Abra su navegador y escriba http://localhost/

    Nota: Si está utilizando Docker Desktop, vaya a Containers/Apps, busque su contenedor y haga clic en Open in browser

    Docker Containers/Apps

    Autenticación con OpenID Connect (OAuth 2.0)

    Siga el tema On-Prem Authentication with OpenID Connect (OAuth 2.0) para obtener más información.

    Actualizaciones

    1 - Siga los primeros 4 pasos de la instalación por primera vez con el archivo zip recién publicado

    2 - Verifique que la imagen nueva se haya cargado correctamente (la imagen anterior debe etiquetarse como )

    docker images
    
    REPOSITORY TAG IMAGE ID CREATED SIZE
    appbuilder 1.0 27ff4c1079ac 43 hours ago 932MB
    2a05977e039b 12 days ago 854MB

    3 - Detenga el contenedor

    docker stop appbuilder
    

    4 - Elimine el contenedor

    docker rm appbuilder
    

    5 - Ejecute el contenedor con el mismo comando utilizado en el paso 5 de la instalación por primera vez

    Activación

    Esta sección supone que ya ha instalado la instancia On-premises y ahora está activa y en ejecución.

    Cuando el servidor se inicia por primera vez, un diálogo de solicitud le proporcionará el Installation ID y se solicitará una clave de autenticación. Envíe este Installation ID a nuestro departamento de ventas según su región y le proporcionaremos la clave de autenticación para activar el servidor.

    Activar App Builder

    Nota: Recibirá un mensaje de advertencia directamente a través de la interfaz de usuario treinta días antes de que expire su clave.

    Descripción general de configuración

    Configuración predeterminada

    Cuando inicia la imagen Docker de AppBuilder sin configuración personalizada, las siguientes características están deshabilitadas de forma predeterminada:

    • Conexión de base de datos - No se proporcionan credenciales de base de datos (debe configurarse mediante variables de entorno o archivo de configuración)
    • Características de IA - Toda la funcionalidad de IA deshabilitada
    • Panel de chat de IA - Interfaz de chat oculta
    • Notificaciones de Teams - Sin integraciones de registro externas
    • Limitación de velocidad - Sin limitación de solicitudes
    • Integración de GitHub/Azure DevOps - Funciones de publicación deshabilitadas

    Métodos de configuración

    Tiene dos opciones para configurar AppBuilder:

    Opción 1: Variables de entorno (Inicio rápido)

    Pase la configuración directamente como variables de entorno al iniciar el contenedor:

    docker run --restart always -p 80:5000 \
      -v C:/appbuilder/config:/appbuilder/config \
      -v C:/appbuilder/logs:/appbuilder/logs \
      -v C:/appbuilder/storage:/appbuilder/storage \
      --name appbuilder \
      appbuilder:1.0
    

    Estructura de directorio requerida:

    /appbuilder/config/
    ├── appsettings.json                    # Main configuration overrides
    └── ai/                                 # AI configuration (optional)
        ├── ai.appsettings.json             # AI provider and model settings
        ├── ai.providers.appsettings.json   # Provider endpoint configuration
        └── ai.credentials.appsettings.json # API keys and credentials
        └── ai.models.appsettings.json      # API models available
    

    Referencia de archivo de configuración

    File Purpose Required
    appsettings.json Configuración principal del backend - controla base de datos, autenticación, registro, almacenamiento e integraciones
    configs/ai/ai.appsettings.json Configuración de características de IA - define qué proveedor de IA y modelos usar Solo si IA habilitada
    configs/ai/ai.credentials.appsettings.json Claves API del proveedor de IA - almacena credenciales de autenticación para servicios de IA Solo si IA habilitada
    configs/ai/ai.providers.appsettings.json Puntos finales del proveedor de IA - configura URLs base de API (rara vez necesita cambios) Solo si IA habilitada
    configs/ai/ai.models.appsettings.json Modelos del proveedor de IA Solo si IA habilitada

    Nota: Si no planea habilitar funciones de IA, puede omitir completamente los archivos de configuración de IA.

    Configuración principal (appsettings.json)

    Conexión de base de datos

    La configuración de conexión de base de datos determina dónde AppBuilder almacena todos los datos de aplicación, incluidos proyectos de usuario, componentes, activos y metadatos.

    {
      "ConnectionStrings": {
        "Provider": "MySql",
        "AppBuilderMySqlConnection": "server=host.docker.internal;port=3306;database=IndigoAppBuilder;user=root;password=yourpassword;oldguids=false",
        "AppBuilderSqlServerConnection": "Data Source=<server>;Database=<database>;User Id=<username>;Password=<password>;Encrypt=False;TrustServerCertificate=True;MultipleActiveResultSets=True",
        "AppBuilderPostgreSqlConnection": "Host=<hostname>;Port=5432;Database=<database>;Username=<username>;Password=<password>"
      }
    }
    
    Option Type Description
    Provider string Determina qué motor de base de datos usar. Valores válidos: "MySql", "SqlServer", "PostgreSql". La aplicación solo utilizará la cadena de conexión que coincida con este valor del proveedor.
    AppBuilderMySqlConnection string Cadena de conexión de MySQL/MariaDB. Se utiliza cuando Provider es "MySql". El parámetro oldguids=false es necesario para un manejo correcto de GUID. Use host.docker.internal para conectarse a una base de datos en la máquina host de Docker, o server=mysql para conectarse a una base de datos alojada en un contenedor de Docker. Importante: Cuando use una base de datos en contenedor, inicie el contenedor de AppBuilder con la opción --network (por ejemplo, docker run --restart always -p 8080:5000 --network appbuilder-network)
    AppBuilderSqlServerConnection string Cadena de conexión de SQL Server. Se utiliza cuando Provider es "SqlServer". MultipleActiveResultSets=True es necesario para que Entity Framework Core funcione correctamente con SQL Server.
    AppBuilderPostgreSqlConnection string Cadena de conexión de PostgreSQL. Se utiliza cuando Provider es "PostgreSql". Formato estándar de cadena de conexión Npgsql.

    Configuración de registro

    Controla cómo se escriben y se administran los registros de aplicación.

    {
      "Logging": {
        "LogLevel": {
          "Default": "Debug",
          "System": "Warning",
          "Microsoft": "Warning"
        }
      },
      "CustomLogging": {
        "MinimumLevel": {
          "Default": "Information",
          "Override": {
            "Microsoft": "Warning",
            "System": "Warning",
            "Microsoft.EntityFrameworkCore": "Error"
          }
        },
        "Files": {
          "Paths": {
            "AI": "./logs/ai.log",
            "Backend": "./logs/backend.log",
            "DataProtection": "./logs/data-protection.log"
          },
          "RollingInterval": "Infinite",
          "FileSizeLimitBytes": 52428800,
          "RollOnFileSizeLimit": true,
          "FlushToDiskInterval": "00:00:01",
          "Retention": 90
        },
        "Teams": {
          "AIError": {
            "Enabled": false,
            "LogicAppUrl": "",
            "Period": "00:00:01",
            "TeamId": "",
            "ChannelId": ""
          },
          "DataProtection": {
            "Enabled": false,
            "Email": ""
          }
        }
      }
    }
    

    Notificaciones de Teams

    Option Description
    Teams.AIError.Enabled Cuando es true, los errores de IA se envían a un canal de Microsoft Teams a través del webhook de Logic App.
    Teams.AIError.LogicAppUrl URL de la aplicación lógica de Azure que publica en Teams.
    Teams.DataProtection.Enabled Cuando es true, las alertas de protección de datos se envían por correo electrónico.
    Teams.DataProtection.Email Dirección de correo electrónico para alertas de protección de datos.

    Opciones de limitación de velocidad

    Controla la limitación de velocidad de solicitudes para prevenir abusos.

    {
      "IPRateLimiterOptions": {
        "Enabled": false,
        "PermitLimit": 500,
        "SegmentsPerWindow": 10,
        "WindowSeconds": 60,
        "QueueLimit": 0,
        "QueueProcessingOrder": "OldestFirst"
      },
      "UserRateLimiterOptions": {
        "Enabled": false,
        "PermitLimit": 1000,
        "SegmentsPerWindow": 6,
        "WindowSeconds": 60,
        "QueueLimit": 0,
        "QueueProcessingOrder": "OldestFirst"
      }
    }
    
    Option Type Description
    Enabled boolean Si la limitación de velocidad está activa. Establezca en true para habilitar. Para redes internas/confiables, puede permanecer false.
    PermitLimit integer Máximo de solicitudes permitidas por ventana. El limitador IP usa de forma predeterminada 500, el limitador de usuario 1000.
    SegmentsPerWindow integer Número de segmentos en los que se divide la ventana de tiempo. Se utiliza para el algoritmo de ventana deslizante. Valores más altos = limitación más suave.
    WindowSeconds integer Tamaño de la ventana de tiempo en segundos. Las solicitudes se cuentan dentro de esta ventana móvil.
    QueueLimit integer Número de solicitudes que se van a poner en cola cuando se exceda el límite. 0 significa rechazar inmediatamente. Los valores más altos ponen en cola las solicitudes para su procesamiento posterior.
    QueueProcessingOrder string Orden para procesar solicitudes en cola. "OldestFirst" (FIFO) o "NewestFirst" (LIFO).

    Limitador de velocidad de IP: Limita las solicitudes por dirección IP. Protege contra malos actores individuales.

    Limitador de velocidad de usuario: Limita las solicitudes por usuario autenticado. Protege contra abusos por parte de usuarios autenticados.

    Integración de GitHub

    Habilita la publicación de proyectos en repositorios de GitHub.

    Establezca disablePublishToGithub: false en

    {
      "FrontendOptions": {
        "Extras": "{ disablePublishToGithub: false, disableSurvey: true, disableAnalytics: true, disableFeedback: true, requiresActivation: true }"
      }
    }
    
    {
      "GithubOptions": {
        "Enabled": true,
        "BaseUrl": "https://github.com/",
        "AuthorizeClientEndpoint": "/login/oauth/authorize",
        "AccessTokenEndpoint": "/login/oauth/access_token",
        "Scope": "user repo workflow",
        "RedirectUri": "/oauth/github/auth-callback",
        "ClientId": "<your-github-oauth-app-client-id>",
        "ClientSecret": "<your-github-oauth-app-client-secret>",
        "PackageAccessTokenSuffix": ""
      }
    }
    
    Option Type Description
    BaseUrl string URL base de GitHub. Use "https://github.com/" para github.com o su URL de GitHub Enterprise.
    AuthorizeClientEndpoint string Ruta del punto final de autorización OAuth. Valor estándar, no cambie a menos que use GitHub Enterprise personalizado.
    AccessTokenEndpoint string Ruta del punto final del token OAuth. Valor estándar, no cambie.
    Scope string Alcances de OAuth para solicitar. "user repo workflow" permite leer información del usuario, acceder a repositorios e activar flujos de trabajo.
    RedirectUri string Ruta de devolución de llamada de OAuth. Esto debe coincidir con lo configurado en la configuración de su aplicación OAuth de GitHub.
    ClientId string ID de cliente de aplicación OAuth de GitHub. Cree una aplicación OAuth en GitHub > Settings > Developer settings > OAuth Apps.
    ClientSecret string Secreto de cliente de aplicación OAuth de GitHub. ¡Manténgalo en secreto!

    Pasos de configuración:

    1. Vaya a GitHub > Settings > Developer settings > OAuth Apps > New OAuth App
    2. Establezca Homepage URL en su URL de AppBuilder
    3. Establezca Authorization callback URL en https://your-appbuilder-url/oauth/github/auth-callback
    4. Copie Client ID y Client Secret a la configuración
    5. Reinicie el contenedor para incluir los cambios docker run --restart always -p 8080:5000 --network appbuilder-network -v C:/appbuilder/config:/appbuilder/config --name appbuilder -d appbuilder:2.0

    Integración de Azure DevOps

    Habilita la publicación de proyectos en repositorios de Azure DevOps.

    Establezca disablePublishToDevOps: false en

    {
      "FrontendOptions": {
        "Extras": "{ disablePublishToDevOps: false, disableSurvey: true, disableAnalytics: true, disableFeedback: true, requiresActivation: true }"
      }
    }
    
    {
      "DevOpsOptions": {
        "Enabled": true,
        "TokenEncryptionKeyBase64": "<generate-a-random-16-byte-base64-key>",
        "BaseUrl": "https://login.microsoftonline.com/",
        "TenantId": "common",
        "AuthorizeClientEndpoint": "oauth2/v2.0/authorize",
        "RedirectUri": "/oauth/devops/auth-callback",
        "AccessTokenEndpoint": "oauth2/v2.0/token",
        "RevokeTokenEndpoint": "https://graph.microsoft.com/v1.0/users/{userObjectId}/revokeSignInSessions",
        "Scopes": "499b84ac-1321-427f-aa17-267ca6975798/user_impersonation offline_access openid profile user.read",
        "ClientId": "<your-azure-ad-app-client-id>",
        "ClientSecret": "<your-azure-ad-app-client-secret>",
        "RestApiVersion": "7.1",
        "ExcludedOrganizations": []
      }
    }
    
    Option Type Description
    TokenEncryptionKeyBase64 string Clave para cifrar los tokens OAuth almacenados. Genere con openssl rand -base64 16.
    BaseUrl string URL de inicio de sesión de Azure AD. Valor estándar para la plataforma de identidad de Microsoft.
    TenantId string Inquilino de Azure AD. Use "common" para permitir cualquier cuenta de Microsoft, o especifique su ID de inquilino para un inquilino único.
    Scopes string Alcances de OAuth para Azure DevOps. El GUID es el ID de recurso de Azure DevOps. No modifique a menos que sepa lo que está haciendo.
    ClientId string ID de cliente del registro de aplicación de Azure AD.
    ClientSecret string Secreto de cliente del registro de aplicación de Azure AD.
    RestApiVersion string Versión de API REST de Azure DevOps. "7.1" es la versión estable actual.
    ExcludedOrganizations array Lista de organizaciones de Azure DevOps que se deben ocultar. Los usuarios no verán estas organizaciones al publicar.

    Reinicie el contenedor para incluir los cambios docker run --restart always -p 8080:5000 --network appbuilder-network -v C:/appbuilder/config:/appbuilder/config --name appbuilder -d appbuilder:2.0

    Configuración de correo electrónico

    Habilita notificaciones por correo electrónico (opcional).

    {
      "EmailOptions": {
        "Smtp": {
          "Server": "smtp.your-server.com",
          "Port": "587",
          "User": "your-smtp-user",
          "Password": "your-smtp-password"
        }
      }
    }
    
    Option Type Description
    Server string Nombre de host del servidor SMTP.
    Port string Puerto del servidor SMTP. Valores comunes: "587" (TLS), "465" (SSL), "25" (sin cifrar - no recomendado).
    User string Nombre de usuario de autenticación SMTP.
    Password string Contraseña de autenticación SMTP.

    Configuración de IA

    Las características de IA son opcionales. Para habilitarlas, configure los archivos en configs/ai/.

    ai.appsettings.json

    Controla qué proveedor de IA y modelos se utilizan.

    {
      "AIOptions": {
        "Provider": "OPENAI",
        "Model": "gpt-4.1-mini",
        "SupportsVision": true
      },
      "ImageGeneration": {
        "Provider": "OPENAI",
        "Model": "gpt-image-1"
      },
      "GoogleCloudTranscribe": {
        "Enabled": false,
        "Credentials": "GoogleCloud",
        "Model": "latest_long",
        "DefaultLanguageCode": "en-US"
      }
    }
    
    Option Type Description
    AIOptions.Provider string Proveedor de generación de texto. Valores: "OPENAI", "ANTHROPIC", "GOOGLECLOUD", "GROQ"
    AIOptions.Model string ID del modelo de generación de texto. Debe ser un modelo válido para el proveedor seleccionado (consulte la tabla a continuación).
    AIOptions.SupportsVision boolean Si el modelo puede analizar imágenes. Habilite para modelos con capacidades de visión.
    ImageGeneration.Provider string Proveedor de generación de imágenes. Valores: "OPENAI", "GOOGLECLOUD", "RUNWARE"
    ImageGeneration.Model string ID del modelo de generación de imágenes.
    GoogleCloudTranscribe.Enabled boolean Habilitar conversión de voz a texto. Requiere credenciales de Google Cloud.
    GoogleCloudTranscribe.DefaultLanguageCode string Idioma predeterminado para el reconocimiento de voz. Por ejemplo, "en-US", "de-DE", "fr-FR".

    Modelos disponibles:

    Provider Text Models Image Models
    OpenAI gpt-5.2, gpt-5.1, gpt-5-mini, gpt-5-nano, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano gpt-image-1
    Anthropic claude-sonnet-4-5-20250929, claude-haiku-4-5-20251001 -
    Google Cloud gemini-2.5-pro, gemini-2.5-flash, gemini-3-pro-preview imagen-4.0-generate-001, imagen-4.0-ultra-generate-001, imagen-4.0-fast-generate-001
    Groq llama-3.3-70b-versatile, llama-3.1-8b-instant -
    Runware - runware:100@1, runware:101@1

    ai.credentials.appsettings.json

    Almacena claves API para proveedores de IA.

    {
      "AICredentialsOptions": {
        "OpenAI": {
          "ApiKey": "<your-openai-api-key>"
        },
        "Anthropic": {
          "ApiKey": "<your-anthropic-api-key>"
        },
        "Groq": {
          "ApiKey": "<your-groq-api-key>"
        },
        "Runware": {
          "ApiKey": "<your-runware-api-key>"
        },
        "GoogleCloud": {
          "JsonCredentials": {
            "type": "service_account",
            "project_id": "your-project-id",
            "private_key_id": "...",
            "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
            "client_email": "...",
            "client_id": "...",
            "auth_uri": "https://accounts.google.com/o/oauth2/auth",
            "token_uri": "https://oauth2.googleapis.com/token"
          }
        }
      }
    }
    

    Solo configure los proveedores que planea usar. Obtenga claves API de:

    Configuración del entorno de frontend

    Estos parámetros se pasan a la aplicación frontend y controlan funciones y comportamiento de la interfaz de usuario.

    {
      "FrontendOptions": {
        "Extras": "{ disableSurvey: true, disableAnalytics: true, disableFeedback: true, requiresActivation: true, disableAI: false, enableAIChat: true }"
      }
    }
    

    El campo Extras es una cadena JSON que contiene banderas de configuración de frontend:

    Setting Default (On-Prem) Description
    disableAI true Interruptor maestro para funciones de IA. Cuando es true, toda la interfaz de usuario relacionada con IA está oculta y no se llaman las API de IA.
    enableAIChat false Muestra el panel de chat de IA en la caja de herramientas. El panel permite a los usuarios interactuar con IA para generar componentes y diseños.
    enableSpeechToText false Muestra el botón del micrófono para entrada de voz en el chat de IA. Requiere que Google Cloud Speech-to-Text esté configurado.

    Cómo funciona: Estos valores se inyectan en el frontend en tiempo de ejecución a través de la API del backend. El frontend lee estas banderas en la inicialización y habilita/deshabilita funciones en consecuencia. Para que la funcionalidad de IA funcione, debe proporcionar las credenciales, modelos y parámetros requeridos en estos archivos ai.appsettings.json, ai.credentials.appsettings.json, ai.providers.appsettings.json, ai.models.appsettings.json.

    Instalación de imagen de Docker y ejecución del contenedor

    Montajes de volumen

    Container Path Purpose Required
    /app/appsettings.json Configuración principal
    /app/configs/ai/ Archivos de configuración de IA Solo si IA habilitada
    /app/storage/ Almacenamiento de archivos (cargas, exportaciones) Sí (para persistencia)
    /app/logs/ Archivos de registro Recomendado

    Comandos de ejecución de Docker

    Cargar la imagen

    docker load -i appbuilder.tar
    

    Ejecutar el contenedor proporcionando solo una variable de entorno para conexión de BD

    docker run --restart always -p 80:5000 \
      -e "ConnectionStrings:AppBuilderSqlServerConnection=Data Source=<server>,<port>;Database=<db-name>;User ID=<user>;Password=<password>;Encrypt=False;TrustServerCertificate=False;MultipleActiveResultSets=True" \
      -v C:/appbuilder/logs:/appbuilder/logs \
      -v C:/appbuilder/storage:/appbuilder/storage \
      --name appbuilder \
      appbuilder:1.0
    

    Ejecutar el contenedor cuando se monta configuración personalizada -v C:/appbuilder/config:/appbuilder/config \

    Si desea conectarse a la base de datos que se ejecuta en un contenedor de docker separado: La configuración del archivo appsettings es : AppBuilderMySqlConnection": "Server=mysql;Port=3306;Database=AppBuilder;User=user;Password=password;, Cree una red de docker e incluya mysql. Proporcione la red en el comando de inicio.

    docker run --restart always -p 80:5000 \
      --network appbuilder-network \
      -v C:/appbuilder/config:/appbuilder/config \
      -v C:/appbuilder/logs:/appbuilder/logs \
      -v C:/appbuilder/storage:/appbuilder/storage \
      --name appbuilder \
      appbuilder:1.0
    

    Si desea conectarse a la base de datos que se ejecuta en la PC host para el servidor use host.docker.internal: La configuración del archivo appsettings es : AppBuilderMySqlConnection": "server=host.docker.internal;Port=3306;Database=AppBuilder;User=user;Password=password;,

    docker run --restart always -p 80:5000 \
      -v C:/appbuilder/config:/appbuilder/config \
      -v C:/appbuilder/logs:/appbuilder/logs \
      -v C:/appbuilder/storage:/appbuilder/storage \
      --name appbuilder \
      appbuilder:1.0
    

    Lista de verificación de inicio rápido

    Configuración mínima

    1. Actualice ConnectionStrings en appsettings.json o use la opción de anulación de entorno (bandera)

    Con autenticación

    1. Complete la configuración mínima
    2. Establezca SkipAuth en false
    3. Configure el proveedor de OAuth (Azure AD, Okta, Keycloak, etc.)
    4. Establezca Authority, ClientId en AuthSettings

    Con características de IA

    1. Complete la configuración mínima
    2. Obtenga una clave API de su proveedor de IA elegido
    3. Configure ai.appsettings.json con el proveedor y modelo
    4. Agregue una clave API a ai.credentials.appsettings.json
    5. Establezca disableAI: false y enableAIChat: true en el archivo appsetting.json en FrontendOptions

    Con integración de GitHub/DevOps

    1. Cree una aplicación OAuth (GitHub) o registro de aplicación (Azure AD)
    2. Configure las URL de devolución de llamada en el proveedor
    3. Agregue Client ID y Secret a la configuración

    Solución de problemas

    Ubicaciones de registro

    Log File Contents
    ./logs/appbuilder.log Solicitudes de API, autenticación, errores generales relacionados
    ./logs/codegen.log Solicitudes de API, autenticación, errores generales relacionados
    ./logs/ai.log Solicitudes y respuestas del proveedor de IA

    Problemas comunes

    Error de conexión a base de datos

    • Verifique que el formato de la cadena de conexión coincida con su proveedor
    • Compruebe que el servidor de base de datos sea accesible desde el contenedor
    • Para Docker Desktop en Windows/Mac, use host.docker.internal en lugar de localhost
    • Asegúrese de que el usuario de la base de datos tenga permisos para crear tablas

    Errores de CORS en el navegador

    • Agregue su origen exacto (incluido protocolo y puerto) a CorsPolicy.Origins
    • Compruebe la consola del navegador para ver el origen real que se bloquea

    Características de IA que no funcionan

    • Verifique que disableAI: false en el entorno de frontend
    • Compruebe que la clave API es válida y tiene créditos
    • Revise ai.log para mensajes de error específicos
    • Asegúrese de que el nombre del modelo coincida exactamente con los modelos disponibles

    Las cargas de archivos fallan

    • Verifique que el directorio de almacenamiento existe y es escribible
    • Compruebe MaxImageSizeMb si carga imágenes grandes
    • Asegúrese de que el volumen esté montado correctamente en Docker

    Autenticación que no funciona

    • Verifique que SkipAuth sea false
    • Compruebe que la URL de Authority sea accesible
    • Verifique que las URL de devolución de llamada coincidan tanto en la configuración como en el proveedor de OAuth
    • Compruebe la consola del navegador para errores de OAuth

    Docker Desktop en Windows

    Docker Desktop en Windows no se inicia automáticamente sin iniciar sesión en la máquina Windows Docker Desktop en Windows - El equipo de Docker no recomienda Docker Desktop para cargas de trabajo de producción. Debe usar Docker en una caja Linux o Docker para Windows Server si desea contenedores de Windows.

    Recursos adicionales