Fountain

Requirements

Fountain is built on Kirby CMS 5 and adds Python-based font processing capabilities. This page details all system requirements for running Fountain in production or development environments.

Kirby CMS 5 Requirements

PHP Version

Fountain requires one of the following PHP versions:

  • PHP 8.4 (used in Docker setup)
  • PHP 8.3 (recommended by Kirby)
  • PHP 8.2 (minimum)

Check your PHP version:

php -v

Required PHP Extensions

Core extensions (typically included by default):

  • ctype - Character type checking
  • curl - URL transfer library
  • dom - DOM document handling
  • filter - Data filtering
  • hash - Hashing functions
  • iconv - Character set conversion
  • json - JSON processing
  • libxml - XML library
  • mbstring - Multibyte string handling
  • openssl - SSL/TLS support
  • SimpleXML - XML parsing

Image processing (choose one):

  • gd - GD Graphics Library (used in Docker setup)
  • imagick - ImageMagick extension (also included in Docker setup)

Additional required extensions:

  • zip - ZIP archive handling (for font file processing)
  • sqlite3 - SQLite database support (for font metadata storage)

Check installed extensions:

php -m

Recommended PHP Extensions

  • exif - Read EXIF metadata from images
  • fileinfo - MIME type detection
  • intl - Internationalization support

Fountain-Specific Requirements

Python Environment

  • Python 3.8 or higher (Python 3.x included in Docker)
  • pip - Python package installer

Check your Python version:

python3 --version
pip3 --version

Python Packages

  • python-fontbro 0.25.0 - Font metadata extraction and processing

The Docker setup installs this in a Python virtual environment at /opt/venv.

Install manually:

pip install python-fontbro==0.25.0

Or for the latest version:

pip install python-fontbro

Web Server Requirements

Apache (Recommended)

The Dockerfile uses PHP 8.4-Apache with the following modules enabled:

  • mod_rewrite - URL rewriting (required for Kirby)
  • mod_headers - HTTP header control
  • mod_mime - MIME type handling

Apache configuration must support:

  • .htaccess files
  • AllowOverride All directive

Nginx

Nginx requires manual configuration for URL rewriting. See Kirby's Nginx cookbook recipe for configuration examples.

Other Servers

Caddy and other POSIX-compatible servers work with proper URL rewriting configuration.

Docker Environment Specifications

The included Dockerfile (/Users/andnym/Git/kirby-fountain/Dockerfile) provides a complete environment with:

Base Image

  • php:8.4-apache (Debian-based)

System Packages

  • sqlite3 - SQLite command-line tools
  • libfreetype6-dev, libjpeg62-turbo-dev, libpng-dev - Image processing libraries
  • python3, python3-venv, python3-pip, python3-dev - Python environment
  • build-essential, libc-dev - Build tools for Python packages
  • libmagickwand-dev - ImageMagick development files
  • libzip-dev, zip - ZIP support
  • libglib2.0-dev - GLib development files

PHP Configuration

  • GD extension configured with FreeType and JPEG support
  • Zip extension enabled
  • ImageMagick (imagick) extension installed via PECL
  • Custom PHP settings via custom-php.ini

Python Configuration

  • Virtual environment at /opt/venv
  • python-fontbro 0.25.0 installed in venv
  • PATH configured to use venv binaries

Directory Structure

  • /var/www/html/storage - Storage directory
  • /var/www/html/content - Content directory
  • /var/www/html/media - Media directory
  • Proper permissions (755) and ownership (www-data)

Browser Requirements (for Panel)

Desktop Browsers

  • Firefox 110+
  • Chrome 106+
  • Safari 16+
  • Edge 106+
  • Opera 94+

Mobile Browsers

  • Mobile Safari 16+
  • Android Browser 126+
  • Chrome for Android 126+

Development vs. Production

Development Environment

  • PHP built-in server acceptable: php -S localhost:8000
  • Docker with OrbStack or Docker Desktop
  • Local Python installation

Production Environment

  • Dedicated Apache or Nginx server
  • PHP-FPM recommended for Nginx
  • Proper SSL/TLS configuration
  • Python virtual environment recommended
  • Sufficient disk space for font storage
  • Regular database backups (SQLite)

Checking Your Environment

Verify PHP Requirements

# Check PHP version
php -v

# List installed extensions
php -m

# Check for specific extensions
php -m | grep -E 'gd|zip|sqlite3'

Verify Python Requirements

# Check Python version
python3 --version

# Check if fontbro is installed
pip list | grep fontbro

# Test fontbro import
python3 -c "import fontbro; print(fontbro.__version__)"

Verify Web Server

# Apache: Check if mod_rewrite is enabled
apache2ctl -M | grep rewrite

# Check Apache version
apache2 -v

Troubleshooting

PHP version incompatible:

  • Kirby 5 requires PHP 8.2+. Update your PHP installation or use the Docker setup.

Missing PHP extensions:

  • Install via package manager: apt-get install php-{extension} (Debian/Ubuntu)
  • Or: yum install php-{extension} (RHEL/CentOS)
  • Enable in php.ini if installed but not active

Python fontbro import fails:

  • Ensure Python development headers are installed
  • Install build tools: apt-get install python3-dev build-essential
  • Try installing in a virtual environment

Docker build fails:

  • Ensure Docker is up to date
  • Check available disk space
  • Review Dockerfile for any custom modifications