From 1bea9e4a714fb8bcf93c718a53170541db654c21 Mon Sep 17 00:00:00 2001 From: DrMxrcy <58747968+DrMxrcy@users.noreply.github.com> Date: Thu, 7 Dec 2023 02:35:35 -0500 Subject: [PATCH] Add Bitmagnent (#1600) * Add Bitmagnent * Update docker-compose.yml * Update docker-compose.yml * chore(bitmagnet): fix logo --------- Co-authored-by: Nicolas Meienberger --- apps/bitmagnet/config.json | 24 +++++++ apps/bitmagnet/docker-compose.yml | 91 +++++++++++++++++++++++++ apps/bitmagnet/metadata/description.md | 3 + apps/bitmagnet/metadata/logo.jpg | Bin 0 -> 10909 bytes 4 files changed, 118 insertions(+) create mode 100644 apps/bitmagnet/config.json create mode 100644 apps/bitmagnet/docker-compose.yml create mode 100644 apps/bitmagnet/metadata/description.md create mode 100644 apps/bitmagnet/metadata/logo.jpg diff --git a/apps/bitmagnet/config.json b/apps/bitmagnet/config.json new file mode 100644 index 00000000..8b0266b3 --- /dev/null +++ b/apps/bitmagnet/config.json @@ -0,0 +1,24 @@ +{ + "$schema": "../schema.json", + "name": "Bitmagnet", + "port": 3335, + "available": true, + "exposable": true, + "id": "bitmagnet", + "tipi_version": 1, + "version": "0.1.1", + "categories": ["media"], + "description": "A self-hosted BitTorrent indexer, DHT crawler, content classifier and torrent search engine with web UI, GraphQL API and Servarr stack integration. ", + "short_desc": "A self-hosted BitTorrent indexer.", + "author": "bitmagnet-io", + "source": "https://github.com/bitmagnet-io/bitmagnet", + "form_fields": [ + { + "type": "random", + "label": "BITMAGNENT_DB_PASSWORD", + "min": 40, + "env_variable": "BITMAGNENT_DB_PASSWORD" + } + ], + "supported_architectures": ["arm64", "amd64"] +} diff --git a/apps/bitmagnet/docker-compose.yml b/apps/bitmagnet/docker-compose.yml new file mode 100644 index 00000000..72783f50 --- /dev/null +++ b/apps/bitmagnet/docker-compose.yml @@ -0,0 +1,91 @@ +version: "3.7" + +services: + bitmagnet: + image: ghcr.io/bitmagnet-io/bitmagnet:0.1.1 + restart: unless-stopped + command: + - worker + - run + - --keys=http_server + - --keys=queue_server + # disable the next line to run without DHT crawler + - --keys=dht_crawler + container_name: bitmagnet + environment: + - POSTGRES_HOST=bitmagnet-db + - POSTGRES_NAME=bitmagnet + - POSTGRES_USER=tipi + - POSTGRES_PASSWORD=${BITMAGNENT_DB_PASSWORD} + - REDIS_ADDR=bitmagnet-redis:6379 + ports: + - "${APP_PORT}:3333" + - "3334:3334/tcp" + - "3334:3334/udp" + depends_on: + bitmagnet-db: + condition: service_healthy + bitmagnet-redis: + condition: service_started + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.bitmagnet-web-redirect.redirectscheme.scheme: https + traefik.http.services.bitmagnet.loadbalancer.server.port: 3333 + # Web + traefik.http.routers.bitmagnet-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.bitmagnet-insecure.entrypoints: web + traefik.http.routers.bitmagnet-insecure.service: bitmagnet + traefik.http.routers.bitmagnet-insecure.middlewares: bitmagnet-web-redirect + # Websecure + traefik.http.routers.bitmagnet.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.bitmagnet.entrypoints: websecure + traefik.http.routers.bitmagnet.service: bitmagnet + traefik.http.routers.bitmagnet.tls.certresolver: myresolver + # Local domain + traefik.http.routers.bitmagnet-local-insecure.rule: Host(`bitmagnet.${LOCAL_DOMAIN}`) + traefik.http.routers.bitmagnet-local-insecure.entrypoints: web + traefik.http.routers.bitmagnet-local-insecure.service: bitmagnet + traefik.http.routers.bitmagnet-local-insecure.middlewares: bitmagnet-web-redirect + # Local domain secure + traefik.http.routers.bitmagnet-local.rule: Host(`bitmagnet.${LOCAL_DOMAIN}`) + traefik.http.routers.bitmagnet-local.entrypoints: websecure + traefik.http.routers.bitmagnet-local.service: bitmagnet + traefik.http.routers.bitmagnet-local.tls: true + + bitmagnet-db: + container_name: bitmagnet-db + image: docker.io/library/postgres:16-alpine + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] + start_period: 20s + interval: 30s + retries: 5 + timeout: 5s + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + environment: + POSTGRES_PASSWORD: ${BITMAGNENT_DB_PASSWORD} + POSTGRES_USER: tipi + POSTGRES_DB: bitmagnet + networks: + - tipi_main_network + + bitmagnet-redis: + image: docker.io/library/redis:alpine + command: --save 60 1 --loglevel warning + container_name: bitmagnet-redis + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "redis-cli ping | grep PONG"] + start_period: 20s + interval: 30s + retries: 5 + timeout: 3s + volumes: + - ${APP_DATA_DIR}/data/redis:/data + networks: + - tipi_main_network diff --git a/apps/bitmagnet/metadata/description.md b/apps/bitmagnet/metadata/description.md new file mode 100644 index 00000000..3ab66be4 --- /dev/null +++ b/apps/bitmagnet/metadata/description.md @@ -0,0 +1,3 @@ +A self-hosted BitTorrent indexer, DHT crawler, content classifier and torrent search engine with web UI, GraphQL API and Servarr stack integration. + +Visit the website at bitmagnet.io. \ No newline at end of file diff --git a/apps/bitmagnet/metadata/logo.jpg b/apps/bitmagnet/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..061e3e334e29226e26171365986074470d72a115 GIT binary patch literal 10909 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 M;9rV>Ah+Yc0Q-t2H2?qr literal 0 HcmV?d00001