Skip to content

Non-root Docker image running Debian and OpenLiteSpeed.

License

Notifications You must be signed in to change notification settings

demyxsh/openlitespeed

Repository files navigation

openlitespeed

demyxsh/openlitespeed Code Size Repository Size Watches Stars Forks Docker Pulls Architecture Debian OpenLiteSpeed lsphp Buy Me A Coffee Become a Patron!

Non-root Docker image running Debian and OpenLiteSpeed.

To properly utilize this image, please use Demyx.

Demyx Discord

Join us on Discord for latest news, faster support, or just chill.

Buy Me A Coffee

Support this project by buying coffee (please).

DEMYX OPENLITESPEED
TAGS latest bedrock
PORT 80 8080
USER demyx
WORKDIR /demyx
CONFIG /etc/demyx
LOG /var/log/demyx
ENTRYPOINT /usr/local/bin/demyx-entrypoint
WORDPRESS https://domain.tld/
OPENLITESPEED https://domain.tld/demyx/ols/

NOTICE

This repository has been moved to the organization demyxsh; please update the remote URL.

git remote set-url origin [email protected]:demyxsh/openlitespeed.git

Usage

  • DEMYX_ADMIN_IP=myip to lock down OpenLiteSpeed's admin page
  • DEMYX_ADMIN_PREFIX=false if you're exposing ports
  • DEMYX_BASIC_AUTH_WP=true to enable basic auth for wp-login.php
  • DEMYX_XMLRPC=true to enable xmlrpc.php
# Demyx
# https://demyx.sh
#
# Be sure to change all the domain.tld domains and credentials before running docker-compose up -d.
# For SSL: have a remote server, uncomment all the labels, and set DEMYX_PROTO=https.
# Give it at least 5-10 seconds for Lets Encrypt to provision SSL certificates.
#
networks:
  demyx:
    name: demyx
  demyx_socket:
    name: demyx_socket
