Spaces:
Paused
Paused
| FROM ghcr.io/open-webui/open-webui:main | |
| # Install dependencies | |
| # Install essential build tools and dependencies | |
| RUN apt update && apt install -y \ | |
| software-properties-common \ | |
| gcc \ | |
| curl \ | |
| sudo \ | |
| git-lfs \ | |
| openssl \ | |
| wget \ | |
| jq \ | |
| python3 \ | |
| # We will install Node.js and npm using nvm or a direct method, not apt's potentially older versions | |
| && rm -rf /var/lib/apt/lists/* | |
| # Create a new group (optional, but good practice) | |
| RUN groupadd --system appuser | |
| # Create a new user and add them to the 'appuser' group | |
| # -m: Create the user's home directory | |
| # -s /bin/bash: Set the default shell for the user | |
| # -g appuser: Set the primary group for the user | |
| RUN useradd --system -m -s /bin/bash -g appuser appuser | |
| # Set the working directory to the user's home directory. | |
| # All subsequent commands will operate relative to this directory. | |
| WORKDIR /home/appuser | |
| # Switch to the new user | |
| USER appuser | |
| # Set environment variables for the user (optional) | |
| ENV HOME=/home/appuser | |
| # Install nvm (Node Version Manager) and then use it to install Node.js and npm | |
| # This ensures a clean and controlled Node.js/npm environment | |
| ENV NVM_DIR /home/appuser/.nvm | |
| RUN mkdir -p $NVM_DIR | |
| ENV NODE_VERSION 22 | |
| # Specify a compatible Node.js version, matching the earlier error message's requirement | |
| # Optionally, if a specific npm version is absolutely required by the application | |
| # and not provided by the Node.js version installed by nvm: | |
| # If a specific npm version like 11.5.2 was truly needed: npm install -g npm@11.5.2 | |
| RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash && \ | |
| . "$NVM_DIR/nvm.sh" && \ | |
| nvm install $NODE_VERSION && \ | |
| nvm use $NODE_VERSION && \ | |
| nvm alias default $NODE_VERSION && \ | |
| npm install -g npm@latest | |
| # Verify Node.js and npm versions | |
| RUN . "$NVM_DIR/nvm.sh" && node -v && npm -v | |
| # Set all cache directories to /tmp (writable) | |
| ENV HF_HOME=/tmp/hf_cache | |
| ENV HUGGINGFACE_HUB_CACHE=/tmp/hf_cache | |
| ENV TRANSFORMERS_CACHE=/tmp/hf_cache | |
| ENV SENTENCE_TRANSFORMERS_HOME=/tmp/hf_cache | |
| # Override Open WebUI cache directories | |
| ENV DATA_DIR=/tmp/open-webui-data | |
| ENV STATIC_DIR=/tmp/static | |
| # Copy sync scripts | |
| COPY --chown=appuser:appuser ./sync_storage.py ${HOME}/sync_storage.py | |
| COPY --chown=appuser:appuser ./start_with_sync.sh ${HOME}/start_with_sync.sh | |
| # Set working directory | |
| # WORKDIR /app | |
| COPY --chown=appuser:appuser ./add_bash_util.sh ${HOME}/add_bash_util.sh | |
| COPY --chown=appuser:appuser ./Caddyfile ${HOME}/Caddyfile | |
| COPY --chown=appuser:appuser ./crypt.sh ${HOME}/crypt.sh | |
| COPY --chown=appuser:appuser ./gemini ${HOME}/gemini | |
| COPY --chown=appuser:appuser ./readeck.toml ${HOME}/readeck.toml | |
| # Make scripts executable | |
| RUN chmod +x ${HOME}/*.py ${HOME}/*.sh | |
| # Expose ports | |
| EXPOSE 7860 | |
| HEALTHCHECK --interval=30s --timeout=10s --start-period=5s \ | |
| CMD curl -f http://localhost:7860/ || exit 1 | |
| # Start with sync | |
| ENTRYPOINT ["/home/appuser/start_with_sync.sh"] | |