File size: 3,238 Bytes
d69e60a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
###############################################################################
# Dockerfile pour Hugging Face Spaces - Microsoft Rewards Script
#
# Ce Dockerfile :
#   1. Clone le repo GitHub et compile le projet TypeScript
#   2. Installe Python + Gradio pour l'interface web (port 7860)
#   3. Lance app.py qui gère les credentials via les HF Secrets
#
# Secrets a configurer dans HF Spaces :
#   - MS_ACCOUNTS : JSON array, ex: [{"email":"ton@mail.com","password":"tonmdp"}]
#     ou bien separement :
#   - MS_EMAIL : ton email Microsoft
#   - MS_PASSWORD : ton mot de passe Microsoft
###############################################################################

FROM node:22-slim

# Meta pour Hugging Face Spaces
LABEL maintainer="user"
LABEL description="Microsoft Rewards Script - Hugging Face Space"

# Variables d'environnement
ENV DEBIAN_FRONTEND=noninteractive \
    PLAYWRIGHT_BROWSERS_PATH=0 \
    NODE_ENV=production \
    TZ=Europe/Paris \
    FORCE_HEADLESS=1 \
    PYTHONUNBUFFERED=1

# Installer les dependances systeme : Python3, pip, cron, Chromium deps, git
RUN apt-get update && apt-get install -y --no-install-recommends \
    python3 \
    python3-pip \
    python3-venv \
    git \
    cron \
    gettext-base \
    tzdata \
    ca-certificates \
    curl \
    libglib2.0-0 \
    libdbus-1-3 \
    libexpat1 \
    libfontconfig1 \
    libgtk-3-0 \
    libnspr4 \
    libnss3 \
    libasound2 \
    libflac12 \
    libatk1.0-0 \
    libatspi2.0-0 \
    libdrm2 \
    libgbm1 \
    libdav1d6 \
    libx11-6 \
    libx11-xcb1 \
    libxcomposite1 \
    libxcursor1 \
    libxdamage1 \
    libxext6 \
    libxfixes3 \
    libxi6 \
    libxrandr2 \
    libxrender1 \
    libxss1 \
    libxtst6 \
    libdouble-conversion3 \
    && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*

# Repertoire de travail pour le script Microsoft Rewards
WORKDIR /usr/src/microsoft-rewards-script

# Cloner le repo
RUN git clone https://github.com/TheNetsky/Microsoft-Rewards-Script.git /usr/src/microsoft-rewards-script

# Installer les dependances Node.js et compiler
RUN npm ci --ignore-scripts \
    && npm run build \
    && rm -rf node_modules \
    && npm ci --omit=dev --ignore-scripts \
    && npm cache clean --force

# Installer le navigateur Chromium pour Playwright
RUN npx playwright install --with-deps --only-shell chromium \
    && rm -rf /root/.cache /tmp/* /var/tmp/*

# Config par defaut : headless = true pour Docker
RUN sed -i 's/"headless": false/"headless": true/' /usr/src/microsoft-rewards-script/src/config.json || true

# Repertoire pour les sessions persistantes
RUN mkdir -p /usr/src/microsoft-rewards-script/dist/sessions

# Repertoire de travail pour l'app Python
WORKDIR /app

# Installer les dependances Python (Gradio + APScheduler)
RUN pip3 install --no-cache-dir --break-system-packages \
    gradio \
    apscheduler

# Copier l'application Python
COPY app.py /app/app.py

# Exposer le port 7860 (requis par Hugging Face Spaces)
EXPOSE 7860

# Utilisateur non-root pour HF Spaces
RUN useradd -m -u 1000 appuser \
    && chown -R appuser:appuser /app \
    && chown -R appuser:appuser /usr/src/microsoft-rewards-script

USER appuser

# Lancer l'app Gradio
CMD ["python3", "/app/app.py"]