Files
docker_file_analysis/Dockerfile
T
tobias e62a14dafc Add markdown wiki with 473 pages and zk browser
Generate interlinked wiki from master inventory: 397 tool pages,
15 workflow pages, 27 recipe pages, 33 category pages, plus index.
All pages use [[wiki-links]] for cross-navigation between tools,
workflows, recipes, and categories (1782 links total).

Install zk for interactive browsing with fzf search, tag filtering,
and backlink discovery. Add 'fhelp wiki' command and Makefile target.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 19:50:36 +01:00

125 lines
5.3 KiB
Docker

FROM remnux/remnux-distro:latest
LABEL maintainer="tabledevil"
USER root
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe/Berlin
# Install additional system packages that REMnux doesn't include
RUN apt-get update && apt-get install -y \
busybox \
bat \
catdoc \
docx2txt \
fd-find \
fish \
fzf \
mc \
pipx \
ripgrep \
unrtf \
mpack \
pandoc \
zsh \
zsh-autosuggestions \
zsh-syntax-highlighting \
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Configure pip
ENV PYTHONDONTWRITEBYTECODE=1
ADD pip.conf /etc/pip.conf
# Install unfurl & dependencies via pipx (for URL analysis)
RUN PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install --include-deps dfir-unfurl \
&& PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx inject dfir-unfurl requests six maclookup
# Install visidata via pipx (for data exploration)
RUN PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install --include-deps visidata
# Install offline help and cheat sheet tools
RUN PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install --include-deps cheat \
&& PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install --include-deps tldr
# Install navi (interactive cheatsheet browser, Ctrl+G)
RUN curl -sL https://raw.githubusercontent.com/denisidoro/navi/master/scripts/install | BIN_DIR=/usr/local/bin bash 2>/dev/null \
|| echo "navi installation skipped (offline build)"
# Install zk (wiki browser with [[wiki-links]], fzf search, backlinks)
RUN curl -sL https://github.com/zk-org/zk/releases/latest/download/zk-linux-amd64.tar.gz \
| tar xz -C /usr/local/bin/ 2>/dev/null \
|| echo "zk installation skipped (offline build)"
# Create data directory and set permissions
RUN mkdir -p /data \
&& chown remnux:remnux /data
# Add documentation and shell configuration
ADD files/README /opt/README
ADD files/welcome.sh /usr/local/bin/welcome.sh
ADD files/command_help /opt/command_help
ADD files/zshrc /etc/zsh/zshrc
ADD files/fish_config.fish /etc/fish/conf.d/remnux.fish
RUN chmod +x /usr/local/bin/welcome.sh
# Add help system scripts
ADD scripts/find-tool /usr/local/bin/find-tool
ADD scripts/fhelp /usr/local/bin/fhelp
ADD scripts/check-help-coverage.sh /usr/local/bin/check-help-coverage.sh
RUN chmod +x /usr/local/bin/find-tool /usr/local/bin/fhelp /usr/local/bin/check-help-coverage.sh
# Install pre-generated help artifacts (built via: make generate-master)
ADD data/generated/tools.db /opt/remnux-docs/tools.db
ADD data/generated/cheatsheets/ /opt/cheatsheets/personal/
ADD data/generated/workflows/ /opt/remnux-docs/workflows/
ADD cheatsheets/ /opt/cheatsheets/
ADD data/generated/wiki/ /opt/wiki/
# Install legacy help scripts (kept for compatibility)
ADD scripts/create-offline-help-system.sh /usr/local/bin/create-offline-help-system.sh
ADD scripts/import-remnux-cheatsheets.sh /usr/local/bin/import-remnux-cheatsheets.sh
ADD scripts/convert-remnux-cheats.py /usr/local/bin/convert-remnux-cheats.py
ADD scripts/add-tool-cheats.sh /usr/local/bin/add-tool-cheats.sh
RUN chmod +x /usr/local/bin/create-offline-help-system.sh /usr/local/bin/import-remnux-cheatsheets.sh \
&& chmod +x /usr/local/bin/convert-remnux-cheats.py /usr/local/bin/add-tool-cheats.sh
# Install Oh My Zsh for remnux user (minimal installation)
RUN su - remnux -c 'sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended' || true \
&& rm -rf /home/remnux/.oh-my-zsh/.git \
&& find /home/remnux/.oh-my-zsh/plugins -mindepth 1 -maxdepth 1 -type d ! -name git ! -name docker ! -name command-not-found ! -name colored-man-pages -exec rm -rf {} + 2>/dev/null || true \
&& rm -rf /home/remnux/.cache/* /tmp/* 2>/dev/null || true
# Configure navi cheatsheet path
RUN mkdir -p /home/remnux/.local/share/navi/cheats \
&& ln -sf /opt/cheatsheets/personal /home/remnux/.local/share/navi/cheats/remnux \
&& chown -R remnux:remnux /home/remnux/.local/share/navi 2>/dev/null || true
# Configure cheat tool — Python cheat v2.x uses DEFAULT_CHEAT_DIR env var
# Create cheat-compatible copies (without .cheat extension) in the cheat directory
RUN mkdir -p /home/remnux/.cheat \
&& for f in /opt/cheatsheets/personal/*.cheat; do \
base=$(basename "$f" .cheat); \
cp "$f" "/home/remnux/.cheat/$base"; \
done \
&& chown -R remnux:remnux /home/remnux/.cheat
ENV DEFAULT_CHEAT_DIR=/home/remnux/.cheat
# Configure bash welcome (login shells only)
RUN echo '# Welcome message (login shells only)' >> /etc/bash.bashrc \
&& echo 'if [ -z "$_WELCOME_SHOWN" ] && [ -f /usr/local/bin/welcome.sh ]; then' >> /etc/bash.bashrc \
&& echo ' source /usr/local/bin/welcome.sh' >> /etc/bash.bashrc \
&& echo 'fi' >> /etc/bash.bashrc \
&& echo 'alias analyse="fhelp"' >> /etc/bash.bashrc \
&& echo 'alias h="fhelp"' >> /etc/bash.bashrc \
&& echo 'alias ?="fhelp"' >> /etc/bash.bashrc \
&& echo '# Navi widget for bash (Ctrl+G)' >> /etc/bash.bashrc \
&& echo 'command -v navi >/dev/null 2>&1 && eval "$(navi widget bash)" 2>/dev/null' >> /etc/bash.bashrc \
&& rm -rf /var/cache/* /tmp/* /var/tmp/* /home/remnux/.cache/* /root/.cache/* 2>/dev/null || true
# Switch to remnux user (REMnux default user)
USER remnux
ENV LANG=en_US.UTF-8
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/remnux/.local/bin
WORKDIR /data
CMD ["/bin/bash"]