Skip to main content

Server Requirements

This guide covers the requirements for self-hosting TryPost.

Minimum Requirements

Software Requirements

Required

  • PHP 8.4.1+ (8.4 or 8.5; the Docker image ships 8.4) with extensions:
    • BCMath, Ctype, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML
    • cURL, Fileinfo, Sodium, POSIX, DOM / SimpleXML (cURL is a separate package on Debian and Ubuntu)
    • pdo_pgsql or pdo_mysql, matching the database you chose — without it the app fails at boot with could not find driver
    • pcntl (required by Horizon)
    • intl, zip, exif, sockets
    • GD (required). Imagick is optional: it enables HEIC conversion and better blurred-background fits (both ship in the Docker image). HEIC/HEIF uploads are converted to JPEG only when Imagick is built with HEIC support; without it they are rejected with a clear message and every other format still works
    • No PHP Redis extension needed (Predis is bundled); set REDIS_CLIENT=phpredis to use the extension. The Redis service is still required
    On Debian or Ubuntu with the Ondřej Surý PHP packages: sudo apt install php8.4-{cli,fpm,curl,mbstring,xml,zip,intl,bcmath,gd,imagick,pgsql,mysql,redis}
  • Composer 2.x
  • Node.js 22.12+ and npm (24 LTS works) — not needed if you only run the published Docker image
  • PostgreSQL or MySQL — both are fully supported; see choosing a database
  • Redis — queues, cache and locks (the Compose files ship Redis 7)

Long-running processes

TryPost needs three processes besides the web server. The Docker image starts them for you; on bare metal see Production setup.
  • Horizon — the queue workers that publish posts, send email and webhooks, and collect analytics
  • Reverb — WebSockets for live updates in the app
  • Scheduler — php artisan schedule:run every minute (or schedule:work)

Optional

  • Nginx or Apache (for production bare-metal)
  • Supervisor (for Horizon, Reverb, and related workers)
  • SSL certificate (Let’s Encrypt recommended)

PHP Configuration

Recommended php.ini settings:
Match these to your reverse-proxy body-size limit (client_max_body_size in Nginx, etc.). The published Docker image uses the same 1G upload cap with a lower memory_limit = 256M and max_execution_time = 60; the higher values above give large video uploads and image processing more headroom on bare metal.

Supported Operating Systems

TryPost can run on any OS that supports the required software:
  • Ubuntu 22.04+ (recommended)
  • Debian 11+
  • CentOS/RHEL 8+
  • macOS (for development)
  • Windows with WSL2 (for development)

Cloud Providers

TryPost works well on any cloud provider. We recommend Hetzner Cloud for the best price-to-performance ratio.
Get 20 EUR free credits on Hetzner Cloud — enough to run TryPost for several months on a CX22 instance (2 vCPUs, 4 GB RAM). This is a referral link — it helps support TryPost development at no extra cost to you.
Other supported providers:
  • DigitalOcean Droplets
  • AWS EC2
  • Google Cloud Compute
  • Linode
  • Vultr

Storage Considerations

Media files (images, videos, documents) can be stored:
  • Locally — FILESYSTEM_DISK=public + php artisan storage:link
  • S3 — Amazon S3
  • R2 — Cloudflare R2
  • Spaces — DigitalOcean Spaces
  • Any S3-compatible — MinIO, etc.
For production with heavy media usage, object storage is recommended. See Configuration → File Storage.

Next Steps