Working Docker
This commit is contained in:
parent
c26e027c01
commit
f0765e266c
8
.dockerignore
Normal file
8
.dockerignore
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
node_modules
|
||||||
|
/.env
|
||||||
|
/.vscode
|
||||||
|
/vendor
|
||||||
|
/cache/latte/*
|
||||||
|
!/cache/latte/.gitkeep
|
||||||
|
/cache/api/*
|
||||||
|
!/cache/api/.gitkeep
|
15
Dockerfile
Normal file
15
Dockerfile
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
FROM php:8.0-apache
|
||||||
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
|
COPY --from=composer /usr/bin/composer /usr/bin/composer
|
||||||
|
RUN apt update -y && apt install -y libzip-dev \
|
||||||
|
&& pecl install redis zip \
|
||||||
|
&& docker-php-ext-enable redis zip \
|
||||||
|
&& a2enmod rewrite headers
|
||||||
|
|
||||||
|
RUN ["mkdir", "/cache"]
|
||||||
|
RUN ["chown", "-R", "www-data:www-data", "/cache"]
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
RUN composer update \
|
||||||
|
&& composer install --no-interaction --optimize-autoloader --no-dev
|
8
components/form.latte
Normal file
8
components/form.latte
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<form action="{path($path)}" method="POST">
|
||||||
|
{block fields}{/block}
|
||||||
|
<div class="field">
|
||||||
|
<div class="control">
|
||||||
|
<button class="button is-success" type="submit">Submit</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
|
@ -5,7 +5,6 @@
|
||||||
<meta property="og:title" content="ProxiTok" />
|
<meta property="og:title" content="ProxiTok" />
|
||||||
<meta property="og:description" content="Alternative frontend for TikTok" />
|
<meta property="og:description" content="Alternative frontend for TikTok" />
|
||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website" />
|
||||||
<!-- <link rel="stylesheet" href="{path('/styles/vendor/fontawesome.min.css')}"> -->
|
|
||||||
<link rel="stylesheet" href="{path('/styles/vendor/bulma.min.css')}">
|
<link rel="stylesheet" href="{path('/styles/vendor/bulma.min.css')}">
|
||||||
<title>{$title} - ProxiTok</title>
|
<title>{$title} - ProxiTok</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
3
components/rss.latte
Normal file
3
components/rss.latte
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<a href="{path($_SERVER['REQUEST_URI'] . '/rss')}">
|
||||||
|
{include './icon.latte', icon: 'feed', text: 'RSS'}
|
||||||
|
</a>
|
|
@ -1,14 +1,14 @@
|
||||||
<form action="{path('/settings/api')}" method="POST">
|
{embed '../form.latte', path: '/settings/api'}
|
||||||
|
{block fields}
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="checkbox">
|
<label class="label">Legacy mode</label>
|
||||||
<input name="api-legacy" type="checkbox"
|
<div class="select">
|
||||||
checked="{isset($_COOKIE['api-legacy']) && $_COOKIE['api-legacy'] === 'on' ? 'true' : 'false'}"
|
<select name="api-legacy">
|
||||||
value="{isset($_COOKIE['api-legacy']) ? $_COOKIE['api-legacy'] : 'off'}">Enable legacy mode
|
<option hidden disabled selected value> -- Select an option -- </option>
|
||||||
</label>
|
<option value="on">On</option>
|
||||||
|
<option value="off">Off</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
{/block}
|
||||||
<div class="control">
|
{/embed}
|
||||||
<button class="button is-success" type="submit">Submit</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<form action="{path('/settings/proxy')}" method="POST">
|
{embed '../form.latte', path: '/settings/proxy'}
|
||||||
|
{block fields}
|
||||||
{foreach $proxy_elements as $proxy_element}
|
{foreach $proxy_elements as $proxy_element}
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="label">{$proxy_element|firstUpper}</label>
|
<label class="label">{$proxy_element|firstUpper}</label>
|
||||||
|
@ -7,9 +8,5 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/foreach}
|
{/foreach}
|
||||||
<div class="field">
|
{/block}
|
||||||
<div class="control">
|
{/embed}
|
||||||
<button class="button is-success" type="submit">Submit</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
34
docker-compose.yml
Normal file
34
docker-compose.yml
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
container_name: proxitok-web
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- 8080:80
|
||||||
|
environment:
|
||||||
|
- LATTE_CACHE=/cache
|
||||||
|
- API_CACHE=redis
|
||||||
|
- REDIS_HOST=proxitok-redis
|
||||||
|
- REDIS_PORT=6379
|
||||||
|
- API_BROWSER_URL=http://proxitok-chrome:9515
|
||||||
|
volumes:
|
||||||
|
- proxitok-cache:/cache
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- chrome
|
||||||
|
|
||||||
|
redis:
|
||||||
|
container_name: proxitok-redis
|
||||||
|
image: redis:6-alpine
|
||||||
|
command: redis-server --save 60 1 --loglevel warning
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
chrome:
|
||||||
|
container_name: proxitok-chrome
|
||||||
|
image: zenika/alpine-chrome:with-chromedriver
|
||||||
|
shm_size: 1g
|
||||||
|
ports:
|
||||||
|
- "9515:9515"
|
||||||
|
volumes:
|
||||||
|
proxitok-cache:
|
2
scss/fontawesome.scss
vendored
2
scss/fontawesome.scss
vendored
|
@ -1,2 +0,0 @@
|
||||||
@import "./node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss";
|
|
||||||
@import "./node_modules/@fortawesome/fontawesome-free/scss/solid.scss";
|
|
|
@ -2,11 +2,9 @@
|
||||||
"name": "proxitok-scss",
|
"name": "proxitok-scss",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"bulma": "sass --style=compressed bulma.scss ./styles/vendor/bulma.min.css",
|
"bulma": "sass --style=compressed bulma.scss ../styles/vendor/bulma.min.css"
|
||||||
"fa": "sass --style=compressed fontawesome.scss ./styles/vendor/fontawesome.min.css"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/fontawesome-free": "^6.0.0",
|
|
||||||
"bulma": "^0.9.3",
|
"bulma": "^0.9.3",
|
||||||
"bulmaswatch": "^0.8.1",
|
"bulmaswatch": "^0.8.1",
|
||||||
"sass": "^1.46.0"
|
"sass": "^1.46.0"
|
||||||
|
|
|
@ -2,11 +2,6 @@
|
||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
"@fortawesome/fontawesome-free@^6.0.0":
|
|
||||||
version "6.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.0.0.tgz#6f3bd8e42997c7d536a1246877ed8bcd4f005a54"
|
|
||||||
integrity sha512-6LB4PYBST1Rx40klypw1SmSDArjFOcfBf2LeX9Zg5EKJT2eXiyiJq+CyBYKeXyK0sXS2FsCJWSPr/luyhuvh0Q==
|
|
||||||
|
|
||||||
anymatch@~3.1.2:
|
anymatch@~3.1.2:
|
||||||
version "3.1.2"
|
version "3.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
|
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
|
||||||
|
|
2
styles/vendor/bulma.min.css
vendored
2
styles/vendor/bulma.min.css
vendored
File diff suppressed because one or more lines are too long
2
styles/vendor/bulma.min.css.map
vendored
2
styles/vendor/bulma.min.css.map
vendored
File diff suppressed because one or more lines are too long
|
@ -6,9 +6,9 @@
|
||||||
|
|
||||||
{block content}
|
{block content}
|
||||||
<!-- Proxy settings -->
|
<!-- Proxy settings -->
|
||||||
<p class="title">Proxy</p>
|
|
||||||
{include '../components/settings/proxy.latte'}
|
|
||||||
<hr />
|
|
||||||
<p class="title">Api</p>
|
<p class="title">Api</p>
|
||||||
{include '../components/settings/api.latte'}
|
{include '../components/settings/api.latte'}
|
||||||
|
<hr />
|
||||||
|
<p class="title">Proxy</p>
|
||||||
|
{include '../components/settings/proxy.latte'}
|
||||||
{/block}
|
{/block}
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
{layout '../layouts/default.latte'}
|
{layout '../layouts/default.latte'}
|
||||||
|
|
||||||
{block header}
|
{block header}
|
||||||
|
{if $feed->info->detail->profileThumb !== ''}
|
||||||
|
<figure class="figure is-96x96">
|
||||||
|
<img src="{path('/stream?url=' . urlencode($feed->info->detail->profileThumb))}" />
|
||||||
|
</figure>
|
||||||
|
{/if}
|
||||||
<p class="title">{$feed->info->detail->title}</p>
|
<p class="title">{$feed->info->detail->title}</p>
|
||||||
<p class="subtitle">{$feed->info->detail->desc}</p>
|
<p class="subtitle">{include '../components/rss.latte'}</p>
|
||||||
<p>Videos: {number($feed->info->stats->videoCount)} / Views: {number($feed->info->stats->viewCount)}</p>
|
<p>Videos: {number($feed->info->stats->videoCount)} / Views: {number($feed->info->stats->viewCount)}</p>
|
||||||
<a href="{path('/tag/' . $feed->info->detail->title . '/rss')}">RSS</a>
|
|
||||||
{/block}
|
{/block}
|
||||||
|
|
||||||
{block content}
|
{block content}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
{block header}
|
{block header}
|
||||||
<p class="title">Trending</p>
|
<p class="title">Trending</p>
|
||||||
<a href="{path('/trending/rss')}">RSS</a>
|
<p class="subtitle">{include '../components/rss.latte'}</p>
|
||||||
{/block}
|
{/block}
|
||||||
|
|
||||||
{block content}
|
{block content}
|
||||||
|
|
|
@ -4,11 +4,11 @@
|
||||||
<figure class="figure is-96x96">
|
<figure class="figure is-96x96">
|
||||||
<img src="{path('/stream?url=' . urlencode($feed->info->detail->avatarThumb))}" />
|
<img src="{path('/stream?url=' . urlencode($feed->info->detail->avatarThumb))}" />
|
||||||
</figure>
|
</figure>
|
||||||
<p class="title">{$feed->info->detail->uniqueId}'s profile</p>
|
<p class="title">{$feed->info->detail->uniqueId}</p>
|
||||||
<p class="subtitle">{$feed->info->detail->signature}</p>
|
<p class="subtitle">{include '../components/rss.latte'}</p>
|
||||||
|
<p>{$feed->info->detail->signature}</p>
|
||||||
<p>Following: {number($feed->info->stats->followingCount)} / Followers: {number($feed->info->stats->followerCount)}</p>
|
<p>Following: {number($feed->info->stats->followingCount)} / Followers: {number($feed->info->stats->followerCount)}</p>
|
||||||
<p>Hearts: {number($feed->info->stats->heartCount)} / Videos: {$feed->info->stats->videoCount}</p>
|
<p>Hearts: {number($feed->info->stats->heartCount)} / Videos: {$feed->info->stats->videoCount}</p>
|
||||||
<a href="{path('/@' . $feed->info->detail->uniqueId . '/rss')}">RSS</a>
|
|
||||||
{/block}
|
{/block}
|
||||||
|
|
||||||
{block content}
|
{block content}
|
||||||
|
|
|
@ -21,8 +21,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-menu" role="menu">
|
<div class="dropdown-menu" role="menu">
|
||||||
<div class="dropdown-content">
|
<div class="dropdown-content">
|
||||||
<a href="{path('/download?url=' . urlencode($item->video->playAddr) . '&id=' . $item->id . '&user=' . $item->author->uniqueId) . '&watermark='}" class="dropdown-item">Watermark</a>
|
<a href="{path('/download?url=' . urlencode($item->video->playAddr) . '&id=' . $item->id . '&user=' . $feed->info->detail->uniqueId) . '&watermark='}" class="dropdown-item">Watermark</a>
|
||||||
<a href="{path('/download?id=' . $item->id . '&user=' . $feed->info->detail->uniqueId)}" class="dropdown-item">No watermark</a>
|
<a href="{path('/download?id=' . $item->id . '&user=' . $feed->info->detail->uniqueId)}" class="dropdown-item">No watermark</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue