pandafy@dev-logs:~$

  • How Not to Migrate to Django's JSONField

    While testing a development deployment of OpenWISP recently, I ended up debugging a migration issue that turned out to be much more interesting than I expected. The OpenWISP community has been working on removing the dependency on the unmaintained jsonfield package and replacing it with Django’s native JSONField. By the...

  • How Kopia Led Me to Rethink Python Virtual Environments

    It all started last week when I backed up my distro’s home directory using Kopia. Thanks to high compression, the backup size was only one-third of the original. I credited this to Kopia’s compression and de-duplication and moved on, assuming my text-heavy code repositories were just highly compressible. Today, I...

  • Docker OpenWISP: Overcoming Management Tunnel Challenges

    When OpenWISP is deployed over public infrastructure to manage devices geographically distributed over the internet, a management tunnel is required to perform essential network operations and monitoring checks. The Docker OpenWISP project is an ongoing effort to support deploying OpenWISP using Docker. It creates separate services to handle different aspects...

  • From Modules to Manuals: Unifying OpenWISP Docs

    OpenWISP draws inspiration from the Unix philosophy: Do one thing and do it well. This modular approach has shaped OpenWISP’s architecture, where separate modules handle specific functionalities such as the controller, monitoring, firmware upgrades, etc. While this modularity offers flexibility, it also presents a challenge — fragmented documentation. “Let’s have...

  • Adding WireGuard to Docker OpenWISP

    Last summer, I worked on adding WireGuard support to OpenWISP. And after a year of testing, improvements and production deployments, I am containerizing that work for docker-openwisp. The Ansible solution we developed to deploy this feature in ansible-wireguard-openwisp bundles an updater application with the WireGuard server. Each WireGuard VPN server...