Saltar al contenido principal

Windows Server

info

Instrucciones para instalar Passwork en el SO:

  • Windows Server 2019
  • Windows Server 2022
  • Windows Server 2025

1. Requisitos mínimos del sistema

Passwork no es exigente en cuanto a recursos del sistema, y el número de servidores necesarios depende de la cantidad de usuarios activos, el volumen de datos almacenados y los requisitos de tolerancia a fallos del sistema.

Consulte los requisitos completos del sistema.

2. Acciones básicas antes de la instalación

Usando el menú contextual de Inicio
  1. Haga clic derecho en el icono de Inicio en la esquina inferior izquierda de la pantalla.
  2. Seleccione «Windows PowerShell (Administrador)» del menú contextual.
Usando el menú Inicio
  1. Haga clic izquierdo en el icono de Inicio en la esquina inferior izquierda de la pantalla.
  2. Escriba powershell
  3. Abra PowerShell como «Administrador» usando la combinación — Ctrl + Shift + Enter

Cree un directorio temporal para descargar paquetes y archivos:

New-Item -Path "C:\Windows\Temp\passwork_install" -ItemType Directory

Determine los nombres de los grupos de usuario usando SID:

$userGroupSid = "S-1-5-32-545"
$userSecurityIdentifier = New-Object System.Security.Principal.SecurityIdentifier($userGroupSid)
$userGroupName = $userSecurityIdentifier.Translate([System.Security.Principal.NTAccount]).Value
$userGroupName = $userGroupName.Split("\")[1]

$iis_iusrsGroupSid = "S-1-5-32-568"
$iis_iusrsSecurityIdentifier = New-Object System.Security.Principal.SecurityIdentifier($iis_iusrsGroupSid)
$iis_iusrsGroupName = $iis_iusrsSecurityIdentifier.Translate([System.Security.Principal.NTAccount]).Value
$iis_iusrsGroupName = $iis_iusrsGroupName.Split("\")[1]

Instale el rol IIS con el módulo:

Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Install-WindowsFeature -Name Web-CGI -IncludeManagementTools

3. Instalación de PHP

Descargue el archivo PHP:

(New-Object System.Net.WebClient).DownloadFile("https://repos.passwork.pro/repository/windows_packages/php_build/83/php_latest.zip", "C:\Windows\Temp\passwork_install\php_latest.zip")
info

Extraiga el contenido en Program Files:

Expand-Archive `
-Path "$env:SystemDrive\Windows\Temp\passwork_install\php_latest.zip" `
-DestinationPath "$env:ProgramFiles\"

Agregue las utilidades PHP a la variable de entorno PATH:

[System.Environment]::SetEnvironmentVariable("PATH", [System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::Machine) + ";C:\Program Files\php8.3", [System.EnvironmentVariableTarget]::Machine)
$env:Path = [System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::Machine)

Establezca permisos para el grupo Users en el directorio PHP:

Invoke-Expression "icacls '$env:ProgramFiles\php8.3' /grant '${userGroupName}:(OI)(CI)`M'"

4. Instalación de la base de datos MongoDB

Descargue el instalador de MongoDB:

(New-Object System.Net.WebClient).DownloadFile("https://repos.passwork.pro/repository/windows_packages/mongodb_database_latest.msi", "C:\Windows\Temp\passwork_install\mongodb_database_latest.msi")

Instale MongoDB con la configuración predeterminada:

Start-Process -FilePath "msiexec.exe" -ArgumentList "/l*v", "C:\Windows\Temp\mdbinstall.log", "/qb", "/i", "C:\Windows\Temp\passwork_install\mongodb_database_latest.msi", "SHOULD_INSTALL_COMPASS=0", "ADDLOCAL=Router,ServerService" -Wait
info

Para instalar MongoDB en otra unidad, agregue "INSTALLLOCATION=A:\MongoDB"

Cree un directorio para las utilidades de administración de MongoDB:

New-Item -ItemType Directory -Force -Path "$env:ProgramFiles\MongoDB\Tools\"

Descargue las utilidades de administración:

(New-Object System.Net.WebClient).DownloadFile("https://repos.passwork.pro/repository/windows_packages/database_tools_latest.zip", "C:\Windows\Temp\passwork_install\database_tools_latest.zip")

Extraiga el contenido:

Expand-Archive `
-Path "$env:SystemDrive\Windows\Temp\passwork_install\database_tools_latest.zip" `
-DestinationPath "$env:ProgramFiles\MongoDB\Tools\"

Agregue las utilidades de administración a la variable de entorno PATH:

[System.Environment]::SetEnvironmentVariable("PATH", [System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::Machine) + ";C:\Program Files\MongoDB\Tools", [System.EnvironmentVariableTarget]::Machine)
$env:Path = [System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::Machine)

5. Instalación de módulos para IIS

Descargue el archivo con los módulos:

(New-Object System.Net.WebClient).DownloadFile("https://repos.passwork.pro/repository/windows_packages/iis_package_latest.zip", "C:\Windows\Temp\passwork_install\iis_package_latest.zip")
info

Extraiga los módulos de IIS:

Expand-Archive `
-Path "$env:SystemDrive\Windows\Temp\passwork_install\iis_package_latest.zip" `
-DestinationPath "$env:SystemDrive\Windows\Temp\passwork_install\"

Instale Visual C++:

Start-Process `
-FilePath "$env:SystemDrive\Windows\Temp\passwork_install\VC_redist.x64.exe" `
-ArgumentList "/q" -Wait -ErrorAction Stop

Instale PHP Manager:

Start-Process -FilePath "msiexec.exe" `
-ArgumentList "/i $env:SystemDrive\Windows\Temp\passwork_install\PHPManagerForIIS_x64.msi /quiet /norestart" `
-Wait -ErrorAction Stop

Instale URL Rewrite:

Start-Process -FilePath "msiexec.exe" `
-ArgumentList "/i $env:SystemDrive\Windows\Temp\passwork_install\rewrite_amd64_en-US.msi /quiet /norestart" `
-Wait -ErrorAction Stop

6. Obtención de Passwork

Cree un directorio para Passwork:

New-Item -ItemType Directory -Force -Path "C:\inetpub\wwwroot\passwork"

Acceda al Portal de cliente de Passwork y copie la clave API:

Ubicación de la clave API en el portal de cliente

Cree la variable API_KEY:

$API_KEY = "your_api_key"

Verifique la versión disponible de Passwork desde el portal de cliente:

Invoke-RestMethod -Uri "https://portal.passwork.pro/api/version?apikey=$API_KEY" -Method Get
Salida correcta
response
--------
@{last-available-version=xxxxxxxx}

Descargue Passwork usando la solicitud:

(New-Object System.Net.WebClient).DownloadFile("https://portal.passwork.pro/api/download?apikey=$API_KEY", "C:\Windows\Temp\passwork_install\passwork.zip")

Limpie la variable API_KEY:

Remove-Variable API_KEY

Extraiga el archivo descargado:

Expand-Archive `
-Path "$env:SystemDrive\Windows\Temp\passwork_install\passwork.zip" `
-DestinationPath "$env:SystemDrive\inetpub\wwwroot\passwork\"

Descargue y coloque el archivo web.config en C:\inetpub\wwwroot\passwork\public\ para las reglas de redirección:

web.config

Establezca permisos para la ubicación física de Passwork:

Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant '${userGroupName}:(OI)(CI)`M'"
Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant '${$iis_iusrsGroupName}:(OI)(CI)`M'"
Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant 'IUSR:(OI)(CI)`M'"

7. Creación de un sitio web con conexión PHP

peligro

Importante: para garantizar el correcto funcionamiento de Passwork, debe utilizar el protocolo HTTPS.

Cargue módulos en PowerShell para la gestión de IIS:

Import-Module IISAdministration
Import-Module WebAdministration
Add-PsSnapin PHPManagerSnapin

Desbloquee la configuración de handlers en IIS:

Invoke-Expression "$env:windir\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers"

Cree un sitio web llamado Passwork Web Site:

New-WebSite -Name "Passwork Web Site" -Port "5353" -PhysicalPath "C:\inetpub\wwwroot\passwork\public" -Force

Registre la versión de PHP para el sitio web:

New-PHPVersion -ScriptProcessor "$env:ProgramFiles\php8.3\php-cgi.exe" -SiteName "Passwork Web Site" -VirtualPath "/"

Active controladores y extensiones para el sitio web:

$extensions = @(
"php_curl.dll",
"php_gd.dll",
"php_gettext.dll",
"php_intl.dll",
"php_ldap.dll",
"php_mbstring.dll",
"php_mongodb.dll",
"php_mysqli.dll",
"php_openssl.dll",
"php_pdo_pgsql.dll",
"php_pdo_sqlite.dll",
"php_pgsql.dll",
"php_soap.dll",
"php_zip.dll",
"php_fileinfo.dll"
)

foreach ($extension in $extensions) {
Write-Host "PHP extension activated: $extension"
Set-PHPExtension -Name $extension -Status Enabled -SiteName "Passwork Web Site" -VirtualPath "/"
}

Obtenga el número de versión de PHP en una variable:

$phpVersion = (Get-PHPConfiguration -SiteName "Passwork Web Site" -VirtualPath "/").version

Actualice la lista de métodos HTTP permitidos para el manejador PHP:

Set-WebConfigurationProperty -PSPath "IIS:\Sites\Passwork Web Site" -Filter "system.webServer/handlers/add[@name='php-$phpVersion']" -Name "verb" -Value "GET,HEAD,POST,PUT,DELETE,PATCH"

8. Configuración del servidor web para protocolo HTTPS

info

Para garantizar el correcto funcionamiento, debe utilizar el protocolo HTTPS. El uso de HTTP provocará errores.

8.1 Generación de un certificado SSL autofirmado

Cree un certificado SSL autofirmado con el valor del nombre del servidor:

$dnsName = "$env:COMPUTERNAME"
$newCert = New-SelfSignedCertificate -DnsName $dnsName -CertStoreLocation cert:\LocalMachine\My

8.2 Creación del enlace IIS para acceso HTTPS

Cree un enlace HTTPS en el sitio web de Passwork:

New-WebBinding -Name "Passwork Web Site" -IPAddress "*" -Port "443" -Protocol "https"

Obtenga el enlace actual del sitio web de Passwork:

$binding = Get-WebBinding -Name "Passwork Web Site" -Protocol "https"

Vincule el certificado SSL autofirmado creado anteriormente al protocolo HTTPS del sitio web:

$binding.AddSslCertificate($newCert.GetCertHashString(), "my")

Reinicie el servidor web IIS:

Restart-Service -Name "W3SVC"

9. Completar la lista de verificación

Al conectarse a Passwork por primera vez, necesita completar la lista de verificación de parámetros, durante la cual se realizará lo siguiente:

  • Verificación de parámetros necesarios
  • Conexión a la base de datos MongoDB
  • Elección del modo de cifrado de datos
  • Generación aleatoria de clave para cifrar datos en MongoDB
  • Verificación de la clave de licencia

Después de completar la lista de verificación, se le solicitará crear el primer usuario en Passwork, donde necesitará especificar el inicio de sesión, la contraseña y la dirección de correo electrónico para el envío de notificaciones.

info

Los parámetros adicionales de componentes, configuraciones de seguridad y configuración del sistema de Passwork están disponibles en la sección de configuración avanzada.

10. Configuración de tareas en segundo plano

Las tareas en segundo plano son tareas que se ejecutan en un programador en segundo plano. Aprenda cómo configurar las tareas en segundo plano.

peligro

Las tareas en segundo plano son obligatorias para el correcto funcionamiento de algunas funcionalidades de Passwork, tales como:

  • Operaciones LDAP;
  • Envío de notificaciones por correo electrónico;
  • Descarga de favicons;
  • Limpieza de la colección session en la base de datos de Passwork.