| # debian.sh --arch 'amd64' out/ 'bookworm' '@1787529600' |
| RUN /bin/sh -c groupadd --gid 1000 node && useradd --uid 1000 --gid node --shell /bin/bash --create-home node # buildkit |
| ENV NODE_VERSION=26.8.1 |
| RUN /bin/sh -c ARCH= OPENSSL_ARCH= && dpkgArch="$(dpkg --print-architecture)" && case "${dpkgArch##*-}" in amd64) ARCH='x64' OPENSSL_ARCH='linux-x86_64';; ppc64el) ARCH='ppc64le' OPENSSL_ARCH='linux-ppc64le';; arm64) ARCH='arm64' OPENSSL_ARCH='linux-aarch64';; *) echo "unsupported architecture"; exit 1 ;; esac && set -ex && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr xz-utils libatomic1 --no-install-recommends && rm -rf /var/lib/apt/lists/* && export GNUPGHOME="$(mktemp -d)" && for key in 5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 CC68F5A3106FF448322E48ED27F5E38D5B0A215F 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C 108F52B48DB57BB0CC439B2997B01419BD92F80A 655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD A363A499291CBBC940DD62E41F10027AF002F8B0 ; do { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; done && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && gpgconf --kill all && rm -rf "$GNUPGHOME" && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt && find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; && apt-mark auto '.*' > /dev/null && find /usr/local -type f -executable -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && ln -s /usr/local/bin/node /usr/local/bin/nodejs && node --version && npm --version && rm -rf /tmp/* # buildkit |
| COPY docker-entrypoint.sh /usr/local/bin/ # buildkit |
| ENTRYPOINT ["docker-entrypoint.sh"] |
| CMD ["node"] |
| USER root |
| /bin/sh -c apt-get update && apt-get install -y --no-install-recommends python3 python3-pip python3-venv build-essential curl file git procps ripgrep jq ca-certificates imagemagick ffmpeg openjdk-17-jdk-headless unzip && printf '%s\n' '#!/bin/sh' 'case "$1" in' ' identify|convert|mogrify|compare|composite|animate|display|montage|stream|import|conjure) cmd="$1"; shift; exec "$cmd" "$@" ;;' ' *) exec convert "$@" ;;' 'esac' > /usr/local/bin/magick && chmod 755 /usr/local/bin/magick && rm -rf /var/lib/apt/lists/* |
| /bin/sh -c mkdir -p -m 755 /etc/apt/keyrings && curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg -o /etc/apt/keyrings/githubcli-archive-keyring.gpg && chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list && apt-get update && apt-get install -y --no-install-recommends gh && rm -rf /var/lib/apt/lists/* |
| /bin/sh -c git config --system user.name "SteelDynamite" && git config --system user.email "196822204+SteelDynamite@users.noreply.github.com" && git config --system credential.helper '!gh auth git-credential' |
| ARG ANDROID_CMDLINE_TOOLS |
| ARG ANDROID_CMDLINE_TOOLS ANDROID_CMDLINE_TOOLS_SHA256 |
| ENV ANDROID_HOME=/opt/android-sdk NDK_HOME=/opt/android-sdk/ndk/28.2.13676358 RUSTUP_HOME=/opt/rustup JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 PATH=/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:/usr/local/bin:$PATH |
| |2 ANDROID_CMDLINE_TOOLS=15859902 ANDROID_CMDLINE_TOOLS_SHA256=4e4c464f145a7512b57d088ac6c278c03c9eea610886b35a5e0804e74eedf583 /bin/sh -c mkdir -p "$ANDROID_HOME/cmdline-tools" && curl -fsSL "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDLINE_TOOLS}_latest.zip" -o /tmp/android-commandline-tools.zip && echo "${ANDROID_CMDLINE_TOOLS_SHA256} /tmp/android-commandline-tools.zip" | sha256sum -c - && unzip -q /tmp/android-commandline-tools.zip -d "$ANDROID_HOME/cmdline-tools" && mv "$ANDROID_HOME/cmdline-tools/cmdline-tools" "$ANDROID_HOME/cmdline-tools/latest" && yes | sdkmanager --licenses >/dev/null && sdkmanager "platform-tools" "platforms;android-36" "build-tools;35.0.0" "build-tools;36.0.0" "ndk;28.2.13676358" && chown -R node:node "$ANDROID_HOME" && rm /tmp/android-commandline-tools.zip && curl --proto '=https' --tlsv1.2 -fsSL https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal && /root/.cargo/bin/rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android && install -m 755 /root/.cargo/bin/rustup /usr/local/bin/rustup && for tool in cargo rustc rustdoc; do ln -s rustup "/usr/local/bin/$tool"; done && chown -R node:node "$RUSTUP_HOME" && rm -rf /root/.cargo |
| |2 ANDROID_CMDLINE_TOOLS=15859902 ANDROID_CMDLINE_TOOLS_SHA256=4e4c464f145a7512b57d088ac6c278c03c9eea610886b35a5e0804e74eedf583 /bin/sh -c BX_INSTALL_DIR=/usr/local/bin sh -c "$(curl -fsSL https://raw.githubusercontent.com/brave/brave-search-cli/main/scripts/install.sh)" && python3 -m venv /opt/agent-tools && /opt/agent-tools/bin/pip install --no-cache-dir --upgrade pip && /opt/agent-tools/bin/pip install --no-cache-dir jina-cli youtube-transcript-api 'markitdown[all]' && ln -s /opt/agent-tools/bin/jina /usr/local/bin/jina && ln -s /opt/agent-tools/bin/markitdown /usr/local/bin/markitdown && arch="$(dpkg --print-architecture)" && case "$arch" in amd64) slack_asset=slackcli-linux; unity_arch=amd64 ;; arm64) slack_asset=slackcli-linux-arm64; unity_arch=arm64 ;; *) echo "unsupported architecture: $arch" >&2; exit 1 ;; esac && slack_version="$(curl -fsSL https://api.github.com/repos/shaharia-lab/slackcli/releases/latest | jq -r .tag_name)" && curl -fsSL "https://github.com/shaharia-lab/slackcli/releases/download/${slack_version}/${slack_asset}" -o /usr/local/bin/slackcli && chmod 755 /usr/local/bin/slackcli && curl -fsSL "https://github.com/youngwoocho02/unity-cli/releases/latest/download/unity-cli-linux-${unity_arch}" -o /usr/local/bin/unity-cli && chmod 755 /usr/local/bin/unity-cli && bx --version && jina --version && slackcli --version && unity-cli version |
| ARG ANDROID_CMDLINE_TOOLS ANDROID_CMDLINE_TOOLS_SHA256 PASEO_VERSION |
| ARG ANDROID_CMDLINE_TOOLS ANDROID_CMDLINE_TOOLS_SHA256 PASEO_VERSION PI_AGENT_VERSION |
| |4 ANDROID_CMDLINE_TOOLS=15859902 ANDROID_CMDLINE_TOOLS_SHA256=4e4c464f145a7512b57d088ac6c278c03c9eea610886b35a5e0804e74eedf583 PASEO_VERSION=0.7.2 PI_AGENT_VERSION=0.84.4 /bin/sh -c npm install -g @getpaseo/cli@${PASEO_VERSION} @earendil-works/pi-coding-agent@${PI_AGENT_VERSION} |
| ENV PYTHONPATH=/opt/agent-tools/lib/python3.11/site-packages |
| |4 ANDROID_CMDLINE_TOOLS=15859902 ANDROID_CMDLINE_TOOLS_SHA256=4e4c464f145a7512b57d088ac6c278c03c9eea610886b35a5e0804e74eedf583 PASEO_VERSION=0.7.2 PI_AGENT_VERSION=0.84.4 /bin/sh -c install -d -o node -g node -m 755 /home/node/.config /home/node/.local /home/node/.local/share /home/node/.local/state /home/node/.cache /home/node/.paseo /home/node/.pi |
| USER node |
| WORKDIR /projects |
| EXPOSE 6767 |
| ENTRYPOINT ["paseo", "daemon", "start", "--foreground", "--listen", "0.0.0.0:6767", "--home", "/home/node/.paseo", "--hostnames", "paseo.steeldynamite.com", "--no-relay"] |