Вы всё ещё устанавливаете ПО на Linux сервере вручную? Тогда эта статья для вас.

Идея, которой я здесь поделюсь, не имеет отношения к Jenkins и подобным системам. Целевая аудитория: обычный пользователь, не программист или системный администратор.

У идеи уже есть реализация, но главная ценность - именно идея.

Как было раньше

До появления современных ИИ обычно человеку, которому нужно было установить какое-то ПО на сервере, приходилось читать документацию по установке этого ПО. Хорошо, если разработчик сделал bash скрипт, но всё равно было много ручной работы:

  • Установка веб-сервера и сервера базы данных.

  • Создание базы данных с пользователем;

  • Установка GUI для этой базы данных (PHPMyAdmin или подобных);

  • Создание конфигурации для веб-сервера;

  • Создание SSL сертификата;

  • и т.д.

Как теперь

Но теперь у нас есть ИИ.

https://github.com/andchir/install_scripts - Весь код в этом репозитории написал ИИ (я был в роли архитектора). Это набор bash-скриптов для установки различного ПО на Ubuntu сервере. Эти скрипты можно запускать вручную на сервере, а можно даже не заходить на сервер и использовать API или готовое GUI. Для ИИ написан список требований, которым должны удовлетворять скрипты:

Список требований для bash скриптов
  • Bash-скрипт должен быть адаптирован под Ubuntu 24.04.

  • Bash-скрипт должен автоматически создавать пользователя installer_user и выполнять действия от его имени.

  • Скрипт должен устанавливать и настраивать все необходимые компоненты, включая веб-сервер (если требуется).

  • Имя домена или другие необходимые данные должны задаваться через аргументы при запуске скрипта.

  • Скрипт должен создавать SSL-сертификат для домена через certbot.

  • Не должно быть никаких дополнительных вопросов и подтверждений.

  • При необходимости скрипт должен клонировать Git-репозиторий, а если он уже существует в домашней директории, выполнить обновление (pull).

  • Перед выполнением pull необходимо всегда выполнять git checkout . для отмены локальных изменений.

  • Скрипт должен поддерживать идемпотентность.

  • Все действия должны включать проверку существования ресурсов. Например, при создании базы данных необходимо проверить, существует ли она, и если существует, пропустить этот шаг. Скрипт может быть запущен несколько раз: при повторном запуске должен обновляться код, но не базу данных и другие уже созданные ресурсы.

  • Если systemd-сервис уже существует, необходимо выполнить для него команду restart.

  • Если используется Python и директория виртуального окружения уже существует, не следует создавать новую, достаточно обновить зависимости в существующем виртуальном окружении.

  • При необходимости создания базы данных для конкретного ПО никогда не следует использовать root-пароль и root-пользователя. Необходимо создать нового пользователя с новым паролем и правами доступа только к одной базе данных.

  • В конфигурации Nginx необходимо всегда указывать создание отдельных лог-файлов для домена.

  • Если SSL-сертификат уже создан, не следует его пересоздавать и обновлять конфигурацию Nginx.

  • Все пароли, которые создаёт скрипт, должны быть безопасными и записываться в отчёт.

  • Информация при установке должна быть красиво оформлена с использованием цветов для текста.

Благодаря этим требованиям, скрипты полностью автономны (автоматизировано даже создание безопасных паролей) и их можно запускать повторно (идемпотентность).

Теперь, если вам нужно установить какое-то ПО на сервере (читайте ниже конкретные примеры), вы можете просто попросить ИИ написать bash-скрипт, приложив список требований к нему. ИИ уже пишут такие скрипты очень хорошо - проверено!

Пример запуска скрипта на сервере вручную:

curl -fsSL -o- https://raw.githubusercontent.com/andchir/install_scripts/refs/heads/main/scripts/pocketbase.sh | bash -s -- example.com

В конце вы получите полный отчёт с паролями и т.п.

Как выглядит графический интерфейс:

Скачать: https://github.com/andchir/install_scripts/releases

Для каких случаев подходит этот метод

(этот раздел добавлен позже, после ада в комментариях)

  1. Для простого пользователя, который хочет сэкономить и скрипт уже есть в списке. Ниже есть пример с WordPress.

  2. В самом начале статьи я писал, что целевая аудитория - не программисты и системные администраторы, но это не совсем так. Сам я себя считаю про��раммистом, но я тоже использую этот метод. Его вполне можно использовать для создания микросервисной архитектуры приложения. К примеру, вам нужен отдельный сервер с базой данных для какого-то одного участка вашего приложения. Вы просто нажимаете кнопку и база данных с GUI установлена и настроена. Или, к примеру, вам нужен свой API с переводчиком - устанавливаете LibreTranslate через скрипт. У вас будет только один сервер для одной функции.
    Или вам нужно просто установить n8n на отдельном VDS. Зачем делать это вручную?

Проект реализован очень быстро с помощью hive-mind от @Konard, за что ему отдельное спасибо!

Обновление 1

В комментариях сплошные критики, но большинство из них, не могут нормально обосновать свою точку зрения, а некоторые, похоже, даже не смогли осилить текст такой маленькой статьи.

Ещё раз попробую на конкретном примере объяснить в чём состоит идея:

Предположим, мне нужно установить WordPress на VDS сервер, делаю я это периодически и я даже не программист, не системный администратор, я спец по WordPress. Какие у меня есть пути:
1. Установить всё вручную (nginx, mysql, php, ssl, wordpress).
2. Использовать WordPress через wordpress.com и иметь ограничения и немалые платежи.
3. Адепты Ansible предлагают мне установить Ansible и изучить как он работает. По-моему это странный путь. Для профессионального использования Ansible подходит очень хорошо, но я не хочу быть профессионалом в этой области, я просто человек, который работает с WordPress (как пример).
4. Этот способ я предлагаю. Просто дай задачу ИИ написать тебе bash-скрипт, который всё сделает за тебя, приложив список требований, который позволит написать этот скрипт качественно. Потом остается только зайти на сервер и использовать одну команду.

Чем плох 4-й способ комментаторы конкретно не могут ответить, но, похоже, их очень триггерит упоминание ИИ. Я не предлагаю использовать этот способ в профессиональных целях, в статье обозначена целевая аудитория (точнее случаи, в которых можно использовать).

Обновление 2

Добавил здесь бинарники GUI для Linux и Windows:
https://github.com/andchir/install_scripts/releases

Обновление 3

Эта статья выявила новую болезнь - ИИ-фобия. Люди даже не смотрят, не пробуют результат, но осуждают его.
Сравнение подходов здесь (делал ИИ):
https://github.com/andchir/install_scripts/blob/main/comparison_ru.md

Обновление 4

Один комментатор даже предложил мне самому обосновать его "фи" :)
Цитата:

Вы можете ответить на какие компромиссы по шел ИИ при установки ПО? Надежен ли сгенерированный пароль?

В чём проблема самостоятельно пойти и посмотреть код - загадка.

После дополнительной доработки вернул статью из черновиков.