Requirements

Textstem is a Laravel package and inherits Laravel's server requirements. This page covers everything you need to run Textstem in development and production.

Server Requirements

PHP

PHP >= 8.3 is required. The following extensions must be enabled:

  • mbstring
  • openssl
  • PDO + pdo_mysql
  • tokenizer
  • xml
  • ctype
  • json
  • bcmath
  • fileinfo
  • curl
  • gd or imagick (for image processing)

Database

MySQL 5.7+ or MariaDB 10.10+ is required. SQLite is supported in test environments only.

Web Server

Any web server compatible with Laravel:

  • Nginx (recommended)
  • Apache (with mod_rewrite)
  • Laravel Herd or Valet for local development

System Packages

Some Textstem features require system-level packages to be installed on the server:

Package Purpose Required
Ghostscript PDF processing and PDF-to-image conversion Yes (if using PDF assets)
ImageMagick Advanced image manipulation Recommended

Install on Ubuntu/Debian:

sudo apt-get install ghostscript imagemagick

Install on macOS (Homebrew):

brew install ghostscript imagemagick

Laravel Requirements

Dependency Version
Laravel Framework ^10.0 or ^11.0 or ^12.0
Laravel Jetstream ^4.0 or ^5.3
Laravel Sanctum *
Laravel Scout ^10.5
Livewire ^3.2

Textstem uses Jetstream for authentication scaffolding. If you are installing into an existing application that already has a different auth setup, review the installation guide before proceeding.


Storage

By default, Textstem stores uploaded assets on the local disk. For production deployments, Amazon S3 (or any S3-compatible service) is strongly recommended.

Required for S3 storage:

composer require league/flysystem-aws-s3-v3

Configure in .env:

FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=your-key
AWS_SECRET_ACCESS_KEY=your-secret
AWS_DEFAULT_REGION=ap-southeast-2
AWS_BUCKET=your-bucket

Optional Services

These services are optional but unlock additional Textstem features.

OpenAI (AI content tools)

Required for AI-assisted content generation, automatic alt-text, keyword extraction, and taxonomy automation.

OPENAI_API_KEY=your-openai-key
OPENAI_ORGANIZATION=your-org-id

Algolia (Search)

Required for full-text search in the admin panel and front-end search features. Textstem uses Laravel Scout with the Algolia driver.

ALGOLIA_APP_ID=your-app-id
ALGOLIA_SECRET=your-admin-api-key

Pusher / Laravel Reverb (Real-time notifications)

Required for real-time queue monitoring and admin notifications. Supports Pusher or Laravel Reverb.

BROADCAST_DRIVER=pusher
PUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret
PUSHER_APP_CLUSTER=ap4

Google Cloud Vision (Image analysis)

Required for automatic image labelling and accessibility analysis of uploaded assets. Configure credentials via the GOOGLE_APPLICATION_CREDENTIALS environment variable pointing to your service account JSON file.

Google Services

Service Purpose
Google Tag Manager Analytics and tag management
Google Analytics 4 Site traffic reporting
Google Maps Map embeds in page components
reCAPTCHA Form spam protection

Queue Worker

A queue worker is strongly recommended for production. Textstem offloads the following to the queue:

  • AI content generation (articles, alt-text, keywords, tags)
  • Asset processing (thumbnails, metadata extraction, fingerprinting)
  • Accessibility and SEO analysis
  • Email notifications
php artisan queue:work --tries=3

For production, use a process supervisor such as Supervisor or Laravel Horizon.


Summary

Requirement Minimum Recommended
PHP 8.3 Latest 8.x
Laravel 10 12
MySQL 5.7 8.x
MariaDB 10.10 11.x
Storage Local disk Amazon S3
Search -- Algolia
Queue sync driver Supervisor + database/redis
Websockets -- Pusher or Reverb
esc