diff --git a/README.md b/README.md index 258ca70..44696a1 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ - **Docker Solution**: We now have 2 docker solutions! Thanks to @DaanSelen & @shuricksumy for providing them. For more information, please see the Docker section below. - **Peer Job Scheduler**: Now you can schedule jobs for each peer to either **restrict** or **delete** the peer if the peer's total / upload / download data usage exceeded a limit, or you can set a specific datetime to restrict or delete the peer. - **Share Peer's QR Code with Public Link**: You can share a peer's QR code and `.conf` file without the need to loging in. - - **API Key for WGDashboard's REST API**: You can now request all the api endpoint used in the dashboard. For more details please review the API Documentation below. + - **WGDashboard's REST API**: You can now request all the api endpoint used in the dashboard. For more details please review the API Documentation. - **Logging**: Dashboard will now log all activity on the dashboard and API requests. - **Time-Based One-Time Password (TOTP)**: You can enable this function to add one more layer of security, and generate the TOTP with your choice of authenticator. - **Designs** @@ -31,7 +31,7 @@ - **Enforce Python Virtual Environment**: I noticed newer Python version (3.12) does not allow to install packages globally, and plus I think is a good idea to use venv. - **🧐 Other Changes** - - **Deprecated jQuery from the project, and migrated and rewrote the whole front-end with Vue.js. This allow the dashboard is future proofed, and potential cross server access with a desktop app.** + - **Deprecated jQuery from the project, and migrated and rewrote the whole front-end with Vue.js. This allows the dashboard is future proofed, and potential cross server access with a desktop app.** - Rewrote the backend into a REST API structure - Improved SQL query efficient - Removed all templates, except for `index.html` where it will load the Vue.js app. @@ -60,9 +60,11 @@ - [Dashboard Configuration file](#dashboard-configuration-file) - [Generating QR code and peer configuration file (.conf)](#generating-qr-code-and-peer-configuration-file-conf) - [❓ How to update the dashboard?](#-how-to-update-the-dashboard) +- [🐬 Docker Solutions](#-docker-solutions) +- [📖 API Document](./docs/api-documents.md) - [🥘 Experimental Functions](#-experimental-functions) - [🔍 Screenshot](#-screenshot) -- [⏰ Changelog](#--changelog) +- [⏰ Changelog](./docs/api-documents.md) - [🛒 Dependencies](#-dependencies) - [✨ Contributors](#-contributors) @@ -288,28 +290,29 @@ In the `src` folder, it contained a file called `wg-dashboard.service`, we can u Since version 2.0, WGDashboard will be using a configuration file called `wg-dashboard.ini`, (It will generate automatically after first time running the dashboard). More options will include in future versions, and for now it included the following configurations: -| | Description | Default | Edit Available | -| ---------------------------- | ------------------------------------------------------------ | ---------------------------------------------------- | -------------- | -| **`[Account]`** | *Configuration on account* | | | -| `username` | Dashboard login username | `admin` | Yes | -| `password` | Password, will be hash with SHA256 | `admin` hashed in SHA256 | Yes | -| | | | | -| **`[Server]`** | *Configuration on dashboard* | | | -| `wg_conf_path` | The path of all the Wireguard configurations | `/etc/wireguard` | Yes | -| `app_ip` | IP address the dashboard will run with | `0.0.0.0` | Yes | -| `app_port` | Port the the dashboard will run with | `10086` | Yes | +| | Description | Default | Edit Available | +|------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------|----------------| +| **`[Account]`** | *Configuration on account* | | | +| `username` | Dashboard login username | `admin` | Yes | +| `password` | Password, will be hash with SHA256 | `admin` hashed in SHA256 | Yes | +| | | | | +| **`[Server]`** | *Configuration on dashboard* | | | +| `wg_conf_path` | The path of all the Wireguard configurations | `/etc/wireguard` | Yes | +| `app_ip` | IP address the dashboard will run with | `0.0.0.0` | Yes | +| `app_port` | Port the the dashboard will run with | `10086` | Yes | | `auth_req` | Does the dashboard need authentication to access, if `auth_req = false` , user will not be access the **Setting** tab due to security consideration. **User can only edit the file directly in system**. | `true` | **No** | -| `version` | Dashboard Version | `v3.0.5` | **No** | -| `dashboard_refresh_interval` | How frequent the dashboard will refresh on the configuration page | `60000ms` | Yes | -| `dashboard_sort` | How configuration is sorting | `status` | Yes | -| | | | | -| **`[Peers]`** | *Default Settings on a new peer* | | | -| `peer_global_dns` | DNS Server | `1.1.1.1` | Yes | -| `peer_endpoint_allowed_ip` | Endpoint Allowed IP | `0.0.0.0/0` | Yes | -| `peer_display_mode` | How peer will display | `grid` | Yes | -| `remote_endpoint` | Remote Endpoint (i.e where your peers will connect to) | *depends on your server's default network interface* | Yes | -| `peer_mtu` | Maximum Transmit Unit | `1420` | | -| `peer_keep_alive` | Keep Alive | `21` | Yes | +| `version` | Dashboard Version | `v4.0` | **No** | +| `dashboard_refresh_interval` | How frequent the dashboard will refresh on the configuration page | `60000ms` | Yes | +| `dashboard_sort` | How configuration is sorting | `status` | Yes | +| `dashboard_theme` | Dashboard Theme | `dark` | Yes | +| | | | | +| **`[Peers]`** | *Default Settings on a new peer* | | | +| `peer_global_dns` | DNS Server | `1.1.1.1` | Yes | +| `peer_endpoint_allowed_ip` | Endpoint Allowed IP | `0.0.0.0/0` | Yes | +| `peer_display_mode` | How peer will display | `grid` | Yes | +| `remote_endpoint` | Remote Endpoint (i.e where your peers will connect to) | *depends on your server's default network interface* | Yes | +| `peer_mtu` | Maximum Transmit Unit | `1420` | | +| `peer_keep_alive` | Keep Alive | `21` | Yes | #### Generating QR code and peer configuration file (.conf) @@ -367,178 +370,48 @@ Endpoint = 0.0.0.0:51820 Starting with `v3.0`, you can simply do `sudo ./wgd.sh update` !! (I hope) +## 🐬 Docker Solutions + +Current, we have 2 beloved contributors provided solutions for hosting WGDashboard with Docker + +### Solution 1 from @DaanSelen + +Please visit [Docker-explain.md](blob/main/docker/Docker-explain.md) + +### Solution 2 from @shuricksumy + +Please visit [shuricksumy/docker-wgdashboard](https://github.com/shuricksumy/docker-wgdashboard) + +> For questions or issues related to Docker, please visit #272 + + ## 🥘 Experimental Functions ### Cross-Server Access Starting with `v4.0`, you can access WGDashboards on other server through one WGDashboard with API Keys +![Cross Server Example](https://donaldzou.nyc3.cdn.digitaloceanspaces.com/wgdashboard-images/cross-server.gif) +### Desktop App +Since the major changes for `v4.0` is to move the whole front-end code to Vue.js. And with this change, we can take the +advantage of combining ElectronJS and Vue.js to create a Desktop version of WGDashboard. Currently, we provide an Universal macOS app and a Windows app. +To download the app, please visit the [latest release](https://github.com/donaldzou/WGDashboard/releases). +![ElectronJS App Demo](https://donaldzou.nyc3.cdn.digitaloceanspaces.com/wgdashboard-images/electronjs-app.gif) + + ## 🔍 Screenshot -![Sign In Page](img/SignIn.png) - -![Index Image](img/HomePage.png) - -![Configuration](img/Configuration.png) - -![Add Peer](img/AddPeer.png) - -![Edit Peer](img/EditPeer.png) - -![Delete Peer](img/DeleteBulk.png) - -![Dashboard Setting](img/DashboardSetting.png) - -![Ping](img/Ping.png) - -![Traceroute](img/Traceroute.png) - -## ⏰ Changelog - -#### v3.0.0 - v3.0.6.2 - Jan 18, 2022 - -- 🎉 **New Features** - - **Moved from TinyDB to SQLite**: SQLite provide a better performance and loading speed when getting peers! Also avoided crashing the database due to **race condition**. - - **Added Gunicorn WSGI Server**: This could provide more stable on handling HTTP request, and more flexibility in the future (such as HTTPS support). **BIG THANKS to @pgalonza :heart:** - - **Add Peers by Bulk:** User can add peers by bulk, just simply set the amount and click add. - - **Delete Peers by Bulk**: User can delete peers by bulk, without deleting peers one by one. - - **Download Peers in Zip**: User can download all *downloadable* peers in a zip. - - **Added Pre-shared Key to peers:** Now each peer can add with a pre-shared key to enhance security. Previously added peers can add the pre-shared key through the peer setting button. - - **Redirect Back to Previous Page:** The dashboard will now redirect you back to your previous page if the current session got timed out and you need to sign in again. - - **Added Some [🥘 Experimental Functions](#-experimental-functions)** - -- 🪚 **Bug Fixed** - - [IP Sorting range issues #99](https://github.com/donaldzou/WGDashboard/issues/99) [❤️ @barryboom] - - [INvalid character written to tunnel json file #108](https://github.com/donaldzou/WGDashboard/issues/108) [❤️ @ikidd] - - [Add IPv6 #91](https://github.com/donaldzou/WGDashboard/pull/91) [❤️ @pgalonza] - - [Added MTU and PersistentKeepalive to QR code and download files #112](https://github.com/donaldzou/WGDashboard/pull/112) [:heart: @reafian] - - **And many other bugs provided by our beloved users** :heart: -- **🧐 Other Changes** - - **Key generating moved to front-end**: No longer need to use the server's WireGuard to generate keys, thanks to the `wireguard.js` from the [official repository](https://git.zx2c4.com/wireguard-tools/tree/contrib/keygen-html/wireguard.js)! - - **Peer transfer calculation**: each peer will now show all transfer amount (previously was only showing transfer amount from the last configuration start-up). - - **UI adjustment on running peers**: peers will have a new style indicating that it is running. - - **`wgd.sh` finally can update itself**: So now user could update the whole dashboard from `wgd.sh`, with the `update` command. - - **Minified JS and CSS files**: Although only a small changes on the file size, but I think is still a good practice to save a bit of bandwidth ;) - -*And many other small changes for performance and bug fixes! :laughing:* - -#### v2.3.1 - Sep 8, 2021 - -- Updated dashboard's name to **WGDashboard**!! - -#### v2.3 - Sep 8, 2021 - -- 🎉 **New Features** - - **Update directly from `wgd.sh`:** Now you can update WGDashboard directly from the bash script. - - **Displaying Peers:** You can switch the display mode between list and table in the configuration page. -- 🪚 **Bug Fixed** - - [Peer DNS Validation Fails #67](issues/67): Added DNS format check. [❤️ @realfian] - - [configparser.NoSectionError: No section: 'Interface' #66](issues/66): Changed permission requirement for `etc/wireguard` from `744` to `755`. [❤️ @ramalmaty] - - [Feature request: Interface not loading when information missing #73](issues/73): Fixed when Configuration Address and Listen Port is missing will crash the dashboard. [❤️ @js32] - - [Remote Peer, MTU and PersistentKeepalives added #70](pull/70): Added MTU, remote peer and Persistent Keepalive. [❤️ @realfian] - - [Fixes DNS check to support search domain #65](pull/65): Added allow input domain into DNS. [❤️@davejlong] -- **🧐 Other Changes** - - Moved Add Peer Button into the right bottom corner. - -#### v2.2.1 - Aug 16, 2021 - -Bug Fixed: -- Added support for full subnet on Allowed IP -- Peer setting Save button - -#### v2.2 - Aug 14, 2021 - -- 🎉 **New Features** - - **Add new peers**: Now you can add peers directly on dashboard, it will generate a pair of private key and public key. You can also set its DNS, endpoint allowed IPs. Both can set a default value in the setting page. [❤️ in [#44](https://github.com/donaldzou/wireguard-dashboard/issues/44)] - - **QR Code:** You can add the private key in peer setting of your existed peer to create a QR code. Or just create a new one, dashboard will now be able to auto generate a private key and public key ;) Don't worry, all keys will be generated on your machine, and **will delete all key files after they got generated**. [❤️ in [#29](https://github.com/donaldzou/wireguard-dashboard/issues/29)] - - **Peer configuration file download:** Same as QR code, you now can download the peer configuration file, so you don't need to manually input all the details on the peer machine! [❤️ in [#40](https://github.com/donaldzou/wireguard-dashboard/issues/40)] - - **Search peers**: You can now search peers by their name. - - **Autostart on boot:** Added a tutorial on how to start the dashboard to on boot! Please read the [tutorial below](#autostart-wireguard-dashboard-on-boot). [❤️ in [#29](https://github.com/donaldzou/wireguard-dashboard/issues/29)] - - **Click to copy**: You can now click and copy all peer's public key and configuration's public key. - - .... -- 🪚 **Bug Fixed** - - When there are comments in the wireguard config file, will cause the dashboard to crash. - - Used regex to search for config files. -- **🧐 Other Changes** - - Moved all external CSS and JavaScript file to local hosting (Except Bootstrap Icon, due to large amount of SVG files). - - Updated Python dependencies - - Flask: `v1.1.2 => v2.0.1` - - Jinja: `v2.10.1 => v3.0.1` - - icmplib: `v2.1.1 => v3.0.1` - - Updated CSS/JS dependencies - - Bootstrap: `v4.5.3 => v4.6.0` - - UI adjustment - - Adjusted how peers will display in larger screens, used to be 1 row per peer, now is 3 peers in 1 row. - -#### v2.1 - Jul 2, 2021 - -- Added **Ping** and **Traceroute** tools! -- Adjusted the calculation of data usage on each peers -- Added refresh interval of the dashboard -- Bug fixed when no configuration on fresh install ([#23](https://github.com/donaldzou/wireguard-dashboard/issues/23)) -- Fixed crash when too many peers ([#22](https://github.com/donaldzou/wireguard-dashboard/issues/22)) - -#### v2.0 - May 5, 2021 - -- Added login function to dashboard - - ***I'm not using the most ideal way to store the username and password, feel free to provide a better way to do this if you any good idea!*** -- Added a config file to the dashboard -- Dashboard config can be change within the **Setting** tab on the side bar -- Adjusted UI -- And much more! - -#### v1.1.2 - Apr 3, 2021 - -- Resolved issue [#3](https://github.com/donaldzou/wireguard-dashboard/issues/3). - -#### v1.1.1 - Apr 2, 2021 - -- Able to add a friendly name to each peer. Thanks [#2](https://github.com/donaldzou/wireguard-dashboard/issues/2) ! - -#### v1.0 - Dec 27, 2020 - -- Added the function to remove peers - -## 🛒 Dependencies - -- CSS/JS - - [Bootstrap](https://getbootstrap.com/docs/4.6/getting-started/introduction/) `v4.6.0` - - [Bootstrap Icon](https://icons.getbootstrap.com) `v1.4.0` - - [jQuery](https://jquery.com) `v3.5.1` -- Python - - [Flask](https://pypi.org/project/Flask/) `v2.0.1` - - [ifcfg](https://pypi.org/project/ifcfg/) `v0.21` - - [icmplib](https://pypi.org/project/icmplib/) `v2.1.1` - - [flask-qrcode](https://pypi.org/project/Flask-QRcode/) `v3.0.0` - -## ✨ Contributors - - -[![All Contributors](https://img.shields.io/badge/all_contributors-5-orange.svg?style=flat-square)](#contributors-) - - -Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): - - - - -
antonioag95 ⚠️ 💻 |
- tonjo 💻 |
- Richard Newton 💻 |
- David Long 💻 |
- Markus Neubauer 💻 |
-