Configuration
The Engelsystem can be fully configured by an administrator (Developer permission)
after the database is set up and configured.
A minimal config/config.php to connect to a database requires the four MySQL connection parameters:
When using a config file, the Engelsystem default values are overwritten.
A . in the setting name splits the array sub-keys, see database.host config
and the code above as an example.
Environment variables (env vars) can be used for most options (for example in a Docker deployment).
When the config type is multi_select the env var values must be comma separated:
Options defined below as “Hidden” can only be changed using a config file or env variables.
A static config type marks options that are not migrated to the settings page (yet) and thus are hidden.
They can be changed by env vars or config file only.
The following page lists all available settings and their usage.
Event
Event Name
- Name:
name - Type:
text - Env var:
NAME - Default:
null
The event name is shown on the start page
Event Welcome Message
- Name:
welcome_msg - Type:
text - Env var:
WELCOME_MSG - Default:
null
The welcome message is shown after successful registration. Markdown can be used.
Registration enabled
- Name:
registration_enabled - Type:
boolean - Env var:
REGISTRATION_ENABLED - Default:
true
Buildup
- Name:
buildup_start - Type:
datetime-local - Env var:
BUILDUP_START - Default:
null
Event start
- Name:
event_start - Type:
datetime-local - Env var:
EVENT_START - Default:
null
Event end
- Name:
event_end - Type:
datetime-local - Env var:
EVENT_END - Default:
null
Teardown end
- Name:
teardown_end - Type:
datetime-local - Env var:
TEARDOWN_END - Default:
null
Day of event
- Name:
enable_day_of_event - Type:
boolean - Env var:
ENABLE_DAY_OF_EVENT - Default:
false
Whether to show the current day of the event (-2, -1, 0, 1, 2…) in the footer and on the dashboard. The event start date has to be set for it to appear.
Event has day 0
- Name:
event_has_day0 - Type:
boolean - Env var:
EVENT_HAS_DAY0 - Default:
true
If enabled there will be a day 0 (-1, 0, 1…). If not there won’t (-1, 1…).
FAQ text
- Name:
faq_text - Type:
text - Env var:
FAQ_TEXT - Default:
null
Additional text displayed on the FAQ page. Markdown can be used.
privacy@ contact e-mail
- Name:
privacy_email - Type:
text - Env var:
PRIVACY_EMAIL - Default:
null
Features
DECT
- Name:
enable_dect - Type:
boolean - Env var:
ENABLE_DECT - Default:
false
Enables DECT numbers for users, locations and angel types
Display mobile number
- Name:
enable_mobile_show - Type:
boolean - Env var:
ENABLE_MOBILE_SHOW - Default:
false
Whether the mobile number will be shown to all users
First / last name
- Name:
enable_full_name - Type:
boolean - Env var:
ENABLE_FULL_NAME - Default:
false
Display full name
- Name:
display_full_name - Type:
boolean - Env var:
DISPLAY_FULL_NAME - Default:
false
Show a user’s first name and last name instead of username
Pronouns
- Name:
enable_pronoun - Type:
boolean - Env var:
ENABLE_PRONOUN - Default:
true
Required user fields
- Name:
required_user_fields - Type:
select_multi - Env var:
REQUIRED_USER_FIELDS
Default:
Possible values:
Planned arrival / departure
- Name:
enable_planned_arrival - Type:
boolean - Env var:
ENABLE_PLANNED_ARRIVAL - Default:
true
Force active
- Name:
enable_force_active - Type:
boolean - Env var:
ENABLE_FORCE_ACTIVE - Default:
true
Allows enforcing goodies
(Food-) vouchers
- Name:
enable_voucher - Type:
boolean - Env var:
ENABLE_VOUCHER - Default:
true
Initial vouchers
- Name:
voucher_settings.initial_vouchers - Type:
number - Env var:
INITIAL_VOUCHERS - Default:
0
Shifts per voucher
- Name:
voucher_settings.shifts_per_voucher - Type:
number - Env var:
SHIFTS_PER_VOUCHER - Default:
0
Hours per voucher
- Name:
voucher_settings.hours_per_voucher - Type:
number - Env var:
HOURS_PER_VOUCHER - Default:
2
Voucher start
- Name:
voucher_settings.voucher_start - Type:
date - Env var:
VOUCHER_START - Default:
null
Unlimited food vouchers
- Name:
enable_force_food - Type:
boolean - Env var:
ENABLE_FORCE_FOOD - Default:
false
Allows getting unlimited food vouchers
Own work logs
- Name:
enable_self_worklog - Type:
boolean - Env var:
ENABLE_SELF_WORKLOG - Default:
true
Allow users with sufficient permission to add worklogs for themselves
Shift sign up requires arrival
- Name:
signup_requires_arrival - Type:
boolean - Env var:
SIGNUP_REQUIRES_ARRIVAL - Default:
false
Only arrived users can sign up for shifts
Auto arrive
- Name:
autoarrive - Type:
boolean - Env var:
AUTOARRIVE - Default:
false
Set newly registered users automatically as arrived
Supporters can promote
- Name:
supporters_can_promote - Type:
boolean - Env var:
SUPPORTERS_CAN_PROMOTE - Default:
false
Supporters of an angel type (team) can promote other users of the angel type to supporter
Join QR code
- Name:
join_qr_code - Type:
boolean - Env var:
JOIN_QR_CODE - Default:
true
Allow joining an angel type via generated QR code, requires app_key
Certificates
Driving license
- Name:
driving_license_enabled - Type:
boolean - Env var:
DRIVING_LICENSE_ENABLED - Default:
true
Health instruction
- Name:
ifsg_enabled - Type:
boolean - Env var:
IFSG_ENABLED - Default:
false
Instruction in accordance with § 43 Para. 1 of the German Infection Protection Act (IfSG)
Health instruction on site
- Name:
ifsg_light_enabled - Type:
boolean - Env var:
IFSG_LIGHT_ENABLED - Default:
false
Instruction only onsite in accordance with § 43 Para. 1 of the German Infection Protection Act (IfSG)
Shifts
Sign up before start
- Name:
signup_advance_hours - Type:
number - Env var:
SIGNUP_ADVANCE_HOURS - Default:
0
Only allow shift signup this number of hours in advance. Setting it to 0 disables the feature.
Sign up after start
- Name:
signup_post_minutes - Type:
number - Env var:
SIGNUP_POST_MINUTES - Default:
0
Allow shift signup this number of minutes after start of shift. If “Sign up after start fraction” is set, it is applied first before adding the number of minutes specified here.
Sign up after start fraction
- Name:
signup_post_fraction - Type:
number - Env var:
SIGNUP_POST_FRACTION - Default:
0
Allow sign up this fraction of the shift length after the start of the shift. If it’s 1, sign up is allowed until the end of the shift; 0.5 means the first half of the shift. If “Sign up minutes after start” is set, this is applied first and then the minutes are added on top.
Last unsubscribe
- Name:
last_unsubscribe - Type:
number - Env var:
LAST_UNSUBSCRIBE - Default:
3
Minimum hours before a shift starts where a user can still sign out of their own shifts
Maximum freeloadable shifts
- Name:
max_freeloadable_shifts - Type:
number - Env var:
MAX_FREELOADABLE_SHIFTS - Default:
2
Number of shifts to freeload until a user is locked from shift signup
Goodie
Goodie Type
- Name:
goodie_type - Type:
select - Env var:
GOODIE_TYPE - Default:
goodie
Possible values:
E-mail opt-in
- Name:
enable_email_goodie - Type:
boolean - Env var:
ENABLE_EMAIL_GOODIE - Default:
false
Show opt-in on user profile and registration pages to save some personal data after the event
T-shirt size guide link
- Name:
tshirt_link - Type:
url - Env var:
TSHIRT_LINK - Default:
null
Night shifts enabled
- Name:
night_shifts.enabled - Type:
boolean - Env var:
NIGHT_SHIFTS - Default:
true
Multiplies ’night shifts’ between start and end (numbers as hours) by multiplier for goodie score. Goodies must be enabled!
Night shifts start hour
- Name:
night_shifts.start - Type:
number - Env var:
NIGHT_SHIFTS_START - Default:
2
Night shifts end hour (exclusive)
- Name:
night_shifts.end - Type:
number - Env var:
NIGHT_SHIFTS_END - Default:
8
Night shifts multiplier
- Name:
night_shifts.multiplier - Type:
number - Env var:
NIGHT_SHIFTS_MULTIPLIER - Default:
2
System
Application name (not event name)
- Name:
app_name - Type:
text - Env var:
APP_NAME - Default:
Engelsystem
Customizes the application name displayed throughout the interface
Languages
- Name:
locales - Type:
select_multi - Env var:
LOCALES - Required
Default:
Possible values:
Default language
- Name:
default_locale - Type:
select - Env var:
DEFAULT_LOCALE - Default:
en_US - Required
Possible values:
Default theme
- Name:
theme - Type:
select - Env var:
THEME - Default:
1 - Required
Possible values:
Time zone
- Name:
timezone - Type:
select - Env var:
TIMEZONE - Default:
Europe/Berlin - Required
Possible values:
App key
- Name:
app_key - Type:
password - Env var:
APP_KEY - Default: ``
Random, long (at least 32 characters) alphanumeric or base64 encoded key, used for signing
Database type
- Name:
database.driver - Type:
select - Env var:
MYSQL_TYPE - Default:
mysql - Required
Possible values:
Database host
- Name:
database.host - Type:
text - Env var:
MYSQL_HOST - Default:
localhost - Required
Database name
- Name:
database.database - Type:
text - Env var:
MYSQL_DATABASE - Default:
engelsystem - Required
Database username
- Name:
database.username - Type:
text - Env var:
MYSQL_USER - Default:
root - Required
Database password
- Name:
database.password - Type:
password - Env var:
MYSQL_PASSWORD - Default: ``
- Required
E-mail driver
- Name:
email.driver - Type:
select - Env var:
MAIL_DRIVER - Default:
mail - Required
Configuring a Symfony mailer dsn like smtps://[user]:[password]@smtp.[domain]:465 is possible via config file or env variable
Possible values:
E-mail sender name
- Name:
email.from.name - Type:
text - Env var:
MAIL_FROM_NAME - Default:
Engelsystem
E-mail sender address
- Name:
email.from.address - Type:
email - Env var:
MAIL_FROM_ADDRESS - Default:
noreply@example.com - Required
E-mail host
- Name:
email.host - Type:
text - Env var:
MAIL_HOST - Default:
localhost
E-mail port
- Name:
email.port - Type:
number - Env var:
MAIL_PORT - Default:
465
465 for TLS, 587 for STARTTLS
E-mail using TLS transport encryption
- Name:
email.tls - Type:
boolean - Env var:
MAIL_TLS - Default:
true
E-mail username
- Name:
email.username - Type:
text - Env var:
MAIL_USERNAME - Default:
null
E-mail password
- Name:
email.password - Type:
password - Env var:
MAIL_PASSWORD - Default:
null
Sendmail command
- Name:
email.sendmail - Type:
text - Env var:
MAIL_SENDMAIL - Default:
/usr/sbin/sendmail -bs - Hidden
Home site
- Name:
home_site - Type:
select - Env var:
HOME_SITE - Default:
news - Required
Redirects to this site after logging in or when clicking the page name
Possible values:
Displayed news
- Name:
display_news - Type:
number - Env var:
DISPLAY_NEWS - Default:
10 - Required
Number of news items shown on one page and for feed readers
Displayed users
- Name:
display_users - Type:
number - Env var:
DISPLAY_USERS - Default:
100 - Required
Number of users shown in a table
Shifts filter
- Name:
filter_max_duration - Type:
number - Env var:
FILTER_MAX_DURATION - Default:
0
Set max number of hours that can be shown at once on shifts overview, 0 means no limit
Minimum password length
- Name:
password_min_length - Type:
number - Env var:
PASSWORD_MIN_LENGTH - Default:
8 - Required
Password
- Name:
enable_password - Type:
boolean - Env var:
ENABLE_PASSWORD - Default:
true
Whether the login and registration via password should be enabled (login will be hidden if false). This is useful when using OAuth, disabling it also disables normal registration without oauth.
External registration URL
- Name:
external_registration_url - Type:
url - Env var:
EXTERNAL_REGISTRATION_URL - Default:
null
URL to external registration page, linked from login page
Application URL
- Name:
url - Type:
url - Env var:
APP_URL - Default:
null
URL and base path to use instead of the auto-detected one
API key for /metrics
- Name:
api_key - Type:
text - Env var:
API_KEY - Default: ``
The API key is used to protect access to the Engelsystem /metrics endpoint. It has no restrictions on length or character classes and must be included in the HTTP request as the request parameter api_key.
Session storage
- Name:
session.driver - Type:
select - Env var:
SESSION_DRIVER - Default:
pdo - Required
Possible values:
Session cookie name
- Name:
session.name - Type:
text - Env var:
SESSION_NAME - Default:
session - Required
Session lifetime in days
- Name:
session.lifetime - Type:
number - Env var:
SESSION_LIFETIME - Default:
30 - Required
JWT expiration time in minutes
- Name:
jwt_expiration_time - Type:
number - Env var:
JWT_EXPIRATION_TIME - Default:
10080 - Required
Number of minutes after a JWT must expire, for example max angel type join time
Maintenance mode
- Name:
maintenance - Type:
boolean - Env var:
MAINTENANCE - Default:
false - Hidden
If enabled it takes the Engelsystem offline for maintenance and shows a static page to all requests
Environment
- Name:
environment - Type:
select - Env var:
ENVIRONMENT - Default:
production - Required
- Hidden
Use “development” to enable debugging messages (Might show sensitive content like passwords on requests!)
Possible values:
Header menu links
- Name:
header_items - Type:
static - Env var:
- - Default:
[] - Hidden
Available link placeholder: %lang%, see config/app.php for examples
Footer links
- Name:
footer_items - Type:
static - Env var:
- - Hidden
Available link placeholder: %lang%, see config/app.php for examples
Default:
Contact options
- Name:
contact_options - Type:
static - Env var:
- - Default:
[] - Hidden
Other ways to ask heaven, see config/app.php for examples
Documentation URL
- Name:
documentation_url - Type:
url - Env var:
DOCUMENTATION_URL - Default:
https://engelsystem.de/doc/ - Hidden
Link to documentation/help
Credits
- Name:
credits - Type:
static - Env var:
- - Hidden
A list of credits to be shown on the credits page, Markdown can be used, should not be changed
Default:
Setup admin password
- Name:
setup_admin_password - Type:
text - Env var:
SETUP_ADMIN_PASSWORD - Default:
null - Hidden
Initial admin password, configured on first setup migration
Password algorithm
- Name:
password_algorithm - Type:
text - Env var:
PASSWORD_ALGORITHM - Default:
2y - Required
- Hidden
Define the algorithm to use for password_verify(). If a user password is hashed with an old algorithm, the password will be converted to the new format on login. See https://secure.php.net/manual/en/password.constants.php for a complete list.
Username filter regex
- Name:
username_regex - Type:
text - Env var:
USERNAME_REGEX - Default:
/([^\p{L}\p{N}_.-]+)/ui - Required
- Hidden
Regular expression describing an invalid username. By default, usernames must only contain alphanumeric characters, “-”, “_”, or “.”.
Hidden user table columns
- Name:
disabled_user_view_columns - Type:
select - Env var:
DISABLED_USER_VIEW_COLUMNS - Default:
[] - Hidden
Hide columns in backend user view, possible values are any sortable parameters of the table
Trusted proxies
- Name:
trusted_proxies - Type:
select_multi - Env var:
TRUSTED_PROXIES - Hidden
IP addresses of reverse proxies that are trusted, can be an array or a comma separated list
Default:
HTTP response headers
- Name:
headers - Type:
static - Env var:
- - Hidden
See config/app.php for examples
Default:
Add additional headers
- Name:
add_headers - Type:
boolean - Env var:
ADD_HEADERS - Default:
true - Hidden
OAuth providers
- Name:
oauth - Type:
static - Env var:
- - Default:
[] - Hidden
Setup external authentication providers, see config/app.php for examples
Available T-shirt sizes
- Name:
tshirt_sizes - Type:
static - Env var:
- - Hidden
See config/app.php for examples
Default:
Supported themes
- Name:
themes - Type:
static - Env var:
- - Hidden
See config/app.php for examples
Default:
JWT algorithm
- Name:
jwt_algorithm - Type:
select - Env var:
JWT_ALGORITHM - Default:
HS256 - Required
- Hidden
Possible values:
/metrics buckets
- Name:
metrics - Type:
static - Env var:
- - Hidden
Default:
var_dump server
- Name:
var_dump_server - Type:
static - Env var:
- - Hidden
Default: