mirror of
https://github.com/wg-easy/wg-easy.git
synced 2025-09-26 19:51:15 +08:00
Compare commits
4 Commits
dependabot
...
7b2d234ea5
Author | SHA1 | Date | |
---|---|---|---|
![]() |
7b2d234ea5 | ||
![]() |
a282ca35f1 | ||
![]() |
0792862c0d | ||
![]() |
6c0d8e91fa |
@@ -6,18 +6,19 @@ If you want to run the setup without any user interaction, e.g. with a tool like
|
||||
|
||||
These will only be used during the first start of the container. After that, the setup will be disabled.
|
||||
|
||||
| Env | Example | Description | Group |
|
||||
| ---------------- | ----------------- | --------------------------------------------------------- | ----- |
|
||||
| `INIT_ENABLED` | `true` | Enables the below env vars | 0 |
|
||||
| `INIT_USERNAME` | `admin` | Sets admin username | 1 |
|
||||
| `INIT_PASSWORD` | `Se!ureP%ssw` | Sets admin password | 1 |
|
||||
| `INIT_HOST` | `vpn.example.com` | Host clients will connect to | 1 |
|
||||
| `INIT_PORT` | `51820` | Port clients will connect to and wireguard will listen on | 1 |
|
||||
| `INIT_DNS` | `1.1.1.1,8.8.8.8` | Sets global dns setting | 2 |
|
||||
| `INIT_IPV4_CIDR` | `10.8.0.0/24` | Sets IPv4 cidr | 3 |
|
||||
| `INIT_IPV6_CIDR` | `2001:0DB8::/32` | Sets IPv6 cidr | 3 |
|
||||
| Env | Example | Description | Group |
|
||||
| ------------------ | ---------------------------- | --------------------------------------------------------- | ----- |
|
||||
| `INIT_ENABLED` | `true` | Enables the below env vars | 0 |
|
||||
| `INIT_USERNAME` | `admin` | Sets admin username | 1 |
|
||||
| `INIT_PASSWORD` | `Se!ureP%ssw` | Sets admin password | 1 |
|
||||
| `INIT_HOST` | `vpn.example.com` | Host clients will connect to | 1 |
|
||||
| `INIT_PORT` | `51820` | Port clients will connect to and wireguard will listen on | 1 |
|
||||
| `INIT_DNS` | `1.1.1.1,8.8.8.8` | Sets global dns setting | 2 |
|
||||
| `INIT_IPV4_CIDR` | `10.8.0.0/24` | Sets IPv4 cidr | 3 |
|
||||
| `INIT_IPV6_CIDR` | `2001:0DB8::/32` | Sets IPv6 cidr | 3 |
|
||||
| `INIT_ALLOWED_IPS` | `10.8.0.0/24,2001:0DB8::/32` | Sets global Allowed IPs | 4 |
|
||||
|
||||
/// warning | Variables have to be used together
|
||||
/// warning | Variables have to be used together
|
||||
|
||||
If variables are in the same group, you have to set all of them. For example, if you set `INIT_IPV4_CIDR`, you also have to set `INIT_IPV6_CIDR`.
|
||||
|
||||
|
@@ -38,6 +38,7 @@ If you're using podman, make sure to read the related [documentation][docs-podma
|
||||
To understand which tags you should use, read this section carefully. [Our CI][github-ci] will automatically build, test and push new images to the following container registry:
|
||||
|
||||
1. GitHub Container Registry ([`ghcr.io/wg-easy/wg-easy`][ghcr-image])
|
||||
2. Codeberg Container Registry ([`codeberg.org/wg-easy/wg-easy`][codeberg-image]) (IPv6 support)
|
||||
|
||||
All workflows are using the tagging convention listed below. It is subsequently applied to all images.
|
||||
|
||||
@@ -50,12 +51,13 @@ All workflows are using the tagging convention listed below. It is subsequently
|
||||
| `edge` | push to `master` | `ghcr.io/wg-easy/wg-easy:edge` | mostly unstable, gets frequent package and code updates |
|
||||
| `development` | pull requests | `ghcr.io/wg-easy/wg-easy:development` | used for development, testing code from PRs |
|
||||
|
||||
<!-- ref: major version -->
|
||||
<!-- ref: major version (check links too) -->
|
||||
|
||||
When publishing a tag we follow the [Semantic Versioning][semver] specification. The `latest` tag is always pointing to the latest stable release. If you want to avoid breaking changes, use the major version tag (e.g. `15`).
|
||||
|
||||
[github-ci]: https://github.com/wg-easy/wg-easy/actions
|
||||
[ghcr-image]: https://github.com/wg-easy/wg-easy/pkgs/container/wg-easy
|
||||
[codeberg-image]: https://codeberg.org/wg-easy/-/packages/container/wg-easy/15
|
||||
[semver]: https://semver.org/
|
||||
|
||||
### Follow tutorials
|
||||
|
@@ -3,6 +3,7 @@ import pl from './locales/pl.json';
|
||||
import uk from './locales/uk.json';
|
||||
import fr from './locales/fr.json';
|
||||
import de from './locales/de.json';
|
||||
import it from './locales/it.json';
|
||||
import ru from './locales/ru.json';
|
||||
import zhhk from './locales/zh-HK.json';
|
||||
import zhcn from './locales/zh-CN.json';
|
||||
@@ -22,6 +23,7 @@ export default defineI18nConfig(() => ({
|
||||
uk,
|
||||
fr,
|
||||
de,
|
||||
it,
|
||||
ru,
|
||||
'zh-HK': zhhk,
|
||||
'zh-CN': zhcn,
|
||||
|
240
src/i18n/locales/it.json
Normal file
240
src/i18n/locales/it.json
Normal file
@@ -0,0 +1,240 @@
|
||||
{
|
||||
"pages": {
|
||||
"me": "Account",
|
||||
"clients": "Client",
|
||||
"admin": {
|
||||
"panel": "Pannello di Amministrazione",
|
||||
"general": "Generale",
|
||||
"config": "Configurazione",
|
||||
"interface": "Interfaccia",
|
||||
"hooks": "Hooks"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"email": "E-Mail"
|
||||
},
|
||||
"me": {
|
||||
"currentPassword": "Password attuale",
|
||||
"enable2fa": "Abilita Autenticazione a Due Fattori",
|
||||
"enable2faDesc": "Scansiona il codice QR con la tua app di autenticazione o inserisci manualmente la chiave.",
|
||||
"2faKey": "Chiave TOTP",
|
||||
"2faCodeDesc": "Inserisci il codice generato dalla tua app di autenticazione.",
|
||||
"disable2fa": "Disabilita Autenticazione a Due Fattori",
|
||||
"disable2faDesc": "Inserisci la tua password per disabilitare l’Autenticazione a Due Fattori."
|
||||
},
|
||||
"general": {
|
||||
"name": "Nome",
|
||||
"username": "Nome utente",
|
||||
"password": "Password",
|
||||
"newPassword": "Nuova Password",
|
||||
"updatePassword": "Aggiorna Password",
|
||||
"mtu": "MTU",
|
||||
"allowedIps": "IP consentiti",
|
||||
"dns": "DNS",
|
||||
"persistentKeepalive": "Keepalive Persistente",
|
||||
"logout": "Esci",
|
||||
"continue": "Continua",
|
||||
"host": "Host",
|
||||
"port": "Porta",
|
||||
"yes": "Sì",
|
||||
"no": "No",
|
||||
"confirmPassword": "Conferma Password",
|
||||
"loading": "Caricamento...",
|
||||
"2fa": "Autenticazione a Due Fattori",
|
||||
"2faCode": "Codice TOTP"
|
||||
},
|
||||
"setup": {
|
||||
"welcome": "Benvenuto alla tua prima configurazione di wg-easy",
|
||||
"welcomeDesc": "Hai trovato il modo più semplice per installare e gestire WireGuard su qualsiasi host Linux",
|
||||
"existingSetup": "Hai già una configurazione esistente?",
|
||||
"createAdminDesc": "Inserisci prima un nome utente admin e una password forte e sicura. Queste informazioni verranno usate per accedere al pannello di amministrazione.",
|
||||
"setupConfigDesc": "Inserisci le informazioni su host e porta. Saranno usate per la configurazione dei client quando imposteranno WireGuard sui loro dispositivi.",
|
||||
"setupMigrationDesc": "Fornisci il file di backup se vuoi migrare i tuoi dati dalla precedente versione di wg-easy alla nuova installazione.",
|
||||
"upload": "Carica",
|
||||
"migration": "Ripristina backup:",
|
||||
"createAccount": "Crea Account",
|
||||
"successful": "Configurazione completata con successo",
|
||||
"hostDesc": "Nome host pubblico a cui i client si connetteranno",
|
||||
"portDesc": "Porta UDP pubblica a cui i client si connetteranno e su cui WireGuard resterà in ascolto"
|
||||
},
|
||||
"update": {
|
||||
"updateAvailable": "È disponibile un aggiornamento!",
|
||||
"update": "Aggiorna"
|
||||
},
|
||||
"theme": {
|
||||
"dark": "Tema scuro",
|
||||
"light": "Tema chiaro",
|
||||
"system": "Tema di sistema"
|
||||
},
|
||||
"layout": {
|
||||
"toggleCharts": "Mostra/nascondi Grafici",
|
||||
"donate": "Dona"
|
||||
},
|
||||
"login": {
|
||||
"signIn": "Accedi",
|
||||
"rememberMe": "Ricordami",
|
||||
"rememberMeDesc": "Rimani connesso dopo aver chiuso il browser",
|
||||
"insecure": "Non puoi accedere con una connessione non sicura. Usa HTTPS.",
|
||||
"2faRequired": "È richiesta l’Autenticazione a Due Fattori",
|
||||
"2faWrong": "Codice di Autenticazione a Due Fattori errato"
|
||||
},
|
||||
"client": {
|
||||
"empty": "Non ci sono ancora client.",
|
||||
"newShort": "Nuovo",
|
||||
"sort": "Ordina",
|
||||
"create": "Crea Client",
|
||||
"created": "Client creato",
|
||||
"new": "Nuovo Client",
|
||||
"name": "Nome",
|
||||
"expireDate": "Data di Scadenza",
|
||||
"expireDateDesc": "Data in cui il client verrà disabilitato. Lascia vuoto per permanente",
|
||||
"deleteClient": "Elimina Client",
|
||||
"deleteDialog1": "Sei sicuro di voler eliminare",
|
||||
"deleteDialog2": "Questa azione non può essere annullata.",
|
||||
"enabled": "Abilitato",
|
||||
"address": "Indirizzo",
|
||||
"serverAllowedIps": "IP consentiti dal Server",
|
||||
"otlDesc": "Genera link temporaneo monouso",
|
||||
"permanent": "Permanente",
|
||||
"createdOn": "Creato il ",
|
||||
"lastSeen": "Ultima connessione il ",
|
||||
"totalDownload": "Download Totale: ",
|
||||
"totalUpload": "Upload Totale: ",
|
||||
"newClient": "Nuovo Client",
|
||||
"disableClient": "Disabilita Client",
|
||||
"enableClient": "Abilita Client",
|
||||
"noPrivKey": "Questo client non ha una chiave privata nota. Impossibile creare la configurazione.",
|
||||
"showQR": "Mostra Codice QR",
|
||||
"downloadConfig": "Scarica Configurazione",
|
||||
"allowedIpsDesc": "Quali IP verranno instradati attraverso la VPN (sovrascrive la config globale)",
|
||||
"serverAllowedIpsDesc": "Quali IP il server instraderà al client",
|
||||
"mtuDesc": "Imposta la dimensione massima dei pacchetti (MTU) per il tunnel VPN",
|
||||
"persistentKeepaliveDesc": "Imposta l’intervallo (in secondi) dei pacchetti keep-alive. 0 lo disabilita",
|
||||
"hooks": "Hooks",
|
||||
"hooksDescription": "Gli hooks funzionano solo con wg-quick",
|
||||
"hooksLeaveEmpty": "Solo per wg-quick. Altrimenti lascia vuoto",
|
||||
"dnsDesc": "Server DNS che i client useranno (sovrascrive la config globale)",
|
||||
"notConnected": "Client non connesso",
|
||||
"endpoint": "Endpoint",
|
||||
"endpointDesc": "IP del client da cui viene stabilita la connessione WireGuard"
|
||||
},
|
||||
"dialog": {
|
||||
"change": "Modifica",
|
||||
"cancel": "Annulla",
|
||||
"create": "Crea"
|
||||
},
|
||||
"toast": {
|
||||
"success": "Operazione riuscita",
|
||||
"saved": "Salvato",
|
||||
"error": "Errore"
|
||||
},
|
||||
"form": {
|
||||
"actions": "Azioni",
|
||||
"save": "Salva",
|
||||
"revert": "Annulla modifiche",
|
||||
"sectionGeneral": "Generale",
|
||||
"sectionAdvanced": "Avanzate",
|
||||
"noItems": "Nessun elemento",
|
||||
"nullNoItems": "Nessun elemento. Uso configurazione globale",
|
||||
"add": "Aggiungi"
|
||||
},
|
||||
"admin": {
|
||||
"general": {
|
||||
"sessionTimeout": "Timeout Sessione",
|
||||
"sessionTimeoutDesc": "Durata della sessione per 'Ricordami' (in secondi)",
|
||||
"metrics": "Metriche",
|
||||
"metricsPassword": "Password",
|
||||
"metricsPasswordDesc": "Password Bearer per l’endpoint metriche (password o hash argon2)",
|
||||
"json": "JSON",
|
||||
"jsonDesc": "Percorso per metriche in formato JSON",
|
||||
"prometheus": "Prometheus",
|
||||
"prometheusDesc": "Percorso per metriche Prometheus"
|
||||
},
|
||||
"config": {
|
||||
"connection": "Connessione",
|
||||
"hostDesc": "Nome host pubblico a cui i client si connetteranno (invalida la config)",
|
||||
"portDesc": "Porta UDP pubblica a cui i client si connetteranno (invalida la config, probabilmente vuoi cambiare anche la Porta Interfaccia)",
|
||||
"allowedIpsDesc": "IP consentiti che i client useranno (config globale)",
|
||||
"dnsDesc": "Server DNS che i client useranno (config globale)",
|
||||
"mtuDesc": "MTU usata dai client (solo per i nuovi client)",
|
||||
"persistentKeepaliveDesc": "Intervallo in secondi per inviare keepalive al server. 0 = disabilitato (solo per nuovi client)",
|
||||
"suggest": "Suggerisci",
|
||||
"suggestDesc": "Scegli un indirizzo IP o un Hostname per il campo Host"
|
||||
},
|
||||
"interface": {
|
||||
"cidrSuccess": "CIDR modificato",
|
||||
"device": "Dispositivo",
|
||||
"deviceDesc": "Dispositivo di rete attraverso cui instradare il traffico WireGuard",
|
||||
"mtuDesc": "MTU usata da WireGuard",
|
||||
"portDesc": "Porta UDP su cui WireGuard resterà in ascolto (probabilmente vuoi cambiare anche la Porta Config)",
|
||||
"changeCidr": "Modifica CIDR",
|
||||
"restart": "Riavvia Interfaccia",
|
||||
"restartDesc": "Riavvia l’interfaccia WireGuard",
|
||||
"restartWarn": "Sei sicuro di riavviare l’interfaccia? Tutti i client verranno disconnessi.",
|
||||
"restartSuccess": "Interfaccia riavviata"
|
||||
},
|
||||
"introText": "Benvenuto nel pannello di amministrazione.\n\nQui puoi gestire le impostazioni generali, la configurazione, le impostazioni dell’interfaccia e gli hooks.\n\nInizia scegliendo una delle sezioni nella barra laterale."
|
||||
},
|
||||
"zod": {
|
||||
"generic": {
|
||||
"required": "{0} è obbligatorio",
|
||||
"validNumber": "{0} deve essere un numero valido",
|
||||
"validString": "{0} deve essere una stringa valida",
|
||||
"validBoolean": "{0} deve essere un valore booleano valido",
|
||||
"validArray": "{0} deve essere un array valido",
|
||||
"stringMin": "{0} deve contenere almeno {1} carattere",
|
||||
"numberMin": "{0} deve essere almeno {1}"
|
||||
},
|
||||
"client": {
|
||||
"id": "ID Client",
|
||||
"name": "Nome",
|
||||
"expiresAt": "Scadenza",
|
||||
"address4": "Indirizzo IPv4",
|
||||
"address6": "Indirizzo IPv6",
|
||||
"serverAllowedIps": "IP consentiti dal Server"
|
||||
},
|
||||
"user": {
|
||||
"username": "Nome utente",
|
||||
"password": "Password",
|
||||
"remember": "Ricorda",
|
||||
"name": "Nome",
|
||||
"email": "Email",
|
||||
"emailInvalid": "Email deve essere un indirizzo valido",
|
||||
"passwordMatch": "Le password devono coincidere",
|
||||
"totpEnable": "Abilitazione TOTP",
|
||||
"totpEnableTrue": "TOTP deve essere abilitato",
|
||||
"totpCode": "Codice TOTP"
|
||||
},
|
||||
"userConfig": {
|
||||
"host": "Host"
|
||||
},
|
||||
"general": {
|
||||
"sessionTimeout": "Timeout Sessione",
|
||||
"metricsEnabled": "Metriche",
|
||||
"metricsPassword": "Password Metriche"
|
||||
},
|
||||
"interface": {
|
||||
"cidr": "CIDR",
|
||||
"device": "Dispositivo",
|
||||
"cidrValid": "CIDR deve essere valido"
|
||||
},
|
||||
"otl": "Link Monouso",
|
||||
"stringMalformed": "Stringa non valida",
|
||||
"body": "Body deve essere un oggetto valido",
|
||||
"hook": "Hook",
|
||||
"enabled": "Abilitato",
|
||||
"mtu": "MTU",
|
||||
"port": "Porta",
|
||||
"persistentKeepalive": "Keepalive Persistente",
|
||||
"address": "Indirizzo IP",
|
||||
"dns": "DNS",
|
||||
"allowedIps": "IP consentiti",
|
||||
"file": "File"
|
||||
},
|
||||
"hooks": {
|
||||
"preUp": "PreUp",
|
||||
"postUp": "PostUp",
|
||||
"preDown": "PreDown",
|
||||
"postDown": "PostDown"
|
||||
}
|
||||
}
|
@@ -109,7 +109,7 @@
|
||||
"allowedIpsDesc": "Какие IP будут маршрутизироваться через VPN (перезаписывает общую конфигурацию)",
|
||||
"serverAllowedIpsDesc": "Какие IP сервер будет отправлять клиенту",
|
||||
"mtuDesc": "Максимальный размер пакета для VPN‑туннеля",
|
||||
"persistentKeepaliveDesc": "Интервал (в секундах) отправки keep‑alive. 0 — отключено",
|
||||
"persistentKeepaliveDesc": "Интервал пакетов для поддержания соединения (в секундах). 0 — отключено.",
|
||||
"hooks": "Хуки",
|
||||
"hooksDescription": "Хуки работают только с wg-quick",
|
||||
"hooksLeaveEmpty": "Только для wg-quick. Иначе оставьте пустым",
|
||||
@@ -225,7 +225,7 @@
|
||||
"enabled": "Включено",
|
||||
"mtu": "MTU",
|
||||
"port": "Порт",
|
||||
"persistentKeepalive": "Постоянный keepalive",
|
||||
"persistentKeepalive": "Поддерживать соединение",
|
||||
"address": "IP‑адрес",
|
||||
"dns": "DNS",
|
||||
"allowedIps": "Разрешённые IP",
|
||||
|
@@ -43,6 +43,11 @@ export default defineNuxtConfig({
|
||||
language: 'es-ES',
|
||||
name: 'Español',
|
||||
},
|
||||
{
|
||||
code: 'it',
|
||||
language: 'it-IT',
|
||||
name: 'Italiano',
|
||||
},
|
||||
{
|
||||
code: 'fr',
|
||||
language: 'fr-FR',
|
||||
|
@@ -54,7 +54,7 @@ export class UserConfigService {
|
||||
});
|
||||
}
|
||||
|
||||
update(data: UserConfigUpdateType) {
|
||||
update(data: Partial<UserConfigUpdateType>) {
|
||||
return this.#db
|
||||
.update(userConfig)
|
||||
.set(data)
|
||||
|
@@ -89,13 +89,18 @@ async function initialSetup(db: DBServiceType) {
|
||||
|
||||
if (WG_INITIAL_ENV.DNS) {
|
||||
DB_DEBUG('Setting initial DNS...');
|
||||
const userConfig = await db.userConfigs.get();
|
||||
await db.userConfigs.update({
|
||||
...userConfig,
|
||||
defaultDns: WG_INITIAL_ENV.DNS,
|
||||
});
|
||||
}
|
||||
|
||||
if (WG_INITIAL_ENV.ALLOWED_IPS) {
|
||||
DB_DEBUG('Setting initial Allowed IPs...');
|
||||
await db.userConfigs.update({
|
||||
defaultAllowedIps: WG_INITIAL_ENV.ALLOWED_IPS,
|
||||
});
|
||||
}
|
||||
|
||||
if (
|
||||
WG_INITIAL_ENV.USERNAME &&
|
||||
WG_INITIAL_ENV.PASSWORD &&
|
||||
|
@@ -38,6 +38,7 @@ export const WG_INITIAL_ENV = {
|
||||
DNS: process.env.INIT_DNS?.split(',').map((x) => x.trim()),
|
||||
IPV4_CIDR: process.env.INIT_IPV4_CIDR,
|
||||
IPV6_CIDR: process.env.INIT_IPV6_CIDR,
|
||||
ALLOWED_IPS: process.env.INIT_ALLOWED_IPS?.split(',').map((x) => x.trim()),
|
||||
HOST: process.env.INIT_HOST,
|
||||
PORT: process.env.INIT_PORT
|
||||
? Number.parseInt(process.env.INIT_PORT, 10)
|
||||
|
Reference in New Issue
Block a user