Гид по технологиям

Установка Invoice Ninja на Ubuntu 20.04 с Apache и Let's Encrypt

• 6 min read • DevOps • Обновлено 24 Nov 2025
Установка Invoice Ninja на Ubuntu 20.04 с Apache и SSL
Установка Invoice Ninja на Ubuntu 20.04 с Apache и SSL

Скриншот логотипа Invoice Ninja и установка

О чём эта статья

Эта пошаговая инструкция подходит для системных администраторов и разработчиков, которым нужно быстро развернуть Invoice Ninja локально или в облаке. Поясняем команды, даём рекомендации по безопасности и включаем чеклисты для проверки работоспособности.

Важно: перед началом проверьте, что у вас есть действующий домен, направленный на IP сервера, и что вы можете выполнять команды от root или через sudo.

Краткие требования

  • Сервер с Ubuntu 20.04.
  • Домен, указывающий на IP сервера (например invoice.example.com).
  • Учетная запись с правами root (или sudo).

Шаг 1. Обновление системы и базовые зависимости

Обновите пакеты и установите базовые утилиты:

apt-get update -y

Затем установите дополнительные зависимости:

apt-get install software-properties-common apt-transport-https ca-certificates gnupg2 -y

Примечание: эти пакеты нужны для подключения репозиториев и работы HTTPS-загрузки.

Шаг 2. Установка LAMP (Apache, MariaDB, PHP)

Установите Apache и MariaDB:

apt-get install apache2 mariadb-server -y

Ubuntu 20.04 по умолчанию содержит PHP 7.4, тогда как инструкция ориентирована на PHP 7.2. Чтобы установить PHP 7.2, добавьте PPA от Ondřej Surý:

add-apt-repository ppa:ondrej/php

Установите PHP 7.2 и необходимые расширения:

apt-get install php7.2 libapache2-mod-php7.2 php-imagick php7.2-fpm php7.2-mysql php7.2-common php7.2-gd php7.2-json php7.2-curl php7.2-zip php7.2-xml php7.2-mbstring php7.2-bz2 php7.2-intl php7.2-gmp unzip -y

Проверьте версию PHP:

php -v

Ожидаемый вывод содержит строку с PHP 7.2 (в вашем окружении версия может отличаться). Если вы предпочитаете PHP 7.4 или более позднюю версию, проверьте совместимость Invoice Ninja с нужной версией перед переходом в производство.

Шаг 3. Настройка базы данных MariaDB

Войдите в консоль MariaDB:

mysql

Создайте базу данных и пользователя (замените password на надёжный пароль):

MariaDB [(none)]> create database invoicedb;
MariaDB [(none)]> create user invoice@localhost identified by 'password';
MariaDB [(none)]> grant all privileges on invoicedb.* to invoice@localhost;
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

Важно: для удалённого доступа используйте ‘%@’ вместо ‘invoice@localhost’ и настройте сетевую безопасность и bind-address в /etc/mysql/my.cnf.

Шаг 4. Загрузка и установка Invoice Ninja

Скачайте официальный архив (команда скачивает текущую стабильную сборку):

wget -O invoice-ninja.zip https://download.invoiceninja.com/

Распакуйте в корень веб-сайта Apache:

unzip invoice-ninja.zip -d /var/www/html/

Установите владельца и права доступа:

chown -R www-data:www-data /var/www/html/ninja
chmod -R 755 /var/www/html/ninja

Примечание: некоторые дистрибутивы и версии Invoice Ninja могут требовать дополнительных директорий для хранения данных или кэша — проверяйте требования конкретной версии.

Шаг 5. Настройка виртуального хоста Apache

Создайте файл конфигурации для сайта:

nano /etc/apache2/sites-available/ninja.conf

Добавьте следующее (замените ServerName на ваш домен):


    ServerName invoice.example.com
    DocumentRoot /var/www/html/ninja/public
    
       DirectoryIndex index.php
       Options +FollowSymLinks
       AllowOverride All
       Require all granted
    

    ErrorLog ${APACHE_LOG_DIR}/invoice-ninja.error.log
    CustomLog ${APACHE_LOG_DIR}/invoice-ninja.access.log combined

    Include /etc/apache2/conf-available/php7.2-fpm.conf

Сохраните и включите сайт:

a2ensite ninja.conf

Включите необходимые модули Apache:

a2enmod mpm_event proxy_fcgi setenvif
a2enmod rewrite

Перезапустите Apache и проверьте статус:

systemctl restart apache2
systemctl status apache2

Если служба не запускается, проверьте синтаксис конфигурации:

apachectl configtest
journalctl -xe

Шаг 6. Первичная настройка через веб-интерфейс

Откройте в браузере http://invoice.example.com. На странице установки введите URL сайта, параметры базы данных и учётные данные администратора.

Настройка Invoice Ninja — экран установки

Параметры MySQL — экран установки базы данных

Создание учётной записи администратора

После успешной установки вы попадёте на экран входа:

Экран входа в Invoice Ninja

Войдите под администратором — вы увидите панель управления Invoice Ninja.

Панель управления Invoice Ninja

Шаг 7. Защита с помощью Let’s Encrypt (Certbot)

Установите Certbot для Apache:

apt-get install python3-certbot-apache -y

Запустите Certbot и получите сертификат (замените домен на ваш):

certbot --apache -d invoice.example.com

Следуйте подсказкам: укажите email, согласитесь с условиями обслуживания и выберите опцию перенаправления HTTP -> HTTPS (рекомендуется выбрать Redirect).

Примерный вывод certbot показывает пути к сертификатам:

/etc/letsencrypt/live/invoice.example.com/fullchain.pem
/etc/letsencrypt/live/invoice.example.com/privkey.pem

Certbot автоматически настроит виртуальный хост для HTTPS и добавит автоматическое обновление (renewal).

Критерии приёмки

  • Домен открывается по HTTPS: https://invoice.example.com
  • Страница установки доступна и проходит валидацию базы данных
  • Можно создать администратора и войти в систему
  • Журналы Apache и PHP не содержат критических ошибок
  • Сертификат Let’s Encrypt успешно получен и валиден

Чеклист безопасности и эксплуатации

  • Закройте доступ к портам, неиспользуемым для доступа (например SSH доступ по ключам, запрет по паролю).
  • Регулярно обновляйте Ubuntu и пакеты: apt-get update && apt-get upgrade.
  • Настройте регулярную резервную копию базы данных и каталогов /var/www/html/ninja.
  • Ограничьте доступ к панели администратора по IP (при необходимости) или включите двухфакторную аутентификацию, если поддерживается.
  • Проверьте права файлов: веб-сервер должен быть владельцем, но не дайте мировых прав на записи там, где это не требуется.
  • Настройте fail2ban для защиты от брутфорса.

Резервное копирование и обновление

Резервное копирование минимально должно включать:

  • Дамп базы данных:
mysqldump -u invoice -p invoicedb > invoicedb-$(date +%F).sql
  • Копию каталога приложения:
tar czf ninja-www-$(date +%F).tar.gz /var/www/html/ninja

При обновлении Invoice Ninja следуйте официальной документации: тестируйте обновление на staging перед production и всегда делайте резервную копию БД и файлов.

Быстрый набор команд (cheat sheet)

  • Обновление пакетов: apt-get update && apt-get upgrade -y
  • Установка Apache/MariaDB: apt-get install apache2 mariadb-server -y
  • Проверка конфигурации Apache: apachectl configtest
  • Перезапуск Apache: systemctl restart apache2
  • Создание дампа БД: mysqldump -u user -p dbname > dump.sql
  • Получение certbot сертификата: certbot –apache -d yourdomain

Частые проблемы и их решения

  • Проблема: 500 Internal Server Error после установки

    • Проверьте логи Apache (/var/log/apache2/error.log) и логи PHP-FPM.
    • Убедитесь, что права на файлы корректны: chown -R www-data:www-data /var/www/html/ninja.
    • Проверьте, что расширения PHP, перечисленные в требованиях Invoice Ninja, установлены и активны.
  • Проблема: certbot не может подтвердить домен

    • Убедитесь, что A-запись домена указывает на IP сервера.
    • Проверьте, что порты 80 и 443 открыты в брандмауэре (ufw allow 80,443).
  • Проблема: соединение с базой данных не устанавливается

    • Проверьте правильность имени хоста (localhost), имени пользователя и пароля.
    • Убедитесь, что MariaDB работает и слушает на нужном интерфейсе.

Роли и обязанности при вводе в эксплуатацию

  • Системный администратор:

    • Настройка сервера, брандмауэра, резервного копирования, SSL.
    • Мониторинг и обновления системных пакетов.
  • Разработчик/инженер приложений:

    • Тестирование обновлений Invoice Ninja и миграций БД.
    • Настройка интеграций с платёжными шлюзами.
  • Бухгалтер/менеджер:

    • Настройка шаблонов счетов, учетных записей клиентов, налоговых ставок.

Миграция и совместимость

Если вы переносите данные с другой инсталляции Invoice Ninja или с облачной версии:

  • Экспортируйте данные через встроенные инструменты или сделайте дамп базы данных.
  • Проверьте версии PHP и необходимых расширений; при несовместимости обновите или используйте версию PHP, совместимую с версией Invoice Ninja.
  • Тестируйте импорт на тестовой среде.

Небольшая методология развёртывания

  1. Подготовьте staging-окружение, идентичное production.
  2. Выполните установку и настройку в staging, прогоните сценарии приёмки.
  3. Сделайте резервную копию production перед развертыванием.
  4. Переведите в production и мониторьте работу в первые 24–72 часа.

Критерии приёмки завершённой инсталляции

  • Сайт отвечает по HTTPS и загружает страницу входа.
  • Создана и протестирована учётная запись администратора.
  • Выполнено резервное копирование и восстановление данных (тестовое восстановление прошло успешно).
  • SSL-сертификат корректно обновляется (запланировано автоматическое обновление certbot).

Заключение

Вы успешно установили Invoice Ninja на Ubuntu 20.04 с Apache и настроили HTTPS через Let’s Encrypt. Дальше изучите встроенные функции Invoice Ninja: выставление счетов, отслеживание расходов, предложения и отчёты. Для производства уделите внимание безопасности, регулярным резервным копиям и тестированию обновлений.

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


Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро