Non-root Docker image running Debian and OpenLiteSpeed.
To properly utilize this image, please use Demyx.
- Repository - demyxsh/demyx
- Homepage - demyx.sh
Join us on Discord for latest news, faster support, or just chill.
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/ |
This repository has been moved to the organization demyxsh; please update the remote URL.
git remote set-url origin [email protected]:demyxsh/openlitespeed.git
DEMYX_ADMIN_IP=myip
to lock down OpenLiteSpeed's admin pageDEMYX_ADMIN_PREFIX=false
if you're exposing portsDEMYX_BASIC_AUTH_WP=true
to enable basic auth for wp-login.phpDEMYX_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
- Auto built weekly on Saturdays (America/Los_Angeles)
- Rolling release updates
- For support: Discord