oussamadouhou
  • Joined on 2026-02-01

pi-environment (latest)

Published 2026-03-21 02:48:10 +00:00 by oussamadouhou

Installation

docker pull git.fxdesign.nl/oussamadouhou/pi-environment:latest
sha256:6bf608e612923923c046442ec41523cdcc7a8503d66e9bf1f2fbe9fdec40c722

Images

Digest OS / Arch Size
481d34fd60 linux/amd64 1.4 GiB

Image Layers ( linux/amd64)

ARG RELEASE
ARG LAUNCHPAD_BUILD_ARCH
LABEL org.opencontainers.image.ref.name=ubuntu
LABEL org.opencontainers.image.version=24.04
ADD file:3f78aa860931e0853077f09eb31eddbeeef8a9dd70977305b4876aa176770721 in /
CMD ["/bin/bash"]
ENV LANG=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8
ENV LANGUAGE=en_US:en
RUN /bin/sh -c apt-get update && apt-get install -y locales curl wget unzip git sudo tmux ca-certificates ttyd fontconfig build-essential python3 python3-pip jq tree ripgrep fd-find fzf && rm -rf /var/lib/apt/lists/* && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 # buildkit
RUN /bin/sh -c apt-get update && apt-get install -y bat git-delta zoxide openssh-server net-tools iputils-ping dnsutils traceroute netcat-openbsd iproute2 redis-tools htop strace nano postgresql-client sqlite3 tini && rm -rf /var/lib/apt/lists/* # buildkit
RUN /bin/sh -c apt-get update && apt-get install -y libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2t64 libpango-1.0-0 libcairo2 libatspi2.0-0 && rm -rf /var/lib/apt/lists/* # buildkit
RUN /bin/sh -c ln -sf /usr/bin/fdfind /usr/local/bin/fd && ln -sf /usr/bin/batcat /usr/local/bin/bat # buildkit
RUN /bin/sh -c curl -fsSL "https://github.com/neovim/neovim/releases/download/v0.11.6/nvim-linux-x86_64.tar.gz" -o /tmp/nvim.tar.gz && tar -xzf /tmp/nvim.tar.gz -C /usr/local --strip-components=1 && rm /tmp/nvim.tar.gz # buildkit
RUN /bin/sh -c mkdir -p /var/run/sshd && sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config && sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/' /etc/ssh/sshd_config && echo "AllowUsers pi" >> /etc/ssh/sshd_config # buildkit
RUN /bin/sh -c curl -fsSL "https://github.com/jesseduffield/lazygit/releases/download/v0.59.0/lazygit_0.59.0_Linux_x86_64.tar.gz" | tar -xz -C /usr/local/bin # buildkit
RUN /bin/sh -c curl -fsSL "https://github.com/mikefarah/yq/releases/download/v4.52.4/yq_linux_amd64" -o /usr/local/bin/yq && chmod +x /usr/local/bin/yq # buildkit
RUN /bin/sh -c curl -fsSL "https://github.com/bitwarden/sdk-sm/releases/download/bws-v2.0.0/bws-x86_64-unknown-linux-gnu-2.0.0.zip" -o /tmp/bws.zip && unzip /tmp/bws.zip -d /usr/local/bin/ && chmod +x /usr/local/bin/bws && rm /tmp/bws.zip # buildkit
COPY --chown=pi:pi config/bin/bws-wrapper /usr/local/bin/bws-wrapper # buildkit
RUN /bin/sh -c chmod +x /usr/local/bin/bws-wrapper # buildkit
RUN /bin/sh -c curl -fsSL "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.4.0/JetBrainsMono.zip" -o /tmp/JetBrainsMono.zip && mkdir -p /usr/share/fonts/nerd-fonts && unzip -o /tmp/JetBrainsMono.zip -d /usr/share/fonts/nerd-fonts/ '*.ttf' && rm /tmp/JetBrainsMono.zip && fc-cache -fv # buildkit
RUN /bin/sh -c userdel -r ubuntu 2>/dev/null; useradd --uid 1000 --create-home --shell /bin/bash pi && echo "pi ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # buildkit
RUN /bin/sh -c mkdir -p /home/pi/.ssh && chmod 700 /home/pi/.ssh && chown pi:pi /home/pi/.ssh # buildkit
RUN /bin/sh -c mkdir -p /home/pi/.config/bws /home/pi/.cache/bws /home/pi/.local/share/bws && chown -R pi:pi /home/pi/.config /home/pi/.cache /home/pi/.local && chmod 700 /home/pi/.config/bws # buildkit
COPY --chown=pi:pi config/bws/config /home/pi/.config/bws/config # buildkit
RUN /bin/sh -c su - pi -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash' # buildkit
ENV NVM_DIR=/home/pi/.nvm
ENV NODE_ENV=production
ENV PI_WORKSPACE=/home/pi/workspace
ENV PATH=/home/pi/.nvm/versions/node/v24.14.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN /bin/sh -c su - pi -c 'export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && nvm install --lts && nvm alias default lts/* && nvm use default && npm install -g @mariozechner/pi-coding-agent typescript tsx @anthropic-ai/claude-code @google/gemini-cli && corepack enable' # buildkit
RUN /bin/sh -c su - pi -c 'export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && npm install --prefix /home/pi ioredis --no-save' # buildkit
RUN /bin/sh -c su - pi -c 'export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && npx playwright install-deps chromium && npx playwright install chromium' # buildkit
RUN /bin/sh -c su - pi -c 'curl -fsSL https://bun.sh/install | bash' # buildkit
ENV PATH=/home/pi/.bun/bin:/home/pi/.nvm/versions/node/v24.14.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN /bin/sh -c echo 'export PATH="$HOME/.bun/bin:$PATH"' >> /home/pi/.bashrc # buildkit
ARG GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e
ARG GITEA_BUILD_USER=oussamadouhou
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c TOKEN=""; if [ -f /run/secrets/gitea_token ]; then TOKEN=$(cat /run/secrets/gitea_token); elif [ -n "${GITEA_BUILD_TOKEN}" ]; then TOKEN="${GITEA_BUILD_TOKEN}"; fi; if [ -z "$TOKEN" ]; then echo "⚠️ GITEA_BUILD_TOKEN not provided - skipping dokploy-cli installation"; echo " Install manually with: git clone https://git.fxdesign.nl/flexinit/dokploy-cli.git"; else su - pi -c "export TOKEN='$TOKEN' && git clone \"https://${GITEA_BUILD_USER}:\${TOKEN}@git.fxdesign.nl/flexinit/dokploy-cli.git\" /tmp/dokploy-cli && cd /tmp/dokploy-cli && export PATH=\"\$HOME/.bun/bin:\$PATH\" && bun install --frozen-lockfile && bun build ./bin/dkp.ts --compile --outfile /home/pi/.bun/bin/dkp && rm -rf /tmp/dokploy-cli && echo '✓ dokploy-cli (dkp) installed'"; fi # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c if [ -f /home/pi/.bun/bin/dkp ]; then /home/pi/.bun/bin/dkp --version && echo "✓ dkp verified"; else echo "⚠️ dkp not installed - install manually with: dkp install"; fi # buildkit
COPY --chown=pi:pi docker/pi-ai-fix/dist/providers/openai-completions.js /home/pi/pi-ai-fix/openai-completions.js # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c su - pi -c 'export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && PI_AI_PROVIDERS=$(find $HOME/.nvm/versions/node -path "*/@mariozechner/pi-ai/dist/providers" -type d 2>/dev/null | head -1) && if [ -n "$PI_AI_PROVIDERS" ] && [ -f "$HOME/pi-ai-fix/openai-completions.js" ]; then echo "Applying pi-ai LiteLLM thinking fix to: $PI_AI_PROVIDERS" && cp "$HOME/pi-ai-fix/openai-completions.js" "$PI_AI_PROVIDERS/openai-completions.js" && echo "Fix applied successfully"; else echo "Warning: Could not apply pi-ai fix - paths not found"; fi' # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c curl -fsSL https://go.dev/dl/go1.22.0.linux-amd64.tar.gz -o /tmp/go.tar.gz && tar -C /usr/local -xzf /tmp/go.tar.gz && rm /tmp/go.tar.gz # buildkit
ENV PATH=/usr/local/go/bin:/home/pi/.bun/bin:/home/pi/.nvm/versions/node/v24.14.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c echo 'export PATH="/usr/local/go/bin:$PATH"' >> /home/pi/.bashrc # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c su - pi -c 'export PATH="/usr/local/go/bin:$PATH" && go install github.com/joshmedeski/sesh@latest' # buildkit
ENV PATH=/home/pi/go/bin:/usr/local/go/bin:/home/pi/.bun/bin:/home/pi/.nvm/versions/node/v24.14.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c echo 'export PATH="$HOME/go/bin:$PATH"' >> /home/pi/.bashrc # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c curl -fsSL "https://gitea.com/gitea/tea/releases/download/v0.9.2/tea-0.9.2-linux-amd64" -o /usr/local/bin/tea && chmod +x /usr/local/bin/tea # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c curl -fsSL "https://gitea.com/gitea/act_runner/releases/download/v0.1.3/act_runner-0.1.3-linux-amd64" -o /usr/local/bin/act_runner && chmod +x /usr/local/bin/act_runner # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c curl -fsSL "https://pkgs.netbird.io/install.sh" | sh # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c mkdir -p /home/pi/.config/tea && chown pi:pi /home/pi/.config/tea # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c echo 'export NVM_DIR="$HOME/.nvm"' >> /home/pi/.bashrc && echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' >> /home/pi/.bashrc && echo 'export PATH="$HOME/.nvm/versions/node/$(nvm version)/bin:$PATH"' >> /home/pi/.bashrc # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c echo 'eval "$(zoxide init bash)"' >> /home/pi/.bashrc && echo '[ -f /usr/share/doc/fzf/examples/key-bindings.bash ] && source /usr/share/doc/fzf/examples/key-bindings.bash' >> /home/pi/.bashrc && echo 'ulimit -c 0' >> /home/pi/.bashrc && echo 'export PATH="$HOME/bin:$PATH"' >> /home/pi/.bashrc # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c echo '[ -f /home/pi/.container-env ] && . /home/pi/.container-env' >> /home/pi/.profile # buildkit
COPY --chown=pi:pi config/git/.gitconfig /home/pi/.gitconfig # buildkit
COPY --chown=pi:pi docker/entrypoint.sh /home/pi/entrypoint.sh # buildkit
COPY --chown=pi:pi docker/sync-config.sh /home/pi/sync-config.sh # buildkit
COPY --chown=pi:pi docker/ttyd-index.html /home/pi/ttyd-index.html # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c chmod +x /home/pi/entrypoint.sh /home/pi/sync-config.sh # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c mkdir -p /home/pi/.pi/agent && mkdir -p /home/pi/.pi/agent/sessions && chown -R pi:pi /home/pi/.pi # buildkit
COPY --chown=pi:pi config/tmux/ /home/pi/.config/tmux/ # buildkit
COPY --chown=pi:pi config/nvim/ /home/pi/.config/nvim/ # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c chown -R pi:pi /home/pi/.pi /home/pi/.nvm # buildkit
RUN |2 GITEA_BUILD_TOKEN=143350e067ebdcc4db9aa9a433d2a2df0c6f1c9e GITEA_BUILD_USER=oussamadouhou /bin/sh -c mkdir -p /home/pi/workspace && chown -R pi:pi /home/pi/workspace # buildkit
USER pi
WORKDIR /home/pi
EXPOSE [22/tcp]
ENTRYPOINT ["tini" "--" "/home/pi/entrypoint.sh"]
CMD ["/bin/bash" "-l"]

Labels

Key Value
org.opencontainers.image.ref.name ubuntu
org.opencontainers.image.version 24.04
Details
Container
2026-03-21 02:48:10 +00:00
66
OCI / Docker
Versions (1) View all
latest 2026-03-21