Web Application Firewall built with Kemal framework
Get kemal-waf running in a few minutes. Easiest option: pull from Docker Hub and run. No git clone needed.
You only need Docker installed.
docker run -d \
--name kemal-waf \
-p 80:3030 \
-p 443:3443 \
-p 8888:8888 \
-v waf-certs:/app/config/certs \
-v admin-data:/app/admin/data \
kursadaltan/kemalwaf:latest
Then open:
The first time you open the admin panel, a setup wizard will ask you to create an admin user.
# Pull the image
docker pull kursadaltan/kemalwaf:latest
# Create volumes (first time only)
docker volume create waf-certs
docker volume create admin-data
# Run
docker run -d \
--name kemal-waf \
-p 80:3030 -p 443:3443 -p 8888:8888 \
-v waf-certs:/app/config/certs \
-v admin-data:/app/admin/data \
kursadaltan/kemalwaf:latest
docker stop kemal-waf # stop
docker start kemal-waf # start again
docker logs -f kemal-waf # watch logs
Need your own waf.yml or a rules folder? Mount them when you run the container. You still don’t need to clone the repo—just have the files on your machine.
If you already have a waf-config and waf-rules folder:
docker run -d \
--name kemal-waf \
-p 80:3030 -p 443:3443 -p 8888:8888 \
-v waf-certs:/app/config/certs \
-v admin-data:/app/admin/data \
-v $(pwd)/waf-config/waf.yml:/app/config/waf.yml:ro \
-v $(pwd)/waf-rules:/app/rules:ro \
kursadaltan/kemalwaf:latest
mkdir -p waf-config waf-rules
# Example config from the repo
curl -o waf-config/waf.yml https://raw.githubusercontent.com/kursadaltan/kemalwaf/main/config/waf.yml.example
# Run with your config and rules
docker run -d \
--name kemal-waf \
-p 80:3030 -p 443:3443 -p 8888:8888 \
-v waf-certs:/app/config/certs \
-v admin-data:/app/admin/data \
-v $(pwd)/waf-config/waf.yml:/app/config/waf.yml:ro \
-v $(pwd)/waf-rules:/app/rules:ro \
kursadaltan/kemalwaf:latest
Use this if you’re developing or want to run the project’s Compose setup:
git clone https://github.com/kursadaltan/kemalwaf.git
cd kemalwaf
docker compose up -d
This is the only method that requires cloning the repo.
waf.yml and/or rules folder (optional).