diff --git a/README.md b/README.md index fca5f0c..e1efd92 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +

+ WGX: a padlock on a shield, with a W for a keyhole +

+ # WGX A WireGuard server with a secure web console, in one container. @@ -161,6 +165,18 @@ The UI is embedded in the binary. `docker build -t wgx .` does both steps. See [CONTRIBUTING.md](CONTRIBUTING.md) for the development loop against the mock data plane, which needs no privileges. +## History + +This is a complete, ground-up rewrite of an earlier WGX, "WireGuard +eXtended", which Coffey Labs published in October 2025 and later dropped. +That one was an installer: a collection of Bash scripts behind a text-mode +menu that set up and hardened a WireGuard stack on Debian 13 around a +third-party web UI. The +[original announcement](https://jcoffey.dev/articles/wg-easy-installer-debian-13/) +is still up. Nothing from it was carried over; this WGX is its own server and +its own console, in one container, with the name kept because the intent is +the same. + ## Licence AGPL-3.0-or-later. See [LICENSE](LICENSE). diff --git a/docs/brand/wgx-mark-1024.png b/docs/brand/wgx-mark-1024.png new file mode 100644 index 0000000..bcceb56 Binary files /dev/null and b/docs/brand/wgx-mark-1024.png differ diff --git a/docs/brand/wgx-mark-256.png b/docs/brand/wgx-mark-256.png new file mode 100644 index 0000000..66c8ca5 Binary files /dev/null and b/docs/brand/wgx-mark-256.png differ diff --git a/docs/brand/wgx-mark-mono-256.png b/docs/brand/wgx-mark-mono-256.png new file mode 100644 index 0000000..80c5dd2 Binary files /dev/null and b/docs/brand/wgx-mark-mono-256.png differ diff --git a/docs/brand/wgx-mark-mono.svg b/docs/brand/wgx-mark-mono.svg new file mode 100644 index 0000000..de27a1e --- /dev/null +++ b/docs/brand/wgx-mark-mono.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/docs/brand/wgx-mark.svg b/docs/brand/wgx-mark.svg new file mode 100644 index 0000000..13a56bb --- /dev/null +++ b/docs/brand/wgx-mark.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/brand/wgx-social.png b/docs/brand/wgx-social.png new file mode 100644 index 0000000..b28988e Binary files /dev/null and b/docs/brand/wgx-social.png differ diff --git a/docs/brand/wgx-wordmark-dark.png b/docs/brand/wgx-wordmark-dark.png new file mode 100644 index 0000000..d673f98 Binary files /dev/null and b/docs/brand/wgx-wordmark-dark.png differ diff --git a/docs/brand/wgx-wordmark.png b/docs/brand/wgx-wordmark.png new file mode 100644 index 0000000..91ad2dd Binary files /dev/null and b/docs/brand/wgx-wordmark.png differ diff --git a/web/index.html b/web/index.html index b86ec57..0fca13b 100644 --- a/web/index.html +++ b/web/index.html @@ -5,7 +5,11 @@ - + + + + + WGX diff --git a/web/public/apple-touch-icon.png b/web/public/apple-touch-icon.png new file mode 100644 index 0000000..8522cb0 Binary files /dev/null and b/web/public/apple-touch-icon.png differ diff --git a/web/public/favicon-32.png b/web/public/favicon-32.png new file mode 100644 index 0000000..31850ed Binary files /dev/null and b/web/public/favicon-32.png differ diff --git a/web/public/favicon.ico b/web/public/favicon.ico new file mode 100644 index 0000000..6b3325c Binary files /dev/null and b/web/public/favicon.ico differ diff --git a/web/public/favicon.svg b/web/public/favicon.svg new file mode 100644 index 0000000..13a56bb --- /dev/null +++ b/web/public/favicon.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/web/public/icon-192.png b/web/public/icon-192.png new file mode 100644 index 0000000..b143f4e Binary files /dev/null and b/web/public/icon-192.png differ diff --git a/web/public/icon-512.png b/web/public/icon-512.png new file mode 100644 index 0000000..d7582c2 Binary files /dev/null and b/web/public/icon-512.png differ diff --git a/web/public/site.webmanifest b/web/public/site.webmanifest new file mode 100644 index 0000000..22da4d8 --- /dev/null +++ b/web/public/site.webmanifest @@ -0,0 +1,13 @@ +{ + "name": "WGX", + "short_name": "WGX", + "description": "WireGuard server console", + "start_url": "/", + "display": "standalone", + "background_color": "#111715", + "theme_color": "#121a17", + "icons": [ + { "src": "/icon-192.png", "sizes": "192x192", "type": "image/png" }, + { "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" } + ] +} diff --git a/web/src/components/Layout.tsx b/web/src/components/Layout.tsx index 8bf18cb..8922a1b 100644 --- a/web/src/components/Layout.tsx +++ b/web/src/components/Layout.tsx @@ -2,6 +2,8 @@ import type { ReactNode } from "react"; import { Link, useLocation } from "wouter"; import { Activity, ClipboardList, LayoutDashboard, LogOut, Settings, Shield, Users, Wifi, WifiOff } from "lucide-react"; import { useAuth, useLive } from "../state"; +import { Mark } from "./Mark"; +import { ThemeSwitch } from "./ThemeSwitch"; const items = [ { href: "/", label: "Dashboard", icon: LayoutDashboard }, @@ -20,10 +22,8 @@ export function Layout({ children }: { children: ReactNode }) {