A simple, yet powerful web GUI to manage your Wireguard server, powered by Flask.

Overview

Linguard

GitHub Python version Stable workflow status Latest workflow status Stable Documentation Status codecov

GitHub release (latest SemVer including pre-releases) GitHub all releases

Linguard aims to provide a clean, simple yet powerful web GUI to manage your WireGuard server, and it's powered by Flask.

Read the docs for further information!

Key features

  • Management of Wireguard interfaces and peers via web. Interfaces can be created, removed, edited, exported and brought up and down directly from the web GUI. Peers can be created, removed, edited and downloaded at anytime as well.
  • Display stored and real time traffic data using charts (storage of traffic data may be manually disabled).
  • Display general network information.
  • Encrypted user credentials (AES).
  • Easy management through the linguard systemd service.

Installation

As a systemd service

  1. Download any release.

  2. Extract it and run the installation script:

    chmod +x install.sh
    sudo ./install.sh
  3. Run Linguard:

    sudo systemctl start linguard.service

Docker

  1. Download the docker-compose.yaml file.
  2. Run Linguard:
    sudo docker-compose up -d

NOTE: You can check all available tags here.

Comments
  • How to set bind nic?

    How to set bind nic?

    Testing on a fresh hyper-v debian 11 guest vm.

    I see how to set the port but what about the bind nic/adapter? Reason I ask is, It start and it looks like its running but on 127.0.0.1:8080 and I cant access via http://192.168.1.100:8080/. maybe im missing something. It's a headless vm with only ssh access.

    either way im excited to play with this some more. looks promising.

    Also found a type-o in install.sh on line 105 - replace requirements.txts with requirements.txt pip3 install -r "${INSTALLATION_PATH}"/requirements.txt

    Awesome work all around! 👍

    ~SOL

    bug 
    opened by Some1OnLine 6
  • Docker image basics

    Docker image basics

    Hi,

    I've created a Dockerfile and docker-compose.yml for linguard. The docker-compose.yml expects the image to be build locally. At a later time I could provide an actions workflow that builds and pushes the image to GHCR.

    opened by merlinschumacher 5
  • Installation broken

    Installation broken

    Debian 10

    └>lsb_release -a
    No LSB modules are available.
    Distributor ID:	Debian
    Description:	Debian GNU/Linux 10 (buster)
    Release:	10
    Codename:	buster
    └>uname -a
    Linux wginterface 4.19.0-17-amd64 #1 SMP Debian 4.19.194-2 (2021-06-21) x86_64 GNU/Linux
    
        If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain.
        
        This package requires Rust >=1.41.0.
        
        ----------------------------------------
      Can't roll back cryptography; was not uninstalled
    Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-jewgzdeg/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-k3nzuegy/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-jewgzdeg/cryptography/
    [FATAL] Unable to install requirements.
    

    also

    [INFO] Setting up virtual environment...
    ./install.sh: line 102: virtualenv: command not found
    ./install.sh: line 103: /var/www/linguard/venv/bin/activate: No such file or directory
    
    bug 
    opened by chemax 4
  • Not showing correctly in Nginx reverse proxy subdirectory

    Not showing correctly in Nginx reverse proxy subdirectory

    Linguard not showing correctly when configured to be served via nginx subdir reverse proxy.

    Used configuration:

    location /linguard/ {
    #    rewrite ^/linguard/(.*) /$1  break;
        proxy_pass http://127.0.0.1:8080;
    #    proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    

    adding rewrite rule doesn't help.

    bug 
    opened by kimiroo 2
  • Linguard 0.2.0

    Linguard 0.2.0

    • New architecture based in working directory instead of configuration files who knows where.
    • Fixed some issues regarding traffic data storage.
    • Added versioning info.
    • Added a setup assistant.
    • Added versioned docs using readthedocs
    bug documentation feature 
    opened by joseantmazonsb 1
  • Cambio de Puerto

    Cambio de Puerto

    Seria super estupendo que tuviera un file de configuracion donde se pudiera cambiar el puerto 8080 pues si ya lo tienes ocupado pues es un puerto bastante comun en otros servicios seria buenisimo que pudieramos cambiarlo por otro de nuestra eleccion.,

    enhancement 
    opened by gabriel850129estevez 0
  • Problemas con el password

    Problemas con el password

    Instale el linguard con un password y probe en mi pc, luego volvi a reinstalar el server completamente y le puse un password diferente al primero, sin embargo seguia accediendo al linguard con el password anterior, luego de mucho tiempo reinstalado un amigo que tambien habia entrado en la primera ocasion aun sigue entrando y creando peers con la contrase;a anterior.

    Describe the bug A clear and concise description of what the bug is.

    To Reproduce Steps to reproduce the behavior:

    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: [e.g. iOS]
    • Browser [e.g. chrome, safari]
    • Version [e.g. 22]

    Smartphone (please complete the following information):

    • Device: [e.g. iPhone6]
    • OS: [e.g. iOS8.1]
    • Browser [e.g. stock browser, safari]
    • Version [e.g. 22]

    Additional context Add any other context about the problem here.

    bug 
    opened by gabriel850129estevez 0
  • Make DNS Optional

    Make DNS Optional

    Is your feature request related to a problem? Please describe. wg-quick doesnt require DNS option and it would be nice to have the option to leave that unchanged in the client configs in some situations

    Describe the solution you'd like a check box if you dont want to specify dns in the client configuration

    Describe alternatives you've considered Submitting blank DNS field simply ommits dns option in the client configuration

    enhancement 
    opened by jason-m 0
  • reverse proxy ssl static links in the pages still http

    reverse proxy ssl static links in the pages still http

    Describe the bug I use nginx as reverse proxy and redirect all traffic to https. The sign up form ("Create admin account") has however, http statically rendered in the code and all creds will be submitted unencrypted.

    ln 39: <form action="[http://<IP-address>/signup?next=%2Fdashboard](view-source:http://<IP-address>/signup?next=%2Fdashboard)" method="[post]()" novalidate>

    To Reproduce Steps to reproduce the behavior: Use a reverse proxy such as nginx and redirect all traffic on port 80, to port 443.

    server {
        listen 80 default_server;
        server_name _;
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl;
        server_name _;
        ssl_certificate /etc/nginx/ssl/linguard.crt;
        ssl_certificate_key /etc/nginx/ssl/linguard.key;
        ssl_protocols TLSv1.2 TLSv1.3;
        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:8080;
        }
    }
    

    Expected behavior Well, either it has to be a relative link or needs to be:

    opened by hagbard-01 0
  • define default values for DNS and AllowedIPs

    define default values for DNS and AllowedIPs

    Is your feature request related to a problem? Please describe. When adding new peer every time I need to provide DNS servers, I would like to set default somewhere in the linguard. Additionally I cannot define default value for AllowedIPs, moreover not even modify it even when adding new peer.

    Describe the solution you'd like In the settings have the possibility to set default values for DNS and AllowedIPs

    Describe alternatives you've considered So far I workaround that with directly editing: /var/www/linguard/linguard/core/models.py /var/www/linguard/linguard/web/forms.py

    enhancement 
    opened by konrad4444 1