services:
  demyx_db:
    container_name: demyx_db
    depends_on:
      - demyx_traefik
    environment:
      - DEMYX=/demyx
      - DEMYX_CHARACTER_SET_SERVER=utf8
      - DEMYX_COLLATION_SERVER=utf8_general_ci
      - DEMYX_CONFIG=/etc/demyx
      - DEMYX_DATABASE=demyx
      - DEMYX_DEFAULT_CHARACTER_SET=utf8
      - DEMYX_DOMAIN=domain.tld
      - DEMYX_INNODB_BUFFER_POOL_SIZE=16M
      - DEMYX_INNODB_DATA_FILE_PATH=ibdata1:10M:autoextend
      - DEMYX_INNODB_FILE_PER_TABLE=1
      - DEMYX_INNODB_FLUSH_LOG_AT_TRX_COMMIT=1
      - DEMYX_INNODB_LOCK_WAIT_TIMEOUT=50
      - DEMYX_INNODB_LOG_BUFFER_SIZE=8M
      - DEMYX_INNODB_LOG_FILE_SIZE=5M
      - DEMYX_INNODB_USE_NATIVE_AIO=1
      - DEMYX_KEY_BUFFER_SIZE=20M
      - DEMYX_LOG=/var/log/demyx
      - DEMYX_MAX_ALLOWED_PACKET=16M
      - DEMYX_MAX_CONNECTIONS=1000
      - DEMYX_MYISAM_SORT_BUFFER_SIZE=8M
      - DEMYX_NET_BUFFER_SIZE=8K
      - DEMYX_PASSWORD=demyx
      - DEMYX_READ_BUFFER=2M
      - DEMYX_READ_BUFFER_SIZE=256K
      - DEMYX_READ_RND_BUFFER_SIZE=512K
      - DEMYX_ROOT_PASSWORD=demyx_root  # Mandatory
      - DEMYX_SERVER_ID=1
      - DEMYX_SORT_BUFFER_SIZE=20M
      - DEMYX_TABLE_OPEN_CACHE=64
      - DEMYX_USERNAME=demyx
      - DEMYX_WRITE_BUFFER=2M
      - TZ=America/Los_Angeles
    image: demyx/mariadb
    networks:
      - demyx
    restart: unless-stopped
    volumes:
      - demyx_db:/demyx
      - demyx_log:/var/log/demyx
  demyx_socket:
    container_name: demyx_socket
    environment:
      - CONTAINERS=1
    image: demyx/docker-socket-proxy
    networks:
      - demyx_socket
    # Uncomment below if your host OS is CentOS/RHEL/Fedora
    #privileged: true
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
  demyx_traefik:
    container_name: demyx_traefik
    depends_on:
      - demyx_socket
    environment:
      # Uncomment below for Cloudflare DNS challenge
      #- [email protected]
      #- CF_API_KEY=123456
      - [email protected]
      - DEMYX_TRAEFIK_LOG=INFO
      - TRAEFIK_PROVIDERS_DOCKER_ENDPOINT=tcp://demyx_socket:2375
    image: demyx/traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.middlewares.traefik-auth.basicauth.users=demyx:$$apr1$$L91z3CIR$$m/BKZcnQGBP.Uo2cJm8I0/" # Password: demyx
      #- "traefik.http.middlewares.traefik-auth-https.basicauth.users=demyx:$$apr1$$L91z3CIR$$m/BKZcnQGBP.Uo2cJm8I0/" # Password: demyx
      #- "traefik.http.middlewares.traefik-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.traefik-http.entrypoints=http"
      #- "traefik.http.routers.traefik-http.middlewares=traefik-redirect"
      - "traefik.http.routers.traefik-http.middlewares=traefik-auth"
      - "traefik.http.routers.traefik-http.rule=Host(`traefik.domain.tld`)"
      - "traefik.http.routers.traefik-http.service=api@internal"
      - "traefik.http.routers.traefik-http.service=traefik-http-port"
      #- "traefik.http.routers.traefik-https.entrypoints=https"
      #- "traefik.http.routers.traefik-https.middlewares=traefik-auth-https"
      #- "traefik.http.routers.traefik-https.rule=Host(`traefik.domain.tld`)" # https://traefik.domain.tld
      #- "traefik.http.routers.traefik-https.service=api@internal"
      #- "traefik.http.routers.traefik-https.service=traefik-https-port"
      #- "traefik.http.routers.traefik-https.tls.certresolver=demyx"
      - "traefik.http.services.traefik-http-port.loadbalancer.server.port=8080"
      #- "traefik.http.services.traefik-https-port.loadbalancer.server.port=8080"
    networks:
      - demyx
      - demyx_socket
    ports:
      - 80:8081
      - 443:8082
    restart: unless-stopped
    volumes:
      - demyx_log:/var/log/demyx
      - demyx_traefik:/demyx
  demyx_wp:
    container_name: demyx_wp
    depends_on:
      - demyx_db
    environment:
      - DEMYX=/demyx
      - DEMYX_ADMIN=/demyx/ols
      - DEMYX_ADMIN_IP=ALL
      - DEMYX_ADMIN_PASSWORD=demyx
      - DEMYX_ADMIN_PREFIX=true
      - DEMYX_ADMIN_USERNAME=demyx
      - DEMYX_BASIC_AUTH_PASSWORD=demyx
      - DEMYX_BASIC_AUTH_USERNAME=demyx
      - DEMYX_BASIC_AUTH_WP=false
      - DEMYX_CACHE=false
      - DEMYX_CLIENT_THROTTLE_BANDWIDTH_IN=0
      - DEMYX_CLIENT_THROTTLE_BANDWIDTH_OUT=0
      - DEMYX_CLIENT_THROTTLE_BAN_PERIOD=60
      - DEMYX_CLIENT_THROTTLE_BLOCK_BAD_REQUEST=1
      - DEMYX_CLIENT_THROTTLE_DYNAMIC=1000
      - DEMYX_CLIENT_THROTTLE_GRACE_PERIOD=30
      - DEMYX_CLIENT_THROTTLE_HARD_LIMIT=2000
      - DEMYX_CLIENT_THROTTLE_SOFT_LIMIT=1500
      - DEMYX_CLIENT_THROTTLE_STATIC=1000
      - DEMYX_CONFIG=/etc/demyx
      - DEMYX_CRON=true
      - DEMYX_CRON_LOGROTATE_INTERVAL="0 0 * * *"
      - DEMYX_CRON_WP_INTERVAL="*/5 * * * *"
      - DEMYX_CRAWLER_LOAD_LIMIT=5.2
      - DEMYX_CRAWLER_USLEEP=1000
      - DEMYX_DB_HOST=demyx_db
      - DEMYX_DB_NAME=demyx
      - DEMYX_DB_PASSWORD=demyx
      - DEMYX_DB_USERNAME=demyx
      - DEMYX_DOMAIN=domain.tld
      - DEMYX_LOG=/var/log/demyx
      - DEMYX_LOGROTATE=daily
      - DEMYX_LOGROTATE_INTERVAL=7
      - DEMYX_LOGROTATE_SIZE=10M
      - DEMYX_LSAPI_AVOID_FORK=0
      - DEMYX_LSAPI_CHILDREN=35
      - DEMYX_LSAPI_MAX_IDLE=300
      - DEMYX_LSAPI_MAX_PROCESS_TIME=3600
      - DEMYX_LSAPI_MAX_REQS=10000
      - DEMYX_LSPHP=lsphp81
      - DEMYX_MAX_EXECUTION_TIME=300
      - DEMYX_MEMORY=256M
      - DEMYX_OPCACHE=true
      - DEMYX_PROTO=http
      - DEMYX_UPLOAD_LIMIT=256M
      - DEMYX_RECAPTCHA_CONNECTION_LIMIT=500
      - DEMYX_RECAPTCHA_ENABLE=1
      - DEMYX_RECAPTCHA_TYPE=2
      - DEMYX_TUNING_CONNECTION_TIMEOUT=300
      - DEMYX_TUNING_KEEP_ALIVE_TIMEOUT=300
      - DEMYX_TUNING_MAX_CONNECTIONS=20000
      - DEMYX_TUNING_MAX_KEEP_ALIVE=1000
      - DEMYX_TUNING_SMART_KEEP_ALIVE=1000
      - DEMYX_WP_CONFIG=/demyx/wp-config.php
      - [email protected]
      - DEMYX_WP_PASSWORD=demyx
      - DEMYX_WP_USERNAME=demyx
      - DEMYX_XMLRPC=false
      - TZ=America/Los_Angeles
    image: demyx/openlitespeed
    labels:
      - "traefik.enable=true"
      # http
      - "traefik.http.middlewares.demyx-wp-http-ols-assets-prefix.stripprefix.prefixes=/demyx/ols/"
      - "traefik.http.middlewares.demyx-wp-http-ols-prefix.stripprefix.prefixes=/demyx/ols/"
      - "traefik.http.routers.demyx-wp-http-ols-assets.entrypoints=http"
      - "traefik.http.routers.demyx-wp-http-ols-assets.priority=99"
      - "traefik.http.routers.demyx-wp-http-ols-assets.rule=Host(`domain.tld`) && PathPrefix(`/res/`)"
      - "traefik.http.routers.demyx-wp-http-ols-assets.service=demyx-wp-http-ols-assets-port"
      - "traefik.http.routers.demyx-wp-http-ols.entrypoints=http"
      - "traefik.http.routers.demyx-wp-http-ols.middlewares=demyx-wp-http-ols-prefix"
      - "traefik.http.routers.demyx-wp-http-ols.priority=99"
      - "traefik.http.routers.demyx-wp-http-ols.rule=Host(`domain.tld`) && PathPrefix(`/demyx/ols/`)"
      - "traefik.http.routers.demyx-wp-http-ols.service=demyx-wp-http-ols-port"
      - "traefik.http.routers.demyx-wp-http.entrypoints=http"
      - "traefik.http.routers.demyx-wp-http.rule=Host(`domain.tld`) || Host(`www.domain.tld`)" # http://domain.tld
      - "traefik.http.routers.demyx-wp-http.service=demyx-wp-http-port"
      - "traefik.http.services.demyx-wp-http-ols-assets-port.loadbalancer.server.port=8080"
      - "traefik.http.services.demyx-wp-http-ols-port.loadbalancer.server.port=8080"
      - "traefik.http.services.demyx-wp-http-port.loadbalancer.server.port=80"
      # https
      #- "traefik.http.middlewares.demyx-wp-https-ols-assets-prefix.stripprefix.prefixes=/demyx/ols/"
      #- "traefik.http.middlewares.demyx-wp-https-ols-prefix.stripprefix.prefixes=/demyx/ols/"
      #- "traefik.http.routers.demyx-wp-https-ols-assets.entrypoints=https"
      #- "traefik.http.routers.demyx-wp-https-ols-assets.priority=99"
      #- "traefik.http.routers.demyx-wp-https-ols-assets.rule=Host(`domain.tld`) && PathPrefix(`/res/`)"
      #- "traefik.http.routers.demyx-wp-https-ols-assets.service=demyx-wp-https-ols-assets-port"
      #- "traefik.http.routers.demyx-wp-https-ols-assets.tls.certresolver=demyx"
      #- "traefik.http.routers.demyx-wp-https-ols.entrypoints=https"
      #- "traefik.http.routers.demyx-wp-https-ols.middlewares=demyx-wp-https-ols-prefix"
      #- "traefik.http.routers.demyx-wp-https-ols.priority=99"
      #- "traefik.http.routers.demyx-wp-https-ols.rule=Host(`domain.tld`) && PathPrefix(`/demyx/ols/`)" # http://domain.tld/demyx/ols/
      #- "traefik.http.routers.demyx-wp-https-ols.service=demyx-wp-https-ols-port"
      #- "traefik.http.routers.demyx-wp-https-ols.tls.certresolver=demyx"
      #- "traefik.http.routers.demyx-wp-https.entrypoints=https"
      #- "traefik.http.routers.demyx-wp-https.rule=Host(`domain.tld`) || Host(`www.domain.tld`)" # https://domain.tld/
      #- "traefik.http.routers.demyx-wp-https.service=demyx-wp-https-port"
      #- "traefik.http.routers.demyx-wp-https.tls.certresolver=demyx"
      #- "traefik.http.services.demyx-wp-https-ols-assets-port.loadbalancer.server.port=8080"
      #- "traefik.http.services.demyx-wp-https-ols-port.loadbalancer.server.port=8080"
      #- "traefik.http.services.demyx-wp-https-port.loadbalancer.server.port=80"
    networks:
      - demyx
    restart: unless-stopped
    volumes:
      - demyx_custom:/etc/demyx/custom
      - demyx_log:/var/log/demyx
      - demyx_wp:/demyx
version: "2.4"
volumes:
  demyx_custom:
    name: demyx_custom
  demyx_db:
    name: demyx_db
  demyx_log:
    name: demyx_log
  demyx_traefik:
    name: demyx_traefik
  demyx_wp:
    name: demyx_wp

Updates & Support

  • Auto built weekly on Saturdays (America/Los_Angeles)
  • Rolling release updates
  • For support: Discord

About

Non-root Docker image running Debian and OpenLiteSpeed.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published