Вы всё ещё устанавливаете ПО на 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

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

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

Проект реализован очень быстро с помощью 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

Комментарии (53)


  1. dbax
    26.12.2025 13:46

    мда. что только не придумают виндузятники чтоб не набирать apt get


    1. Andchir Автор
      26.12.2025 13:46

      Я даже не знаю как это комментировать. Продолжайте дальше комментировать, не читая статьи и не переходя по ссылкам в них.


  1. EtUtVinceret
    26.12.2025 13:46

    Есть некоторые сомнения относительно рациональности данного подхода.

    Если целевая аудитория - обычные пользователи, то достаточно ли часто они этим занимаются, чтобы нужна была автоматизация.

    Например, я - обычный пользователь. Разворачиваю что-то на сервере редко. Для разовой акции меня вполне устроит и ручная установка. Ко всему прочему, если я запускаю написанный не мной скрипт, то я точно должен понимать, что каждая его часть делает. На изучение и проверку скриптов уйдёт время, и по итогу, выигрыша, как такого, не будет или будет, но он будет незначительный.

    Стоит ли так усложнять, вот в чём вопрос?


    1. Andchir Автор
      26.12.2025 13:46

      Я думаю Вы не поняли о чём статья. Речь о стандартном ПО, которое устанавливают по-многу раз на разных серверах. Например, установить VPN нажатием одной кнопки, по-моему приятно.


      1. winorun
        26.12.2025 13:46

        Как уже сказали выше apt зачем что то ещё?


        1. Andchir Автор
          26.12.2025 13:46

          Хорошо, дайте мне одну команду с apt, которая мне установит nginx, certbot, настроит домен, установит SSL сертификат, установит mysql, создаст базу данных.


          1. Re1ter
            26.12.2025 13:46

            ansible-playbook playbook.yml


            1. Andchir Автор
              26.12.2025 13:46

              Если Вы используете Ansible и подобные, эта статья не для Вас, первая строчка Вас должна была остановить. Я думаю bash все линуксоиды знают, чего не сказать про Ansible.


          1. winorun
            26.12.2025 13:46

            Если мне надо поставить одинаковую(относительно) конфигурацию на многое количество ПК или на один но периодически, а ансамбль избыточен или его установка не желательно то я просто сделаю свой пакет. В зависимостях у него будет: nginx, certbot, mysql. Пост скриптами настроит домен, установит SSL сертификат и создаст базу данных. Я даже меню настройки в этот процесс смогу добавить(Хотя делать этого строго не рекомендую).

            Я получу штатный контроль версии пакета, контроль зависимостей и конфликтов.

            Смогу создать собственный репозиторий не зависящий от github который может хранится где угодно. Хоть на флешки, хоть на файлопомойки хоть в сети.

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


            1. Andchir Автор
              26.12.2025 13:46

              Пост скриптами настроит домен, установит SSL сертификат и создаст базу данных.

              Какими скриптами? Чем bash не подходит на роль этих "скриптов"? По-моему он как раз для этого и придуман, это его прямое назначение.

              я просто сделаю свой пакет

              Сомневаюсь, что это будет просто. В статье прямым текстом написано кто целевая аудитория данного способа. Ещё раз отдельно цитирую:

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


              1. winorun
                26.12.2025 13:46

                Чем bash не подходит на роль этих "скриптов"?

                А там и будут теже самые bash скрипты

                Сомневаюсь, что это будет просто.

                Не сложнее чем написать такой велосипед.

                Собственно сам пакет deb собирается элементарно.

                Собственно мне как то надо было lamp поднять для разработки на 4 ПК с готовой бд и тестовым virtualhost с самопотписанным сертификатом. Пакет за обед сделал.


                1. Andchir Автор
                  26.12.2025 13:46

                  А там и будут теже самые bash скрипты

                  То есть запускать bash-скрипт напрямую - плохо. А через apt - круто. Спасибо за Ваше мнение.


                  1. winorun
                    26.12.2025 13:46

                    Я накидал в голове довольно длинный комментарий с подробным ответом на Ваш вопрос. Для заполнения лагун и для более продуктивного понимания решил перечитать Вашу статью. Статья оказалась изменена. По прочтению этой измененной статьи я понял что мой расширенный и подробный комментарий надо увеличивать еще. Но это не надо не мне не Вам. Поэтому отвечу кратко.

                    То есть запускать bash-скрипт напрямую - плохо. А через apt - круто.

                    Не круто, а разумно. Это позволит избежать многих ошибок и проблем. Не выстрелить себе в ногу. Упростить сопровождение и bash код. Ответы на вопрос каких ошибок и как именно Вам в рог не уперлись. А если все же интересно Вы можете почитать соответсвующию литературу.

                    К тому же Вы изменили задачу и мой пример под Вашу измененую задачу не подходит.

                    Теперь немного ликбеза. Ansible это система управления конфигурациями. Простыми словами у Вас условно 20 компьютеров на которые Вы хотите поставить некое ПО сконфигурировав его соответвующим образом, впослетствии Вы планируете следить и изменять их. Она подходит под Вашу изначальную задачу, но не подходит под ту задачу которую Вы описали в измененной статье.

                    Теперь про 4 пункт. Ответ на этот вопрос требует тоже довольно длинного комментария, но при этом он давно разобран в сети. Поищите. Но все же Вы просите конкретный ответ. Ну что же. Вы можете ответить на какие компромиссы по шел ИИ при установки ПО? Надежен ли сгенерированный пароль? Как откатить изменения внесенные Вашим скриптом обратно?

                    Про Wordpress четко под Вашу задачу https://habr.com/ru/companies/slurm/articles/524660/


                    1. Andchir Автор
                      26.12.2025 13:46

                      Действительно большой комментарий, но информации в нём очень мало.

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

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

                      Упростить сопровождение и bash код.

                      Это круто. Оказывается bash-скрипт, который запускается через apt проще сопровождать :) Но опять без конкретики.


                      1. winorun
                        26.12.2025 13:46

                        Вы меня не так поняли. Большой комментарий планировался вместо этого кусочка текста. Как раз с примерами и т.д.

                        Не круто, а разумно. Это позволит избежать многих ошибок и проблем. Не выстрелить себе в ногу. Упростить сопровождение и bash код.

                        Но как я написал выше, оно Вам не надо.


                      1. Andchir Автор
                        26.12.2025 13:46

                        Так что я изменил в статье, из-за чего Вы передумали публиковать свой "большой" комментарий? (тот тоже не маленький)

                        Но как я написал выше, оно Вам не надо.

                        Не надо за меня решать, пожалуйста.


                      1. winorun
                        26.12.2025 13:46

                        Хорошо.

                        Для начала оговорюсь еще раз, это работает:

                        Если мне надо поставить одинаковую(относительно) конфигурацию на многое количество ПК или на один но периодически, а ансамбль избыточен или его установка не желательно

                        Соответсвенно в Вашу задачу, судя по статье, не попадает.

                        Например: у меня два компьютера на работе и 3 дома. Я решил разработать проект php. Но для этого мне надо:

                        • Установить:

                          • Апатч

                          • MySQL

                          • PHP

                        • Настроить vhost

                        • Поставить самоподписанный сертификат

                        • Создать пустую БД в которую пойдут миграции и т.д.

                        • Изменить файл host что бы я мог зайти по доменному имени.

                        Тут стоит сказать что git и т.д. уже стоит.

                        Что я делаю:

                        Настраиваю всё это на рабочем ПК.

                        Создаю папку

                        Внутрь этой папки я скидываю файл виртуального хоста, сертификаты, файл создания БД, патч файлы для /etc/host

                        При чем патч файла два для добавления записи и удалении ее.

                        Получаю я эти файлы просто скопировав файл и добавив нужную запись. А дальше diff. Файл sql я дерну из истории или бекапну базу.

                        В нашей папки будет каталог DEBIAN. В нем содержатся файлы для пакетного менеджера. В файле DEBIAN/control помимо прочего я пропишу Depends, просто cписок пакетов через запятую, которые требуются для установки этого пакета. Тут будут прописаны апатч и т.д. Также Pre-Depends. это список пакетов, которые требуются в процессе установки этого пакета.

                        тут будет patch. Смогу прописать например и Conflicts. То с чем пакет будет конфликтовать. Тут много еще чего на разные случае жизни. В DEBIAN/dirs прописываю необходимые папки, включая папку проекта.

                        DEBIAN/md5sums защитит от повреждения пакета, я буду уверен что файлы не изменились из-за ошибок на диски или глюков сети.

                        DEBIAN/(preinst|postinst|prerm|postrm): скрипты установки

                        DEBIAN/preinst Выполняется перед установкой пакета. Нам он не интересен.

                        DEBIAN/postinst Выполняется сразу после установки пакета

                        Каким он будет:

                        a2ensite наш_файл_vhost.conf
                        patch /etc/host наш_файл_path_для_добавления_записи
                        mysql ... # Тут стандартный код добавления пользователя, создания бд и т.д всего
                        # рестарт апатча

                        DEBIAN/prerm Выполняется непосредственно перед удалением пакета

                        тут делаем обратное. Удаляем БД и пользователя, опять патчим host отключаем vhost.

                        те же три строчки кода.

                        Так же в deb пакетах есть система конфигурации. Вы можете добавить запрос пароля, имени и т.д. Но тут нам это не надо.

                        Ну если с deb дистрибутивами работали вы эти окошки видели.

                        Далее собираем dpkg-deb папку в пакет. Кидаем на флешку в репозиторий и обновляем его.

                        Все это в свое время я сделал быстрее чем писал этот комментарий.

                        Что мы получаем в итоге. Простым apt install мы установим наш пакет. Простым apt remove его удалим. При этом удалятся только те пакеты которые нашем пакетом поставлены. Если например апатч стоял он и продолжит стоять. Если мы заметим ошибку в пакете, например забыли указать в зависимостях одну из библиотек php, мы просто обновим пакет в репозитории а дальше сделаем update на остальных ПК. Нам не нужно специально как то готовить дистрибутив к установке пакета.

                        А теперь представте размер bash скрипта который сможет повторить всё это.


                      1. Andchir Автор
                        26.12.2025 13:46

                        Спасибо за подробности. Тут я с Вами согласен. Свой какой-то сложный проект я бы тоже не стал обновлять через bash-скрипт. Но если какой-то инструмент не подходит для какой-то одной задачи, это не значит, что он плохой. В статье есть "Обновление 1", там есть пример.

                        Также в статье есть это (не было отредактировано):

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


                    1. Andchir Автор
                      26.12.2025 13:46

                      Про Wordpress четко под Вашу задачу

                      Увидел в статье ссылку на bash-скрипт. Чем он лучше моего скрипта?


                      1. winorun
                        26.12.2025 13:46

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


                      1. Andchir Автор
                        26.12.2025 13:46

                        Вы критикуете, Вам и отвечать на этот вопрос. Я проверил - работает. Посмотрел код - он меня устроил.


                      1. winorun
                        26.12.2025 13:46

                        Кстати а зачем Вам скрипт установки phpmyadmin? Его нет в репах убунты?

                        П.С.

                        Это не риторический вопрос, не сарказм и не насмешка. Мне реально интересно


                      1. Andchir Автор
                        26.12.2025 13:46

                        Заходим в скрипт и смотрим сколько там строчек:
                        https://github.com/andchir/install_scripts/blob/main/scripts/mysql-phpmyadmin.sh
                        Это всё бесполезная работа? Тогда дайте способ проще.

                        Если скажете "sudo apt install phpmyadmin", тогда попрошу записать видео (желательно с использованием nginx).


  1. ki11j0y
    26.12.2025 13:46

    Ansable не? Попросите ваш ИИ написать плейбук. Готово.


    1. Andchir Автор
      26.12.2025 13:46

      А конкретнее можете? У меня есть одна строка:

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

      На Ansable как будет? (включая установку самого Ansable)


      1. Andchir Автор
        26.12.2025 13:46

        *Ansible


  1. TIEugene
    26.12.2025 13:46

    Очень полезная статья. Крайне полезная.
    Если тренд сохранится - за пенсию можно не париться
    PS. "Верну сервер взад в рабочее состояние. Долго и дорого".


    1. Andchir Автор
      26.12.2025 13:46

      Подробнее и без сарказма можете?


  1. CybersynCLI
    26.12.2025 13:46

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


    1. Andchir Автор
      26.12.2025 13:46

      Вы можете создать issue с информацией о Вашем ПО в репозитории по ссылке в статье, а я создам bash скрипт для него (через ИИ). Но ваш репозиторий должен быть открытым. Или issue для любого другого ПО, которое часто устанавливаете.

      Какие еще возможности для автоматизации возникают, потенциально на что можно масштабировать ваш скрипт?

      Пока всё зависит от конкретного ПО, которое нужно устанавливать. Сам установщик максимально простой и хочу его таким оставить :)


      1. CybersynCLI
        26.12.2025 13:46

        Большое спасибо за развёрнутый ответ.


  1. iamezhik
    26.12.2025 13:46

    Ansible, puppet, chef, salt, rudder и так далее: "Да, да, пошли мы нах@р. Наконец-то кто-то придумал как вернуться на 15 лет назад к bash-портянкам."


    1. Andchir Автор
      26.12.2025 13:46

      Первая строчка этой статьи для Вас. Разве bash уже умер? :) Для использования Ansible я должен его установить, я так же должен знать как он работает. Для способа, который описан в статье, этого всего не нужно.

      Открываю репозиторий https://github.com/XTLS/Xray-install, вижу там bash скрипт. Вот же неандертальцы какие :)


  1. xronelx
    26.12.2025 13:46

    Так это по сути только по vpn. Ни тебе nginx, apache, php, docker, node, redis и прочего. Просто очередной скрипт авто установки xray. Зачем такое название у статьи тогда?


    1. Andchir Автор
      26.12.2025 13:46

      Где в тексте про VPN? По ссылкам тоже полезно ходить, они не просто так. В репозитории есть список готовых скриптов.


      1. xronelx
        26.12.2025 13:46

        Вот именно, что в тексте про ПО и не слова о впн. А в репе установщик xray и по сути все)


        1. Andchir Автор
          26.12.2025 13:46

          Извините, но у Вас что-то со зрением. Например, тут есть ещё PocketBase, FileBrowser Quantum, PostgreSQL + Mathesar... И это только начало.


          1. xronelx
            26.12.2025 13:46

            А вот из реально нужного что? Веб серверов нет, конфигов к ним авто нет. Накой тогда все эти sql? Зато 2 вида впн и чат)


            1. Andchir Автор
              26.12.2025 13:46

              Ответ есть в статье. Даже перед катом. Хотите ещё? Тоже уже отвечал на это.


              1. xronelx
                26.12.2025 13:46

                Да понятно все. Чисто под безруких заточен быдло скрипт для установки впн. Остальное тут никому не нужно. Ни один админ или разраб этим ставить не будет, а простому юзеру не нужны sql сервера и файловый менагер


                1. Andchir Автор
                  26.12.2025 13:46

                  Ни один админ или разраб не использует bash скрипты? :) Это "ценный" комментарий.


                  1. xronelx
                    26.12.2025 13:46

                    Я написал не будет использовать этот скрипт, читать учимся


                    1. Andchir Автор
                      26.12.2025 13:46

                      Какой "этот"? Чем эти скрипты отличаются от других скриптов условного админа, который хочет автоматизации?


                      1. xronelx
                        26.12.2025 13:46

                        Тем, что смысла в них нет. Ставить руками условный nginx потом твоим скрипом postgresql, смысл? Забей, наслаждайся трудом своего ии)


                      1. Andchir Автор
                        26.12.2025 13:46

                        Ставить руками условный nginx потом твоим скрипом postgresql, смысл?

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


                      1. xronelx
                        26.12.2025 13:46

                        Скрипт ставит phpmyadmin/postgresql без nginx/apache. Скрипт ставит файловый менеджер с веб мордой(один файл fm.php уже придуман давно), ну и акк же без wg и xray)) очень важно и нужно. Уже писал-забей


                      1. Andchir Автор
                        26.12.2025 13:46

                        Скрипт ставит phpmyadmin/postgresql без nginx/apache. 

                        Нет, он всё ставит.


  1. jingvar
    26.12.2025 13:46

    Эта статья новогодний прикол?


    1. Re1ter
      26.12.2025 13:46

      Это новая реальность - сИИсадмин


      1. Andchir Автор
        26.12.2025 13:46

        Нет, это называется ИИ-фобия. Вы даже не смотрели результат, но уже его осудили :)


        1. Re1ter
          26.12.2025 13:46

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


  1. Pumboss
    26.12.2025 13:46

    Вам накидал минусов за то, что вы придумали велосипед - но на треугольных колесах, но продолжаете упорно рассказывать как это полезно.

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


    1. Andchir Автор
      26.12.2025 13:46

      вы придумали велосипед - но на треугольных колесах

      Пока мне там смогли объяснить только, что запускать bash-скрипт напрямую - плохо, а через apt запускать тот же bash-скрипт - круто.