├── static ├── prunemate.png └── prunemate-icon.svg ├── Dockerfile ├── docker-compose.yaml ├── templates ├── login.html └── index.html ├── ARCHITECTURE.md ├── CHANGELOG.md ├── README.md └── LICENSE /static/prunemate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anoniemerd/PruneMate/HEAD/static/prunemate.png -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.12-slim 2 | 3 | WORKDIR /app 4 | 5 | # Copy app files 6 | COPY prunemate.py /app/prunemate.py 7 | COPY templates /app/templates 8 | COPY static /app/static 9 | 10 | 11 | # Install Python dependencies (incl. Docker SDK, Gunicorn, and file-based locking) 12 | RUN pip install --no-cache-dir Flask APScheduler docker gunicorn filelock 13 | 14 | EXPOSE 8080 15 | 16 | CMD ["python", "prunemate.py"] 17 | -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | prunemate: 3 | build: . # Build locally instead of using pre-built image 4 | container_name: prunemate 5 | ports: 6 | - "7676:8080" 7 | volumes: 8 | - /var/run/docker.sock:/var/run/docker.sock 9 | - ./logs:/var/log 10 | - ./config:/config 11 | environment: 12 | - PRUNEMATE_TZ=Europe/Amsterdam # Change this to your desired timezone 13 | - PRUNEMATE_TIME_24H=true #false for 12-Hour format (AM/PM) 14 | # Optional: Enable authentication (generate hash with: docker run --rm anoniemerd/prunemate python prunemate.py --gen-hash "password") 15 | # - PRUNEMATE_AUTH_USER=admin 16 | # - PRUNEMATE_AUTH_PASSWORD_HASH=your_base64_encoded_hash_here 17 | restart: unless-stopped -------------------------------------------------------------------------------- /static/prunemate-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |
170 | Authentication required to continue
173 | 174 | {% with messages = get_flashed_messages() %} 175 | {% if messages %} 176 |
4 |
5 |
Docker image & resource cleanup helper, on a schedule!
9 | 10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
53 |
54 |
60 |
61 |
67 |
68 |
74 |
75 |
81 |
82 |
485 |
486 |
667 | Keep your Docker host clean with PruneMate! 🐳🧹 668 |
669 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc.
331 | Docker image & resource cleanup helper, on a schedule!
349 |