Running LuaN1aoAgent inside Docker is strongly recommended. The agent includes high-privilege tools —Documentation Index
Fetch the complete documentation index at: https://mintlify.com/SanMuzZzZz/LuaN1aoAgent/llms.txt
Use this file to discover all available pages before exploring further.
shell_exec and python_exec — that execute arbitrary commands and code. A container boundary prevents these tools from affecting your host system if a task goes wrong or if a target redirects payloads back at the testing system.
Base Dockerfile
The following Dockerfile builds a Python 3.11 image with a curated set of penetration testing tools pre-installed:Volume mounts
Mount the following directories to persist data and inject secrets outside the image:| Host path | Container path | Purpose |
|---|---|---|
./knowledge_base | /app/knowledge_base | RAG knowledge base (built with rag_kdprepare) |
./rag/faiss_db | /app/rag/faiss_db | FAISS vector index (persist between rebuilds) |
./logs | /app/logs | Task run logs and metrics |
./luan1ao.db | /app/luan1ao.db | SQLite task database |
./.env | /app/.env | LLM API keys and configuration |
Docker Compose
The recommended setup uses Compose to run the web server and knowledge service as named services, with the agent invoked on demand:Starting the stack
Running an agent task
Agent tasks can be launched in two ways:- Via the Web UI
- Via docker exec
- Via docker run (one-off)
Open http://localhost:8088, click New Task, fill in the goal, and click Start. The web server spawns the agent as a subprocess inside the
web container.Network isolation considerations
By default, Docker containers use a bridge network (luan1ao_default when using Compose). The agent can reach any host reachable from that bridge, including:
- Other containers in the same Compose project
- Your host machine (via the Docker bridge gateway IP, typically
172.17.0.1) - External internet hosts
Testing against an isolated target
For lab environments, create a dedicated network that includes both the agent container and the target container:http://10.10.0.100:8080 while remaining isolated from other networks.
Restricting outbound internet access
If the target is entirely internal and you want to prevent the agent from making outbound requests (e.g., toshell_exec a reverse shell callback), use Docker’s internal network flag:
An
internal network blocks all outbound traffic, including LLM API calls. You will need to proxy API traffic separately or use a local LLM if you go fully internal.Security checklist
Pre-deployment checklist
Pre-deployment checklist
-
.envfile is mounted read-only (:ro) and never baked into the image -
luan1ao.db,logs/, andknowledge_base/are on host-mounted volumes (not container-internal) - The target is authorized for penetration testing in writing
- The web UI port (
8088) is not exposed to untrusted networks - You have verified the scope of the goal string before launching a task
Do not do these things
Do not do these things
- Do not use
--privilegedor--cap-add=SYS_ADMINunless you specifically need them for a tool - Do not run the container as
rootin production — add a non-rootUSERdirective to the Dockerfile - Do not expose port
8081(knowledge service) externally; it has no authentication - Do not commit
.envto version control - Do not run agent tasks against targets you do not own or have written authorization to test