Установка InvoiceNinja на сервер с Ubuntu 20.04 и веб-серверами Apache или Nginx

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

Install-InvoiceNinja-on-Ubuntu-20.04-Server

Возможности 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.
Читайте также:  Как удалить файлы из репозитория Git, не удаляя локальные копии

Теперь приступим к установке 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.

Читайте также:  Как установить последнюю версию Node.js на CentOS/RHEL 8

Apache

Если вам больше по душе Apache, то следует создать файл виртуального хоста для Invoice Ninja.

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

Вставьте указанный текст в файл. Подмените текст, выделенный красным цветом, на ваши актуальные сведения. Не забудьте настроить A-запись для вашего доменного имени. Имейте в виду, что корневая папка веб-сервера расположена по адресу /var/www/invoice-ninja/public/, а не /var/www/invoice-ninja/.

ServerName invoice. yourdomain.comКорневой каталог документа: /var/www/invoiceninja/publicИндекс директории: index.php. Опции: +FollowSymLinks. Разрешения: All. Требуется доступ для всех.Ошибка журнала $/invoice-ninja. error.log. Журнал доступа $/invoice-ninja. access.log с объединённым форматом.

Сохраните изменения в файле и закройте его. После этого активируйте данный виртуальный хост.

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.

Сертификат необходимо получить и установить автоматически.

инвойс ниндзя на ubuntu 18.04

Завершение установки через помощника конфигурации

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

мастер настройки InvoiceNinja в веб-формате

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

подключение к базе данных MariaDB в InvoiceNinja

Нажмите на кнопку для проверки соединения.

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

Настройки SMTP для Invoice Ninja

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

В итоге, необходимо зарегистрировать учетную запись администратора.

административный аккаунт Invoice Ninja

После того как вы создадите администратора, вы сможете войти в систему 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. Если вы считаете этот пост информативным, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше советов и рекомендаций.