10-hortusfox.md kstack: book: Centerpoint Home Lab chapter: Documents & Organization page: HortusFox tags: [hortusfox, plants, garden, mariadb] Overview HortusFox is a plant care and garden management app. It tracks plants, watering schedules, fertilisation, and overdue care tasks. A separate cron container triggers scheduled task checks. Internal-only access via Step-CA TLS — no external route. The workspace is named "Jeeves Garden". Access Type URL Auth Internal https://hortusfox.home.local HortusFox own auth (Step-CA TLS) No external route — LAN access only. Containers Container Image Role hortusfox ghcr.io/danielbrendel/hortusfox-web:latest Web application hortusfox-db mariadb:11 MariaDB database hortusfox-cron alpine:latest Scheduled task runner hortusfox (application) Runtime: PHP 8.3 on Apache Key environment variables: Variable Value / Notes APP_WORKSPACE Jeeves Garden APP_TIMEZONE America/Toronto APP_LANG en APP_DEBUG true APP_ADMIN_EMAIL jeeves5454@gmail.com APP_OVERDUE_TASK_HOURS 10 APP_ENABLE_HISTORY true APP_HISTORY_NAME Garden Log APP_ENABLE_SYSTEM_MESSAGES true APP_ENABLE_PHOTO_SHARE false APP_ENABLE_CHAT false APP_ENABLE_SCROLLER true APP_CRON_PW REDACTED DB_HOST hortusfox-db DB_PORT 3306 DB_DATABASE hortusfox DB_USERNAME hortusfox DB_CHARSET utf8mb4 Bind mounts: Host Path Container Path Purpose /home/jeeves/docker/hortusfox/images /var/www/html/public/img Plant images /home/jeeves/docker/hortusfox/themes /var/www/html/public/themes Custom themes /home/jeeves/docker/hortusfox/logs /var/www/html/app/logs App logs /home/jeeves/docker/hortusfox/migrations /var/www/html/app/migrations DB migration files /home/jeeves/docker/hortusfox/backup /var/www/html/public/backup Export/backup files hortusfox-db (MariaDB 11) Image: mariadb:11 (MariaDB 11.8.6) Variable Value MYSQL_DATABASE hortusfox MYSQL_USER hortusfox MYSQL_PASSWORD REDACTED MYSQL_ROOT_PASSWORD REDACTED Bind mounts: Host Path Container Path /home/jeeves/docker/hortusfox/db /var/lib/mysql hortusfox-cron (Alpine) Image: alpine:latest A lightweight Alpine container that runs periodic cron jobs to trigger HortusFox's scheduled task processing (e.g., overdue task notifications). It communicates with the main hortusfox container using the APP_CRON_PW credential. No persistent volumes. Traefik Labels traefik.http.routers.hortusfox.rule: Host(`hortusfox.home.local`) traefik.http.routers.hortusfox.entrypoints: websecure traefik.http.routers.hortusfox.tls.certresolver: step-ca traefik.http.services.hortusfox.loadbalancer.server.port: 80 Notes / Gotchas APP_CRON_PW authenticates the cron container's requests to the HortusFox web app. This is set as a plaintext environment variable — treat it as a secret. It is REDACTED in documentation. APP_DEBUG: true means verbose PHP error output is enabled. Disable this if HortusFox ever becomes accessible externally. Plant images are stored in the images bind mount. This directory should be included in backups to preserve photo history. Last Updated: 2026-06-17