Nomploy Nomad Packs

← All packs

firefly-iii v0.1.0

Apps

Firefly III — a self-hosted personal finance manager: track accounts, budgets, bills, and categories with rich reports and a double-entry ledger. Deployed as an all-in-one host-networked Nomad job: a MariaDB sidecar plus the Firefly III app with an upload volume.

nomad-pack run firefly-iii --registry nomploy
3 tasks http 8080db 3306 3 volumes image fireflyiii/core:latest
Variables 16
values.hcl

Save as values.hcl, edit, then run:

nomad-pack run firefly-iii -f values.hcl --registry nomploy
# The name of the Nomad job.
job_name = "firefly-iii"

# The Nomad namespace to deploy into.
namespace = "default"

# The datacenters to deploy to.
datacenters = ["*"]

# The Firefly III container image. Pin a tag in production.
image = "fireflyiii/core:latest"

# The MariaDB image for the bundled database.
mariadb_image = "mariadb:11"

# Host port for the Firefly III web UI. The app's Apache listens on 8080; there is no env to change it, so keep this at 8080 (front with a reverse proxy for another port).
port = 8080

# Host port for the co-located MariaDB.
db_port = 3306

# Password for the Firefly III database user.
db_password = "firefly"

# Laravel APP_KEY — must be EXACTLY 32 characters. Generate a random one. CHANGE THIS.
app_key = "0123456789abcdef0123456789abcdef"

# Public URL Firefly III is served at (APP_URL). Empty = http://localhost:<port>.
app_url = ""

# UID the app runs as (www-data). The upload volume is chown'd to this at startup.
uid = 33

# Named volume for uploaded attachments (/var/www/html/storage/upload).
upload_volume = "firefly_upload"

# Named volume for MariaDB data (/var/lib/mysql). Holds all your financial data.
db_data_volume = "firefly_db_data"

# Placement constraints. Pin to the node holding the volumes. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []

# Resources for the Firefly III app task.
resources = {
    cpu    = 500
    memory = 512
  }

# Resources for the MariaDB task.
mariadb_resources = {
    cpu    = 300
    memory = 512
  }
NameTypeDefaultDescription
job_name string
"firefly-iii"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"fireflyiii/core:latest"
The Firefly III container image. Pin a tag in production.
mariadb_image string
"mariadb:11"
The MariaDB image for the bundled database.
port number
8080
Host port for the Firefly III web UI. The app's Apache listens on 8080; there is no env to change it, so keep this at 8080 (front with a reverse proxy for another port).
db_port number
3306
Host port for the co-located MariaDB.
db_password key string
"firefly"
Password for the Firefly III database user.
app_key key string
"0123456789abcdef0123456789abcdef"
Laravel APP_KEY — must be EXACTLY 32 characters. Generate a random one. CHANGE THIS.
app_url string
""
Public URL Firefly III is served at (APP_URL). Empty = http://localhost:<port>.
uid number
33
UID the app runs as (www-data). The upload volume is chown'd to this at startup.
upload_volume string
"firefly_upload"
Named volume for uploaded attachments (/var/www/html/storage/upload).
db_data_volume string
"firefly_db_data"
Named volume for MariaDB data (/var/lib/mysql). Holds all your financial data.
constraints list
[]
Placement constraints. Pin to the node holding the volumes. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 500
    memory = 512
  }
Resources for the Firefly III app task.
mariadb_resources object
{
    cpu    = 300
    memory = 512
  }
Resources for the MariaDB task.
Readme

firefly-iii

Firefly III — a self-hosted personal finance manager: track accounts, budgets, bills, and categories with rich reports and a double-entry ledger.

All-in-one host-networked Nomad job: a busybox chown init, a MariaDB prestart sidecar, and the Firefly III app.

Deploy

nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run firefly-iii --registry=nomploy

Configure

Variable Default Description
port 8080 Web UI port (fixed — see note).
db_port 3306 Co-located MariaDB port.
db_password firefly Database password.
app_key 32-char placeholder Laravel APP_KEYmust be exactly 32 chars; change it.
app_url "" APP_URL; empty = http://localhost:<port>.
uid 33 User the app runs as (www-data); upload volume chown'd to it.
upload_volume / db_data_volume named volumes Uploads / MariaDB data.
resources / mariadb_resources see defaults Per-task resources.

app_key must be exactly 32 characters. The app's Apache binds 8080 with no env to change it — front it with a reverse proxy (or the nginx-proxy-manager/caddy pack) to serve on another port/domain (8080 overlaps several packs). Pin the job to the node holding the volumes with constraints.