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 GUI panel to manage multi monitor on i3wm.

Monitor manager Only for I3wm (Just for now) It's about two years that I'm using i3 as my window manager and in my experience this window manager allo

Wire.Nemo 3 Nov 6, 2021
A GUI frontend developed in Python3 for simple admin tasks on MySQL-Server running on the localhost

A GUI frontend developed in Python3 for simple admin tasks on MySQL-Server running on the localhost. Developed for my CS School Project.

null 1 May 29, 2022
A GUI for designing Python GUI's for PySimpleGUI.

SimpleGUIBuilder A GUI for designing Python GUI's for PySimpleGUI. Installation There is none :) just download the file from a release and run it. Don

Miguel Martins 65 Dec 22, 2022
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
The GUI application by Python3.8. Using QT Design draw UI and generator UI XML file provides to PySide2 build GUI components

The GUI application by Python3.8. Using QT Design draw UI and generator UI XML file provides to PySide2 build GUI components. Total adopt OOD design class, service, and abstract class. OOP implemented this project.

Jiage 1 Jan 11, 2022
A simple one-line quick entry GUI for your Obsidian daily notes in markdown format.

Quick-note-entry-for-Obsidian A simple one-line quick entry GUI for your Obsidian daily notes in markdown format. Log your day quickly with this simpl

Adrian Papineau 22 Oct 4, 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 1, 2023
Custom GUI for your Blender add-ons using Dear ImGui

Dear Imgui for Blender Use the infamous Dear ImGui library directly in your Blender scripts! This means custom GUI drawing in your operators: Normally

Elie Michel 83 Dec 25, 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
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

null 283 Nov 30, 2022
Create shortcuts on Windows to your Python, EXE, Batch files or any other file using a GUI made with PySimpleGUI

shor Windows Shortcut Creation Create Windows Shortcuts to your python programs and any other file easily using this application created using PySimpl

PySimpleGUI 7 Nov 16, 2021
A little Python library for making simple Electron-like HTML/JS GUI apps

Eel Eel is a little Python library for making simple Electron-like offline HTML/JS GUI apps, with full access to Python capabilities and libraries. Ee

Chris Knott 5.4k Jan 7, 2023
Simple GUI python app to show a stocks graph performance. Made with Matplotlib and Tiingo.

stock-graph-python Simple GUI python app to show a stocks graph performance. Made with Matplotlib and Tiingo. Tiingo API Key You will need to add your

Toby 12 May 14, 2022
A simple todo GUI applicaiton

simple_todo_gui A simple todo GUI applicaiton To create an .exe file, run 'Python setup.py build' after installing PyQt5 and cx_Freeze with pip. Then

Dhammike Piyumal 2 Nov 11, 2021
A Simple GUI application to organize and store accounts/passwords.

PyssView A Simple GUI application to organize and store accounts/passwords. Install/Run (Linux) Via script This way will install a binary version and

Jefferson Richard Dias 1 Nov 24, 2021
A simple assistance and with a very basic GUI

J.A.R.V.I.S This is a simple assistance and with a very basic GUI (Graphical User Interface) Download all the dependencies by running the below code p

Abir Pal 7 Oct 12, 2022
A simple GUI designer for the python tkinter module

Leer en Español Welcome to Pygubu! Pygubu is a RAD tool to enable quick and easy development of user interfaces for the Python's tkinter module. The u

Alejandro Autalán 1.7k Dec 27, 2022
Chatterpatter - A simple GUI complex backend Chat Application made using python

Chatterpatter - A simple GUI complex backend Chat Application made using python

Gurneet Singh 2 Jan 8, 2022