Releases(v1.1.0)
  • v1.1.0(Oct 21, 2021)

    Release notes

    What's new

    • Ban time is now editable and applies to individual IP addresses instead of globally (which makes much more sense).

    Fixes

    • Fixed a bug with the settings page which caused the display of default/last saved settings everytime the page was reloaded, even though the values were actually being stored in the configuration file and applied.

    Docs

    • Added entry for ban time.
    Source code(tar.gz)
    Source code(zip)
    linguard-1.1.0.tar.gz(80.68 KB)
  • v1.0.1(Oct 18, 2021)

  • v1.0.0(Oct 17, 2021)

    Release notes

    What's new

    • QR codes! You can scan a QR code to get the WireGuard configuration of any peer or interface.
    • Docker is finally here! For now on, there will be official docker images available for every release.
    • Display the IP address of the interface to be used when adding or editing a peer.
    • Updating the name of an interface also updates all references inside the "On up" and "On down" text areas.
    • Delete buttons have been relocated in the Interface and Peer views.

    Fixes

    • Fixed a bug when updating the username or password which made the "Logged in {time} ago" sign show no time at all.
    • Removed the possibility to add peers if there are no WireGuard interfaces.
    • Ensured that peers can only be assigned valid, unused and not reserved IP addressed.
    • Ensured that peers' IP addresses are in the same network of their interface.
    • Ensured that interfaces can only be assigned valid, unused and not reserved IP addressed.
    • Ensured that interfaces' cannot be assigned an IP address belonging to a network which already has an interface.
    • Fixed a bug when updating an interface's gateway, which only updated one appearance of the previous gateway in the "On up" and "On down" text areas.
    • Fixed the behaviour of the overwrite flag regarding the logging settings which was causing to overwrite the log file each time the settings were saved instead of every time Linguard boots up.

    Docs

    • Improved documentation about the development environment.
    • Fixed a bunch of typos.
    • Fixed the Traffic Data Driver table.
    Source code(tar.gz)
    Source code(zip)
    linguard-1.0.0.tar.gz(79.96 KB)
  • v0.2.0(Oct 12, 2021)

    Changelog

    • Easy first time setup, which automatically detects the location of the required binaries and sets the public IP as endpoint by default.
    • Everything in one place: workdir-based architecture.
    • Removed option to log to standard output.
    • Includes a ready-to-go uWSGI configuration file.
    • Removed the linguard.sample.yaml file in favour of the first time setup.
    • Settings are now accessible through the side navbar.
    Source code(tar.gz)
    Source code(zip)
    linguard-0.2.0.tar.gz(125.74 KB)
  • v0.1.0(Sep 22, 2021)

    Changelog

    • Management of Wireguard interfaces and peers via web. Interfaces can be created, removed, edited, exported and brought up and down directly from the web GUI. Peers can be created, removed, edited and downloaded at anytime as well.
    • Added linguard systemd service.
    • Display stored and real time traffic data using charts (storage of traffic data may be disabled).
    • Display general network information.
    • Logging to file or stdout.
    • Autodetect wireguard and iptables binaries if not present in configuration file.
    • Autodetect endpoint if not present in configuration file (uses public ip).
    • Ability to change the location of the interfaces' files.
    • Ask to create an admin account if there isn't one.
    • Encrypted user credentials (AES).
    • Ability to change admin password.
    Source code(tar.gz)
    Source code(zip)
    linguard-0.1.0.tar.gz(121.35 KB)
