diff --git a/README.md b/README.md index 90f5f78419..a31510e918 100644 --- a/README.md +++ b/README.md @@ -356,6 +356,36 @@ After changing hostname or ports: 2. Access the UI at: `http://${HOST}:${ARCHON_UI_PORT}` 3. Update your AI client configuration with the new hostname and MCP port +### Custom Domain Access + +To access Archon via custom domains (useful for reverse proxy setups or local network access): + +```bash +# Add to your .env file +VITE_ALLOWED_HOSTS=archon.lan + +# Multiple domains (comma-separated) +VITE_ALLOWED_HOSTS=archon.lan,archon.local,myserver.lan +``` + +**Common Use Cases:** +- **Local Network Access**: Access from other devices using `archon.lan` or similar +- **Reverse Proxy**: Using Caddy, nginx with custom domains +- **mDNS/Bonjour**: Setting up `.local` hostnames + +**Example Caddy Configuration:** +```caddyfile +archon.lan { + tls internal + reverse_proxy 192.168.1.100:3737 +} +``` + +**Important**: After adding `VITE_ALLOWED_HOSTS`, restart the frontend: +```bash +docker compose restart archon-frontend +``` + ## 🔧 Development ### Quick Start diff --git a/docs/docs/configuration.mdx b/docs/docs/configuration.mdx index e4fc371ade..b5afa0052e 100644 --- a/docs/docs/configuration.mdx +++ b/docs/docs/configuration.mdx @@ -102,12 +102,50 @@ LOGFIRE_ENABLED=false # true=Logfire logging, false=standard loggin # Service Discovery (automatically set for Docker) # SERVICE_DISCOVERY_MODE=docker_compose + +# Custom Domain Configuration (Optional) +VITE_ALLOWED_HOSTS=archon.lan # For custom domains +# VITE_ALLOWED_HOSTS=archon.lan,archon.local # Multiple domains ``` - **API Keys**: Set through the Settings page UI instead of environment variables - **Logging**: Use `LOGFIRE_ENABLED=true/false` to toggle between standard and enhanced logging - **Zero Setup**: Standard logging works perfectly without any additional configuration +- **Custom Domains**: Use `VITE_ALLOWED_HOSTS` for local network access or reverse proxy setups + + +### 2. Custom Domain Configuration + +For accessing Archon via custom domains (useful for local network access or reverse proxy setups): + +```bash +# Single custom domain +VITE_ALLOWED_HOSTS=archon.lan + +# Multiple domains (comma-separated) +VITE_ALLOWED_HOSTS=archon.lan,archon.local,myserver.lan +``` + + +- **Local Network Access**: Access from other devices using `archon.lan` or similar +- **Reverse Proxy**: Using Caddy, nginx, or similar with custom domains +- **mDNS/Bonjour**: Setting up `.local` hostnames for easy discovery + + +**Example Caddy Configuration:** +```caddyfile +archon.lan { + tls internal + reverse_proxy 192.168.1.100:3737 +} +``` + + +After adding `VITE_ALLOWED_HOSTS`, restart the frontend container: +```bash +docker compose restart archon-frontend +``` ### Unified Logging Architecture diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index d7a365bf7f..7d1836a38e 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -132,7 +132,7 @@ export default { title: 'Archon', logo: { alt: 'Archon Logo', - src: 'logo-neon.png', + src: 'img/logo-neon.png', }, items: [ { diff --git a/docs/package-lock.json b/docs/package-lock.json index 0d8f7792c3..6dbc8aad63 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -12,12 +12,12 @@ "@docusaurus/preset-classic": "^3.8.0", "@docusaurus/theme-mermaid": "^3.8.0", "@mdx-js/react": "^3.0.0", + "@xyflow/react": "^12.6.0", "clsx": "^2.0.0", "lucide-react": "^0.513.0", "prism-react-renderer": "^2.4.0", "react": "^18.0.0", - "react-dom": "^18.0.0", - "reactflow": "^11.11.0" + "react-dom": "^18.0.0" } }, "node_modules/@algolia/autocomplete-core": { @@ -4187,108 +4187,6 @@ "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", "license": "MIT" }, - "node_modules/@reactflow/background": { - "version": "11.3.14", - "resolved": "https://registry.npmjs.org/@reactflow/background/-/background-11.3.14.tgz", - "integrity": "sha512-Gewd7blEVT5Lh6jqrvOgd4G6Qk17eGKQfsDXgyRSqM+CTwDqRldG2LsWN4sNeno6sbqVIC2fZ+rAUBFA9ZEUDA==", - "license": "MIT", - "dependencies": { - "@reactflow/core": "11.11.4", - "classcat": "^5.0.3", - "zustand": "^4.4.1" - }, - "peerDependencies": { - "react": ">=17", - "react-dom": ">=17" - } - }, - "node_modules/@reactflow/controls": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@reactflow/controls/-/controls-11.2.14.tgz", - "integrity": "sha512-MiJp5VldFD7FrqaBNIrQ85dxChrG6ivuZ+dcFhPQUwOK3HfYgX2RHdBua+gx+40p5Vw5It3dVNp/my4Z3jF0dw==", - "license": "MIT", - "dependencies": { - "@reactflow/core": "11.11.4", - "classcat": "^5.0.3", - "zustand": "^4.4.1" - }, - "peerDependencies": { - "react": ">=17", - "react-dom": ">=17" - } - }, - "node_modules/@reactflow/core": { - "version": "11.11.4", - "resolved": "https://registry.npmjs.org/@reactflow/core/-/core-11.11.4.tgz", - "integrity": "sha512-H4vODklsjAq3AMq6Np4LE12i1I4Ta9PrDHuBR9GmL8uzTt2l2jh4CiQbEMpvMDcp7xi4be0hgXj+Ysodde/i7Q==", - "license": "MIT", - "dependencies": { - "@types/d3": "^7.4.0", - "@types/d3-drag": "^3.0.1", - "@types/d3-selection": "^3.0.3", - "@types/d3-zoom": "^3.0.1", - "classcat": "^5.0.3", - "d3-drag": "^3.0.0", - "d3-selection": "^3.0.0", - "d3-zoom": "^3.0.0", - "zustand": "^4.4.1" - }, - "peerDependencies": { - "react": ">=17", - "react-dom": ">=17" - } - }, - "node_modules/@reactflow/minimap": { - "version": "11.7.14", - "resolved": "https://registry.npmjs.org/@reactflow/minimap/-/minimap-11.7.14.tgz", - "integrity": "sha512-mpwLKKrEAofgFJdkhwR5UQ1JYWlcAAL/ZU/bctBkuNTT1yqV+y0buoNVImsRehVYhJwffSWeSHaBR5/GJjlCSQ==", - "license": "MIT", - "dependencies": { - "@reactflow/core": "11.11.4", - "@types/d3-selection": "^3.0.3", - "@types/d3-zoom": "^3.0.1", - "classcat": "^5.0.3", - "d3-selection": "^3.0.0", - "d3-zoom": "^3.0.0", - "zustand": "^4.4.1" - }, - "peerDependencies": { - "react": ">=17", - "react-dom": ">=17" - } - }, - "node_modules/@reactflow/node-resizer": { - "version": "2.2.14", - "resolved": "https://registry.npmjs.org/@reactflow/node-resizer/-/node-resizer-2.2.14.tgz", - "integrity": "sha512-fwqnks83jUlYr6OHcdFEedumWKChTHRGw/kbCxj0oqBd+ekfs+SIp4ddyNU0pdx96JIm5iNFS0oNrmEiJbbSaA==", - "license": "MIT", - "dependencies": { - "@reactflow/core": "11.11.4", - "classcat": "^5.0.4", - "d3-drag": "^3.0.0", - "d3-selection": "^3.0.0", - "zustand": "^4.4.1" - }, - "peerDependencies": { - "react": ">=17", - "react-dom": ">=17" - } - }, - "node_modules/@reactflow/node-toolbar": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@reactflow/node-toolbar/-/node-toolbar-1.3.14.tgz", - "integrity": "sha512-rbynXQnH/xFNu4P9H+hVqlEUafDCkEoCy0Dg9mG22Sg+rY/0ck6KkrAQrYrTgXusd+cEJOMK0uOOFCK2/5rSGQ==", - "license": "MIT", - "dependencies": { - "@reactflow/core": "11.11.4", - "classcat": "^5.0.3", - "zustand": "^4.4.1" - }, - "peerDependencies": { - "react": ">=17", - "react-dom": ">=17" - } - }, "node_modules/@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", @@ -5431,6 +5329,38 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "license": "Apache-2.0" }, + "node_modules/@xyflow/react": { + "version": "12.8.5", + "resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.8.5.tgz", + "integrity": "sha512-NRwcE8QE7dh6BbaIT7GmNccP7/RMDZJOKtzK4HQw599TAfzC8e5E/zw/7MwtpnSbbkqBYc+jZyOisd57sp/hPQ==", + "license": "MIT", + "dependencies": { + "@xyflow/system": "0.0.69", + "classcat": "^5.0.3", + "zustand": "^4.4.0" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/@xyflow/system": { + "version": "0.0.69", + "resolved": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.69.tgz", + "integrity": "sha512-+KYwHDnsapZQ1xSgsYwOKYN93fUR770LwfCT5qrvcmzoMaabO1rHa6twiEk7E5VUIceWciF8ukgfq9JC83B5jQ==", + "license": "MIT", + "dependencies": { + "@types/d3-drag": "^3.0.7", + "@types/d3-interpolate": "^3.0.4", + "@types/d3-selection": "^3.0.10", + "@types/d3-transition": "^3.0.8", + "@types/d3-zoom": "^3.0.8", + "d3-drag": "^3.0.0", + "d3-interpolate": "^3.0.1", + "d3-selection": "^3.0.0", + "d3-zoom": "^3.0.0" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -15973,24 +15903,6 @@ "react": ">=15" } }, - "node_modules/reactflow": { - "version": "11.11.4", - "resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.11.4.tgz", - "integrity": "sha512-70FOtJkUWH3BAOsN+LU9lCrKoKbtOPnz2uq0CV2PLdNSwxTXOhCbsZr50GmZ+Rtw3jx8Uv7/vBFtCGixLfd4Og==", - "license": "MIT", - "dependencies": { - "@reactflow/background": "11.3.14", - "@reactflow/controls": "11.2.14", - "@reactflow/core": "11.11.4", - "@reactflow/minimap": "11.7.14", - "@reactflow/node-resizer": "2.2.14", - "@reactflow/node-toolbar": "1.3.14" - }, - "peerDependencies": { - "react": ">=17", - "react-dom": ">=17" - } - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", diff --git a/docs/src/pages/index.js b/docs/src/pages/index.js index b3c5018a8f..b938294b02 100644 --- a/docs/src/pages/index.js +++ b/docs/src/pages/index.js @@ -267,7 +267,7 @@ const ReactFlowDiagram = ({ reactFlowInstance, lucideIcons }) => { style={{ background: '#8b5cf6', border: '2px solid #8b5cf6' }} /> Python - Archon + Archon

{data.label}

{data.subtitle}

diff --git a/docs/static/img/logo-neon.png b/docs/static/img/logo-neon.png new file mode 100644 index 0000000000..36aafa1334 Binary files /dev/null and b/docs/static/img/logo-neon.png differ