Перейти к содержимому

Установка с помощью docker

  • Качаем архив с конфигом
  • Распаковываем
  • Настраиваем
  • Запускаем проект в Docker
  • Открываем admin.localhost
  • Добавляем первого администратора
  • Добавляем домен admin.localhost
  • Логинимся на admin.localhost под администратором.

Это комманды, которые можно выполнить в консоли:

Окно терминала
cd
mkdir yvix-project && cd yvix-project
wget https://yvix.ru/install/example-conf.tar.gz
tar -xvzf example-conf.tar.gz
docker compose up -d --pull=always

Теперь попробуем открыть admin.localhost. Если увидели приглашение ввести логин и пароль: login form то всё хорошо. Запустим миграции, создадим домен в бд и первого администратора.

Окно терминала
docker compose exec -it yvix_app ./manage.py migrate
docker 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: Пароль для PostgreSQL
  • DJANGO_SECRET_KEY: Криптографическая защита Django
  • API_AUTH_SECRET: секрет для авторизации скриптов.
  • FIELD_ENCRYPTION_KEY: Соль для хеширования паролей.
  • VAPID_PRIVATE_KEY & VAPID_PUBLIC_KEY: Ключи web push уведомлений.
  • RADIUS_SECRET: Секрет для COA. Будет использован для обращений на Juniper MX в приложении yvix_radius_gw.

Настройки для контейнеров лежат в файлах переменных окружения. Их несколько:

Этот файл используется основным процессом yvix, базой данных, и сервером приложений.

#APP_DEBUG=y
ALLOWED_HOSTS=admin.localhost
DEFAULT_LANG=ru
DEFAULT_EMAIL=admin@example.com
POSTGRES_DB=yvixdb
POSTGRES_USER=yvixusr
POSTGRES_HOST=pgbouncer
POSTGRES_PORT=6432
API_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.localhost
EMAIL4LETSENCRYPT=admin@localhost
DEBUG=1
STAGING=1
ADMIN_DOMAIN=admin.localhost
PA_DOMAIN=pa.localhost

Строки, начинающиеся с # игнорируются, это комментарии. Описание всех переменных можно почитатть в разделе о переменных окружения.

Этот файл используется процессом платёжного шлюза yvix_payment_gate, принимает оплаты от банков и платёжных систем.

ALLOWED_HOSTS=*
POSTGRES_DB=yvixdb
POSTGRES_USER=yvixusr
PG_DB_HOST=pgbouncer
PG_DB_PORT=6432
REDIS_HOST=djing2redis

Этот файл используется процессом radius сервера yvix_radius_gw, обслуживает BRAS и DHCP серверы.

RADIUS_APP_HOST=localhost
REDIS_HOST=djing2redis
POSTGRES_DB=yvixdb
POSTGRES_USER=yvixusr
PG_DB_HOST=pgbouncer
PG_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 "Домен личного кабинета"

Позже вы сможете, например, создать несколько доменов для админки, и управлять доступностью различных объектов по этим доменам. Пользователь который создал объект с определённого домена, автоматически назначает его доступным с этого домена. Т.е. другие сотрудники, которые заходят с этого же домена, увидят этот объект, а те кто зайдёт с другого уже не увидят. Исключение составляют супер администраторы, они видят все объекты.