Nella scorsa puntata ci siamo "sporcati le mani" con il terminale, ora invece ti faccio vedere come configurare WireGuard da interfaccia grafica.
24-05-2022

Questo articolo è la “stagione 2” di: Wireguard VPN - l'intranet aziendale definitivo!

Anche se non è strettamente necessario, ti consiglio di leggere la stagione 1, che fa da introduzione a quello che andrò ad approfondire di seguito.

Introduzione

Nel precedente articolo ti ho indicato come creare e configurare la tua VPN.

I limiti della soluzione del precedente articolo sono:

  • che non puoi sapere velocemente quanti utenti stanno utilizzando la tua instanza VPN;
  • a chi hai consegnato un determinato certificato;
  • disabilitare o eliminare utenti.

In questo articolo quindi vedrai come configurare una GUI per il tuo server VPN WireGuard dalla quale puoi:

  • creare nuovi utenti;
  • visualizzare in un attimo tutti gli utenti ai quali hai concesso un accesso alla tua VPN;
  • abilitare / disabilitare / eliminare gli utenti già presenti;
  • consultare le impostazioni del tuo server.

Installazione WireGuard e WireGuard-UI

Prerequisiti:

  • Docker e docker-compose installato sul tuo server (se non sai come fare prova a dare un'occhiata qui);
  • Traefik installato e configurato;

Se non hai familiarità con Traefik puoi tranquillamente utilizzare qualsiasi altro reverse proxy (Apache, nginx, etc.).

Iniziamo!

Crea una nuova cartella (scegli tu il nome, io ho riutilizzato la cartella: wgtest dello scorso articolo 😂) ed al suo interno crea un nuovo file con nome docker-compose.yml.

All’interno del file appena creato copia le seguenti righe:

version: '3'

services:

  wg:
    image: ngoduykhanh/wireguard-ui:latest
    container_name: wgui
    restart: always
    environment:
      - TZ=Europe/Rome
      - SENDGRID_API_KEY
      - EMAIL_FROM
      - EMAIL_FROM_NAME
      - SESSION_SECRET="<SECRET_TOKEN>"
    depends_on:
      - wireguard
    logging:
      driver: json-file
      options:
        max-size: 10m
    volumes:
      - ./db:/app/db
      - ./config:/etc/wireguard
    labels:
      - "traefik.enable=true"
      - "traefik.http.services.wgui.loadbalancer.server.port=5000"
      - "traefik.http.routers.wgui.entrypoints=websecure"
      - "traefik.http.routers.wgui.rule=Host(`<URL_O_IP_DEL_TUO_SERVER>`)"
      - "traefik.http.routers.wgui.tls.certresolver=lets-encr"

  wireguard:
    image: ghcr.io/linuxserver/wireguard
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Rome
      - SERVERURL=<URL_O_IP_DEL_TUO_SERVER>
      - SERVERPORT=51820
      - PEERS=0
      - PEERDNS=auto
      - INTERNAL_SUBNET=10.13.13.0
      - ALLOWEDIPS=0.0.0.0/0
    volumes:
      - ./config:/config
      - ./lib/modules:/lib/modules
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    restart: always

networks:
  default:
    external:
      name: <NETWORK_TRAEFIK>

Sostituisci:

  • <URL_O_IP_DEL_TUO_SERVER>: ip o un CNAME che punta all’ip del tuo server;
  • se preferisci puoi anche cambiare la porta della VPN, io ho scelto la 51820, ricordati però di aggiornare sia la variabile SERVERPORT che le regole in ports;
  • <SECRET_TOKEN>: token alfanumerico, serve a WireGuard UI come seed per alcune operazioni di hashing;
  • <NETWORK_TRAEFIK>: nome della tua docker network, quella che hai configurato durante l’installazione di Traefik;

Nota: se non utilizzi Traefik puoi rimuovere l’ultimo tag networks.

Non ti resta che avviare i container docker:

docker-compose up -d

Questa volta nel container di Wireguard ho impostato la variabile PEERS=0, dato che non ho necessità di creare utenti in fase di inizializzazione.

Qualche dettaglio su WireGuard UI

WireGuard UI è un progetto opersource: qui il link al github del progetto.

Prima di adottarlo ho dato uno sguardo ad altri progetti simili ed ho scelto questo perchè mi è sembrato il più promettente. Infatti da quando ho iniziato ad utilizzarlo ha già ricevuto diversi aggiornamenti con numerose migliorie (nel momento in cui scrivo l’ultima release è di qualche giorni fa').

Dashboard di WireGuard UI
Dashboard di WireGuard UI (click per ingrandire)

Conclusioni

Grazie a WireGuard e WireGuard UI ormai ho il pieno controllo del mio server VPN! Sono anche riuscito a collegare tutti i server e le VPS che gestisco ed ho fatto in modo da esporre la porta SSH solo sull’indirizzo della VPN. Se sei interessato anche tu a questi argomenti scrivimi nei commenti 😃 potrei valutare un episodio 3.

Finalmente anche tu puoi gestire comodamente il tuo server VPN ed avere il pieno controllo degli utenti che vi accedono!

In questo articolo ho riassunto circa 5/6 giorni di esperimenti! Ebbene si, anche se tu hai letto questo articolo in pochi minuti, io ho impiegato un bel po' di tempo per capire e configurare tutto.

Guardando il risultato raggiunto però sono davvero soddisfatto!

Non scoraggiarti se non riesci subito e se hai qualche dubbio scrivimi nei commenti o contattami via email se hai bisogno di una consulenza, trovi i miei riferimenti in homepage o in fondo a questo articolo.

 

 

Questo è il primo articolo che scrivo dopo una lunga assenza. Ho lavorato duramente gli scorsi mesi per implementare la nuova grafica ed ottimizzazione SEO. Non è perfetto, soprattutto su mobile, ma con il tempo continuerò ad implementare altri piccoli fix e migliorie. Che ne pensi del risultato finale?

Scrivimelo nei commenti.

 

Se vuoi restare aggiornato su tutti i miei progetti entra anche nel mio canale Telegram, periodicamente inserisco sconti, news tech ed altro 🙂

AP

 

Antonio Porcelli @progressify

Antonio Porcelli

@progressify

Leave a reply

Se non visualizzi il blocco dei commenti è perchè non hai accettato i cookies.
Cancella le preferenze del tuo browser per questo sito, aggiorna la pagina ed accetta i cookies.