Sign inSign up

litespeedtech/litespeed

By litespeedtech

Updated 1 day ago

Official build of LiteSpeed, High performance, HTTP/3 supported, ready to use

Image
Web servers
Content management system
18

100K+

litespeedtech/litespeed repository overview

LiteSpeed WordPress / Magento Docker Container

Build Status docker pulls

Install a Lightweight WordPress container with LiteSpeed stable version based on Ubuntu 26.04 Linux.

Prerequisites
  1. Install Docker
  2. Install Docker Compose

Configuration

Edit the .env file to update the demo site domain, default MySQL user, and password. Feel free to check Docker hub Tag page if you want to update default litespeed and php versions.

Installation

Clone this repository or copy the files from this repository into a new folder:

  • To use WordPress:
git clone https://github.com/litespeedtech/lsws-docker-env.git
  • To use Magento/WordPress:
git clone https://github.com/litespeedtech/lsws-magento-docker-env.git

Open a terminal, cd to the folder in which docker-compose.yml is saved, and run:

docker compose up

Note: If you wish to run a single web server container, please see the usage method here.

Components

The docker image installs the following packages on your system:

ComponentVersion
LinuxUbuntu 26.04
LiteSpeedLatest version
MariaDBStable version: 11.8
PHPLatest version
LiteSpeed CacheLatest from WordPress.org
ACMELatest from ACME official
WordPressLatest from WordPress
MagentoVersion 2.4+
phpMyAdminLatest from dockerhub

Data Structure

Cloned project

├── acme
├── bin
│   └── container
├── data
│   └── db
├── logs
│   ├── access.log
│   ├── error.log
│   ├── lsrestart.log
│   └── stderr.log
├── lsws
│   ├── admin-conf
│   └── conf
├── sites
│   └── localhost
├── LICENSE
├── README.md
└── docker-compose.yml
  • acme contains all applied certificates from Lets Encrypt

  • bin contains multiple CLI scripts to allow you add or delete virtual hosts, install applications, upgrade, etc

  • data stores the MySQL database

  • logs contains all of the webserver logs and virtual host access logs

  • lsws contains all web server configuration files

  • sites contains the document roots (the WordPress application will install here)

Usage

Starting a Container

Start the container with the up or start methods:

docker compose up

You can run with daemon mode, like so:

docker compose up -d

The container is now built and running.

Note: The container will auto-apply a 15-day trial license. Please contact LiteSpeed to extend the trial, or apply your own license, starting from $0.

Stopping a Container
docker compose stop
Removing Containers

To stop and remove all containers, use the down command:

docker compose down
Setting the WebAdmin Password

We strongly recommend you set your personal password right away.

bash bin/webadmin.sh my_password
Starting a Demo Site

After running the following command, you should be able to access the WordPress installation with the configured domain. By default the domain is http://localhost.

bash bin/demosite.sh -W

After running the following command, you should be able to access the Magento installation with the configured domain. By default the domain is http://localhost.

bash bin/demosite.sh -M
Creating a Domain and Virtual Host
bash bin/domain.sh [-A, --add] example.com
Deleting a Domain and Virtual Host
bash bin/domain.sh [-D, --del] example.com
Creating a Database

You can either automatically generate the user, password, and database names, or specify them. Use the following to auto generate:

bash bin/database.sh [-D, --domain] example.com

Use this command to specify your own names, substituting user_name, my_password, and database_name with your preferred values:

bash bin/database.sh [-D, --domain] example.com [-U, --user] USER_NAME [-P, --password] MY_PASS [-DB, --database] DATABASE_NAME
Installing a WordPress Site

To preconfigure the wp-config file, run the database.sh script for your domain, before you use the following command to install WordPress:

./bin/appinstall.sh [-A, --app] wordpress [-D, --domain] example.com
Installing a Magento Site

To preconfigure the magento file, run the database.sh script for your domain, before you use the following command to install Magento:

./bin/appinstall.sh [-A, --app] Magento [-D, --domain] example.com

Magento with Sample data

./bin/appinstall.sh [-A, --app] Magento [-D, --domain] example.com [-S, --sample]
Installing ACME

We need to run the ACME installation command the first time only. With email notification:

./bin/acme.sh [-I, --install] [-E, --email] EMAIL_ADDR

Without email notification:

./bin/acme.sh [-I, --install] [-NE, --no-email]
Applying a Let's Encrypt Certificate

Use the root domain in this command, and it will check for a certificate and automatically apply one with and without www:

./bin/acme.sh [-D, --domain] example.com

Other parameters:

  • [-r, --renew]: Renew a specific domain with -D or --domain parameter if posibile. To force renew, use -f parameter.

  • [-R, --renew-all]: Renew all domains if possible. To force renew, use -f parameter.

  • [-f, -F, --force]: Force renew for a specific domain or all domains.

  • [-v, --revoke]: Revoke a domain.

  • [-V, --remove]: Remove a domain.

Updating Web Server

To upgrade the webserver to the latest stable version, run the following:

bash bin/webadmin.sh [-U, --upgrade]
Applying OWASP ModSecurity

Enable OWASP mod_secure on the web server:

bash bin/webadmin.sh [-M, --mod-secure] enable

Disable OWASP mod_secure on the web server:

bash bin/webadmin.sh [-M, --mod-secure] disable
Applying license to LSWS

Apply for your license with the command:

bash bin/webadmin.sh [-S, --serial] YOUR_SERIAL

Apply trial license to the server with command:

bash bin/webadmin.sh [-S, --serial] TRIAL
Accessing the Database

After installation, you can use phpMyAdmin to access the database by visiting http://127.0.0.1:8080. The default username is root, and the password is the same as the one you supplied in the .env file.

To secure phpMyAdmin:

  1. Remove the public ports (8080:80) from docker-compose.yml to hide them from the public.
  2. Follow phpMyAdmin's Docker guide to connect to the database over SSL.

To proxy phpMyAdmin:

  1. Point a domain to a virtual host, e.g. Example, and add the domain mapping to the listeners.
  2. Set up an External App in LSWS and set Address to phpmyadmin.
  3. Add a proxy Context where URl is /, and Web Server is phpmyadmin.

Customization

If you want to customize the image by adding some packages, e.g. lsphp83-pspell, just extend it with a Dockerfile.

  1. We can create a custom folder and a custom/Dockerfile file under the main project.
  2. Add the following example code to Dockerfile under the custom folder
FROM litespeedtech/litespeed:latest
RUN apt-get update && apt-get install lsphp83-pspell -y
  1. Add build: ./custom line under the "image: litespeedtech" of docker-composefile. So it will looks like this
  litespeed:
    image: litespeedtech/litespeed:${LSWS_VERSION}-${PHP_VERSION}
    build: ./custom
  1. Build and start it with command:
docker compose up --build

Support & Feedback

If you still have a question after using LiteSpeed Docker, you have a few options.

Pull requests are always welcome

Tag summary

Content type

Image

Digest

sha256:a56ecf9d8

Size

201.3 MB

Last updated

1 day ago

docker pull litespeedtech/litespeed