Unleashing FrankenWP: A Monstrous WordPress Setup

· 2 min read
Unleashing FrankenWP: A Monstrous WordPress Setup
FrankenWP

WordPress is amazing, but what if you could supercharge it with cutting-edge tech and monstrous performance?

Enter FrankenWP—a WordPress build crafted for speed, flexibility, and a touch of madness (in the best way possible). With FrankenPHP at its core, FrankenWP brings your WordPress game to the next level.

In this guide, I’ll walk you through deploying FrankenWP with Docker Compose. By the end, you’ll have a high-performance WordPress stack running alongside MariaDB and phpMyAdmin. Let’s dive into this monster of a setup! 🧟‍♂️


What You’ll Need

Here’s what your toolbox should already have:

  • VPS or local machine with Docker and Docker Compose installed.
  • A custom domain (optional but recommended) to access FrankenWP.
  • Basic familiarity with WordPress and Docker commands.

Step 1: Set Up Your Project Directory

Keep it clean and organized. Create a folder for this project:

mkdir -p ~/frankenwp && cd  ~/frankenwp

This is where all the magic happens.


Step 2: Create the Docker Compose File

Now, let’s give life to FrankenWP with docker-compose.yml. Create the file and paste the following:

services:
  wordpress:
    image: wpeverywhere/frankenwp:latest-php8.3
    restart: always
    ports:
      - "8100:80" # HTTP
    environment:
      SERVER_NAME: ${SERVER_NAME:-:80}
      WORDPRESS_DB_HOST: ${DB_HOST:-db}
      WORDPRESS_DB_USER: ${DB_USER:-exampleuser}
      WORDPRESS_DB_PASSWORD: ${DB_PASSWORD:-examplepass}
      WORDPRESS_DB_NAME: ${DB_NAME:-exampledb}
      WORDPRESS_DEBUG: ${WP_DEBUG:-true}
      WORDPRESS_TABLE_PREFIX: ${DB_TABLE_PREFIX:-wp_}
      CACHE_LOC: ${CACHE_LOC:-/var/www/html/wp-content/cache}
      TTL: ${TTL:-80000}
      PURGE_PATH: ${PURGE_PATH:-/__cache/purge}
      PURGE_KEY: ${PURGE_KEY:-}
      BYPASS_HOME: ${BYPASS_HOME:-false}
      BYPASS_PATH_PREFIXES: ${BYPASS_PATH_PREFIXES:-/wp-admin,/wp-content,/wp-includes,/wp-json,/feed}
      CACHE_RESPONSE_CODES: ${CACHE_RESPONSE_CODES:-000}
      CADDY_GLOBAL_OPTIONS: |
        email admin@xynoslab.com
        auto_https disable_redirects
        debug
      WORDPRESS_CONFIG_EXTRA: |
          define('WP_SITEURL', 'https://frankenwp.xynoslab.com');
          define('WP_HOME', 'https://frankenwp.xynoslab.com');
    volumes:
      - ./wp-content:/var/www/html/wp-content

    depends_on:
      - db
    tty: true

  db:
    image: mariadb:latest
    restart: always
    ports:
      - ${LOCAL_DB_PORT:-3311}:3306
    environment:
      MYSQL_DATABASE: ${DB_NAME:-exampledb}
      MYSQL_USER: ${DB_USER:-exampleuser}
      MYSQL_PASSWORD: ${DB_PASSWORD:-examplepass}
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-examplepass}
    volumes:
      - dbwp:/var/lib/mysql
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - ${LOCAL_PHPMYADMIN_PORT:-8086}:80
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-examplepass}
    depends_on:
      - db

volumes:
  dbwp:

This configuration sets up three services:

  • FrankenWP (WordPress): Powered by PHP 8.3 for cutting-edge performance.
  • MariaDB: A robust database to power FrankenWP.
  • phpMyAdmin: A user-friendly database management interface.

Step 3: Fire Up the Stack

Run the following command to bring the beast to life:

docker-compose up -d  

Docker will pull the images, create containers, and launch the stack. Give it a moment, and your services will be up and running.


Step 4: Verify the Deployment

Here’s how to check that everything is alive and kicking:

  1. Open your browser and visit http://<your-server-ip>:8100 to access WordPress.
  2. Head to http://<your-server-ip>:8086 to manage your database via phpMyAdmin.

🎉 If everything loads, you’ve successfully deployed FrankenWP!


Step 5: Configure Your WordPress Site

Once the setup page appears, configure your FrankenWP:

  1. Set up an admin account.
  2. Name your site and start customizing!
  3. Dive into advanced caching and debugging features included in FrankenWP.

Wrapping Up

FrankenWP is up and running! This setup is optimized for performance, fully compatible with PHP 8.3, and powered by Docker. With phpMyAdmin and MariaDB, managing your database becomes straightforward.

If you want to expand further, consider adding SSL with Caddy, exploring additional Dockerized plugins, or scaling the setup with load balancing.

Until next time, happy experimenting.