aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2022-08-08 12:15:09 +0200
committerBadlop <badlop@process-one.net>2022-08-08 12:31:14 +0200
commit682c2587607aa56b7c5fc7759961ae9416a4af01 (patch)
tree96859d45712588b4c09a3f59da124afbc9dd63cc /.github
parentext_mod: Support managing remote nodes in the cluster (diff)
Copy ejabberd-docker-install.bat from docker-ejabberd git and rename it
Diffstat (limited to '.github')
-rwxr-xr-x.github/container/ejabberd-container-install.bat292
1 files changed, 292 insertions, 0 deletions
diff --git a/.github/container/ejabberd-container-install.bat b/.github/container/ejabberd-container-install.bat
new file mode 100755
index 000000000..aedcd4165
--- /dev/null
+++ b/.github/container/ejabberd-container-install.bat
@@ -0,0 +1,292 @@
+@echo off
+
+::
+:: ejabberd Docker installer for Windows
+:: -------------------------------------
+:: v0.3
+::
+:: This batch script downloads an ejabberd docker image
+:: and setups a docker container to run ejabberd.
+
+::
+:: 1. Download and install Docker:
+::
+:: If you use Windows 10, download Docker Desktop from:
+:: https://www.docker.com/
+::
+:: If you use Windows 7 or 8, download Docker Toolbox from:
+:: https://github.com/docker/toolbox/releases
+:: After installation, run Docker Quickstart Installer
+::
+
+::
+:: 2. Edit those options:
+
+:: Directory where your ejabberd deployment files will be installed
+:: (configuration, database, logs, ...)
+::
+:: In Windows 10 you can configure the path:
+
+set INSTALL_DIR_WINDOWS10=C:\ejabberd
+
+:: In older Windows, not configurable, it will be installed in:
+:: C:\Users\%USERNAME%\ejabberd
+
+:: Please enter the desired ejabberd domain name.
+:: The domain is the visible attribute that is added to the username
+:: to form the Jabber Identifier (for example: user@example.net).
+:: This computer must be known on the network with this address name.
+:: You can later add more in conf/ejabberd.yml
+
+set HOST=localhost
+
+:: Please enter the administrator username for the current
+:: ejabberd installation. A Jabber account with this username
+:: will be created and granted administrative privileges.
+:: Don't use blankspaces in the username.
+
+set USER=admin
+
+:: Please provide a password for that new administrator account
+
+set PASSWORD=
+
+:: By default this downloads 'latest' ejabberd version,
+:: but you can set a specific version, for example 21.01
+
+set VERSION=latest
+
+:: This tells docker what ports ejabberd will use.
+:: You can later configure them in conf/ejabberd.yml
+
+set PORTS=5180 5222 5269 5443
+
+::
+:: 3. Now save this script and run it.
+::
+
+::
+:: 4. When installation is completed:
+::
+:: If using Windows 10, open Docker Desktop and you can:
+::
+:: - (>) START the ejabberd container
+:: - Enter WebAdmin: click the ([->]) OPEN IN BROWSER button
+:: - To try ejabberdctl, click the (>_) CLI button, then: bin/ejabberdctl
+:: - ([]) STOP the ejabberd container
+::
+:: If using an old Windows, open Kitematic and you can:
+::
+:: - START the ejabberd container
+:: - Open your configuration, logs, ... in Settings > Volumes
+:: - Enter WebAdmin in Settings > Hostname/Ports > click on the 5180 port
+:: - Try ejabberdctl in EXEC, then: bin/ejabberdctl
+:: - STOP the ejabberd container
+::
+:: You can delete the container and create it again running this script,
+:: the configuration and database are maintained.
+::
+
+::===============================================================
+:: Check Windows version
+::
+::===============================================================
+
+set INSTALL_DIR_DOCKER=c/Users/%USERNAME%/ejabberd
+
+for /f "tokens=4-5 delims=. " %%i in ('ver') do set WVERSION=%%i.%%j
+if "%wversion%" == "10.0" (
+ echo === Preparing paths to install in Windows 10...
+ set INSTALL_DIR=%INSTALL_DIR_WINDOWS10%
+ set VC=-v %INSTALL_DIR_WINDOWS10%\conf:/home/ejabberd/conf
+ set VD=-v %INSTALL_DIR_WINDOWS10%\database:/home/ejabberd/database
+ set VL=-v %INSTALL_DIR_WINDOWS10%\logs:/home/ejabberd/logs
+ set VM=-v %INSTALL_DIR_WINDOWS10%\ejabberd-modules:/home/ejabberd/.ejabberd-modules
+ set DOCKERDOWNLOAD="First download and install Docker Desktop from https://www.docker.com/"
+) else (
+ echo === Preparing paths to install in Windows older than 10...
+ set INSTALL_DIR=C:\Users\%USERNAME%\ejabberd
+ set VC=-v "/%INSTALL_DIR_DOCKER%/conf:/home/ejabberd/conf"
+ set VD=-v "/%INSTALL_DIR_DOCKER%/database:/home/ejabberd/database"
+ set VL=-v "/%INSTALL_DIR_DOCKER%/logs:/home/ejabberd/logs"
+ set VM=-v "/%INSTALL_DIR_DOCKER%/ejabberd-modules:/home/ejabberd/.ejabberd-modules"
+ set DOCKERDOWNLOAD="First download and install Docker Toolbox from https://github.com/docker/toolbox/releases"
+)
+set VOLUMES=%VC% %VD% %VL% %VM%
+
+::===============================================================
+:: Check docker is installed
+::
+::===============================================================
+
+docker version >NUL
+if %ERRORLEVEL% NEQ 0 (
+ echo.
+ echo === ERROR: It seems docker is not installed!!!
+ echo.
+ echo %DOCKERDOWNLOAD%
+ echo === Then try to run this script again.
+ echo.
+ pause
+ exit 1
+)
+
+::===============================================================
+:: Check install options are correctly set
+::
+::===============================================================
+
+if [%PASSWORD%]==[] (
+ echo.
+ echo === ERROR: PASSWORD not set!!!
+ echo.
+ echo === Please edit this script and set the PASSWORD.
+ echo === Then try to run this script again.
+ echo.
+ pause
+ exit 1
+)
+
+::===============================================================
+:: Download Docker image
+::
+::===============================================================
+
+set IMAGE=ejabberd/ecs:%VERSION%
+
+echo.
+echo === Checking if the '%IMAGE%' docker image was already downloaded...
+docker image history %IMAGE% >NUL
+if %ERRORLEVEL% NEQ 0 (
+ echo === The '%IMAGE%' docker image was not downloaded yet.
+ echo.
+ echo === Downloading the '%IMAGE%' docker image, please wait...
+ docker pull %IMAGE%
+) else (
+ echo === The '%IMAGE%' docker image was already downloaded.
+)
+
+::===============================================================
+:: Create preliminary container
+::
+::===============================================================
+
+echo.
+echo === Checking if the 'ejabberd' docker container already exists...
+docker container logs ejabberd
+if %ERRORLEVEL% EQU 0 (
+ echo.
+ echo === The 'ejabberd' docker container already exists.
+ echo === Nothing to do, so installation finishes now.
+ echo === You can go to Docker Desktop and start the 'ejabberd' container.
+ echo.
+ pause
+ exit 1
+) else (
+ echo === The 'ejabberd' docker container doesn't yet exist,
+ echo === so let's continue the installation process.
+)
+
+echo.
+if exist %INSTALL_DIR% (
+ echo === The INSTALL_DIR %INSTALL_DIR% already exists.
+ echo === No need to create the preliminary 'ejabberd-pre' image.
+) else (
+ echo === The INSTALL_DIR %INSTALL_DIR% doesn't exist.
+ echo === Let's create the preliminary 'ejabberd-pre' image.
+ CALL :create-ejabberd-pre
+)
+
+::===============================================================
+:: Create final container
+::
+::===============================================================
+
+echo.
+echo === Creating the final 'ejabberd' docker container using %IMAGE% image...
+
+setlocal EnableDelayedExpansion
+set PS=
+for %%a in (%PORTS%) do (
+ set PS=!PS! -p %%a:%%a
+)
+
+docker create --name ejabberd --hostname localhost %PS% %VOLUMES% %IMAGE%
+
+echo.
+echo === Installation completed.
+echo.
+pause
+
+EXIT /B %ERRORLEVEL%
+
+::===============================================================
+:: Function to create preliminary container
+::
+::===============================================================
+
+:create-ejabberd-pre
+
+echo.
+echo === Creating a preliminary 'ejabberd-pre' docker image using %IMAGE% image...
+docker create --name ejabberd-pre --hostname localhost %IMAGE%
+
+echo.
+echo === Now 'ejabberd-pre' will be started.
+docker container start ejabberd-pre
+
+echo.
+echo === Waiting ejabberd to be running...
+set /A timeout = 10
+set status=4
+goto :while
+
+:statusstart
+docker exec -it ejabberd-pre bin/ejabberdctl status
+goto :statusend
+
+:while
+if %status% GTR 0 (
+ echo.
+ timeout /t 1 /nobreak >NUL
+ set /A timeout = timeout - 1
+ if %timeout% EQU 0 (
+ set status=-1
+ ) else (
+ goto :statusstart
+ :statusend
+ set status=%ERRORLEVEL%
+ )
+ goto :while
+)
+
+echo.
+echo === Setting a few options...
+docker exec -it ejabberd-pre sed -i "s!- localhost!- %HOST%!g" conf/ejabberd.yml
+docker exec -it ejabberd-pre sed -i "s!admin@localhost!%USER%@%HOST%!g" conf/ejabberd.yml
+docker exec -it ejabberd-pre sed -i "s!5280!5180!g" conf/ejabberd.yml
+docker exec -it ejabberd-pre sed -i "s!\"/admin\"!/!g" conf/ejabberd.yml
+docker exec -it ejabberd-pre bin/ejabberdctl reload_config
+
+echo.
+echo === Registering the administrator account...
+docker exec -it ejabberd-pre bin/ejabberdctl register %USER% %HOST% %PASSWORD%
+docker exec -it ejabberd-pre bin/ejabberdctl stop
+
+echo.
+echo === Copying conf, database, logs...
+mkdir %INSTALL_DIR%
+mkdir %INSTALL_DIR%\conf
+mkdir %INSTALL_DIR%\database
+mkdir %INSTALL_DIR%\logs
+mkdir %INSTALL_DIR%\ejabberd-modules
+docker cp ejabberd-pre:/home/ejabberd/conf/ %INSTALL_DIR%
+docker cp ejabberd-pre:/home/ejabberd/database/ %INSTALL_DIR%
+docker cp ejabberd-pre:/home/ejabberd/logs/ %INSTALL_DIR%
+
+echo.
+echo === Deleting the preliminary 'ejabberd-pre' docker image...
+docker stop ejabberd-pre
+docker rm ejabberd-pre
+
+EXIT /B 0