Owner
Jose Antonio Mazón San Bartolomé
Software developer
Jose Antonio Mazón San Bartolomé
A library for building modern declarative desktop applications in WX.

re-wx is a library for building modern declarative desktop applications. It's built as a management layer on top of WXPython, which means you get all the goodness of a mature, native, cross-platform

Chris 115 Dec 24, 2022
A desktop application for JupyterLab, based on Electron.

A desktop application for JupyterLab, based on Electron.

JupyterLab 2.1k Jan 02, 2023
HDLG is a modern cross-platform GUI for hdl-dump with Batch installation capabilities.

HDLG is a modern cross-platform GUI for hdl-dump with Batch installation capabilities. Looking for Artwork This project is looking for an Icon an

8 Dec 03, 2022
Win32mica: a simple module to add the Mica effect on legacy python windows.

Win32mica (aka PyMica): A simple module to add the Mica effect on legacy python windows The aim of this project is to apply the Mica effect on python

Martí Climent 40 Dec 13, 2022
A Python based Connect 4 game made with DearPyGUI

Ultimate-Connect-4 A Python based Connect 4 game made with DearPyGUI NOTICE: If you connect to the game server hosted by Jah-On and attempt to send ma

4 Jun 01, 2022
A simple alarm-clock created using Python and Kivy.

