Welcome to the Firefly III Quickstart Docker Image repository! This custom Docker image is optimized to simplify and accelerate the deployment of Firefly III, the free and open-source personal finance manager. This image automates much of the setup process, allowing users to get Firefly III up and running with minimal manual configuration.
- Automated Environment Setup: Automatically fetches and configures .env and .db.env files from official sources to ensure your environment is correctly set up.
- Simplified Configuration: Pre-configured with essential settings to start the application, only requiring minimal adjustments for personalization.
- Docker Compose Support: Includes a Docker Compose file for easy deployment and management of services related to Firefly III.
docker pull nicxx2/fireflyiii-quickstart
Run with Docker Compose
Use the Docker Compose from the repository, make any necessary adjustments to the environment variables, and start your services:
docker-compose up -d
This command will set up Firefly III along with its necessary services like database and scheduled tasks.
Access Firefly III
Open your web browser and access Firefly III at http://localhost:8081.
Modify the provided Docker Compose file to customize the environment variables as per your requirements. Essential variables include:
APP_KEY: Your unique application key for Laravel.
MYSQL_RANDOM_ROOT_PASSWORD: Set to yes for enhanced security.
MYSQL_USER, MYSQL_PASSWORD: Database credentials.
STATIC_CRON_TOKEN: Security token for scheduled tasks.
Link to Docker Hub: https://hub.docker.com/r/nicxx2/fireflyiii-quickstart
version: '3.3'
services:
app:
image: nicxx2/fireflyiii-quickstart:latest # Use the Docker Hub image
container_name: firefly_iii_core
restart: always
volumes:
- /Data/firefly_iii/upload:/var/www/html/storage/upload # Persistent volume for uploads
- /Data/firefly_iii/export:/var/www/html/storage/export # Persistent volume for exports
networks:
- firefly_network
ports:
- "8081:8080" # Maps port 8080 inside the container to port 8081 on the host
depends_on:
- db
environment:
- APP_KEY=aaadd7f048dcb455a863144ccd44bc27
- MYSQL_RANDOM_ROOT_PASSWORD=yes
- MYSQL_USER=firefly
- MYSQL_PASSWORD=secret_firefly_password
- MYSQL_DATABASE=firefly
- STATIC_CRON_TOKEN=aaadd7f048dcb455a863144ccd44bc2d
db:
image: mariadb:lts
container_name: firefly_iii_db
restart: always
volumes:
- /Data/firefly_iii/db:/var/lib/mysql # Persistent volume for database
networks:
- firefly_network
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=yes
- MYSQL_USER=firefly
- MYSQL_PASSWORD=secret_firefly_password
- MYSQL_DATABASE=firefly
cron:
image: alpine
restart: always
container_name: firefly_iii_cron
command: >-
/bin/sh -c "echo '0 3 * * * wget -qO- http://app:8081/api/v1/cron/$STATIC_CRON_TOKEN' | crontab - && crond -f -L /dev/stdout"
networks:
- firefly_network
depends_on:
- app
environment:
- STATIC_CRON_TOKEN=aaadd7f048dcb455a863144ccd44bc2d
networks:
firefly_network:
driver: bridge
If you need to include the data_importer alongside Firefly III in your setup, the Docker Compose file provided below will help you configure and run both services. This setup ensures that all components are properly networked and configured to communicate with each other within Docker.
version: '3.3'
services:
app:
image: nicxx2/fireflyiii-quickstart:latest # Use the Docker Hub image
container_name: firefly_iii_core
restart: always
volumes:
- /Data/firefly_iii/upload:/var/www/html/storage/upload # Persistent volume for uploads
- /Data/firefly_iii/export:/var/www/html/storage/export # Persistent volume for exports
networks:
- firefly_network
ports:
- "8081:8080" # Maps port 8080 inside the container to port 8081 on the host
depends_on:
- db
environment:
- APP_KEY=aaadd7f048dcb455a863144ccd44bc27
- MYSQL_RANDOM_ROOT_PASSWORD=yes
- MYSQL_USER=firefly
- MYSQL_PASSWORD=secret_firefly_password
- MYSQL_DATABASE=firefly
- STATIC_CRON_TOKEN=aaadd7f048dcb455a863144ccd44bc2d
db:
image: mariadb:lts
container_name: firefly_iii_db
restart: always
volumes:
- /Data/firefly_iii/db:/var/lib/mysql # Persistent volume for database
networks:
- firefly_network
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=yes
- MYSQL_USER=firefly
- MYSQL_PASSWORD=secret_firefly_password
- MYSQL_DATABASE=firefly
cron:
image: alpine
restart: always
container_name: firefly_iii_cron
command: >-
/bin/sh -c "echo '0 3 * * * wget -qO- http://app:8081/api/v1/cron/$STATIC_CRON_TOKEN' | crontab - && crond -f -L /dev/stdout"
networks:
- firefly_network
depends_on:
- app
environment:
- STATIC_CRON_TOKEN=aaadd7f048dcb455a863144ccd44bc2d
data-importer:
image: fireflyiii/data-importer:version-1.4.5
container_name: firefly_iii_data_importer
ports:
- "8082:8080"
environment:
FIREFLY_III_ACCESS_TOKEN: "your_ACCESS_TOKEN"
FIREFLY_III_URL: "http://app:8080"
NORDIGEN_ID: "your_nordigen_id_here"
NORDIGEN_KEY: "your_nordigen_key_here"
SPECTRE_APP_ID: "your_spectre_app_id_here"
SPECTRE_SECRET: "your_spectre_secret_here"
networks:
- firefly_network
depends_on:
- app
restart: always
networks:
firefly_network:
driver: bridge
To use the Firefly III Data Importer, you must first have a running instance of Firefly III. The data importer needs to connect to Firefly III using a Personal Access Token, which provides secure access to your Firefly III data. Follow these steps to set up and configure the data importer correctly.
- Running Firefly III Instance: Ensure that your Firefly III instance is up and running and accessible at the URL you intend to use in the Docker Compose configuration.
- Log in to your Firefly III instance.
- Navigate to Options > OAuth > Personal Access Tokens.
- Create a New Token: Provide a descriptive name for the token to remember its use, like "Data Importer Access."
- Copy and Store the Token: The token will be displayed only once. Copy it and store it securely.
Once you have your Personal Access Token, update the Docker Compose configuration to include this token for the data-importer
service.
data-importer:
environment:
FIREFLY_III_ACCESS_TOKEN: "paste_your_token_here"