changemaker.lite/admin/vite.config.ts
bunker-admin d17e197a1b Fix Vite allowedHosts blocking production domains
Set allowedHosts to true since nginx handles Host header
validation. The previous `.${domain}` pattern used the
build-time DOMAIN value, which breaks when the same image
is deployed to a different domain.

Bunker Admin
2026-04-07 14:21:16 -06:00

55 lines
1.9 KiB
TypeScript

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';
// Get domain from environment (fallback to cmlite.org)
const domain = process.env.DOMAIN || 'cmlite.org';
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
},
},
server: {
port: 3000,
host: '0.0.0.0',
// Allow all hosts — nginx handles Host header validation in production.
// Vite's allowedHosts only sees the build-time DOMAIN value, which may
// differ from the runtime domain (e.g., image built for cmlite.org but
// deployed to wokemail.org).
allowedHosts: true,
proxy: {
'/api': {
// Use env var with fallback: Docker uses container name, local uses localhost
target: process.env.VITE_API_URL || 'http://localhost:4000',
changeOrigin: true,
ws: true, // WebSocket passthrough for docs collaboration
},
'/media/public': {
// Public media routes: rewrite to /api/public (matches Fastify prefix: '/api')
target: process.env.VITE_MEDIA_API_URL || 'http://localhost:4100',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/media\/public/, '/api/public'),
},
'/media': {
// Media API proxy: other routes (/videos, /reactions) rewrite to /api
target: process.env.VITE_MEDIA_API_URL || 'http://localhost:4100',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/media/, '/api'),
},
'/mkdocs-proxy': {
// Docker: uses VITE_MKDOCS_URL (container networking)
// Local dev: computes from MKDOCS_PORT in .env (dynamic)
// Fallback: defaults to 4003 if neither is set
target: process.env.VITE_MKDOCS_URL ||
`http://localhost:${process.env.MKDOCS_PORT || '4003'}`,
changeOrigin: true,
rewrite: (p) => p.replace(/^\/mkdocs-proxy/, ''),
ws: true,
},
},
},
});