Files
aigen/nuxt.config.ts
T

90 lines
4.2 KiB
TypeScript

const xaigenStudio = /^xaigen$/i.test(String(process.env.NUXT_PUBLIC_STUDIO || '').trim())
|| /xaigen/i.test(String(process.env.NUXT_PUBLIC_INSTANCE_NAME || '').trim())
export default defineNuxtConfig({
compatibilityDate: '2025-08-01',
modules: ['@nuxtjs/tailwindcss'],
css: ['~/assets/css/main.css'],
app: {
head: {
title: 'AIGen — MiniMax H3',
htmlAttrs: { lang: 'en', class: 'dark' },
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1, viewport-fit=cover' },
{ name: 'theme-color', content: '#09090b' },
{ name: 'description', content: 'Headless MiniMax H3 image-to-video studio relayed to local ComfyUI.' }
],
link: [
{ rel: 'icon', type: 'image/svg+xml', href: xaigenStudio ? '/favicon.svg' : '/favicon-aigen.svg' },
{ rel: 'preconnect', href: 'https://fonts.googleapis.com' },
{ rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' },
{
rel: 'stylesheet',
href: 'https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=Syne:wght@600;700;800&display=swap'
}
]
}
},
runtimeConfig: {
comfyHost: process.env.COMFY_HOST || '',
comfyPort: process.env.COMFY_PORT || '',
comfyLaunchCmd: process.env.COMFY_LAUNCH_CMD || '',
comfyControlUrl: process.env.COMFY_CONTROL_URL || '',
comfyControlToken: process.env.COMFY_CONTROL_TOKEN || '',
comfyProxyPort: process.env.COMFY_PROXY_PORT || '8198',
monitorToken: process.env.MONITOR_TOKEN || '',
imageComfyHost: process.env.IMAGE_COMFY_HOST || '',
imageComfyPort: process.env.IMAGE_COMFY_PORT || '',
imageComfyPrimaryHost: process.env.IMAGE_COMFY_PRIMARY_HOST || '',
imageComfyFallbackHost: process.env.IMAGE_COMFY_FALLBACK_HOST || '',
imageComfyLaunchCmd: process.env.IMAGE_COMFY_LAUNCH_CMD || '',
imageComfyControlUrl: process.env.IMAGE_COMFY_CONTROL_URL || '',
imageComfyControlToken: process.env.IMAGE_COMFY_CONTROL_TOKEN || '',
promptComfyHost: process.env.PROMPT_COMFY_HOST || '',
sessionSecret: process.env.NUXT_SESSION_SECRET || '',
oidcClientId: process.env.NUXT_OIDC_CLIENT_ID || '',
oidcClientSecret: process.env.NUXT_OIDC_CLIENT_SECRET || '',
oidcIssuer: process.env.NUXT_OIDC_ISSUER || '',
oidcAuthorizeUrl: process.env.NUXT_OIDC_AUTHORIZE_URL || '',
oidcTokenUrl: process.env.NUXT_OIDC_TOKEN_URL || '',
oidcUserinfoUrl: process.env.NUXT_OIDC_USERINFO_URL || '',
libraryDir: process.env.LIBRARY_DIR || (process.env.NODE_ENV === 'production' ? '/data/library' : '.data/library'),
authMode: process.env.NUXT_AUTH_MODE || process.env.AUTH_MODE || '',
authUsername: process.env.AUTH_USERNAME || '',
authPassword: process.env.AUTH_PASSWORD || '',
backupStudioUrl: process.env.BACKUP_STUDIO_URL ?? (xaigenStudio ? '' : 'https://xaigen.carrgarage.com'),
backupStudioToken: process.env.BACKUP_STUDIO_TOKEN || 'carr-aigen-xaigen-backup',
backupIngestToken: process.env.BACKUP_INGEST_TOKEN || 'carr-aigen-xaigen-backup',
purgeComfyOutputs: process.env.PURGE_COMFY_OUTPUTS !== 'false',
comfyFilenamePrefix: process.env.COMFY_FILENAME_PREFIX || 'video/MiniMax_H3',
comfyAudioPrefix: process.env.COMFY_AUDIO_PREFIX || 'audio/AIGen',
kreaConceptLora: process.env.NUXT_KREA_CONCEPT_LORA || '',
public: {
authEnabled: process.env.NUXT_PUBLIC_AUTH_ENABLED === 'true',
authMode: process.env.NUXT_PUBLIC_AUTH_MODE || process.env.AUTH_MODE || '',
instanceName: process.env.NUXT_PUBLIC_INSTANCE_NAME || 'AIGen',
// NUXT_PUBLIC_STUDIO=xaigen on the xAIGen Coolify app (LTX Pink Cherry + xAIGen-prefixed LoRAs)
studio: process.env.NUXT_PUBLIC_STUDIO || '',
kreaConceptLora: process.env.NUXT_PUBLIC_KREA_CONCEPT_LORA || process.env.NUXT_KREA_CONCEPT_LORA || '',
backupStudioEnabled: !xaigenStudio
}
},
nitro: {
preset: 'node-server',
routeRules: {
'/api/generate/**': {
headers: {
'Cache-Control': 'no-cache, no-store, no-transform',
'X-Accel-Buffering': 'no'
}
},
'/api/prompt/**': {
headers: {
'Cache-Control': 'no-cache, no-store, no-transform'
}
}
}
}
})