03-oct: superguardado automático

This commit is contained in:
minguezsanzjuanjose
2026-10-03 17:18:41 +02:00
parent fdd4ea877a
commit 1b385cca7c
5 changed files with 259 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
<#
.SYNOPSIS
Instala y conecta Tailscale en un PC Windows (malla privada para acceso remoto).
.DESCRIPTION
Idempotente. Tailscale une los equipos (sobremesa, portatil...) en una red privada
cifrada, sin abrir puertos en el router ni depender de la red local.
Hace:
1. Instala Tailscale via winget (si falta).
2. Ejecuta `tailscale up --hostname <nombre>` (autenticacion en el navegador, una vez).
3. Muestra estado y la IP de la tailnet.
Ejecutar en CADA equipo que quiera usar la malla (sobremesa Y portatil).
.EXAMPLE
powershell -ExecutionPolicy Bypass -File setup_tailscale.ps1 -Hostname sobremesa
#>
[CmdletBinding()]
param(
[string]$Hostname = $env:COMPUTERNAME.ToLower()
)
$ErrorActionPreference = 'Continue'
function Get-TailscaleExe {
$cmd = Get-Command tailscale -ErrorAction SilentlyContinue
if ($cmd) { return $cmd.Source }
foreach ($p in @("$env:ProgramFiles\Tailscale\tailscale.exe", "${env:ProgramFiles(x86)}\Tailscale\tailscale.exe")) {
if (Test-Path $p) { return $p }
}
return $null
}
Write-Host '== Tailscale (malla privada para acceso remoto) ==' -ForegroundColor Cyan
$ts = Get-TailscaleExe
if (-not $ts) {
Write-Host ' - Instalando Tailscale via winget...' -ForegroundColor Yellow
$wg = Get-Command winget -ErrorAction SilentlyContinue
if (-not $wg) { Write-Error 'winget no disponible. Instala Tailscale manualmente desde https://tailscale.com/download/windows'; exit 1 }
winget install --id Tailscale.Tailscale -e --accept-source-agreements --accept-package-agreements
Start-Sleep -Seconds 5
$ts = Get-TailscaleExe
if (-not $ts) { Write-Error 'No se encuentra tailscale.exe tras la instalacion.'; exit 1 }
}
Write-Host " - tailscale: $ts" -ForegroundColor Green
$svc = Get-Service -Name Tailscale -ErrorAction SilentlyContinue
if ($svc) { Set-Service -Name Tailscale -StartupType Automatic; if ($svc.Status -ne 'Running') { Start-Service Tailscale } }
Write-Host " - Conectando a la tailnet como '$Hostname' (se abrira el navegador para autenticar)..." -ForegroundColor Yellow
& $ts up --hostname $Hostname
Write-Host ''
Write-Host 'Estado:' -ForegroundColor Cyan
& $ts status
$ip = (& $ts ip -4 2>$null) -join ', '
Write-Host "IP Tailscale : $ip"
Write-Host "Conexion : ssh $env:USERNAME@$Hostname (o a la IP Tailscale)"