# 3proxy UI Control panel and runtime bundle for 3proxy in Docker. ## Current focus The project now includes both the UI and the first backend/runtime slice: - Express-based control plane API - generated `3proxy.cfg` from persisted panel state - runtime manager for start/restart/reload - access-log-backed traffic ingestion from a real 3proxy process - websocket-based live sync with top-level snapshot patches - Docker image that builds the panel and compiles 3proxy in-container - panel views for dashboard, users, and system - edge-case-focused frontend and backend tests ## Local run ```bash npm install npm run dev ``` `npm run dev` now starts both the Vite client and the Express control-plane server together. If you only need the backend process, use `npm run dev:server`. The local Vite dev server proxies both `/api` and `/ws` to the backend so the same panel build works with `http/ws` locally and can be promoted behind `https/wss` later. Default panel credentials: - login: `admin` - password: `proxy-ui-demo` For Docker runs these values come from `compose.yaml`: - `PANEL_AUTH_LOGIN` - `PANEL_AUTH_PASSWORD` - `PANEL_SESSION_TTL_HOURS` with a default of `24` The panel stores the issued session token in `sessionStorage`, so a browser refresh keeps the operator signed in until the token expires. Panel preferences are stored in `localStorage`, the active tab is tracked in the URL hash, and runtime data now arrives through websocket `snapshot.init` / `snapshot.patch` messages instead of periodic polling. Once the API is available, dashboard/user traffic values are refreshed from live 3proxy access logs instead of the seeded fallback snapshot. ## Docker run ```bash docker compose up --build ``` Published ports: - panel: `3000` - socks main: `1080` - socks lab: `2080` - http proxy: `3128` - 3proxy admin: `8081` Runtime state is persisted in the Docker volume `3proxyui_3proxy-runtime`. ## Scripts ```bash npm run dev npm run dev:server npm run build npm run test npm run test:run ```