Alarm-Clock made with Python and Kivy. A simple alarm-clock created using Python and Kivy. See the time. Set a maximum of 5 alarms. Cancel alarms. Not

Caio 2 Jul 31, 2022
Delphi's FireMonkey framework as a Python module for Windows, MacOS, Linux, and Android GUI development.

DelphiFMX4Python Delphi's FireMonkey framework as a Python module for Windows, MacOS, Linux, and Android GUI development. About: The delphifmx library

Embarcadero Technologies 191 Jan 09, 2023
Python Web Version 3.0 Using PyQty module

Python-Web-Version-3.0 Python Web Version 3.0 Using PyQty module you have to install pyinstaller module then install PyQt5 module and install PyQtwebE

JehanKandy 9 Jul 13, 2022
Redis GUI using Qt & Python

QRedis A Python, Qt based Redis client user interface. Help wanted Open to people who want to colaborate. Would like to know which features you would

Tiago Coutinho 58 Dec 09, 2022
A GUI calculator made with tkinter module in python

GUI-Calculator A GUI calculator made with tkinter module in python How to setup the calculator If pygame is not installed, go to terminal and do pip i

Eric Jing 0 Aug 25, 2021
Use CSS styling in Tkinter apps

cssTk To-Do Support Upto CSS 4.15 Set Up Docs Features * Corner Radius Gradient BG Blur Animations Usage Scenarios Allows easy import of GTK 3 and GTK

RUG 5 Oct 18, 2022
A Minimalistic Backup GUI for your Windows, Mac or Linux

BlobBackup is a minimalistic backup utility for your Windows, Mac or Linux computer. With an excellent engine, extensive storage support, and an easy

Bimba Shrestha 283 Nov 30, 2022
This is a rip off of the classical iPhone Calculator . This project has been made with PyQT5

iPhoneCalcRIP-OFF This is a rip off of the classical iPhone Calculator . This project has been made with PyQT5

Juss Patel 7 May 01, 2022
Build GUI for your Python program with JavaScript, HTML, and CSS

https://pywebview.flowrl.com pywebview is a lightweight cross-platform wrapper around a webview component that allows to display HTML content in its o

Roman 3.3k Jan 01, 2023
Windows & Linux GUI application to use a Satodime (satodime.io)

Satodime-Tool Licence: LGPL v3 Author: Toporin Language: Python (= 3.6) Homepage: https://github.com/Toporin/Satodime-Tool Introduction What is Satod

4 Dec 16, 2022
This is a short GUI project to evaluate Pbk solution.

Polubarinova-Kochina-solutions (Standalone GUI executables for Windows and Mac) Oden Institute for Computational Engineering and Sciences / Jackson Sc

Mohammad Afzal Shadab 1 Dec 24, 2022
GUI Pancakeswap 2 and Uniswap 3 SNIPER BOT 🥇 🏆 🥇

GUI Pancakeswap V2 and Uniswap V3 trading client (and bot) MOST ADVANCE TRADING BOT SUPPORT WINDOWS LINUX MAC (BUY TOKEN ON LAUNCH)

HYDRA 16 Dec 21, 2021
PyQt5 Sample GUI Program - Python PyQt5 Sample GUI application

Python PyQt5 Sample GUI application Program work like this Designed GUI using De

Dimuth De Zoysa 5 Mar 27, 2022
Projeto de mini-games de azar com interface gráfica utilizando Python e PySimpleGui.

Gambling Mini jogos de azar unidos em uma mesma interface gráfica, utilizando a linguagem de programação Python em conjunto com a biblioteca de interf

Clayton Garcia da Silva 3 Nov 19, 2021
A Windows Dock Widget Written In Pure Python

VEПUS A Windows Dock Widget Written In Pure Python What is Venus? Venus is a Dock Widget for your desktops interface. It adds a couple of really cool

Secrets 18 Dec 30, 2022