Compare commits
10 Commits
codex/fix-
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 7a7f9979cd | |||
| 6b17e8bc06 | |||
| 54ae313563 | |||
| b34d4062a4 | |||
| 79230d62a2 | |||
| 71b6645157 | |||
| 0fe0e436aa | |||
| 6d103d42c5 | |||
|
|
a879543a1c | ||
| 44e4354d1f |
@@ -53,3 +53,9 @@ BASIC_AUTH_PASS=CHANGE_ME
|
|||||||
|
|
||||||
# ===== Polling =====
|
# ===== Polling =====
|
||||||
POLL_SECONDS=5
|
POLL_SECONDS=5
|
||||||
|
|
||||||
|
# ===== SSH host key verification (optional) =====
|
||||||
|
# Path to known_hosts file inside container. If present, strict host key
|
||||||
|
# checking is used. If absent, all host keys are accepted (less secure).
|
||||||
|
# Generate with: ssh-keyscan -p 22 192.168.1.1 > known_hosts
|
||||||
|
# SSH_KNOWN_HOSTS=/ssh/known_hosts
|
||||||
12
README.md
12
README.md
@@ -11,7 +11,7 @@ Web GUI to:
|
|||||||
|
|
||||||
## Files
|
## Files
|
||||||
- `docker-compose.yml` – stack
|
- `docker-compose.yml` – stack
|
||||||
- `.env.example` – copy to `.env` and fill values
|
- `.env.example` – copy to `.env` and fill in your values (**never commit `.env`!**)
|
||||||
- `jd-webgui/app.py` – FastAPI web app
|
- `jd-webgui/app.py` – FastAPI web app
|
||||||
- `jd-webgui/Dockerfile` – includes ffprobe
|
- `jd-webgui/Dockerfile` – includes ffprobe
|
||||||
|
|
||||||
@@ -40,6 +40,16 @@ docker compose up -d --build
|
|||||||
- If `MYJD_DEVICE` is empty, the WebGUI will automatically pick the first available device.
|
- If `MYJD_DEVICE` is empty, the WebGUI will automatically pick the first available device.
|
||||||
- Ensure the SSH user can write to `/jellyfin/Filme` (and series dir if used).
|
- Ensure the SSH user can write to `/jellyfin/Filme` (and series dir if used).
|
||||||
|
|
||||||
|
## Security
|
||||||
|
- **Never commit `.env`** – it contains passwords and API keys. Only `.env.example` is tracked.
|
||||||
|
- **SSH host key verification**: For secure SFTP transfers, provide a `known_hosts` file:
|
||||||
|
```bash
|
||||||
|
ssh-keyscan -p 22 192.168.1.1 > known_hosts
|
||||||
|
```
|
||||||
|
Mount it in `docker-compose.yml` and set `SSH_KNOWN_HOSTS=/ssh/known_hosts`.
|
||||||
|
Without it, any host key is accepted (MITM risk on untrusted networks).
|
||||||
|
- **Basic Auth** protects the WebGUI but transmits credentials in cleartext over HTTP. Use a reverse proxy with HTTPS (e.g. Traefik, Caddy) in production.
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
- Device not found: list devices
|
- Device not found: list devices
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -21,11 +21,9 @@ services:
|
|||||||
- jdownloader
|
- jdownloader
|
||||||
ports:
|
ports:
|
||||||
- "8080:8080"
|
- "8080:8080"
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
environment:
|
environment:
|
||||||
TZ: Europe/Berlin
|
TZ: Europe/Berlin
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/jd-output:/output:rw
|
- ./data/jd-output:/output:rw
|
||||||
- ./data/md5:/md5:rw
|
- ./data/md5:/md5:rw
|
||||||
- /root/.ssh/id_ed25519:/ssh/id_ed25519:ro
|
- ${SSH_KEY_PATH:-/root/.ssh/id_ed25519}:/ssh/id_ed25519:ro
|
||||||
|
|||||||
@@ -2,19 +2,17 @@ FROM python:3.12-slim
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg && rm -rf /var/lib/apt/lists/*
|
||||||
&& apt-get install -y --no-install-recommends ffmpeg \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
RUN pip install --no-cache-dir \
|
COPY requirements.txt .
|
||||||
fastapi \
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
uvicorn \
|
|
||||||
myjdapi \
|
|
||||||
paramiko \
|
|
||||||
python-multipart
|
|
||||||
|
|
||||||
COPY app.py /app/app.py
|
RUN useradd -m -u 1000 appuser && chown appuser:appuser /app
|
||||||
COPY static /app/static
|
|
||||||
|
USER appuser
|
||||||
|
|
||||||
|
COPY --chown=appuser:appuser app.py .
|
||||||
|
COPY --chown=appuser:appuser static ./static
|
||||||
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8080"]
|
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8080"]
|
||||||
|
|||||||
2571
jd-webgui/app.py
2571
jd-webgui/app.py
File diff suppressed because it is too large
Load Diff
5
jd-webgui/requirements.txt
Normal file
5
jd-webgui/requirements.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
fastapi
|
||||||
|
uvicorn
|
||||||
|
myjdapi
|
||||||
|
paramiko
|
||||||
|
python-multipart
|
||||||
Reference in New Issue
Block a user