Перейти к основному контенту

📊 Развертывание Firefly III для семейного бюджета

Руководство по установке полностью автономной, приватной системы учета семейных финансов Firefly III на сервере Debian с помощью Docker Compose. Все данные хранятся локально в папке проекта, что гарантирует конфиденциальность и максимально упрощает резервное копирование.


🚀 Быстрый запуск

  1. Создайте на сервере директорию для проекта и перейдите в неё:

    mkdir -p ~/firefly-iii && cd ~/firefly-iii
  2. Создайте две подпапки для базы данных и загрузок:

    mkdir -p db_data uploads
  3. Сгенерируйте уникальный ключ шифрования длиной 32 символа:

    head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32
  4. Создайте файл docker-compose.yml, вставьте в него код ниже, заменив APP_KEY на сгенерированный ключ, а также указав свои надежные пароли.


📄 Файл конфигурации: docker-compose.yml

# ==============================================================================
# СЕМЕЙНЫЙ БЮДЖЕТ: FIREFLY III С ЛОКАЛЬНЫМ ХРАНЕНИЕМ ДАННЫХ И РУССКОЙ ЛОКАЛИЗАЦИЕЙ
# ==============================================================================
version: '3.3'

services:
  # --- База данных MariaDB ---
  firefly_db:
    image: mariadb:10
    container_name: firefly_iii_db
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=yes
      - MYSQL_USER=firefly
      # !!! ОБЯЗАТЕЛЬНО замените этот пароль на свой собственный !!!
      # Он должен полностью совпадать с переменной DB_PASSWORD в блоке приложения ниже.
      - MYSQL_PASSWORD=super_secret_db_pass_123
      - MYSQL_DATABASE=firefly
    volumes:
      # Локальное хранение: база данных сохраняется в папку ./db_data прямо внутри вашей папки firefly-iii.
      # Это делает проект переносимым — достаточно скопировать родительскую папку для бэкапа.
      - ./db_data:/var/lib/mysql
    restart: always

  # --- Основное приложение Firefly III ---
  firefly_app:
    image: fireflyiii/core:latest
    container_name: firefly_iii_app
    ports:
      # Порт, на котором будет доступен веб-интерфейс (http://IP_сервера:8080)
      # Вы можете изменить внешний порт 8080 на любой свободный в вашей системе.
      - "8080:8080"
    environment:
      # Ключ шифрования. Должен быть СТРОГО длиной 32 символа (только буквы и цифры).
      # Вставьте сюда ключ, сгенерированный на шаге 3.
      - APP_KEY=32_character_random_string_here!!!
      
      # Настройки окружения (production отключает вывод лишних отладочных логов)
      - APP_ENV=production
      - APP_DEBUG=false
      
      # Настройки подключения к базе данных
      - DB_CONNECTION=mysql
      - DB_HOST=firefly_db
      - DB_PORT=3306
      - DB_DATABASE=firefly
      - DB_USERNAME=firefly
      # Должен строго совпадать с паролем MYSQL_PASSWORD из блока базы данных выше.
      - DB_PASSWORD=super_secret_db_pass_123
      
      # --- РУССКАЯ ЛОКАЛИЗАЦИЯ И ВРЕМЕННАЯ ЗОНА ---
      # TZ задает системное время. По умолчанию установлен часовой пояс Екатеринбурга (+5 UTC).
      - TZ=Asia/Yekaterinburg
      - DEFAULT_LANGUAGE=ru_RU
      - DEFAULT_LOCALE=ru_RU
      
      # Настройка регистрации.
      # true позволяет зарегистрировать первый (совместный семейный) аккаунт.
      # БЕЗОПАСНОСТЬ: После создания профиля рекомендуется изменить это значение на false
      # и обновить контейнеры (docker compose up -d), чтобы закрыть регистрацию для посторонних.
      - ALLOW_REGISTRATION=true
      
    volumes:
      # Локальное хранение: загруженные чеки, сканы и файлы будут сохраняться в подпапку ./uploads.
      - ./uploads:/var/www/html/storage/upload
    restart: always
    # Гарантирует, что контейнер приложения не начнет запуск раньше, чем поднимется контейнер базы данных
    depends_on:
      - firefly_db

⚙️ Запуск и обслуживание

  • Запуск контейнеров в фоновом режиме:

    docker compose up -d

    (Флаг -d запускает процесс в фоне, позволяя закрыть терминал без остановки сервера).

  • Просмотр логов (если что-то пошло не так):

    docker compose logs -f
  • Остановка сервиса:

    docker compose down

💾 Резервное копирование и перенос

Поскольку в конфигурации используются относительные пути (./db_data и ./uploads), вся база данных, файлы, чеки и настройки лежат «в одном месте» — в папке ~/firefly-iii.

Для создания полной резервной копии или переноса на другой диск/сервер:

Все данные, включая учетную запись и историю трат, восстановятся в первозданном виде автоматически!