94 lines
2.1 KiB
Docker
94 lines
2.1 KiB
Docker
FROM docker.io/library/golang:1.24-alpine as builder
|
|
|
|
WORKDIR /src
|
|
|
|
COPY go.* .
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
RUN go build -o /src/build/subsyt .
|
|
|
|
FROM docker.io/library/alpine:3.21
|
|
|
|
RUN apk update && apk upgrade && apk add --no-cache \
|
|
bash \
|
|
ffmpeg \
|
|
aria2 \
|
|
pipx \
|
|
attr \
|
|
mutagen \
|
|
ca-certificates \
|
|
deno \
|
|
python3 \
|
|
py3-requests \
|
|
py3-certifi \
|
|
py3-brotli \
|
|
py3-mutagen \
|
|
py3-pycryptodomex \
|
|
py3-secretstorage \
|
|
py3-websockets
|
|
|
|
|
|
RUN addgroup --gid 1000 subsyt \
|
|
&& adduser --home /home/subsyt \
|
|
--shell /bin/bash \
|
|
--uid 1000 \
|
|
--ingroup subsyt \
|
|
--disabled-password \
|
|
subsyt
|
|
|
|
RUN mkdir /data
|
|
RUN mkdir /data/vids
|
|
RUN touch /data/config.json
|
|
RUN touch /data/opml.xml
|
|
RUN touch /data/api-queue.json
|
|
|
|
RUN chown --recursive subsyt:subsyt /data
|
|
|
|
USER subsyt
|
|
|
|
COPY <<-EOT /data/config.json
|
|
{
|
|
"daemon": true,
|
|
"dry_run": false,
|
|
"download_dir": "/data/download",
|
|
"media_dir": "/data/media",
|
|
"http_api": {
|
|
"enable": true,
|
|
"listen": "0.0.0.0:6901",
|
|
"auth_token_file": "/run/secrets/subsyt-token",
|
|
"queue_file": "/data/api-queue.json"
|
|
},
|
|
"provider": {
|
|
"youtube": {
|
|
"verbose": false,
|
|
"cmd": "/home/subsyt/.local/bin/yt-dlp",
|
|
"format": "",
|
|
"format_sort": "",
|
|
"output_path_template": "s%(upload_date>%Y)s/%(channel)s.s%(upload_date>%Y)Se%(upload_date>%m%d)S.%(title)s.%(id)s.%(ext)s",
|
|
"url": "https://www.youtube.com",
|
|
"throttle": 5,
|
|
"cookies_file": "",
|
|
"opml_file": "/data/opml.xml",
|
|
"po_token": "",
|
|
"bgutil_server": "http://bgutil:4416",
|
|
"player_client": ""
|
|
}
|
|
}
|
|
}
|
|
EOT
|
|
|
|
WORKDIR /app
|
|
|
|
RUN pipx ensurepath
|
|
RUN source /home/subsyt/.bashrc
|
|
|
|
RUN pipx install yt-dlp
|
|
RUN pipx inject yt-dlp yt-dlp-ejs
|
|
RUN pipx inject yt-dlp curl-cffi
|
|
RUN pipx inject yt-dlp bgutil-ytdlp-pot-provider
|
|
|
|
COPY --from=builder --chown=subsyt:subsyt /src/build/subsyt /app/subsyt
|
|
|
|
CMD [ "/app/subsyt", "--config=/data/config.json" ]
|