Skip to content

Configuration

Financer is configured through environment variables. These can be set directly in docker-compose.yml, in a .env file, or passed to the container at runtime.

Environment Variables

Application

VariableDescriptionDefaultRequired
APP_ORIGINPublic URL of the application. Used for generating links in emails and for CORS configuration.http://localhost:3000Yes (for production)
SESSION_SECRET_KEYSecret key used to encrypt session data. Must be a random, unique string.Yes
LOG_LEVELControls the verbosity of application logs. Accepted values: DEBUG, INFO, WARNING, ERROR.WARNINGNo
DEMO_DATAWhen set to true, seeds the database with sample data on first startup. Useful for exploring the application. Set to false for production use.falseNo
NODE_ENVNode.js environment mode. Should be production for deployments.productionNo
PORTThe port the application listens on inside the container.3000No

Database

VariableDescriptionDefaultRequired
DATABASE_URLMySQL connection string in the format mysql://user:password@host:port/database.Yes

When using the provided Docker Compose setup, this is constructed from the MySQL service configuration. Example:

mysql://financer:your-password@financer-db:3306/financer

Redis

VariableDescriptionDefaultRequired
REDIS_URLRedis connection string. Used for session storage and the background job queue.Yes

Example:

redis://financer-redis:6379

MySQL Service

These variables configure the MySQL container (not the Financer application directly):

VariableDescriptionDefaultRequired
MYSQL_ROOT_PASSWORDRoot password for the MySQL server.Yes
MYSQL_DATABASEName of the database to create on first startup.financerNo
MYSQL_USERApplication database user.financerNo
MYSQL_PASSWORDPassword for the application database user.Yes

Admin Settings

In addition to environment variables, Financer has an Admin Settings panel accessible to system administrators through the web interface. These settings are stored in the database and can be changed at runtime without restarting the application.

SMTP / Email

SettingDescriptionDefault
SMTP HostHostname of the SMTP server
SMTP PortPort of the SMTP server
SMTP UserUsername for SMTP authentication
SMTP PasswordPassword for SMTP authentication
SMTP From EmailSender email address
SMTP From NameSender display name
SMTP EncryptionEncryption method (e.g., TLS, STARTTLS)

Configuring SMTP enables email features such as password reset links and member invitations.

Registration

SettingDescriptionDefault
Allow RegistrationWhether new users can register without an invitationtrue

When disabled, new users can only join through invitation links.

Security

SettingDescriptionDefault
Invitation Token ExpirationHours until an invitation link expires72 (3 days)
Reset Password Token ExpirationHours until a password reset link expires4

Household

SettingDescriptionDefault
Allow Household Admins to Invite UsersWhether household admins (not just owners) can invite new users to the systemtrue

Defaults

SettingDescriptionDefault
Default LanguageLanguage for new usersen-US
Default ThemeTheme for new users (light or dark)light

Onboarding

SettingDescriptionDefault
Onboarding CompletedWhether the initial setup wizard has been completedfalse

This flag is set to true automatically after the onboarding wizard finishes. It prevents the onboarding from appearing again.

Example .env File

A complete .env file for a production deployment:

dotenv
# Application
SESSION_SECRET_KEY=a1b2c3d4e5f6g7h8i9j0-change-this
APP_ORIGIN=https://financer.example.com
LOG_LEVEL=WARNING
DEMO_DATA=false

# MySQL
MYSQL_ROOT_PASSWORD=strong-root-password
MYSQL_PASSWORD=strong-app-password

# Port (optional, defaults to 3000)
APP_PORT=3000

TIP

Generate a secure session secret with:

bash
openssl rand -hex 32

Released under the BSD 3-Clause License.