From ffa8c7237954ea7af5b6860400d3ab0f2af991f0 Mon Sep 17 00:00:00 2001 From: q Date: Mon, 23 Dec 2024 15:07:50 +0300 Subject: [PATCH] add support docker --- Dockerfile | 12 ++-- Makefile | 2 +- docker/config/config.yml | 24 +++++++ docker/config/config_schema.json | 104 +++++++++++++++++++++++++++++++ docker/data/test.jpg | Bin 0 -> 28965 bytes docker/docker-compose.yml | 22 +++++++ lighttpd | 4 ++ lighttpd.conf | 3 + 8 files changed, 166 insertions(+), 5 deletions(-) create mode 100755 docker/config/config.yml create mode 100755 docker/config/config_schema.json create mode 100755 docker/data/test.jpg create mode 100755 docker/docker-compose.yml create mode 100644 lighttpd create mode 100644 lighttpd.conf diff --git a/Dockerfile b/Dockerfile index c3858e9..998a8af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM golang:1.19-bookworm AS base RUN apt-get update -run apt-get install -y libssl-dev cmake build-essential gperf libz-dev make git +RUN apt-get install -y libssl-dev cmake build-essential gperf libz-dev make git FROM base AS tdlib @@ -28,9 +28,13 @@ ARG MAKEOPTS WORKDIR /src RUN make ${MAKEOPTS} -FROM scratch AS telegabber +# Build to image +FROM debian:bookworm AS telegabber +RUN apt-get update +RUN apt-get install -y libssl-dev gperf COPY --from=build /src/release/telegabber /usr/local/bin/ +RUN ls -l /usr/local/bin/ ENTRYPOINT ["/usr/local/bin/telegabber"] +CMD ["/usr/local/bin/telegabber", "--help"] + -FROM scratch AS binaries -COPY --from=telegabber /usr/local/bin/telegabber / diff --git a/Makefile b/Makefile index fccaf92..09f4305 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ lint: $(GOPATH)/bin/golint ./... build_indocker: - docker build --build-arg "TD_COMMIT=${TD_COMMIT}" --build-arg "VERSION=${VERSION}" --build-arg "MAKEOPTS=${MAKEOPTS}" --output=release --target binaries . + docker build --build-arg "TD_COMMIT=${TD_COMMIT}" --build-arg "VERSION=${VERSION}" --build-arg "MAKEOPTS=${MAKEOPTS}" -t telegabber:latest . ; docker build -f lighttpd . -t lighttpd:telegabber build_indocker_staging: DOCKER_BUILDKIT=1 docker build --build-arg "TD_COMMIT=${TD_COMMIT}" --build-arg "MAKEOPTS=${MAKEOPTS}" --network host --output=release --target binaries -f staging.Dockerfile . diff --git a/docker/config/config.yml b/docker/config/config.yml new file mode 100755 index 0000000..4fb7fcb --- /dev/null +++ b/docker/config/config.yml @@ -0,0 +1,24 @@ +:telegram: + :loglevel: :warn + :content: + :path: '/data' # webserver workdir + :link: 'https://uploads.porno4free.ru/content' # webserver public address + :upload: 'https://uploads.porno4free.ru' # xmpp http upload address + :tdlib_verbosity: 1 + :tdlib: + :datadir: '/etc/telegabber/db/sessions/' + :client: + :api_id: '11471191' + :api_hash: 'f7667171b1a8f1e2f8f2702a8a09e9d2' + :device_model: 'telegabber' + :application_version: '2.0' + :use_chat_info_database: false + :use_secret_chats: true + +:xmpp: + :loglevel: :warn + :jid: 'btg.porno4free.ru' + :host: 'prosody' + :port: 5347 + :password: 'YCvxuyXYQwpW3Y7IARN' + :db: '/etc/telegabber/db/dbsessions.dat' diff --git a/docker/config/config_schema.json b/docker/config/config_schema.json new file mode 100755 index 0000000..ab25307 --- /dev/null +++ b/docker/config/config_schema.json @@ -0,0 +1,104 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "required": [":telegram", ":xmpp"], + "properties": { + ":telegram": { + "type": "object", + "required": [":loglevel", ":content", ":tdlib"], + "properties": { + ":loglevel": { + "$ref": "#/definitions/non-empty-string" + }, + ":content": { + "type": "object", + "properties": { + ":path": { + "type": "string" + }, + ":link": { + "type": "string" + }, + ":upload": { + "type": "string" + }, + ":user": { + "type": "string" + }, + ":quota": { + "type": "string" + } + } + }, + ":tdlib_verbosity": { + "type": "integer" + }, + ":tdlib": { + "required": [":client"], + "type": "object", + "properties": { + ":datadir": { + "type": "string" + }, + ":client": { + "type": "object", + "required": [":api_id", ":api_hash"], + "properties": { + ":api_id": { + "type": "string", + "pattern": "^[0-9]+$" + }, + ":api_hash": { + "$ref": "#/definitions/non-empty-string" + }, + ":device_model": { + "type": "string" + }, + ":application_version": { + "type": "string" + }, + ":use_chat_info_database": { + "type": "boolean" + }, + ":use_secret_chats": { + "type": "boolean" + } + } + } + } + } + } + }, + ":xmpp": { + "type": "object", + "required": [":loglevel", ":jid", ":host", ":port", ":password", ":db"], + "properties": { + ":loglevel": { + "$ref": "#/definitions/non-empty-string" + }, + ":jid": { + "$ref": "#/definitions/non-empty-string" + }, + ":host": { + "$ref": "#/definitions/non-empty-string" + }, + ":port": { + "type": "integer", + "minimum": 1 + }, + ":password": { + "$ref": "#/definitions/non-empty-string" + }, + ":db": { + "$ref": "#/definitions/non-empty-string" + } + } + } + }, + "definitions": { + "non-empty-string": { + "type": "string", + "minLength": 1 + } + } +} diff --git a/docker/data/test.jpg b/docker/data/test.jpg new file mode 100755 index 0000000000000000000000000000000000000000..fdd62dd8912d3479e6efbfd981d395aa513ad702 GIT binary patch literal 28965 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 akJ(u){Y0nWr8&Rg&9*a6MWMOBC;lJOXonvF literal 0 HcmV?d00001 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100755 index 0000000..f40df5e --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,22 @@ +services: + telegabber: + image: telegabber:latest + container_name: telegabber + volumes: + - ./config:/etc/telegabber/:ro + - ./config/db:etc/telegabber/db:rw + - ./data:/data/:rw + restart: unless-stopped + entrypoint: ["/usr/local/bin/telegabber"] + command: ["-schema", "/etc/telegabber/config_schema.json", "--config", "/etc/telegabber/config.yml"] + + lighttpd: + image: lighttpd:telegabber + container_name: lighttpd-telegabber + volumes: + - ./data:/data:rw + - ./config:/etc/telegabber:ro + ports: + - "80:80" + restart: unless-stopped + diff --git a/lighttpd b/lighttpd new file mode 100644 index 0000000..dafdfd8 --- /dev/null +++ b/lighttpd @@ -0,0 +1,4 @@ +FROM jitesoft/lighttpd +COPY lighttpd.conf /etc/lighttpd/lighttpd.conf +EXPOSE 80 +CMD ["lighttpd", "-D", "-f", "/etc/lighttpd/lighttpd.conf"] diff --git a/lighttpd.conf b/lighttpd.conf new file mode 100644 index 0000000..a8ba5d8 --- /dev/null +++ b/lighttpd.conf @@ -0,0 +1,3 @@ +server.document-root = "/data" +server.port = 80 +index-file.names = ("index.html")