Обзор развертывания Akaunting на сервере¶
Предварительные требования и минимальные системные требования¶
Перед развертыванием Akaunting убедитесь, что сервер соответствует следующим требованиям:
-
Операционная система: Дистрибутив Linux, совместимый с менеджером пакетов APT (например, Ubuntu, Debian).
-
Права доступа: Доступ root или sudo для выполнения команд.
-
Настройка домена: Доменное имя, указывающее на IP-адрес сервера.
-
Порты: Порты 80 (HTTP), 443 (HTTPS) и 22 (SSH) должны быть доступны.
-
Docker Engine: Необходим для запуска контейнеров Akaunting.
-
Nginx: Используется в качестве обратного прокси-сервера (reverse proxy) и терминала SSL.
-
Certbot: Необходим для получения и управления SSL-сертификатами.
FQDN конечной панели¶
Полное доменное имя (FQDN) для доступа к панели Akaunting имеет следующий формат:
akaunting<Server ID>.hostkey.in
Приложение доступно через HTTPS на порту 443 и перенаправляет весь HTTP-трафик на порту 80.
Структура файлов и каталогов¶
Файлы приложения, конфигурации и данные организованы следующим образом:
-
Каталог установки:
/opt/akaunting -
Файл окружения базы данных:
/opt/akaunting/env/db.env -
Файл окружения приложения:
/opt/akaunting/env/run.env -
Конфигурация Nginx:
/etc/nginx/sites-available/akaunting -
Каталоги Certbot:
-
Конфигурация:
/opt/akaunting/data/certbot/conf -
Webroot:
/opt/akaunting/data/certbot/www -
SSL-сертификаты:
/etc/letsencrypt/live/akaunting<Server ID>.hostkey.in/
Процесс установки приложения¶
Akaunting развертывается с использованием Docker Compose из официального репозитория:
-
Репозиторий:
https://github.com/akaunting/docker.git -
Путь установки:
/opt/akaunting -
Версия PHP:
8.3
Процесс развертывания включает следующие шаги:
-
Клонирование репозитория в
/opt/akaunting. -
Создание файлов конфигурации окружения (
db.envиrun.env). -
Инициализация контейнеров Docker через
docker-compose up --detach. -
Настройка Nginx в качестве обратного прокси-сервера.
-
Получение SSL-сертификатов с помощью Certbot.
-
Обновление конфигурации приложения для работы в производственном режиме (production mode) с поддержкой HTTPS.
Права доступа и безопасность¶
Межсетевой экран (firewall) настроен с использованием UFW (Uncomplicated Firewall) для ограничения доступа только к необходимым портам:
-
Порт 22 (SSH): Разрешен для административного доступа.
-
Порт 80 (HTTP): Разрешен для временного доступа в процессе настройки SSL и перенаправления.
-
Порт 443 (HTTPS): Разрешен для безопасного веб-трафика.
Межсетевой экран включен и по умолчанию блокирует все остальные входящие подключения.
Базы данных¶
Akaunting использует внутреннюю базу данных MySQL, управляемую в среде Docker:
-
Имя базы данных:
akaunting -
Пользователь базы данных:
admin -
Хост базы данных:
akaunting-db -
Порт базы данных:
3306 -
Префикс базы данных:
asd_
Доступ к базе данных возможен только через внутреннюю сеть Docker. Прямой внешний доступ не настроен.
Контейнеры Docker и их развертывание¶
Приложение работает в виде набора контейнеров Docker, оркеструемых через Docker Compose:
-
Команда запуска:
docker-compose up --detach, расположенная в/opt/akaunting. -
Команда перезапуска:
docker-compose restart akaunting, используется после обновления конфигурации. -
Имена контейнеров: Управляются автоматически файлом Compose, при этом основное сервисное имя —
akaunting.
Процесс развертывания ожидает 30 секунд после запуска сервисов и проверяет доступность на порту 8080 перед переходом к следующим шагам.
Прокси-серверы¶
Nginx настроен в качестве обратного прокси-сервера для обработки входящего веб-трафика и терминации SSL:
-
HTTP-сервер (Порт 80):
-
Слушает порт 80.
-
Обрабатывает запросы на проверку ACME для Let's Encrypt через каталог
/.well-known/acme-challenge/. -
Перенаправляет весь трафик на HTTPS (перенаправление 301).
-
HTTPS-сервер (Порт 443):
-
Слушает порт 443 с включенным SSL.
-
Использует сертификаты, расположенные по путям
/etc/letsencrypt/live/<domain>/fullchain.pemиprivkey.pem. -
Проксирует запросы на
http://127.0.0.1:8080(внутренний контейнер Akaunting). -
Устанавливает заголовки
Host,X-Real-IP,X-Forwarded-For,X-Forwarded-ProtoиX-Forwarded-Host. -
Certbot:
-
Устанавливается через APT с пакетом
python3-certbot-nginx. -
Сертификаты получают в неинтерактивном режиме с использованием плагина Nginx.
Настройки прав доступа¶
К развернутым компонентам применяются следующие настройки прав доступа:
-
Файлы конфигурации Nginx: Режим
0644, владелецroot:root. -
Каталоги Certbot: Владелец
root:root. -
Файлы окружения приложения: Владелец — пользователь, выполняющий развертывание (обычно
root). -
SSL-сертификаты: Управляются Certbot с ограниченным разрешением на чтение для Nginx.
Расположение файлов конфигурации и данных¶
Основные файлы конфигурации находятся в следующих местах:
| Путь к файлу | Описание |
|---|---|
/opt/akaunting/env/db.env | Учетные данные для базы данных MySQL в контейнере. |
/opt/akaunting/env/run.env | Параметры запуска приложения, включая URL и флаги отладки. |
/etc/nginx/sites-available/akaunting | Конфигурация блока сервера Nginx. |
/etc/letsencrypt/live/<domain>/ | Файлы SSL-сертификатов Let's Encrypt. |
Доступные порты для подключения¶
Сервер открывает следующие порты для внешнего доступа:
-
22: SSH (Административный доступ).
-
80: HTTP (Перенаправление на HTTPS).
-
443: HTTPS (Безопасный веб-доступ к Akaunting).
-
8080: Внутренний сервис Akaunting (доступен только через прокси Nginx).
Запуск, остановка и обновление¶
Управление службами осуществляется через Docker Compose и службы systemd Nginx:
-
Запуск контейнеров Akaunting:
-
Перезапуск контейнеров Akaunting:
-
Запуск Nginx:
-
Перезагрузка конфигурации Nginx:
-
Включение Nginx при загрузке системы: