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é
Use NixOS Without Coding

(Work in Progress) Nix-Gui Make NixOS usable for non-technical users through a settings / package management GUI. Motives The declarative nature of Ni

548 Dec 30, 2022
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
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
Plantasia, all your plants and muchrooms in one place!

Plantasia Project Description Tkinter GUI to be used as a repository for plants and muchrooms. It helps to optimize the search for species that have h

Marco Rodrigues 1 Dec 23, 2021
Turn (almost) any Python command line program into a full GUI application with one line

Gooey Turn (almost) any Python 2 or 3 Console Program into a GUI application with one line Support this project Table of Contents Gooey Table of conte

Chris 17k Jan 09, 2023
AppQuickLauncher is a tool that can quickly launch apps by clicking the app tray icon.

AppQuickLauncher AppQuickLauncher is a tool that can quickly launch apps by clicking the app tray icon. On Windows 7 or Windows 10, we can add a folde

yin kaisheng 2 Sep 11, 2022
Tkinter Designer - Create Beautiful Tkinter GUIs by Drag and Drop.

Tkinter Designer is created to speed up and beautify Python GUI Experience. It uses well know design software called Figma. Which makes creating Tkinter GUI in Python a piece of cake.

Parth Jadhav 5.2k Jan 09, 2023
This a pythonTkinter GUI with sqlite3 Project.

FootballGym_MIS This a pythonTkinter GUI with sqlite3 Project. This software is useful if you want to enjoy running a gym. It helps you know which tea

Hikmatullah Mohammadi 2 Jun 19, 2022
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
A Python native, OS native GUI toolkit.

Toga A Python native, OS native GUI toolkit. Prerequisites Minimum requirements Toga requires Python 3. Python 2 is not supported. If you're on macOS,

BeeWare 3.3k Dec 31, 2022
A cute running cat animation on your Windows/macOS taskbar.

RunCat by PySide6 A cute running cat animation on your Windows/macOS taskbar. Tags PyQt PySide RunCat Demo You only have to run the RunCat.exe. Run pi

見える 10 Sep 19, 2022
MediaPlayer-with-PyQt5 - The Multimedia Player with Python and PyQt5

MediaPlayer-with-PyQt5 I made this Multimedia Player with Python and PyQt5, I re

4 Oct 06, 2022
Custom Widgets For PyQt5

pyqtCuWi Custom Widgets Icon Button Documentation Rank Widget Documentation PopUp OuterRadius PopUp Documentation OuterRadius Documentation Producer:

.CODE 0 Apr 04, 2022
Advanced GUI Calculator with Beautiful UI and Clear Code.

Advanced GUI Calculator with Beautiful UI and Clear Code.

Mohammad Dori 3 Jul 15, 2022
Management Gui for OpenVR FSR PlugIn

OpenVR FSR App Small GUI to install/uninstall, tweak settings of the Modified OpenVR DLL with AMD FidelityFX SuperResolution Upscaler with a single cl

Stefan Tapper 234 Dec 20, 2022
WhirlEdit, an excellent {code} editor

HELP! If you're experienced, I want you to make an executable for your platform (windows/mac/linux) and help me.. For more info get in touch at whirlp

whmsft 10 Aug 18, 2022
A small pomodoro GUI for Windows/Linux created in Python with PyQt5.

Pomodoro A small pomodoro GUI for Windows/Linux created with PyQt5. Features The "Timer" tab allows you to set your desired work and rest times aswell

Burak Martin 81 Dec 28, 2022
Input an antlr grammar and file for python to test it out

py-antlr-input Input an ANTLR grammar and test file for python to render a parser tree of the file. This program will make use of the grun command tha

Oscar Juárez 0 Aug 10, 2021
⏲️ 📙 Animedoro Timer made using tkinter in python

Animedoro Timer ⏲️ 📙 version- 1️⃣ . 0️⃣ . 0️⃣ Hey ! did you ever feel bad for not concentarting enough? , it's not you're mistake, there is a flaw in

SasiVatsal 8 Oct 18, 2022
GUIOfTemperatureConverterUsingPython - GUI Of Temperature Converter Using Python

Fahrenheit To Celcius GUI Of Temperature Converter Below Video is the Output Of

SUJITHA RASAMSETTY 0 Mar 06, 2022