| FROM kalilinux/kali-rolling | |
| ENV DEBIAN_FRONTEND=noninteractive | |
| ENV HOSTNAME=xro | |
| # ββ System packages βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN apt-get update && apt-get install -y \ | |
| ca-certificates \ | |
| curl \ | |
| wget \ | |
| git \ | |
| sudo \ | |
| htop \ | |
| btop \ | |
| neovim \ | |
| nano \ | |
| tmux \ | |
| screen \ | |
| lsof \ | |
| net-tools \ | |
| nmap \ | |
| netcat-traditional \ | |
| whois \ | |
| dnsutils \ | |
| python3 \ | |
| python3-pip \ | |
| python3-full \ | |
| libssl-dev \ | |
| libffi-dev \ | |
| nodejs \ | |
| npm \ | |
| nginx \ | |
| dbus \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # ββ Node v22 βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN npm install -g n && n 22 && hash -r | |
| # ββ Python deps (FastAPI server) ββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN pip3 install --break-system-packages \ | |
| fastapi \ | |
| "uvicorn[standard]" \ | |
| httpx | |
| # ββ ttyd βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN curl -fsSL https://github.com/tsl0922/ttyd/releases/download/1.7.4/ttyd.x86_64 \ | |
| -o /usr/local/bin/ttyd && chmod +x /usr/local/bin/ttyd | |
| # ββ Ollama ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN curl -fsSL https://ollama.com/install.sh | sh | |
| # ββ nginx cleanup: remove all default configs to avoid conflicts ββββββββββββββ | |
| RUN rm -f /etc/nginx/sites-enabled/default \ | |
| /etc/nginx/sites-available/default \ | |
| /etc/nginx/conf.d/default.conf | |
| # ββ Workspace ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RUN mkdir -p /workspace | |
| COPY start.sh /start.sh | |
| COPY nginx.conf /etc/nginx/sites-enabled/default | |
| COPY app.py /workspace/app.py | |
| RUN chmod +x /start.sh | |
| # ββ Verify everything is in place at build time βββββββββββββββββββββββββββββββ | |
| RUN python3 -c "import fastapi, uvicorn, httpx; print('Python deps OK')" | |
| RUN python3 -m py_compile /workspace/app.py && echo "app.py syntax OK" | |
| RUN bash -n /start.sh && echo "start.sh syntax OK" | |
| RUN nginx -t && echo "nginx config OK" | |
| RUN which ollama && echo "ollama OK" | |
| RUN which ttyd && echo "ttyd OK" | |
| VOLUME ["/root/.ollama"] | |
| EXPOSE 7860 | |
| CMD ["/start.sh"] |