Skip to content

Commit 5f65f8a

Browse files
committed
[gsoc25] Added VPN sync project idea
1 parent 41e24d0 commit 5f65f8a

File tree

3 files changed

+94
-0
lines changed

3 files changed

+94
-0
lines changed

developer/gsoc-ideas-2025.rst

+93
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,99 @@ Expected outcomes
602602
<https://github.com/openwisp/ansible-openwisp2>`_ and `docker-openwisp
603603
<https://github.com/openwisp/docker-openwisp/>`_.
604604

605+
OpenWISP VPN Sync Linux Package
606+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
607+
608+
.. image:: ../images/gsoc/ideas/2025/vpn-sync.webp
609+
610+
.. important::
611+
612+
Languages and technologies used: **Linux**, **Python**, **Django**,
613+
**WebSockets**, **OpenVPN**, **WireGuard**, **WireGuard over VXLAN**,
614+
**ZeroTier**.
615+
616+
**Mentors:** *Federico Capoano*.
617+
618+
**Project size:** 350 hours.
619+
620+
**Difficulty level:** medium/hard.
621+
622+
This GSoC project aims to simplify the deployment and management of VPN
623+
servers integrated with OpenWISP. The goal is to develop an
624+
easy-to-install program that synchronizes VPN configurations with OpenWISP
625+
in real-time, reducing manual intervention and ensuring configuration
626+
consistency across all managed VPN servers.
627+
628+
This program will run on Linux-based servers and will:
629+
630+
- Be implemented in Python to ensure maintainability and extensibility.
631+
- Use a Makefile to generate installation packages for major Linux
632+
distributions:
633+
634+
- **DEB** (for Debian, Ubuntu, and related distributions)
635+
- **RPM** (for Red Hat, Fedora, and similar systems)
636+
- **Snap** (for broader Linux compatibility)
637+
638+
- Establish a **WebSocket connection** with OpenWISP to listen for changes
639+
in the VPN Server object and synchronize local settings accordingly.
640+
- Keep the local list of peers and the **certificate revocation list
641+
(CRL)** updated whenever VPN clients are added, removed, or modified.
642+
- Support the following VPN tunneling technologies:
643+
644+
- **OpenVPN**
645+
- **WireGuard**
646+
- **WireGuard over VXLAN**
647+
- **ZeroTier**
648+
649+
- Provide a **command-line utility** to simplify the initial setup,
650+
enabling users to:
651+
652+
- Select the VPN software to be used.
653+
- Verify whether the required system packages are installed and display
654+
a clear warning if dependencies are missing.
655+
- Enter the necessary details to securely connect and synchronize with
656+
OpenWISP.
657+
658+
- Support running **multiple instances**, with each instance managing a
659+
separate VPN server object independently.
660+
- Implement **structured logging** with dedicated log files for each
661+
instance, adhering to Linux logging best practices and supporting log
662+
rotation.
663+
- Include a **developer-friendly README** with clear setup instructions.
664+
- Update the **OpenWISP documentation** to cover installation,
665+
configuration, and best practices.
666+
667+
To support this project, OpenWISP Controller will need to be updated to
668+
expose a **WebSocket endpoint**. This endpoint will allow the new VPN
669+
synchronization program to listen for real-time configuration updates.
670+
671+
Prerequisites to Work on This Project
672+
+++++++++++++++++++++++++++++++++++++
673+
674+
Applicants must have a solid understanding of:
675+
676+
- **Python** and **Django**.
677+
- **WebSockets**.
678+
- At least one of the supported VPN technologies (**OpenVPN, WireGuard,
679+
WireGuard over VXLAN, ZeroTier**).
680+
- **System administration and Linux packaging** (preferred but not
681+
required).
682+
683+
Expected Outcomes
684+
+++++++++++++++++
685+
686+
- A Python-based VPN synchronization tool.
687+
- A command-line setup utility for easy first-time configuration.
688+
- WebSocket-based synchronization between VPN servers and OpenWISP.
689+
- Automated packaging for major Linux distributions.
690+
- Structured logging with proper log rotation.
691+
- OpenWISP Controller enhancements to support WebSocket-based
692+
synchronization.
693+
- Comprehensive **documentation**, including setup guides and best
694+
practices.
695+
- Automated tests to ensure reliability and stability.
696+
- A **short tutorial video** demonstrating installation and usage.
697+
605698
Enhancing Uspot Captive Portal for OpenWrt
606699
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
607700

images/gsoc/ideas/2025/vpn-sync.webp

67.6 KB
Binary file not shown.

spelling_wordlist.txt

+1
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ subnets
246246
Subnets
247247
Supervisord
248248
Swapper
249+
sync
249250
syslog
250251
tcp
251252
technical

0 commit comments

Comments
 (0)