diff --git a/.gitignore b/.gitignore index 38b27c6..9a85e0c 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,5 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -pacakge-lock.json +package-lock.json tsconfig.tsbuildinfo - diff --git a/packages/docusaurus/docs/01-overview.md b/packages/docusaurus/docs/01-overview.md index 438d92e..0973749 100644 --- a/packages/docusaurus/docs/01-overview.md +++ b/packages/docusaurus/docs/01-overview.md @@ -1,3 +1,39 @@ # Overview - +## Components Overview + +Pangolin’s architecture consists of the following components, each designed to handle a specific aspect of the system: + +### [**Pangolin**](https://github.com/fosrl/pangolin) (Management Application & Central Server) + The central hub for managing the application. Pangolin includes: + - Most business logic. + - External facing rest API. + - WebSocket server for managing Newt sites. + - Internal facing rest API for communication between components on the VPS. + - Frontend server for the web interface. + - Main database for storing data. + - Authentication system. + +### [**Gerbil**](https://github.com/fosrl/gerbil) (WireGuard Interface Management) + Acts as the intermediary for managing WireGuard configurations. It creates and maintains the secure tunnels between sites and the Pangolin server. + +### [**Traefik**](https://github.com/traefik/traefik) (Reverse Proxy) + A high-performance, modular reverse proxy that routes requests to private resources. Traefik is widely adopted, and its plugin system allows further customization and security enhancements. For example: + - Out-of-the-box compatibility with plugins like Fail2Ban or CrowdSec. + - Enhanced security via our custom Traefik plugin Badger, which acts as an authentication bouncer. + +### [**Badger**](https://github.com/traefik/badger) (Traefik Plugin): + A custom Traefik plugin that acts as an authentication bouncer. Badger: + - Intercepts requests to the Traefik reverse proxy. + - Redirects unauthenticated requests to the Pangolin server for authentication. + +### [**Newt**](https://github.com/fosrl/newt) (Minimal User Space WireGuard Client) + A lightweight client designed to run on the private network. Newt: + - Connects to the Pangolin server via WebSocket for managing endpoints. + - Facilitates networking through its connection to Gerbil over the encrypted tunnel. + +## System Diagram + +
+  +
diff --git a/packages/docusaurus/docusaurus.config.ts b/packages/docusaurus/docusaurus.config.ts index 5827883..ae35c69 100644 --- a/packages/docusaurus/docusaurus.config.ts +++ b/packages/docusaurus/docusaurus.config.ts @@ -37,26 +37,28 @@ const config: Config = { { docs: { sidebarPath: './sidebars.ts', + routeBasePath: '/' // Please change this to your repo. // Remove this to remove the "edit this page" links. // editUrl: // 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, - blog: { - showReadingTime: true, - feedOptions: { - type: ['rss', 'atom'], - xslt: true, - }, - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - // editUrl: - // 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', - // Useful options to enforce blogging best practices - onInlineTags: 'warn', - onInlineAuthors: 'warn', - onUntruncatedBlogPosts: 'warn', - }, + blog: false, + // blog: { + // showReadingTime: true, + // feedOptions: { + // type: ['rss', 'atom'], + // xslt: true, + // }, + // // Please change this to your repo. + // // Remove this to remove the "edit this page" links. + // // editUrl: + // // 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', + // // Useful options to enforce blogging best practices + // onInlineTags: 'warn', + // onInlineAuthors: 'warn', + // onUntruncatedBlogPosts: 'warn', + // }, theme: { customCss: './src/css/custom.css', }, @@ -80,7 +82,7 @@ const config: Config = { position: 'left', label: 'Docs', }, - {to: '/blog', label: 'Blog', position: 'left'}, + // {to: '/blog', label: 'Blog', position: 'left'}, { href: 'https://github.com/fosrl', label: 'GitHub', @@ -91,45 +93,45 @@ const config: Config = { footer: { style: 'dark', links: [ - { - title: 'Docs', - items: [ - { - label: 'Docs', - to: '/docs/overview', - }, - ], - }, - { - title: 'Community', - items: [ - // { - // label: 'Stack Overflow', - // href: 'https://stackoverflow.com/questions/tagged/docusaurus', - // }, - { - label: 'Discord', - href: 'https://discordapp.com/invite/docusaurus', - }, - // { - // label: 'X', - // href: 'https://x.com/docusaurus', - // }, - ], - }, - { - title: 'More', - items: [ - { - label: 'Blog', - to: '/blog', - }, - { - label: 'GitHub', - href: 'https://github.com/fosrl', - }, - ], - }, + // { + // title: 'Docs', + // items: [ + // { + // label: 'Docs', + // to: '/docs/overview', + // }, + // ], + // }, + // { + // title: 'Community', + // items: [ + // // { + // // label: 'Stack Overflow', + // // href: 'https://stackoverflow.com/questions/tagged/docusaurus', + // // }, + // { + // label: 'Discord', + // href: 'https://discordapp.com/invite/docusaurus', + // }, + // // { + // // label: 'X', + // // href: 'https://x.com/docusaurus', + // // }, + // ], + // }, + // { + // title: 'More', + // items: [ + // // { + // // label: 'Blog', + // // to: '/blog', + // // }, + // { + // label: 'GitHub', + // href: 'https://github.com/fosrl', + // }, + // ], + // }, ], copyright: `Copyright © ${new Date().getFullYear()} Fossorial, LLC`, }, diff --git a/packages/docusaurus/src/components/HomepageFeatures/index.tsx b/packages/docusaurus/src/components/HomepageFeatures/index.tsx index 06277ff..4f0c448 100644 --- a/packages/docusaurus/src/components/HomepageFeatures/index.tsx +++ b/packages/docusaurus/src/components/HomepageFeatures/index.tsx @@ -1,19 +1,52 @@ -import clsx from 'clsx'; -import Heading from '@theme/Heading'; -import styles from './styles.module.css'; +import clsx from "clsx"; +import Heading from "@theme/Heading"; +import styles from "./styles.module.css"; type FeatureItem = { title: string; - Svg: React.ComponentTypedocs
directory.
+ >
+ ),
+ },
+ {
+ title: "Powered by React",
+ // Svg: require("@site/static/img/undraw_docusaurus_react.svg").default,
+ description: (
+ <>
+ Extend or customize your website layout by reusing React. Docusaurus can
+ be extended while reusing the same header and footer.
+ >
+ ),
+ },
+];
+
+function Feature({ title, description }: FeatureItem) {
return (
- {description}
@@ -27,7 +60,9 @@ export default function HomepageFeatures(): JSX.Element {