FROM node:24 ARG BUILD_DATE LABEL build-date=$BUILD_DATE LABEL maintainer="OpenClaw" LABEL description="HuggingFace Space for electerm-web with dataset sync" RUN apt-get update && apt-get install -y \ git python-is-python3 python3-venv python3-pip \ make build-essential g++ curl ca-certificates tar \ && rm -rf /var/lib/apt/lists/* RUN groupadd -r electerm && useradd -r -g electerm -d /home/electerm -s /bin/bash electerm \ && mkdir -p /home/electerm /app /home/electerm/data \ && chown -R electerm:electerm /home/electerm /app \ && chmod 755 /home/electerm ENV VIRTUAL_ENV=/opt/venv RUN python3 -m venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" RUN pip install --no-cache-dir --upgrade pip && pip install --no-cache-dir huggingface_hub WORKDIR /app USER electerm:electerm RUN git clone --depth 1 https://github.com/electerm/electerm-web.git WORKDIR /app/electerm-web RUN npm config set legacy-peer-deps true RUN npm install RUN npm run build RUN cp .sample.env .env \ && sed -i 's/HOST=.*/HOST=0.0.0.0/' .env \ && sed -i 's/# ENABLE_AUTH=.*/ENABLE_AUTH=1/' .env \ && sed -i 's/SERVER_USER=.*/SERVER_USER=admin/' .env \ && sed -i 's/SERVER_PASS=.*/SERVER_PASS=xm552297/' .env \ && sed -i 's|# DB_PATH=.*|DB_PATH=/home/electerm/data|' .env RUN npm cache clean --force USER root COPY sync_data.sh /sync_data.sh RUN chmod +x /sync_data.sh && chown electerm:electerm /sync_data.sh RUN mkdir -p /home/electerm/data/electerm_session_logs \ && chown -R electerm:electerm /app/electerm-web /home/electerm/data \ && chmod -R 777 /home/electerm/data WORKDIR /app/electerm-web USER electerm:electerm ENV NODE_ENV=production ENV HOME=/home/electerm/data ENV HOST=0.0.0.0 ENV PORT=5577 ENV ENABLE_AUTH=1 ENV DB_PATH=/home/electerm/data ENV SERVER_SECRET=xm552297-electerm-secret ENV SERVER_USER=admin ENV SERVER_PASS=xm552297 ENV TOKEN_EXPIRED_TIME=120y ENV SYNC_INTERVAL=7200 EXPOSE 5577 CMD ["/sync_data.sh"]