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é
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
`rosbag filter` with Gooey-based GUI

rosbag_filter_gui rosbag filter with Gooey-based GUI Test-passed Ubuntu 20.04 ROS Noetic Python 3.8 Installation

Yujie He 2 Dec 07, 2021
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
UI for converting various point cloud file formats

Point cloud format converter This coverter based on open3d. If you're using old ROS1 i suggest to use conda python3 evn to install requirements. Todo

Haegu Lee 1 Oct 29, 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
The Python-Weather-App is a service that provides weather data

The Python-Weather-App is a service that provides weather data, including current weather data to the developers of web services and mobile applications.

Sayed Tabish 1 Dec 13, 2021
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
Software com funçoes de A a Z feito no Python

Introdução Iniciante em programação Python, decidi criar um programa com diversas ferramentas de A a Z. Funções Ferramenta de Gerenciamento e Manutenç

João Pedro 1 Jan 26, 2022
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
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
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 simple Python Module for sending cross-platform desktop notifications on Windows, macOS and Linux

notify.py Cross platform desktop notifications for Python scripts and applications. Docs You can read the docs on this Git's Wiki, or here Supported P

Mustafa 178 Dec 26, 2022
A desktop application for JupyterLab, based on Electron.

A desktop application for JupyterLab, based on Electron.

JupyterLab 2.1k Jan 02, 2023
A Url Shortener with GUI made in Python.

Url-Shortener-with-GUI-in-python A Url Shortener with GUI made in Python. To Run this download the zip file and run the main file or Clone this repo.

SidTheMiner 1 Nov 12, 2021
A simple, yet powerful web GUI to manage your Wireguard server, powered by Flask.

Linguard 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 f

Jose Antonio Mazón San Bartolomé 111 Jan 07, 2023
ROS2 + PyQt5 Example

ROS2 + PyQt5 Example

Ar-Ray 4 Nov 15, 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
This is a GUI based text and image messenger. Other functionalities will be added soon.

Pigeon-Messenger (Requires Python and Kivy) Pigeon is a GUI based text and image messenger using Kivy and Python. Currently the layout is built. Funct

4 Jan 21, 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
Currency calculator with PyQt5

currency-calculator currency calculator with PyQt5

Vusal Akhundzada 2 Mar 08, 2022