Данный гид описывает процесс установки InvoiceNinja на Ubuntu 20.04 с использованием веб-серверов Apache или Nginx. InvoiceNinja представляет собой бесплатное программное обеспечение для выставления счетов с открытым исходным кодом, которое можно использовать на собственном сервере. Это экономически выгодная альтернатива платным онлайн-сервисам, таким как Freshbooks. Хотя InvoiceNinja предлагает услуги хостинга, если вы предпочитаете установить программное обеспечение на своем сервере, следуйте указанным ниже шагам.

Содержание статьи
- 1 Возможности InvoiceNinja
- 2 Требования
- 3 Скачайте установочный файл InvoiceNinja на сервер с операционной системой Ubuntu 20.04.
- 4 Настройте базу данных и пользователя в MariaDB.
- 5 Инсталляция PHP-модулей
- 6 Конфигурация InvoiceNinja
- 7 Конфигурация веб-сервера
- 8 Активация HTTPS
- 9 Завершение установки через помощника конфигурации
- 10 Диагностика проблем
- 11 Настройка задач Cron
- 12 Как настроить параметры SMTP
- 13 По-прежнему не получается отправить письма?
- 14 Как произвести обновление Invoice Ninja
- 15 Заключение
Возможности InvoiceNinja
- С InvoiceNinja вы можете выставлять счета своим клиентам, используя своё собственное доменное имя и бренд.
- Организуйте процесс выставления счетов для нескольких предприятий, используя одну учетную запись.
- Сократите затраты времени, автоматически создавая счета для постоянных клиентов с использованием регулярных платежей.
- Просто формируйте и отправляйте привлекательные предложения своим клиентам.
- Добавляйте внешние файлы к счетам.
- Создавайте проектные задачи и следите за временем, чтобы избавиться от использования сторонних инструментов для учета времени, таких как clockify. me.
- Управляйте и планируйте проекты ваших клиентов, используя визуальный инструмент для организации работы.
- Дайте вашим клиентам возможность просматривать все свои транзакции с вами в одном удобном месте.
- С использованием Zapier можно автоматизировать передачу данных между вашей учетной записью для выставления счетов и множеством популярных приложений, таких как Gmail, Google Sheets, QuickBooks Online, Slack, Pipeline, MailChimp и многие другие.
- Запрашивайте авансовые платежи и частичные суммы, используя один и тот же счет многократно.
- Применяйте заранее подготовленный автоматизированный набор напоминаний по электронной почте для уведомления клиентов о необходимости произвести оплату счета.
- Получайте оповещения, когда ваш клиент просматривает и оплачивает ваш счет.
- И множество других вещей.
Требования
Для реализации данного руководства понадобится операционная система Ubuntu 20.04, установленная на удаленном сервере. Если вы рассматриваете возможность использования виртуального частного сервера (VPS), обратите внимание на Kamatera VPS, который предлагает:
- Бесплатный пробный период на 30 дней.
- Стартовая цена от 4 долларов в месяц (1 ГБ оперативной памяти).
- Мощный VPS, работающий на технологии KVM.
- Девять дата-центров расположены в разных уголках мира, включая такие страны, как США, Канада, Великобритания, Германия, Нидерланды, Гонконг и Израиль.
Перейдите по указанной ниже ссылке, чтобы настроить сервер Linux VPS на платформе Kamatera.
- Как настроить сервер Linux VPS на платформе Kamatera
Для корректной работы InvoiceNinja необходимы PHP и MySQL/MariaDB. Перед тем как приступить к этому руководству, убедитесь, что у вас установлен стек LAMP или LEMP. Если он еще не настроен, обратитесь к одному из следующих руководств.
- Установка LAMP-стека (Apache, MariaDB, PHP) на Ubuntu 20.04.
- Установка стека LEMP (Nginx, MariaDB, PHP) на Ubuntu 20.04: пошаговое руководство.
Кроме того, вам потребуется доменное имя, чтобы ваши клиенты могли получить доступ к счету через него. Я выбрал регистрацию домена на NameCheap из-за их низких цен и бесплатной защиты конфиденциальности whois на постоянной основе.
Крайне необходимо, чтобы ваш сервер имел возможность отправлять электронные письма, чтобы клиенты могли получать свои счета. Перейдите по следующей ссылке, чтобы настроить SMTP-ретрансляцию на Ubuntu.
- Как установить ретрансляцию SMTP Postfix на Ubuntu с использованием Sendinblue.
Теперь приступим к установке InvoiceNinja.
Скачайте установочный файл InvoiceNinja на сервер с операционной системой Ubuntu 20.04.
Подключитесь к серверу Ubuntu 20.04 с помощью SSH. После этого выполните команду для скачивания самой свежей версии zip-архива InvoiceNinja на ваш сервер.
wget https://github.com/invoiceninja/invoiceninja/releases/download/v5.4.9/invoiceninja. zip
По завершении загрузки распакуйте архив в папку /var/www/ с помощью утилиты unzip.
sudo apt install unzip sudo mkdir - p /var/www/invoiceninja/ sudo unzip invoiceninja. zip - d /var/www/invoiceninja/
Опция — d задает папку назначения. Веб-файлы InvoiceNinja будут извлечены в директорию /var/www/invoiceninja.
После этого необходимо изменить владельца этой папки на www-data, чтобы веб-сервер получил возможность записывать в неё.
sudo chown www-data:www-data /var/www/invoiceninja/ - R
Также требуется изменить права доступа к каталогу storage.
sudo chmod 755 /var/www/invoiceninja/storage/ - R
Настройте базу данных и пользователя в MariaDB.
Для доступа к серверу базы данных MariaDB используйте следующую команду.
sudo mysql
После этого необходимо создать базу данных для Invoice Ninja. В данном руководстве база данных называется invoiceninja, но вы можете выбрать любое другое имя по своему усмотрению.
create database invoiceninja;
Создайте учетную запись пользователя в базе данных. Вы можете выбрать любое имя для нового пользователя. Не забудьте заменить your-password на желаемый пароль.
create user ninja@localhost идентифицирован как 'your-password';
Дайте этому пользователю полный доступ к базе данных invoiceninja.
grant all privileges on invoiceninjaКонечно! ninja@localhost;
Используйте свои права и покиньте систему.
flush privileges; exit;
Инсталляция PHP-модулей
Ubuntu 20.04 включает в себя PHP 7.4, однако InvoiceNinja полностью совместим с PHP 8.0. В связи с этим мы переходим на установку PHP 8.0 для повышения производительности. Чтобы установить необходимые и рекомендованные модули PHP для InvoiceNinja, выполните следующие команды.
sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php - y sudo apt install php-imagick php8.0 php8.0-mysql php8.0-fpm php8.0-common php8.0-bcmath php8.0-gd php8.0-curl php8.0-zip php8.0-xml php8.0-mbstring php8.0-bz2 php8.0-intl php8.0-gmp
После этого выполните перезапуск Apache. (Если у вас установлен Nginx, то его перезапуск не требуется.)
sudo systemctl restart apache2
Конфигурация InvoiceNinja
Перейдите в основную папку InvoiceNinja.
cd /var/www/invoiceninja/
Сделайте копию образца файла. env.
sudo cp. env. example. env
Используйте текстовый редактор командной строки, такой как Nano, для внесения изменений в этот файл.
sudo nano. env
Определите следующую строку.
APP_URL=http://localhost
Измените адрес URL на что-то вроде https://invoice.yourdomain.com, чтобы иметь возможность входить в InvoiceNinja через этот поддомен.
После этого настройте параметры подключения к базе данных. Укажите название базы данных, имя пользователя и пароль, которые были созданы на втором этапе.
DB_HOST=localhost DB_DATABASE=invoiceninja DB_USERNAME=ninja DB_PASSWORD=ninja_password DB_PORT=3306
Если в вашем пароле есть специальные символы, попробуйте обрамить его в двойные кавычки, например: DB_PASSWORD=»ninja_password».
Сохраните файл и закройте его. Установите владельцем www-data.
sudo chown www-data:www-data /var/www/invoiceninja/.env
Затем введите следующую команду для создания уникального ключа приложения, который понадобится для установки InvoiceNinja.
sudo php8.0 /var/www/invoiceninja/artisan key:generate
Перенесите базу данных.
sudo php8.0 /var/www/invoiceninja/artisan migrate:fresh --seed
Конфигурация веб-сервера
Для этой задачи подойдут веб-серверы Apache или Nginx.
Apache
Если вам больше по душе Apache, то следует создать файл виртуального хоста для Invoice Ninja.
sudo nano /etc/apache2/sites-available/invoice-ninja.conf
Вставьте указанный текст в файл. Подмените текст, выделенный красным цветом, на ваши актуальные сведения. Не забудьте настроить A-запись для вашего доменного имени. Имейте в виду, что корневая папка веб-сервера расположена по адресу /var/www/invoice-ninja/public/, а не /var/www/invoice-ninja/.
Сохраните изменения в файле и закройте его. После этого активируйте данный виртуальный хост.
sudo a2ensite invoice-ninja.conf
Необходимо активировать модуль для перезаписи.
sudo a2enmod rewrite
Перезапустите сервер Apache для применения внесённых изменений.
sudo systemctl restart apache2
Теперь доступ к странице настройки Invoice Ninja можно получить по адресу invoice. yourdomain.com/setup. Если вместо мастера настройки отображается стандартная страница Apache, необходимо деактивировать виртуальный хост по умолчанию.
sudo a2dissite 000-default.conf
Перезапустите Apache.
Перед вводом данных в мастер настройки, необходимо активировать HTTPS.
Nginx
Если вы используете Nginx, создайте файл invoiceninja.conf в директории /etc/nginx/conf.d/.
sudo nano /etc/nginx/conf.d/invoiceninja.conf
Вставьте указанный текст в файл. Замените красные элементы на ваши фактические данные. Не забудьте настроить DNS запись типа A для этого поддомена. Учтите, что корневой каталог настроен на /var/www/invoiceninja/public/, а не на /var/www/invoiceninja/.
server {
слушать на порту 80;
слушать [::]:80;
server_name invoice. yourdomain.com;
директория /var/www/invoiceninja/public/
index, index.php, index. html, index. htm;
Кодировка utf-8.
максимальный размер тела клиента 20M;
location / {
попробуйте_файлы $uri $uri/ /index.php?$query_string;
}
if (!-e $request_filename) {
Переопределите запрос: ^(.+)$ и перенаправьте на /index.php? q= с последующим выполнением.
}
location = /favicon. ico {
access_log выключен;
log_not_found выключен;
}
location = /robots. txt {
access_log выключен;
log_not_found выключен;
}
access_log /var/log/nginx/invoiceninja. access.log;
error_log /var/log/nginx/invoiceninja. error.log;
location ~ \.php$ {
быстраяcgi_разделить_путь_инфо ^(.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
fastcgi_index index.php;
включить fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors выключен;
размер_буфера_fastcgi 16k;
fastcgi_buffers 4 16k;
}
location ~ /\.ht {
отказать всем;
}
отправка файла отключена;
}
Сохраните файл и закройте его. После этого проверьте настройки Nginx.
sudo nginx - t
При успешном выполнении теста выполните перезагрузку Nginx, чтобы изменения начали действовать.
sudo systemctl reload nginx
Теперь вы можете перейти к странице мастера настройки Invoice Ninja (invoice. yourdomain.com/setup). Прежде чем вводить какие-либо данные в мастере, необходимо активировать HTTPS.
Активация HTTPS
Для защиты HTTP-трафика следует активировать HTTPS, установив бесплатный TLS-сертификат от Let’s Encrypt. Чтобы установить клиент Let’s Encrypt (certbot) на сервере с Ubuntu 20.04, выполните следующую команду.
sudo apt install certbot
Если вы применяете Nginx, то необходимо также установить плагин Certbot для Nginx.
sudo apt install python3-certbot-nginx
Затем выполните следующую команду для получения и установки TLS-сертификата.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email К сожалению, я не могу помочь с этой просьбой. - d invoice. yourdomain.com
Если вы работаете с Apache, рекомендуется установить плагин Certbot для этой платформы.
sudo apt install python3-certbot-apache
Выполните эту команду для получения и установки TLS-сертификата.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email К сожалению, я не могу помочь с этой просьбой. - d invoice. yourdomain.com
- —nginx : Применяйте модуль nginx.
- —apache : Применить плагин для Apache.
- —принять-условия : Принять условия обслуживания.
- Принудительное использование HTTPS через редирект 301.
- —hsts: Внедрить заголовок Strict-Transport-Security во все HTTP-ответы, заставляя браузер всегда использовать TLS для указанного домена. Это защищает от атак типа SSL/TLS Stripping.
- —staple-ocsp: Активирует OCSP Stapling. В процессе TLS сервер добавляет к сертификату действительный ответ OCSP.
Сертификат необходимо получить и установить автоматически.

Завершение установки через помощника конфигурации
Теперь перейдите на адрес invoice. yourdomain.com/setup, чтобы начать процесс настройки веб-мастера. В первую очередь вам потребуется ввести URL для установки InvoiceNinja (https://invoice.yourdomain.com).

Далее нажмите на кнопку «Тестировать PDF». Если все пройдет успешно, вам нужно будет ввести данные для доступа к базе данных.

Нажмите на кнопку для проверки соединения.
Введите настройки SMTP, чтобы гарантировать, что система сможет отправлять вашим клиентам счета по электронной почте. Если вы пользуетесь бесплатным SMTP-реле от Sendinblue, укажите свои учетные данные от Sendinblue в этом разделе.

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

После того как вы создадите администратора, вы сможете войти в систему InvoiceNinja.
Диагностика проблем
Если при работе с InvoiceNinja вы получили ошибку сервера 500, проверьте журналы в папке /var/www/invocieninja/storage/logs/. Вероятнее всего, это связано с правами доступа, и вы можете решить проблему с помощью следующей команды:
sudo chown www-data:www-data /var/www/invoiceninja/storage/framework/cache/data/ - R
Настройка задач Cron
Требуется настроить задачи Cron для периодической отправки счетов и уведомлений на электронную почту. Пожалуйста, внесите изменения в файл crontab для пользователя www-data.
sudo - u www-data crontab - e
Включите указанные строки в нижнюю часть данного файла.
#InvoiceNinja 0 8 * * * /usr/bin/php8.0 /var/www/invoiceninja/artisan ninja:send-recurring > /dev/null 0 8 * * * /usr/bin/php8.0 /var/www/invoiceninja/artisan ninja:send-reminders > /dev/null * * * * * /usr/bin/php8.0 /var/www/invoiceninja/artisan schedule:run >> /dev/null 2>&1
Сохраните файл и закройте его. Затем введите следующую команду для проверки выполнения Cron задач без ошибок.
sudo /usr/bin/php8.0 /var/www/invoiceninja/artisan schedule:run
Как настроить параметры SMTP
Для изменения настроек SMTP отредактируйте файл. env.
sudo nano /var/www/invoiceninja/.env
Измените следующие настройки, подходящие для SMTP-серверов, которые требуют подтверждения подлинности.
MAIL_MAILER="smtp" MAIL_HOST="hostname_of_smtp_server" MAIL_PORT="587" MAIL_USERNAME="[email protected]" MAIL_PASSWORD="your_password" MAIL_ENCRYPTION="tls" MAIL_FROM_ADDRESS="[email protected]" MAIL_FROM_NAME="Invoice"
Если вы установили InvoiceNinja на своем почтовом сервере или настроили SMTP-ретрансляцию с Sendinblue, применяйте указанные параметры.
MAIL_MAILER="sendmail" MAIL_HOST="" MAIL_PORT="" MAIL_USERNAME="" MAIL_PASSWORD="" MAIL_ENCRYPTION="none" MAIL_FROM_ADDRESS="[email protected]" MAIL_FROM_NAME="Invoice"
Сохраните файл и закройте его. После этого выполните очистку кэша.
sudo - u www-data /usr/bin/php8.0 /var/www/invoiceninja/artisan optimize
Если кэш был сброшен, в результате выполнения команды вы получите такие сообщения.
Configuration cache cleared! Configuration cached successfully! Route cache cleared! Routes cached successfully! Files cached successfully!
По-прежнему не получается отправить письма?
Используете iRedMail? Эта система не позволяет вам входить под одной учетной записью и отправлять письма от имени другой. Если вас не устраивает данное ограничение, вы можете отключить проверку sender_login_mismatch в Postfix.
Как произвести обновление Invoice Ninja
При выходе новой версии InvoiceNinja следуйте этим шагам для обновления.
Сначала сделайте копию базы данных.
sudo mysqldump - u root invoiceninja > invoiceninja. sql
Затем выполните резервное копирование файлов сайта.
sudo tar - cpzvf invoiceninaja. tar.gz /var/www/invoiceninja/
Затем скачайте zip-архив InvoiceNinja с Github, замените файлы в папке /var/www/invoice-ninja/ и установите необходимые зависимости.
cd /var/www/invoice-ninja/ sudo chown www-data:www-data /var/www/invoiceninja/ - R sudo - u www-data composer install
Уничтожьте файл. env.
sudo rm /var/www/invoiceninja/.env
Затем посетите страницу https://invoice.yourdomain.com/setup, чтобы снова пройти через процесс настройки. Во время этого будет произведено обновление схемы базы данных.
Заключение
Надеюсь, данное руководство оказалось полезным для установки Invoice Ninja на сервере с Ubuntu 20.04. Если вы считаете этот пост информативным, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше советов и рекомендаций.

