From c303db6a47c1ddd490b76f0f772d1ce83d82223d Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Thu, 18 Aug 2022 08:31:59 +0200 Subject: [PATCH] feat: add proxitok app --- apps/proxitok/config.json | 14 +++++++++ apps/proxitok/docker-compose.yml | 40 ++++++++++++++++++++++++++ apps/proxitok/metadata/description.md | 11 +++++++ apps/proxitok/metadata/logo.jpg | Bin 0 -> 17466 bytes 4 files changed, 65 insertions(+) create mode 100644 apps/proxitok/config.json create mode 100644 apps/proxitok/docker-compose.yml create mode 100644 apps/proxitok/metadata/description.md create mode 100644 apps/proxitok/metadata/logo.jpg diff --git a/apps/proxitok/config.json b/apps/proxitok/config.json new file mode 100644 index 00000000..d9eb07b2 --- /dev/null +++ b/apps/proxitok/config.json @@ -0,0 +1,14 @@ +{ + "name": "ProxiTok", + "available": true, + "port": 8118, + "id": "proxitok", + "categories": ["social"], + "description": "", + "tipi_version": 1, + "version": "1.0.0", + "short_desc": "Open source alternative frontend for TikTok made using PHP ", + "author": "pablouser1", + "source": "https://github.com/pablouser1/ProxiTok", + "form_fields": [] +} diff --git a/apps/proxitok/docker-compose.yml b/apps/proxitok/docker-compose.yml new file mode 100644 index 00000000..4a2451ac --- /dev/null +++ b/apps/proxitok/docker-compose.yml @@ -0,0 +1,40 @@ + +services: + + proxitok: + container_name: proxitok + image: ghcr.io/pablouser1/proxitok:master + restart: unless-stopped + ports: + - "${APP_PORT}:80" + environment: + - "LATTE_CACHE=/cache" + - "API_CACHE=redis" + - "REDIS_HOST=proxitok-redis" + - "REDIS_PORT=6379" + - "API_SIGNER_URL=http://proxitok-signer:8080/signature" + volumes: + - "proxitok-cache:/cache" + depends_on: + - proxitok-redis + - proxitok-signer + networks: + - tipi_main_network + + proxitok-redis: + container_name: proxitok-redis + image: docker.io/redis:7-alpine + restart: unless-stopped + command: redis-server --save 60 1 --loglevel warning + networks: + - tipi_main_network + + proxitok-signer: + container_name: proxitok-signer + image: ghcr.io/pablouser1/signtok:master + networks: + - tipi_main_network + + +volumes: + proxitok-cache: \ No newline at end of file diff --git a/apps/proxitok/metadata/description.md b/apps/proxitok/metadata/description.md new file mode 100644 index 00000000..9c5dff1e --- /dev/null +++ b/apps/proxitok/metadata/description.md @@ -0,0 +1,11 @@ +# ProxiTok +Use Tiktok with an alternative frontend, inspired by Nitter. + +## Features +* Privacy: All requests made to TikTok are server-side, so you will never connect to their servers +* See user's feed +* See trending and discovery tab +* See tags +* See video by id +* Themes +* RSS Feed for user, trending and tag (just add /rss to the url) \ No newline at end of file diff --git a/apps/proxitok/metadata/logo.jpg b/apps/proxitok/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e966ea38b65729b1bd288fc2f434869df9081659 GIT binary patch literal 17466 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