57 lines
1.7 KiB
Batchfile
57 lines
1.7 KiB
Batchfile
@echo off
|
|
cd /D "%~dp0"
|
|
if !%1==! goto help
|
|
if !%2==! goto help
|
|
|
|
set BESZELKEYPREFIX=%1
|
|
set BESZELKEY=%2
|
|
set SERVICENAME=BeszelAgent
|
|
set DESTINATIONDIR=%ProgramFiles%\%SERVICENAME%
|
|
set AGENTEXE=%DESTINATIONDIR%\agent.exe
|
|
set NSSMEXE=nssm.exe
|
|
|
|
where nssm.exe >nul 2>&1
|
|
if %errorlevel%==1 goto installnssm
|
|
goto proceed
|
|
|
|
:installnssm
|
|
echo Downloading NSSM
|
|
curl.exe --output "%TEMP%\nssm-2.24.zip" --url https://nssm.cc/release/nssm-2.24.zip >nul 2>&1
|
|
echo Extracting ZIP file
|
|
tar.exe -xf %TEMP%\nssm-2.24.zip
|
|
echo Copying nssm.exe to %DESTINATIONDIR%
|
|
if %PROCESSOR_ARCHITECTURE%==AMD64 (
|
|
copy .\nssm-2.24\win64\nssm.exe "%DESTINATIONDIR%\" >nul 2>&1
|
|
) else (
|
|
copy .\nssm-2.24\win32\nssm.exe "%DESTINATIONDIR%\" >nul 2>&1
|
|
)
|
|
set NSSMEXE="%DESTINATIONDIR%\nssm.exe"
|
|
echo Deleting temporary files and directories
|
|
del "%TEMP%\nssm-2.24.zip" >nul 2>&1
|
|
rd /s/q .\nssm-2.24 >nul 2>&1
|
|
|
|
:proceed
|
|
echo Creating deirectory %DESTINATIONDIR%
|
|
md "%DESTINATIONDIR%" >nul 2>&1
|
|
|
|
echo Copying agent.exe
|
|
copy .\agent.exe "%DESTINATIONDIR%\" >nul 2>&1
|
|
|
|
echo Adding firewall rule
|
|
netsh advfirewall firewall add rule name="%SERVICENAME%" dir=in action=allow program="%AGENTEXE%" enable=yes >nul 2>&1
|
|
|
|
echo Installing service
|
|
%NSSMEXE% install %SERVICENAME% "%AGENTEXE%" >nul 2>&1
|
|
%NSSMEXE% set %SERVICENAME% AppEnvironmentExtra "KEY=%BESZELKEYPREFIX% %BESZELKEY%" >nul 2>&1
|
|
|
|
echo Setting environment for service
|
|
%NSSMEXE% start %SERVICENAME% >nul 2>&1
|
|
|
|
echo Service installed, status:
|
|
%NSSMEXE% dump %SERVICENAME%
|
|
goto end
|
|
|
|
:help
|
|
echo You have to provide a Beszel ssh key, e.g. 'install-beszel-service.cmd ssh-ed25519 AAAAC3L3lIpn94iu2TIpdmneXsEC1TDvrg4HCNoM1aiC683WMZfGOVoatrJSkysaQB9K
|
|
echo The key must not be enclosed in "" or '', just copy and paste it as it is.
|
|
:end |