Sign inSign up

litespeedtech/litespeed

By litespeedtech

•Updated 22 days 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

22 days ago

docker pull litespeedtech/litespeed