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é
Pyint is the graphic software which is written in Python

Pyint About Pyint Pyint is the graphic software which is written in Python(I use the Turtle graphics). The name 'Pyint' is compound word of 'Python' a

John 1 Nov 06, 2021
FPKG Maker GUI - A user friendly User Interface for fPKG Tools for PS4

Know Issues being worked on Please place this application on the root of a drive

26 Nov 27, 2022
Quebra cabeça - Utilizando biblioteca do python: PyQt5

Puzzle 3x3 PyQt5 - Windows Quebra cabeça - Utilizando biblioteca do python: PyQt5 Para testar este quebra cabeça na sua maquina, primeiramente faça o

Matheus Marsal 1 Dec 21, 2021
CBMPy Metadraft: a flexible and extensible genome-scale model reconstruction tool

CBMPy Metadraft: a flexible and extensible, GUI-based genome-scale model reconstruction tool that supports multiple Systems Biology standards.

Systems Biology Lab, Vrije Universiteit Amsterdam 1 Mar 14, 2022
TkArt - A repository created to explore geometry and art creation using TkInter

tkArt A repository created to explore geometry and art creation using TkInter, a

Jayant Sogikar 18 Oct 01, 2022
A simple quiz app using API and GUI

GUI-Quiz-APP It's a simple quiz app using API and GUI.

KALPAK KUMAR DAS 1 Feb 03, 2022
The quick and easy way to add versatile graphical interfaces with networking capabilities to your Python programs.

The quick and easy way to add versatile graphical interfaces with networking capabilities to your Python programs. Give instant access to your application to whoever you want on the Internet, without

Claude SIMON 215 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
Use any of the 1k+ free FontAwesome icons in your tkinter application.

TkFontAwesome A library that enables you to use FontAwesome icons in your tkinter application. You may use any of the 1k+ free FontAwesome 5.0 icons.

Israel Dryer 33 Dec 20, 2022
Dear PyGui Extensions is a collection of useful tools, abstractions, and simplification layers built with/for Dear PyGui users.

Dear PyGui Extensions: A collection of useful tools, abstractions, and simplification layers built with/for Dear PyGui users.

Jonathan Hoffstadt 34 Jan 01, 2023
GUI app to read settings and stats from Cloudflare WARP CLI for Linux, and change some settings

warp-cli-gui GUI app to read settings and stats from Cloudflare WARP CLI for Linux, and change some settings. Description Python program that will int

Danie 6 Nov 01, 2022
pyglet is a cross-platform windowing and multimedia library for Python, for developing games and other visually rich applications.

pyglet pyglet is a cross-platform windowing and multimedia library for Python, intended for developing games and other visually rich applications. It

1.3k Jan 01, 2023
GUI Python Auto text bot.

Bagel Text Bot Auto text bot. Written in Python. Contributing Pull requests are welcome. For major changes, please open an issue first to discuss what

Toby 3 May 14, 2022
UberGui is a lightweight multi-threaded, webRender UI module for TouchDesigner

UberGui V4 UberGui is a lightweight multi-threaded, webRender UI module for TouchDesigner projects. The aim is to solve the trifecta of challenges bui

LUCAS M MORGAN 48 Nov 20, 2022
Kivy is an open source Python framework for creating cross-platform multi-touch mobile applications with Natural User Interface.

Kivy is an open source Python framework for creating cross-platform multi-touch mobile applications with Natural User Interface.

Grace Ugochi Nneji 3 Feb 15, 2022
A very simple calculator with a modern UI made in Python thanks for the stunning Sun-Valley-ttk-theme and Segoe UI Variable font.

Fluent-Python-Calculator A simple Python calculator with Sun-Valley-ttk-theme About Fluent-Python-Calculator: A very simple calculator with a modern U

59 Dec 06, 2022
A tf publisher gui tool for ROS, which publish /tf_static message. The software is based on PyQt5.

tf_publisher_gui for ROS Introduction How to use cd catkin_ws/src git clone https://github.com/yinwu33/tf_publisher_gui.git cd catkin_ws catkin_make s

yinwu33 7 Dec 28, 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
Basic calculator using Tkinter GUI

Basic calculator using Tkinter GUI

Rogerio Penchel 17 Jan 09, 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