Установка с помощью docker
Быстрая установка
Заголовок раздела «Быстрая установка»Краткий план:
Заголовок раздела «Краткий план:»- Качаем архив с конфигом
- Распаковываем
- Настраиваем
- Запускаем проект в Docker
- Открываем admin.localhost
- Добавляем первого администратора
- Добавляем домен
admin.localhost - Логинимся на admin.localhost под администратором.
Это комманды, которые можно выполнить в консоли:
cdmkdir yvix-project && cd yvix-projectwget https://yvix.ru/install/example-conf.tar.gztar -xvzf example-conf.tar.gzdocker compose up -d --pull=alwaysТеперь попробуем открыть admin.localhost.
Если увидели приглашение ввести логин и пароль:
то всё хорошо.
Запустим миграции, создадим домен в бд и первого администратора.
docker compose exec -it yvix_app ./manage.py migratedocker compose exec -it yvix_app ./manage.py manage_sites add -d admin.localhost -n "Админка"docker compose exec -it yvix_app ./manage.py createsuperuserВ конце будет задан вопрос о телефоне, имени пользователя и пароле. Телефон можно вымышленный, не проверяется. Примерно такой диалог:
... Applying tasks.0005_auto_20210420_0017... OK Applying tasks.0006_auto_20210721_2238... OK Applying tasks.0007_auto_20220316_1314... OK Applying tasks.0008_remove_task_mode... OK Applying tasks.0009_new_perms... OK Domain "admin.localhost"[Админка] created OK Имя пользователя: admin Telephone: +79781234567 Password: Password (again): Superuser created successfully.
И всё. Можете входить на admin.localhost по логину и паролю который вписали на предыдущем шаге и рассматривать админку.
Разбираем установку подробно
Заголовок раздела «Разбираем установку подробно»Понадобится сервер с любым дистрибутивом Gnu/Linux, на который можно завести Docker. Поддерживаемые дистрибутивы на официальном сайте.
На сервере должен быть установлен Docker и расширение compose к нему, будем устанавливать на compose. По аналогии можно развернуть и в другие системы управления docker контейнерами.
Мы установим на Debian. Инструкция по установке docker на debian тут.
Останавливаться на установке самого Debian не будем, это отдельная тема. Предположим что сервер, или другой компьютер с ним в вашем распоряжении. Давайте установим Yvix на этот компьютер.
Перейдём в домашнюю папку, создадим папку для yvix, создадим файлы и папки конфигураций.
$ cd$ mkdir -p yvix_project$ cd yvix_projectБудем разбирать что произошло в быстрой установке. У нас в директории проекта есть файлы:
docker-compose.yml- .env
- .env_front
- .env_pay
- .env_rad
И папки nginx и secrets.
Секреты
Заголовок раздела «Секреты»Секреты надо изменить, чтоб они действительно стали секретами.
Удалим всю папку secrets, и сгеренируем новые скриптом generate_secrets.sh из архива быстрой установки.
Описание секретов:
POSTGRES_PASSWORD: Пароль для PostgreSQLDJANGO_SECRET_KEY: Криптографическая защита DjangoAPI_AUTH_SECRET: секрет для авторизации скриптов.FIELD_ENCRYPTION_KEY: Соль для хеширования паролей.VAPID_PRIVATE_KEY&VAPID_PUBLIC_KEY: Ключи web push уведомлений.RADIUS_SECRET: Секрет дляCOA. Будет использован для обращений наJuniper MXв приложенииyvix_radius_gw.
Настройки, переменные окружения
Заголовок раздела «Настройки, переменные окружения»Настройки для контейнеров лежат в файлах переменных окружения. Их несколько:
Этот файл используется основным процессом yvix, базой данных, и сервером приложений.
#APP_DEBUG=yALLOWED_HOSTS=admin.localhostDEFAULT_LANG=ruDEFAULT_EMAIL=admin@example.comPOSTGRES_DB=yvixdbPOSTGRES_USER=yvixusrPOSTGRES_HOST=pgbouncerPOSTGRES_PORT=6432API_AUTH_SUBNET="127.0.0.0/8|172.17.0.0/16|10.0.0.0/8"CUSTOMERS_PASSPORT_DEFAULT_DISTRIBUTOR="Example"
DOMAINS=admin.localhost,pa.localhostEMAIL4LETSENCRYPT=admin@localhostDEBUG=1STAGING=1
ADMIN_DOMAIN=admin.localhostPA_DOMAIN=pa.localhostСтроки, начинающиеся с # игнорируются, это комментарии. Описание всех переменных можно почитатть в разделе о переменных окружения.
.env_pay
Заголовок раздела «.env_pay»Этот файл используется процессом платёжного шлюза yvix_payment_gate, принимает оплаты от банков и платёжных систем.
ALLOWED_HOSTS=*POSTGRES_DB=yvixdbPOSTGRES_USER=yvixusrPG_DB_HOST=pgbouncerPG_DB_PORT=6432REDIS_HOST=djing2redis.env_rad
Заголовок раздела «.env_rad»Этот файл используется процессом radius сервера yvix_radius_gw, обслуживает BRAS и DHCP серверы.
RADIUS_APP_HOST=localhostREDIS_HOST=djing2redisPOSTGRES_DB=yvixdbPOSTGRES_USER=yvixusrPG_DB_HOST=pgbouncerPG_DB_PORT=6432Создание первого администратора
Заголовок раздела «Создание первого администратора»В быстрой установке мы создали администратора, от которого уже можно создавать других администраторов, абонентов, и всё остальное. там была комманда:
$ docker compose exec -it yvix_app ./manage.py createsuperuserНужно быть в папке с файлом
docker-compose.yml.
Комманда запросит имя пользователя, номер телефона, и два раза пароль для нового администратора.
Например, это может выглядеть так:
... Applying tasks.0005_auto_20210420_0017... OK Applying tasks.0006_auto_20210721_2238... OK Applying tasks.0007_auto_20220316_1314... OK Applying tasks.0008_remove_task_mode... OK Applying tasks.0009_new_perms... OK Domain "admin.localhost"[Админка] created OK Имя пользователя: admin Telephone: +79781234567 Password: Password (again): Superuser created successfully.
Если вывод примерно такой, то администратор с правами суперпользователя успешно создан. И вы можете логиниться. Если в .env файле в переменной ADMIN_DOMAIN вы поставили, например yourdomain.loc, то для входа в админку перейтите по адресу http://yourdomain.loc/. И входите под вашим новым администратором.
Создание домена для модуля “сайты”
Заголовок раздела «Создание домена для модуля “сайты”»Вы не сможете зайти в админку, если в бд нет домена под которым вы пытаетесь залогиниться. Для того чтобы создать ваш домен, например admin.yourdomain.loc воспользуйтесь коммандой:
$ docker compose exec -it yvix_app ./manage.py manage_sites add -d admin.yourdomain.loc -n "Домен админки"То же самое и для домена личного кабинета абонентов.
$ docker compose exec -it yvix_app ./manage.py manage_sites add -d pa.yourdomain.loc -n "Домен личного кабинета"Позже вы сможете, например, создать несколько доменов для админки, и управлять доступностью различных объектов по этим доменам. Пользователь который создал объект с определённого домена, автоматически назначает его доступным с этого домена. Т.е. другие сотрудники, которые заходят с этого же домена, увидят этот объект, а те кто зайдёт с другого уже не увидят. Исключение составляют супер администраторы, они видят все объекты.