This is the multi-page printable view of this section. Click here to print.
Установка
- 1: Docker
- 2: Kubernetes
1 - Docker
Прежде чем начать, убедитесь, что на вашем сервере запущен демон синхронизации времени (NTP)
Описание
SHM разработан и адаптирован для работы в контейнерах (Docker).
Плюсы:
- Простота. SHM очень просто запустить и крайне легко обновлять.
- Безопасность. Контейнеризация позволяет изолировать SHM от вашей системы. Код SHM никак не может сломать/испортить вашу основную систему, так как не имеет доступа к ней (работает в контейнере).
- Надежность. Вы можете спокойно обновлять вашу систему и библиотеки в ней. Это не затронет работу SHM, так как SHM использует свои собственные библиотеки в контейнере.
- Совместимость. На вашем сервере дополнительно могут быть установлены любые другие программы, что никак не помешает и не повлияет на работу SHM.
- Кросплатформенность. SHM работает на любой ОС семейства Linux, где установлен Docker (amd64). Так же можно собать под Mac, включая arm64. Можно запустить Docker и в Windows.
- Ресурсы. Docker позволяет ограничивать потребляемые ресурсы контейнеров.
- Переносимость. SHM легко перенести на другой сервер. Достаточно только сделать backup базы данных и импортировать его на новом сервере.
- Kubernetes. SHM прекрасно работает в k8s, что позволяет использовать его в промышленных масштабах.
- Современность. В наши дни почти весь серверный софт запускают в контейнерах, по выше описанным причинам.
Минусы:
- Необходимо установить Docker на ваш сервер.
Установите базовые пакеты:
apt update
apt install curl nginx certbot python3-certbot-nginx
Установите docker:
curl -sL https://get.docker.com | bash
Настройка и запуск SHM:
Создайте рабочую директорию SHM на сервере и перейдите в нее:
mkdir -p /opt/shm/ && cd /opt/shm
Скачайте файлы docker-compose.yml
и .env
curl -sO https://raw.githubusercontent.com/danuk/shm/master/docker-compose.yml
curl -sO https://raw.githubusercontent.com/danuk/shm/master/.env
при желании вы можете изменить пароли для БД в файле
.env
Так же Вы можете указать в файле .env
временную зону в которой будет работать SHM. В дальнейшем эту зону менять нельзя!
Запустите SHM:
docker compose up -d
SHM будет доступен по адресу:
http://АДРЕС_СЕРВЕРА:8081
Логин: admin
Пароль: admin
Web сервер и доменные имена
Чтобы открыть SHM внешнему миру установите Nginx на ваш сервер, и настройте как написано ниже.
Настройте DNS вашего домена:
admin IN A ПУБЛИЧНЫЙ_IP_ВАШЕГО_СЕРВЕРА
bill IN A ПУБЛИЧНЫЙ_IP_ВАШЕГО_СЕРВЕРА
Настройка nginx
Создайте файл /etc/nginx/sites-available/admin.conf
на сервере:
(Замените $DOMAIN
на ваш реальный домен)
server {
listen 80;
server_name admin.$DOMAIN;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Создайте файл /etc/nginx/sites-available/bill.conf
на сервере:
(Замените $DOMAIN
на ваш реальный домен)
server {
listen 80;
server_name bill.$DOMAIN;
location / {
proxy_pass http://127.0.0.1:8082;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Включите ваши сайты:
ln -s /etc/nginx/sites-available/admin.conf /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/bill.conf /etc/nginx/sites-enabled/
service nginx reload
Добавление SSL сертификата (https)
Создайте сертификаты для ваших доменов:
certbot --nginx -d admin.$DOMAIN
certbot --nginx -d bill.$DOMAIN
Проверьте, что всё работает:
https://admin.$DOMAIN
Логин: admin
Пароль: admin
Настройка SHM
В Административном интерфейсе необходимо прописать актуальные настройки.
- Зайдите в интерфейс администратора:
https://admin.$DOMAIN
- Перейдите в раздел: “Настройки” -> “Конфигурация” и выполните соответствующие настройки, например:
- В настройке
api
укажите реальный адрес, например:https://admin.$DOMAIN
- В настройке
cli
укажите реальный адрес, например:https://bill.$DOMAIN
- В настройке
mail
укажите ваш реальный обратный адресfrom
2 - Kubernetes
Описание
SHM разработан и адаптирован для работы в Kubernetes.
Настройка и запуск SHM:
- Добавьте репозиторий:
helm repo add danuk https://danuk.github.io/shm
- Установите SHM:
helm install my-shm danuk/shm --set 'global.shm.domain=$DOMAIN'
Возможен автоматический выпуск SSL сертификатов для доменов, если в кластере Kubernetes установлен и настроен cert-manager
Основные параметры:
global.shm.domain
- доменное имяglobal.shm.version
- версия SHM. По-умолчанию установленlatest
global.shm.db_user
- Пользователь БДglobal.shm.db_pass
- Пароль БДglobal.shm.db_root_pass
- Пароль пользователя root БДglobal.shm.db_name
- Имя БДmysql.primary.persistence.size
- Размер диска для БД (по-умолчанию 1Gi)helm-common.ingress.admin.acme
- укажите 1 или true для выпуска SSL сертификата для админкиhelm-common.ingress.client.acme
- укажите 1 или true для выпуска SSL сертификата для клиентского кабинета
Полные настройки доступны в файле helm чарта: values.yaml
Настройка SHM
В Административном интерфейсе необходимо прописать актуальные настройки.
- Зайдите в интерфейс администратора:
https://admin.$DOMAIN
(admin:admin) - Перейдите в раздел: “Настройки” -> “Конфигурация” и выполните соответствующие настройки, например:
- В настройке
api
укажите реальный адрес, например:https://admin.$DOMAIN
- В настройке
cli
укажите реальный адрес, например:https://bill.$DOMAIN
- В настройке
mail
укажите ваш реальный обратный адресfrom
- В настройке
company
укажите реальное название компании в полеname