Full Go backend + Vue 3 frontend, OpenAI-compatible API, multi-provider account pools, billing/admin, Docker one-command deploy with auto HTTPS. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
40 lines
1.8 KiB
JavaScript
40 lines
1.8 KiB
JavaScript
import { defineConfig } from 'vite'
|
|
import vue from '@vitejs/plugin-vue'
|
|
import tailwindcss from '@tailwindcss/vite'
|
|
|
|
// Dev server proxies backend routes to the Go backend (default :6666) so the
|
|
// frontend can use relative paths exactly like the old static UI did. Override
|
|
// the target with VITE_BACKEND when the backend runs elsewhere.
|
|
const backend = process.env.VITE_BACKEND || 'http://127.0.0.1:6666'
|
|
|
|
// Vite's underlying http-proxy doesn't add X-Forwarded-For / X-Real-IP by
|
|
// default, so the backend just sees the proxy's loopback address as the
|
|
// caller and stamps every login as 127.0.0.1. This hook forwards the real
|
|
// socket peer instead. (Only useful when the dev server is reachable from
|
|
// another device on the LAN — same-machine browsing is genuinely 127.0.0.1.)
|
|
function forwardClientIp(proxy) {
|
|
proxy.on('proxyReq', (proxyReq, req) => {
|
|
const ip = (req.socket && req.socket.remoteAddress) || ''
|
|
if (!ip) return
|
|
const existing = req.headers['x-forwarded-for']
|
|
proxyReq.setHeader('x-forwarded-for', existing ? `${existing}, ${ip}` : ip)
|
|
if (!req.headers['x-real-ip']) proxyReq.setHeader('x-real-ip', ip)
|
|
})
|
|
}
|
|
|
|
export default defineConfig({
|
|
plugins: [vue(), tailwindcss()],
|
|
server: {
|
|
port: 5173,
|
|
proxy: {
|
|
// Only the admin API is proxied — bare /admin/* is an SPA route now
|
|
// (the admin shell), handled client-side by vue-router.
|
|
'/admin/api': { target: backend, changeOrigin: true, configure: forwardClientIp },
|
|
'/health': { target: backend, changeOrigin: true, configure: forwardClientIp },
|
|
// Generated artifacts are served from /images.
|
|
'/images': { target: backend, changeOrigin: true, configure: forwardClientIp },
|
|
'/v1': { target: backend, changeOrigin: true, configure: forwardClientIp },
|
|
},
|
|
},
|
|
})
|