subsyt/Containerfile
Viktor Varland cd75bffa52
Some checks are pending
build / build (push) Waiting to run
chore: ensure api-queue.json exists
2025-09-30 12:10:12 +02:00

92 lines
2 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,
"out_dir": "/data/vids",
"http_api": {
"enable": true,
"listen": "127.0.0.1:4416",
"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 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" ]