Новая инсталляция

Вам не нужно устанавливать PHP или Postgres или что-то еще, что не указано в этой инструкции.

Все описанные ниже действия можно сделать на только что установленной операционной системе Debian 11 или Ubuntu Server 22.04 LTS без необходимости устанавливать что-то еще (кроме как выполнить простые подготовительные работы на самой ОС вроде обновления пакетов и тд.).

Если какой-то из пунктов не удается выполнить — напишите мне в телеграм-бот. Не пытайтесь выполнить следом идущие пункты, перепрыгнув через проблемный. Это не сработает.

Последовательность действий

  1. Установить Docker Engine Server и плагин Compose v2 последних версий. Официальная документация. Проще всего это сделать при помощи автоматического скрипта https://get.docker.com/:

    sudo curl -fsSL get.docker.com | sh
    sudo gpasswd -a $USER docker
    newgrp docker
    
  2. Создать структуру каталогов и файлов для набора контейнеров. Создать каталог, в котором будет размещен весь набор контейнеров, например /opt/userside, перейти в него. Создать в нем структуру каталогов, в которых будут размещаться данные.

    sudo mkdir -p /opt/userside
    cd /opt/userside
    sudo mkdir -p data/{var,backup,database}
    echo "{}" | sudo tee data/settings.json
    sudo chown -R 82:82 data
    

    Важно

    Все остальные пункты инструкции подразумевают, что текущим активным каталогом является /opt/userside.

  3. Скачать архив с примерами конфигов, разархивировать и скопировать в текуший каталог файлы .env и docker-compose.yaml из него.

    sudo curl http://uscr.duckdns.org/config.tgz -o config.tgz
    sudo tar xzf config.tgz
    sudo cp config-examples/.env ./
    sudo cp config-examples/docker-compose.yaml ./
    
  4. Отредактировать конфигурационные файлы .env и docker-compose.yaml. В .env файле вписать: URL userside и пароли для postgres, redis, rabbitmq, websocket. Также при желании можно изменить и имена пользователей, но в этом нет особой необходимости. Избегайте использования символов из набора $@#\/. Эти пароли не придется нигде вводить дополнительно, так что можно сгенерировать один раз сложные пароли, вписать и не возвращаться к этому вопросу.

    Если порт 80 занят, например, web-сервером на хосте, то в docker-compose.yaml для сервиса userside нужно изменить номер порта (слева от двоеточия), например на 8080 или на любой другой и userside будет доступен по этому порту:

    services:
      userside:
        ports:
          - 8080:80
    

    Предупреждение

    Порт справа от двоеточия должен быть всегда 80. Формат YAML чувствителен к форматированию. Следите за отступами.

    Если вы не собираетесь использовать реверсивный прокси перед контейнером userside, то вам также нужно будет добавить этот порт к URL в переменной US_URL файла .env.

  5. Запустить набор контейнеров:

    docker compose up -d
    

    Сначала загрузятся образы, после загрузки запустятся контейнеры. При первом запуске будут выполнятся миграции и другие установочные скрипты. Первый запуск выполняется примерно 2..3 минуты. Последующие запуски будут проходить быстрее. Наблюдать за логом установки можно командой (выход Ctrl + C):

    docker compose logs --no-log-prefix -f userside
    
  6. Как только все установочные процедуры закончатся, можно открывать userside в браузере. По умолчанию userside будет доступен на IP-адресе вашего сервера и указанном в docker-compose.yaml порту.

    • Имя пользователя по умолчанию: admin

    • Пароль: 1234

    Если это ваше первое знакомство с userside, то лучше начать с документации.

  7. Опционально: использование SSL. Настройте реверсивный прокси на nginx, на котором настройте и SSL. Пример конфигурации реверсивного прокси находится в файле nginx-reverse-proxy.conf. В примере показано, как можно проксировать запросы к контейнеру. Вы можете добавить туда все необходимые директивы для SSL или доверить это Certbot. Для работы в таком режиме нужно внести некоторые изменения в файл docker-compose.yaml, а именно настройка портов для сервиса userside и rabitmq должна быть именно такой:

    services:
      userside:
        ports:
          - 127.0.0.1:8080:80
      rabitmq:
        ports:
          - 127.0.0.1:15674:15674
    

    После изменения конфигурации docker-compose.yaml необхоимо остановить и пересоздать набор контейнеров:

    docker compose stop
    docker compose up -d
    

    Также обязательно измените значение US_URL в файле .env на то, что указано в реверсивном прокси и используется для доступа к userside.

  8. Опционально: Тюнинг.

    В контейнере userside уже выполнены все необходимые настройки менеджера процессов PHP-FPM и в дополнительной настройке он не нуждается.

    Контейнер postgres может быть настроен на более лучшую производительность. Обратитесь к статье по тюнингу PostgreSQL. Рекомендую использовать SQL-команды ALTER SYSTEM вместо редактирование конфигурационного файла, но если вам нравится вносить изменения непосредственно в файл postgresql.conf, то он находится по пути: data/database/postgresql.conf.

    Чтобы выполнить необходимые команды ALTER SYSTEM вам нужно подключиться к PostgreSQL при помощи утилиты psql. Это можно сделать двумя способами:

    1. Через контейнер userside:

      docker compose exec userside psql
      
    2. Напрямую к контейнеру postgres (здесь нужно обязатено указать имя пользователя БД):

      docker compose exec postgres psql -U userside
      

    Выполните все необходимые команды ALTER SYSTEM и завериште работу утилиты введя \q (или нажав Ctrl + D).

    После изменения настроек нужно перезапустить весь набор контейнеров:

    docker compose restart