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

О чём эта статья
Эта пошаговая инструкция подходит для системных администраторов и разработчиков, которым нужно быстро развернуть 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 -yUbuntu 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.

Шаг 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.pemCertbot автоматически настроит виртуальный хост для 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.
- Тестируйте импорт на тестовой среде.
Небольшая методология развёртывания
- Подготовьте staging-окружение, идентичное production.
- Выполните установку и настройку в staging, прогоните сценарии приёмки.
- Сделайте резервную копию production перед развертыванием.
- Переведите в production и мониторьте работу в первые 24–72 часа.
Критерии приёмки завершённой инсталляции
- Сайт отвечает по HTTPS и загружает страницу входа.
- Создана и протестирована учётная запись администратора.
- Выполнено резервное копирование и восстановление данных (тестовое восстановление прошло успешно).
- SSL-сертификат корректно обновляется (запланировано автоматическое обновление certbot).
Заключение
Вы успешно установили Invoice Ninja на Ubuntu 20.04 с Apache и настроили HTTPS через Let’s Encrypt. Дальше изучите встроенные функции Invoice Ninja: выставление счетов, отслеживание расходов, предложения и отчёты. Для производства уделите внимание безопасности, регулярным резервным копиям и тестированию обновлений.
Важно: если у вас остались вопросы по конкретным ошибкам конфигурации или вы хотите настроить интеграцию с платёжным шлюзом, напишите подробный вывод ошибок — я помогу.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента