Установка SAP на домашнем компьютере с использованием Docker

Приветствую всех любителей SAP’а!
10 мая 2022 году мною была написана инструкция по установке SAP на домашнем компьютере. Инструкция получилась весьма объемной и тяжелой для повторения. На текущий день есть куда более быстрый, легкий и удобный способ развернуть у себя дома инстанцию SAP сервера — воспользоваться Docker образом SAP!
Установка сервера для SAP — Ubuntu Server
Разворачивать SAP мы будем на домашней машине. У многих на домашнем компьютере стоит Windows, поэтому процесс начнем с установки виртуальной машины, на которую в последствии установим Ubuntu Server.
Для развертывания виртуальной машины нам понадобиться VirtualBox — https://www.virtualbox.org/wiki/Downloads. Скачиваем актуальную версию и устанавливаем.
Скачиваем актуальный образ Ubuntu Server — https://ubuntu.com/download/server.

Запускаем VirtualBox и начинаем процесс создания виртуальной машины.
Назовем виртуальную машину SAP_DOCKER_NICKCODE. Выбираем путь до скачанного образа Ubuntu Server.
Так же выберем тип Linux, подтип Ubuntu и версию Ubuntu 24.04 LTS (Noble Numbat) (64-bit). Ставим галочку Skip Unattended Installation.

Выделяем виртуальной машине 32 GB оперативной памяти (ребята из SAP рекомендуют выделять не менее 16 GB для Docker контейнера, иначе контейнер может просто не запуститься) и 4 ядра процессора:

Создаем виртуальный диск. Динамическое выделение памяти. Выбираем место на диске, где VirtualBox будет размещать данные виртуальной машины.
Выделяем 250 GB места на диске (рекомендуется не менее 150 GB):

Готово, виртуальная машина создана:

Запускаем виртуальную машину:

Начинается загрузка процесса инсталляции Ubuntu Server:

Выбираем первый пункт — установка Ubuntu Server.
На следующем экране выбираем английский язык:

Можем обновить инсталлёр, а можем и пропустить:

Английская раскладка клавиатуры:

Выбираем стандартную установку Ubuntu Server:

Должен автоматически выбраться сетевой адаптер:

Прокси оставляем пустым:

Происходит тест репозитория:

Соглашаемся с выбранным диском:

На следующем шаге убедимся, что ubuntu-lv занимает весь доступный объем места на диске, иначе отредактируем соответствующим образом:


Далее заполним данные авторизации:

Пропускаем обновление до Ubuntu Pro (расширенное обслуживание безопасности):

Отметим, что нам надо установить OpenSSH server:

Далее нам предложат выбрать популярные снимки для Ubuntu Server, не выбираем ничего, пропускаем:

Начнется установка Ubuntu Server, спустя короткий промежуток времени должны увидеть Installation complete!:

Ubuntu установлен, выбираем перезагрузку — Reboot Now.
Настройка сервера для SAP
В процессе установки мы выбрали опцию — установить OpenSSH сервер для более комфортной работы с сервером. Для доступа к виртуальной машине по SSH нам необходимо пробросить соответствующий порт в VirtualBox.
Авторизуемся в виртуальной машине через VirtualBox и смотрим ip адрес машины при помощи команды
ip a

Идем в настройки виртуальной машины в VirtualBox, в раздел Network -> Port Forwarding:

Создаем правило проброса для 22 (SSH) порта:
127.0.0.1:22 - 10.0.2.15:22

Так же сразу пробросим порты, необходимые для работы SAP:
- 3200: SAPGUI Instance 00
- 3300: RFC Instance 00
- 8443: SAP Cloud Connector
- 30213: SAP HANA MDC Database
- 50000: AS ABAP HTTP
- 50001: AS ABAP HTTPS
- 8000: Internet Communication Manager (ICM) HTTP
- 44300: HTTPS
В итоге список пробрасываемых портов должен выглядеть так:

Сохраняем.
Сгенерируем SSH ключи
Откроем любую консоль, я воспользуюсь стандартной командной строкой Windows, и вводим команду для подключения к виртуальной машине по SSH:
ssh nick@localhost
Авторизуемся на виртуальной машине по паролю.
На вашей домашней (не виртуальной) машине откроем еще одну консоль и сгенерируем пару ssh ключей, чтобы было удобнее подключаться по SSH:
ssh-keygen
После выполнения команды вы увидите следующий запрос:
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):
Введем имя для ключа:
.ssh/nickcode
Далее вы увидите:
Enter passphrase (empty for no passphrase):
Нам предложат ввести парольную фразу для более высокого уровня безопасности. Если мы её введем, то при попытки авторизации с использованием данного ключа система будет запрашивать эту парольную фразу. Так как мы разворачиваем SAP сервер у себя дома, то для удобства оставим это поле пустым.

В указанной папке (C:\Users\Nick\.ssh) должно появится два файла:
- nickcode — приватный ключ.
- nickcode.pub — публичный ключ.
Откроем консоль с доступом к вашему виртуальному серверу и создадим папку .ssh (хотя она уже должна быть создана):
mkdir -p ~/.ssh
Откроем публичный ключ в блокноте, скопируем содержимое и выполним команду:
echo "public_key" >> ~/.ssh/authorized_keys
где public_key — содержимое публичного ключа из файла nickcode.pub.
Должно получиться как-то так:
echo "ssh-rsa AAAAB3NzaC1yc2…" >> ~/.ssh/authorized_keys
Откроем файл конфигурации демона SSH:
sudo nano /etc/ssh/sshd_config
Найдем в нем директиву PasswordAuthentication, раскомментируем данную строку и установим значение «no«. Так же найдем директиву PubkeyAuthentication, раскомментируем и установим значение «yes«:

Сохраним файл.
Откроем файл конфигурации /etc/ssh/sshd_config.d/50-cloud-init.conf:
sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf
Директиве PasswordAuthentication установим значение «no»:

Сохраним файл и перезагрузим сервис sshd:
sudo systemctl restart ssh
Проверим корректность всех наших настроек. Откроем консоль и попробуем войти на сервер используя одну лишь команду.
Если вы используете PowerShell, то команда будет выглядеть так:
ssh -i $env:USERPROFILE\.ssh\nickcode nick@localhost
, где $env:USERPROFILE\.ssh\nickcode — это путь до приватного ssh ключа.

Для CMD:
ssh -i %USERPROFILE%\.ssh\nickcode nick@localhost

Авторизация должна осуществиться без каких-либо паролей.
Установим Docker
Для установки Docker воспользуемся инструкцией https://docs.docker.com/engine/install/ubuntu/ .
Способов установки несколько, но, пожалуй, один из самых удобных — универсальный скрипт установки Docker:
curl https://get.docker.com| sudo bash

После выполнения скрипта запустим две команды:
sudo usermod -aG docker $USER
newgrp docker
И проверим корректность установки Docker:
docker run hello-world

“Hello from Docker!” – Docker установлен успешно!
Внесем изменения в файл hosts
Контейнер SAP считает, что имя хоста vhcala4hci. При попытке открыть какой-либо веб интерфейс SAP будет пытаться открыть хост vhcala4hci:

По такой ссылке на личной машине мы ничего не сможем открыть, нам надо сделать связь имени vhcala4hci и нашего компьютера (127.0.0.1).
Откроем блокнот от имени Администратора:

Откроем файл C:\Windows\System32\drivers\etc\hosts:

Добавим в конец файла на новой строчке строку:
127.0.0.1 vhcala4hci
Сохраняем файл hosts.
Установка SAP на виртуальной машине при помощи Docker
Скачаем Docker образ Sap’а. Для этого перейдем на Docker Hub sapse, скопируем и выполним команду для скачивания образа:


После скачивания проверим текущие закачанные образы:
docker images

Где первым в списке значится скачанный образ SAP.
Осталось только запустить контейнер:
docker run --stop-timeout 3600 -i --name a4h -h vhcala4hci -p 3200:3200 -p 3300:3300 -p 8443:8443 -p 30213:30213 -p 50000:50000 -p 50001:50001 sapse/abap-cloud-developer-trial:ABAPTRIAL_2022_SP01 -skip-limits-check

Начнется процесс разворачивания docker контейнера с SAP’ом. Спустя минут 10-15 получаем сообщение об успешном старте всех сервисов:

После того, как была выполнена данная команда, был создан контейнер с именем a4h. Для повторного запуска контейнера с SAP’ом можно использовать команду:
docker start -ai a4h
Для остановки контейнера:
docker stop -t 7200 a4h
Откроем SAP Logon и настроим новое подключение:
- Описание — Nickcode SAP Docker A4H
- Сервер приложений — 127.0.0.1
- Номер инстанции — 00 (если прокинуть порт контейнера 3200 как порт 3201 (-p 3201:3200), то вы сможете подключиться к SAPGUI с номером инстанции 01 вместо стандартного 00)
- ИдСистемы — A4H

Подключаемся.

В нашем распоряжении есть 3 пользователя:
- Системный пользователь SAP*. Client — 000. SAP* — пользователь, используемый в основном для задач системного администрирования. Он существует во всех клиентах SAP по умолчанию. Имеет неограниченные права доступа к системе.
- Системный пользователь DDIC. Client — 000. DDIC — это пользователь необходимый для установки системы, обновлений и административных задач, связанных со словарем данных SAP. Он также участвует в управлении такими объектами, как таблицы, представления и структуры данных. DDIC — единственный пользователь, которому разрешено входить в систему SAP во время обновления.
- Пользователь DEVELOPER — пользователь для разработки. Client — 001.
Входим под системным пользователем SAP*.
Client: 000.
Пароль (для версии ABAP Cloud Developer Trial 2022, SP01) для всех пользователей — ABAPtr2022#01.
Получение SAP лицензии
- Запустим транзакцию SLICENSE:

Скопируем свой Hardware Key.
2. Перейдем по ссылке https://go.support.sap.com/minisap/#/minisap.
Выбираем A4H — SAP NetWeaver AS ABAP 7.4 and above (Linux / SAP HANA).

Ниже на странице заполним Personal Data:

Соглашаемся с правилами и жмем на Generate:

Будет предложено скачать файл A4H_Multiple.txt:

3. Вернемся в транзакцию SLICENSE и установим новую лицензию:

2 новые лицензии SAP успешно установлены:


Удалить старые лицензии возможно под пользователем DEVELOPER (001).
Готово, рабочая инстанция SAP поднята и готова к работе!
Проверим доступ к какому-нибудь веб интерфейсу. Для этого зайдем в систему под пользователем DEVELOPER (001).
Откроем транзакцию SE93, где выполним транзакцию /UI2/FLP:


Вводим логин и пароль.
Попадаем в SAP Fiori Launchpad:

Нам удалось установить SAP сервер на персональный компьютер буквально двумя командами — скачивание образа и запуск контейнера. Большая часть данной статьи — это подготовка к установке, нежели чем сама установка :).
О дополнительных возможностях читайте на официальной странице SAP в Docker hub — https://hub.docker.com/r/sapse/abap-cloud-developer-trial.
*** Have fun! ***