Установка Firefly III на Alma Linux 9 через Podman

Установка Firefly III на Alma Linux 9 через Podman

Современный подход к управлению личными финансами

В эпоху, когда Docker стал стандартом для контейнеризации, Red Hat и сообщество Alma Linux предлагают современную альтернативу — Podman. В отличие от Docker, Podman не требует запущенного демона, работает с rootless контейнерами «из коробки» и имеет встроенную интеграцию с systemd. Alma Linux 9 — один из первых дистрибутивов, где Podman полностью интегрирован в систему, что делает его идеальным выбором для развертывания веб-сервисов без лишних телодвижений.

Что такое Firefly III?

Firefly III — это мощный и красивый менеджер личных финансов с открытым исходным кодом. Он позволяет:

  • Вести учет доходов и расходов
  • Создавать бюджеты и категории
  • Анализировать финансовые потоки через графики и отчеты
  • Импортировать операции из банковских файлов
  • Сохранять финансовую приватность (ваши данные остаются только у вас)

Подготовка системы

Подключитесь к вашему VPS с Alma Linux 9 и обновите систему:

sudo dnf update -y

Установите Podman (если не установлен по умолчанию):

sudo dnf install podman -y

Проверьте версию Podman:

podman --version

Создание сети для контейнеров

Создадим изолированную сеть для контейнеров:

podman network create firefly-network

Установка базы данных PostgreSQL

Запускаем контейнер с PostgreSQL. При первом запуске Podman предложит выбрать источник образа — выберите docker.io/library/postgres:15:

podman run -d \
  --name firefly-db \
  --network firefly-network \
  -e POSTGRES_USER=firefly \
  -e POSTGRES_PASSWORD=your_secure_password_here \
  -e POSTGRES_DB=firefly \
  -v firefly-db-data:/var/lib/postgresql/data \
  postgres:15

Установка Firefly III

Запускаем основной контейнер Firefly III. При первом запуске выберите docker.io/fireflyiii/core:latest:

podman run -d \
  --name firefly-app \
  --network firefly-network \
  -p 8080:8080 \
  -e DB_CONNECTION=pgsql \
  -e DB_HOST=firefly-db \
  -e DB_PORT=5432 \
  -e DB_DATABASE=firefly \
  -e DB_USERNAME=firefly \
  -e DB_PASSWORD=your_secure_password_here \
  -e APP_KEY=SomeRandomStringOf32CharsExactly \
  -e APP_ENV=local \
  -e APP_DEBUG=false \
  -v firefly-storage:/var/www/html/storage/upload \
  fireflyiii/core:latest

Генерация уникального APP_KEY

APP_KEY — это ключ шифрования Laravel, используемый Firefly III. Он должен быть уникальным для каждой установки. Можно сгенерировать через OpenSSL:

openssl rand -base64 32

Проверка работы контейнеров

# Просмотр запущенных контейнеров
podman ps

# Просмотр логов приложения (если есть ошибки)
podman logs firefly-app

Настройка автозапуска через systemd

Сгенерируем systemd unit файлы для контейнеров:

# Генерируем unit файлы для базы данных
podman generate systemd --new --files --name firefly-db

# Генерируем unit файлы для приложения
podman generate systemd --new --files --name firefly-app

Скопируем созданные файлы в системную директорию:

sudo cp container-firefly-db.service /etc/systemd/system/
sudo cp container-firefly-app.service /etc/systemd/system/

Перезагрузим systemd и включим автозапуск:

sudo systemctl daemon-reload
sudo systemctl enable container-firefly-db.service
sudo systemctl enable container-firefly-app.service

Запустим сервисы:

sudo systemctl start container-firefly-db.service
sudo systemctl start container-firefly-app.service

Проверим статус:

sudo systemctl status container-firefly-db.service
sudo systemctl status container-firefly-app.service

Первоначальная настройка Firefly III

Откройте в браузере адрес вашего сервера с портом 8080:

http://ваш_IP:8080

Пройдите первоначальную настройку:

  1. Выберите язык
  2. Укажите валюту по умолчанию
  3. Создайте первого пользователя
  4. Настройте почтовые параметры (опционально)

Настройка обратного прокси через Nginx

Для использования стандартного порта 80 установим и настроим Nginx:

# Устанавливаем Nginx
sudo dnf install nginx -y

# Запускаем и включаем автозапуск
sudo systemctl enable --now nginx

# Проверяем статус
sudo systemctl status nginx

По умолчанию в Alma Linux 9 может быть активен брандмауэр firewalld, который блокирует входящие соединения. Необходимо разрешить трафик HTTP (порт 80):

# Открываем порт 80 (HTTP) в firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload # Применяем изменения

# Проверяем, что правило добавлено
sudo firewall-cmd --list-all

В выводе команды firewall-cmd --list-all в списке services теперь должен появиться http.

Создайте файл конфигурации /etc/nginx/conf.d/firefly.conf:

server {
    listen 80;
    server_name firefly.icelake.ru; # Замените на ваш домен

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout 300;
    }
}

Важно: Замените firefly.icelake.ru в директиве server_name на ваш реальный домен.

Перезагрузите Nginx:

# Проверяем конфигурацию
sudo nginx -t

# Перезагружаем Nginx
sudo systemctl reload nginx

Управление системой

Для управления контейнерами используйте стандартные команды:

# Просмотр запущенных контейнеров
podman ps

# Просмотр всех контейнеров (включая остановленные)
podman ps -a

# Просмотр логов
podman logs firefly-app

# Остановка/запуск сервисов через systemd
sudo systemctl stop firefly-app.service
sudo systemctl start firefly-app.service

# Перезапуск сервисов
sudo systemctl restart firefly-app.service

Преимущества такого подхода

  1. Безопасность: Rootless контейнеры снижают риски безопасности
  2. Надежность: systemd обеспечивает автоматический перезапуск сервисов
  3. Простота управления: Все контейнеры управляются через стандартные systemd команды
  4. Интеграция: Полная интеграция с SELinux и другими механизмами безопасности Alma Linux

Заключение

Alma Linux 9 с Podman предлагает современный и безопасный способ развертывания веб-приложений без необходимости установки Docker. Firefly III — отличный пример приложения, которое можно легко установить и управлять им как полноценным системным сервисом.

Этот подход идеально подходит для тех, кто ценит:

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

Теперь у вас есть мощный инструмент для управления личными финансами, работающий на современной и безопасной платформе Alma Linux 9.

© 2025 BigGratz.ru