| 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"] |
|
|