Перейти к содержанию

Обзор развертывания 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

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

  1. Клонирование репозитория в /opt/akaunting.

  2. Создание файлов конфигурации окружения (db.env и run.env).

  3. Инициализация контейнеров Docker через docker-compose up --detach.

  4. Настройка Nginx в качестве обратного прокси-сервера.

  5. Получение SSL-сертификатов с помощью Certbot.

  6. Обновление конфигурации приложения для работы в производственном режиме (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:

    docker-compose up --detach
    

  • Перезапуск контейнеров Akaunting:

    docker-compose restart akaunting
    

  • Запуск Nginx:

    systemctl start nginx
    

  • Перезагрузка конфигурации Nginx:

    systemctl reload nginx
    

  • Включение Nginx при загрузке системы:

    systemctl enable nginx
    

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×