Установка InvoicePlane на Debian 11 с Apache и Let's Encrypt
Кратко: пошаговый гид по установке самохостинга InvoicePlane на Debian 11 с Apache, MariaDB и автоматической выдачей SSL через Let’s Encrypt. Включены настройки PHP, создание базы данных, виртуальный хост Apache, права файлов и рекомендации по безопасности.
Важное: все команды выполняйте от пользователя с правами root или через sudo. Замените example-домены и пароли на реальные значения перед применением.

Логотип и стартовый экран InvoicePlane
О чём эта инструкция
Этот материал описывает установку InvoicePlane — бесплатного open-source приложения для выставления счётов, работы с клиентами и оплатами — на сервер Debian 11 с веб-сервером Apache. Покрываются подготовка сервера, установка зависимостей, создание базы данных, развертывание кода, настройка виртуального хоста, получение сертификата Let’s Encrypt и базовые рекомендации по безопасности и сопровождению.
Предварительные условия
- Сервер с Debian 11 и доступом root или sudo.
- Доменное имя, указывающее на IP сервера (например invoice.example.com).
- Рабочее подключение к интернету для загрузки пакетов и сертификатов.
Установка Apache, PHP и MariaDB
Сначала установите Apache, MariaDB, PHP и необходимые PHP-расширения:
apt-get install apache2 mariadb-server php libapache2-mod-php php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-intl php-mysql wget unzip php-cli php-zip php-curl -yПосле установки отредактируйте PHP-конфигурацию для Apache:
nano /etc/php/7.4/apache2/php.iniИзмените и/или добавьте следующие параметры, чтобы обеспечить стабильную работу установки и импорт больших файлов:
memory_limit = 256M
upload_max_filesize = 128M
max_execution_time = 360
date.timezone = UTCСохраните изменения и перезапустите Apache:
systemctl restart apache2Создание базы данных для InvoicePlane
Надёжно настройте MariaDB и создайте базу данных и пользователя для InvoicePlane.
Запустите скрипт безопасной настройки MariaDB:
mysql_secure_installationОтветьте на вопросы по безопасности (установите пароль root, удалите анонимных пользователей, запретите удалённый вход root и т.д.).
Подключитесь к MariaDB:
mysql -u root -pВнутри MySQL создайте базу и пользователя (замените пароль на надёжный):
MariaDB [(none)]> CREATE DATABASE invplanedb;
MariaDB [(none)]> CREATE USER 'invplane'@'localhost' IDENTIFIED BY 'password';Предоставьте привилегии и обновите таблицы привилегий:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON invplanedb.* TO 'invplane'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXITУстановка InvoicePlane
Скачайте официальный релиз InvoicePlane и распакуйте его в корневую папку веб-сервера:
wget -c -O v1.5.11.zip https://invoiceplane.com/download/v1.5.11Создайте каталог приложения и распакуйте архив:
mkdir /var/www/html/invoiceplane
unzip v1.5.11.zip -d /var/www/html/invoiceplaneПерейдите в папку приложения и создайте рабочую конфигурацию из примера:
cd /var/www/html/invoiceplane
cp ipconfig.php.example ipconfig.php
cp htaccess .htaccessОткройте ipconfig.php и укажите URL сайта и параметры базы данных (вставьте ваши значения):
nano ipconfig.phpПример блоков в ipconfig.php:
IP_URL=http://invoice.example.com
DB_HOSTNAME=localhost
DB_USERNAME=invplane
DB_PASSWORD=password
DB_DATABASE=invplanedb
DB_PORT=3306Назначьте корректные владельца и права для каталога приложения:
chown -R www-data:www-data /var/www/html/invoiceplane/
chmod -R 755 /var/www/html/invoiceplane/Важно: права 755 и владелец www-data — безопасность и совместимость с Apache.
Настройка Apache для InvoicePlane
Создайте виртуальный хост Apache для вашего домена:
nano /etc/apache2/sites-available/invoiceplane.confДобавьте конфигурацию виртуального хоста:
ServerAdmin [email protected]
DocumentRoot /var/www/html/invoiceplane
ServerName invoice.example.com
Options +FollowSymlinks
AllowOverride All
Require all granted
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Активируйте сайт и модуль перезаписи URL, затем перезапустите Apache:
a2ensite invoiceplane.conf
a2enmod rewrite
systemctl restart apache2Проверьте статус службы:
systemctl status apache2Пример ожидаемого состояния — служба active (running).
Доступ к веб-интерфейсу InvoicePlane
Откройте браузер и перейдите по URL, указанному в IP_URL (например http://invoice.example.com). Вы увидите страницу установки InvoicePlane.

Экран установщика InvoicePlane
Нажмите кнопку «Setup» для начала установки.

Выберите язык и нажмите «Continue». Инсталлятор проверит предварительные требования:

Если все в порядке — продолжите к вводу данных базы данных:

Инсталлятор создаст таблицы и учетную запись администратора:



После заполнения данных установщик завершит процесс:

Нажмите «Login», введите логин и пароль администратора и вы попадёте в панель управления:


Защита сайта с помощью Let’s Encrypt SSL
Установите Certbot для автоматического получения сертификата через плагин для Apache:
apt-get install python3-certbot-apache -yЗапустите Certbot и следуйте подсказкам для получения сертификата для вашего домена:
certbot --apache -d invoice.example.comВ процессе потребуется указать email и принять условия обслуживания. После успешной выдачи сертификата Certbot предложит опцию перенаправления HTTP на HTTPS — выберите перенаправление для новых сайтов.
Пример вывода Certbot и важные пути сохранения сертификатов находятся в стандартном выводе (полный путь и параметры отображаются в колонке Certbot после выполнения команды).
Безопасность и усиление (Security hardening)
Рекомендации для повышенной безопасности production-развертывания:
- Обновляйте систему и пакеты: apt update && apt upgrade регулярно.
- Ограничьте доступ к SSH: используйте ключи, запретите root-парольный вход и смените порт при необходимости.
- Настройте файрволл (ufw или iptables): откройте только 80/443 и SSH.
- Резервное копирование: регулярно экспортируйте дамп БД и архивируйте каталог /var/www/html/invoiceplane.
- Ограничьте доступ к phpinfo и к конфигурационным файлам через .htaccess или конфигурацию Apache.
- Настройте автоматическое обновление SSL сертификатов: certbot renew и системный cron/systemd таймер.
- Используйте строгие права: файлы не должны быть доступными для записи пользователям, отличным от www-data.
Чек-лист по ролям при развертывании
Системный администратор
- Настроил бэкапы, firewall и обновления.
- Проверил права файлов и владельцев.
- Настроил мониторинг и алерты для Apache и MariaDB.
Девопс/инженер релизов
- Подготовил CI/скрипты для выкатывания новых версий.
- Тестировал миграции и откаты.
Администратор приложения
- Настроил админ-учётную запись и политики паролей.
- Настроил провайдеры платежей и шаблоны документов.
Метод развёртывания — краткая методология
- Подготовка сервера и бэкапа конфигураций.
- Установка стека (Apache, PHP, MariaDB).
- Развёртывание кода и назначение прав.
- Настройка виртуального хоста и тест HTTP.
- Получение SSL и принудительное HTTPS.
- Тестирование функционала (создание счёта, импорт/экспорт).
- Внедрение мониторинга и бэкапов.
Технические заметки и отладка
- Проблемы с правами: если встречаете 500 ошибку — проверьте логи Apache (/var/log/apache2/error.log) и права в /var/www/html/invoiceplane.
- Ошибки подключения к БД: проверьте ipconfig.php и выполните mysql -u invplane -p -h localhost invplanedb.
- Модуль rewrite не работает: убедитесь, что AllowOverride All включён в конфиге
и a2enmod rewrite выполнен. - Проблемы с файлами .htaccess: в некоторых случаях лучше перенести правила в конфигурацию виртуального хоста.
Критерии приёмки
- Страница входа доступна по HTTPS без предупреждений.
- Инсталлятор успешно прошёл все проверки и создал структуру БД.
- Администратор может войти и создать тестовый счёт.
- Резервная копия БД выполнена и восстановление протестировано.
Быстрый справочник и факты
- Требования: Debian 11, Apache 2.4, PHP 7.4+, MariaDB 10.x.
- Рекомендуемые PHP-настройки: memory_limit=256M, upload_max_filesize=128M, max_execution_time=360.
- Владелец веб-файлов: www-data.
Глоссарий в одну строку
- InvoicePlane — приложение для выставления счётов и управления клиентами.
- Certbot — клиент для получения бесплатных SSL-сертификатов Let’s Encrypt.
- VirtualHost — конфигурация Apache для привязки домена к каталогу сайта.
Частые ошибки и когда это не сработает
- Если DNS не указывает на сервер — сайт и Certbot не будут работать.
- Если порт 80 блокируется провайдером — Certbot не сможет пройти http-01 challenge; используйте DNS-валидацию.
- На сильно ограничённых хостингах с нетипичным окружением (отсутствуют нужные модули PHP) возможны несовместимости.
Заключение
Поздравляем — вы установили InvoicePlane на Debian 11 с Apache и настроили HTTPS через Let’s Encrypt. Дальше: настройте шаблоны, интеграции с платёжными шлюзами и организуйте резервное копирование и мониторинг для надёжной эксплуатации.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента