Revert "Add Docker and LXC deployment support"

This reverts commit 451711b217.
This commit is contained in:
human insan
2026-08-27 22:34:10 +01:00
parent 451711b217
commit 6c0d06de77
5 changed files with 4 additions and 80 deletions
-4
View File
@@ -1,4 +0,0 @@
.git
__pycache__
server.log
*.pyc
-18
View File
@@ -1,18 +0,0 @@
FROM python:3.13-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends ffmpeg \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY server.py index.html README.md ./
ENV C41_SOURCE=/data/source \
C41_OUTPUT=/data/encoded \
C41_HOST=0.0.0.0 \
C41_PORT=8765
EXPOSE 8765
VOLUME ["/data/source", "/data/encoded"]
CMD ["python3", "server.py"]
-40
View File
@@ -32,46 +32,6 @@ python3 server.py
Open <http://127.0.0.1:8765> in a browser. Open <http://127.0.0.1:8765> in a browser.
## Docker
Docker keeps the application and FFmpeg inside a container while the recorder
files remain on the host. From this directory, run:
```sh
docker compose up -d --build
```
Open <http://127.0.0.1:8765>. The Compose configuration mounts the original
archive read-only at `/data/source` and stores encoded files persistently in
`/data/encoded`. Stop it with:
```sh
docker compose down
```
To use different host folders, edit the two `volumes` entries in
`compose.yaml`. Do not remove `:ro` from the source mount.
## LXC
An unprivileged LXC works without Docker. Install Python and FFmpeg inside the
container, then bind-mount the host folders into the LXC and run:
```sh
python3 server.py --host 0.0.0.0 --source /mnt/c41-media --root /mnt/c41-media-mp4
```
The LXC user needs read permission on the source mount and write permission on
the encoded mount. Run the player as a system service or with a process
supervisor so it restarts after reboot. If the LXC should be reachable from
other machines, bind the port explicitly:
```sh
python3 server.py --host 0.0.0.0 --source /mnt/c41-media --root /mnt/c41-media-mp4 --port 8765
```
Then open `http://LXC-IP:8765`. No privileged container features are required.
The default source archive is: The default source archive is:
`/home/human/Videos/Yassine Salon/C41/media` `/home/human/Videos/Yassine Salon/C41/media`
-12
View File
@@ -1,12 +0,0 @@
services:
c41-player:
build: .
container_name: c41-player
environment:
C41_HOST: 0.0.0.0
ports:
- "8765:8765"
volumes:
- "/home/human/Videos/Yassine Salon/C41/media:/data/source:ro"
- "/home/human/Videos/Yassine Salon/C41/media-mp4:/data/encoded"
restart: unless-stopped
+4 -6
View File
@@ -5,7 +5,6 @@ import json
import re import re
import subprocess import subprocess
import threading import threading
import os
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
from pathlib import Path from pathlib import Path
from urllib.parse import parse_qs, urlparse from urllib.parse import parse_qs, urlparse
@@ -197,21 +196,20 @@ def main():
"root", "root",
nargs="?", nargs="?",
type=Path, type=Path,
default=Path(os.environ.get("C41_OUTPUT", "/home/human/Videos/Yassine Salon/C41/media-mp4")), default=Path("/home/human/Videos/Yassine Salon/C41/media-mp4"),
help="folder containing YYYYMMDD recording directories", help="folder containing YYYYMMDD recording directories",
) )
parser.add_argument("--port", type=int, default=int(os.environ.get("C41_PORT", "8765"))) parser.add_argument("--port", type=int, default=8765)
parser.add_argument("--host", default=os.environ.get("C41_HOST", "127.0.0.1"))
parser.add_argument( parser.add_argument(
"--source", "--source",
type=Path, type=Path,
default=Path(os.environ.get("C41_SOURCE", "/home/human/Videos/Yassine Salon/C41/media")), default=Path("/home/human/Videos/Yassine Salon/C41/media"),
help="folder containing source AVI files for manual encoding", help="folder containing source AVI files for manual encoding",
) )
args = parser.parse_args() args = parser.parse_args()
recordings = scan_recordings(args.root.expanduser().resolve()) recordings = scan_recordings(args.root.expanduser().resolve())
server = ThreadingHTTPServer((args.host, args.port), PlayerHandler) server = ThreadingHTTPServer(("127.0.0.1", args.port), PlayerHandler)
server.recordings = recordings server.recordings = recordings
server.source_root = args.source.expanduser().resolve() server.source_root = args.source.expanduser().resolve()
server.output_root = args.root.expanduser().resolve() server.output_root = args.root.expanduser().resolve()