# Stage deployment The admin panel is a static Vite bundle. The backend and device remain separate services. Build a stage image with the service URLs embedded into the bundle: ```bash docker build \ --build-arg VITE_API_URL=https://server.white-nights-stage.makkah.verstack.ru \ --build-arg VITE_KRBL_MEDIA=https://server.white-nights-stage.makkah.verstack.ru/media/ \ --build-arg VITE_GEO_API_URL=https://device.white-nights-stage.makkah.verstack.ru \ --build-arg VITE_WEATHER_API_URL=https://device.white-nights-stage.makkah.verstack.ru \ -t white-nights-admin-panel:stage . ``` The backend URL serves content, authentication, media and admin API requests. The device URL serves geolocation and weather requests used by `/demo/:id`. The device ingress must publish the geolocation and weather paths to the corresponding device ports. The browser must also be authorized by Authelia and the backend must allow the frontend origin through CORS.