diff --git a/next.config.mjs b/next.config.mjs index 327f59df..c328a858 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -102,6 +102,11 @@ const nextConfig = { destination: '/about-netbird/self-hosted-vs-cloud', permanent: true, }, + { + source: '/about-netbird/other', + destination: '/introduction', + permanent: true, + }, // documentation redirects for access control { source: '/how-to/manage-network-access', diff --git a/src/pages/about-netbird/other.mdx b/src/pages/about-netbird/other.mdx deleted file mode 100644 index f14e91c2..00000000 --- a/src/pages/about-netbird/other.mdx +++ /dev/null @@ -1,222 +0,0 @@ -import {Note} from "@/components/mdx"; - -# Other - -## Google Summer of Code Ideas - 2022 - -This page lists the all project ideas for [Google Summer of Code 2022](https://summerofcode.withgoogle.com/). - -We require all applicants to complete a [task](#task). - -Join our [Slack channel](https://join.slack.com/t/wiretrustee/shared_invite/zt-vrahf41g-ik1v7fV8du6t0RwxSrJ96A) and talk to your potential mentors! - -### Task - -The goal of the task is to get familiar with the system by setting up a self-hosted version of Netbird. - -1. Carefully review projects' documentation. -2. Deploy a self-hosted version of NetBird. -3. Register at least 2 peers in the system (can be a laptop, server or even Raspberry PI). - -It is possible to set up multiple peers on the same machine. Find out how! - -4. Ping machines and make sure that they are reachable. -5. We might ask you to provide a generated [setup key](/manage/peers/register-machines-using-setup-keys) so that we could test your setup. - -Please reach out to us with any questions. We believe you will have some! :) - -In case this task seems to be difficult, no worries! -You could skip #1 and #2 starting with #3 using managed version of NetBird (https://app.netbird.io). - -### Project Ideas - -There are a few categories that our ideas fall into: -* **UI** - mostly around our Management service Dashboard ([Github repo](https://github.com/netbirdio/dashboard)) -* **Client** - our client application ([Github Repo](https://github.com/netbirdio/netbird/tree/main/client)) -* **Server** - our Management and Signal server applications ([Management Github Repo](https://github.com/netbirdio/netbird/tree/main/management) and [Signal Github Repo](https://github.com/netbirdio/netbird/tree/main/signal)) -* **Portability** - ability to run client and server applications on different platforms (e.g. OpenWRT) -* **Infrastructure** - deployment, CI/CD, scaling, infrastructure as code improvements, etc. -* **Integrations** - integration between the project and different platforms, like CI/CD, Kubernetes or specific cloud providers. - - -### Idea: Make NetBird run on routers - -OpenWrt is an open-source project for embedded operating systems based on Linux, primarily used on embedded devices to route network traffic. - -https://openwrt.org/ - - -NetBird runs on different platforms and can also be compiled to run on routers. For that, we are thinking to work on this support for the popular wireless router OpenWRT. - -We are already building, but we lack packaging and repository for distribution and this is the main goal of this task. - -> **Category:** Portability/Infrastructure -> -> **Goal:** Create OpenWRT package (ipk) for one of the popular routers. Setup CI/CD ipk build flow with Github Actions. -> -> **Skills:** Golang, Linux, bash, OpenWRT, cmake -> -> **Project Size:** 175 hours -> -> **Rating:** easy -> -> **Possible mentor:** [Maycon Santos](https://github.com/mlsmaycon) -> -> **Reference:** https://medium.com/@theshemul/make-golang-program-for-router-39bf18529b18 -> -> **Reference:** https://openwrt.org/docs/guide-developer/packages - -### Idea: Software Firewall with eBPF - -eBPF is a revolutionary technology with origins in the Linux kernel that can run sandboxed programs in an operating system kernel. - -https://ebpf.io/ - -When running on machines NetBird client application tries to be as efficient as possible. -On Linux machines NetBird can use kernel modules like Wireguard and features like eBPF to be the most efficient. - -Besides connectivity, NetBird can control access. Right now it is achieved on a connection level - -if a peer is in the allowed list, it can connect. If not, the connection is rejected. - -It is more advantageous to work on a finer level - defining what packets to allow/block and on which ports. - -For that eBPF can be integrated into the client application. -The flow could be the following: client receives rules from the Management service and creates ePBF. - -> **Category:** Client/Server -> -> **Goal:** MVP of a eBPF port filtering on client applications (Linux) -> -> **Skills:** Golang, Linux -> -> **Project Size:** 350 hours -> -> **Rating:** hard -> -> **Possible mentor:** [Mikhail Bragin](https://github.com/braginini) -> -> **Reference:** https://ebpf.io/ - -### Idea: NetBird client running in the browser - - -WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. -Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client -and server applications. - - -NetBird requires a client application installed to connect machines to each other. -In some environments it might not be possible or forbidden to install applications. -But there always might be an option to run a browser! - -The idea of this project is to make NetBird run in the browser using WASM and WebRTC. -A user would log in to the Management Dashboard and open a virtual terminal (e.g. https://xtermjs.org/). -Browser will then establish a connection to the network and user would be able to access remote servers. - -> **Category:** UI/Client/Server -> -> **Goal:** Interactive console running in the browser establishing connection to the NetBird network. -> -> **Skills:** Golang, Linux, Javascript -> -> **Project Size:** 350 hours -> -> **Rating:** hard -> -> **Possible mentor:** [Mikhail Bragin](https://github.com/braginini) / [Maycon Santos](https://github.com/mlsmaycon) -> -> **Reference:** https://webassembly.org/ -> -> **Reference:** https://webrtc.org/ -> -> **Reference:** https://xtermjs.org/ - -### Idea: Integrate NetBird with Kubernetes - - -Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications. - - -Having a private Kubernetes cluster is a best practices that come with some connectivity challenges, -especially to operators and developers that need to access resources running within the cluster like services, -pods and the Kubernetes API. - -The idea of this project is to integrate NetBird with Kubernetes by creating a controller that would add an agent -per cluster node and would handle the login process of the agent and store the states in form of Kubernetes secrets. -As Kubernetes is a cloud-native platform, you can imagine that are some caveats that we will have to deal with, like nodes being removed and added all the time, -different network controllers, and different cloud environments. - -> **Category:** Client/Infrastructure/Integrations -> -> **Goal:** Integrate NetBird with Kubernetes for automatic provision of agents. -> -> **Skills:** Golang, Linux, Kubernetes API -> -> **Project Size:** 350 hours -> -> **Rating:** hard -> -> **Possible mentor:** [Maycon Santos](https://github.com/mlsmaycon), [Sang Woo Bae](https://github.com/shatoboar) -> -> **Reference:** https://kubernetes.io/ -> -> **Reference:** https://kubernetes.io/docs/concepts/architecture/controller/ -> -> **Reference:** https://kubernetes.io/blog/2021/06/21/writing-a-controller-for-pod-labels/ - - -### Idea: NetBird Github Action - - -GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub. -Make code reviews, branch management, and issue triaging work the way you want. - - -We love Github Actions, because of its primary concept, Actions. They allow us to automate complex workflows and provide a simple interface -to be configured and executed before building or testing our code. - -The idea of this project is to create a NetBird agent action, that would download and run an ephemeral agent on Github Actions workflows. The benefits of this -could be great as it would allow many users that rely on the public runners to access private resources, in a secure and dynamic way. - -> **Category:** Server/Client/Integrations -> -> **Goal:** Create a NetBird Github Action. -> -> **Skills:** Golang, Bash, Javascript -> -> **Project Size:** 175 hours -> -> **Rating:** easy -> -> **Possible mentor:** [Maycon Santos](https://github.com/mlsmaycon) -> -> **Reference:** https://docs.github.com/en/actions -> -> **Reference:** https://docs.netbird.io/getting-started/quickstart -> -> **Reference:** https://docs.github.com/en/actions/creating-actions/about-custom-actions - -### Idea: Mobile Client APPs - -Nowadays people are always connected with mobile phones and very often they need to access remote resources with them. - -The idea of this project is to create a NetBird mobile app for either Android or iOS that would follow one of the principles of our product, simplicity. -Initially we think to export our Go APIs using GoMobile that would help with a good chuck of the heavy lifting. - -> **Category:** UI/Client/Portability -> -> **Goal:** Create a NetBird Mobile Client App. -> -> **Skills:** Golang, Java/Kotlin, XCode, Flutter+Dart -> -> **Project Size:** 350 hours -> -> **Rating:** hard -> -> **Possible mentor:** [Mikhail Bragin](https://github.com/braginini) -> -> -> **Reference:** https://github.com/golang/mobile -> -> **Reference:** https://medium.com/stack-me-up/meet-the-coolest-tech-marriage-flutter-go-369cf11367c9 -