Big performance improvement! Added Caddyfile, using Caddy's file server to serve large files instead of PHP
This commit is contained in:
parent
92362efd47
commit
10502157a3
4 changed files with 73 additions and 3 deletions
38
Caddyfile
Normal file
38
Caddyfile
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
frankenphp {
|
||||
num_threads {$FRANKENPHP_NUM_THREADS:8}
|
||||
max_threads {$FRANKENPHP_MAX_THREADS:16}
|
||||
}
|
||||
|
||||
servers {
|
||||
trusted_proxies static private_ranges
|
||||
}
|
||||
}
|
||||
|
||||
{$FREAX_SITE_ADDR::9000} {
|
||||
root * {$FREAX_DOCROOT:/home/user/freax-media}
|
||||
|
||||
encode zstd gzip
|
||||
|
||||
@static path /assets/* /freaxlogo.png
|
||||
handle @static {
|
||||
file_server
|
||||
}
|
||||
|
||||
handle_path /media/* {
|
||||
@allowed_media path_regexp allowed_media (?i).*\.(mp4|mkv|avi|mov|wmv|flv|webm|m4v|mp3|wav|ogg|flac|m4a|aac|wma|opus)$
|
||||
handle @allowed_media {
|
||||
root * {$FREAX_MEDIA_ROOT:/__FREAX_MEDIA_ROOT_NOT_SET__}
|
||||
forward_auth {$FREAX_AUTH_UPSTREAM:127.0.0.1:9000} {
|
||||
uri /authz_media.php
|
||||
}
|
||||
file_server
|
||||
}
|
||||
|
||||
respond "Forbidden" 403
|
||||
}
|
||||
|
||||
php_server
|
||||
file_server
|
||||
}
|
||||
|
||||
|
|
@ -475,6 +475,17 @@ function navigateToPlayback(path) {
|
|||
window.location.href = `index.php?${params.toString()}`;
|
||||
}
|
||||
|
||||
function buildMediaStreamUrl(path) {
|
||||
const normalized = String(path || '').replace(/\\/g, '/');
|
||||
const encodedPath = normalized
|
||||
.split('/')
|
||||
.filter(Boolean)
|
||||
.map(part => encodeURIComponent(part))
|
||||
.join('/');
|
||||
|
||||
return `/media/${encodedPath}`;
|
||||
}
|
||||
|
||||
function playFile(path, name) {
|
||||
const container = $('playerContainer');
|
||||
const ext = path.toLowerCase().split('.').pop();
|
||||
|
|
@ -483,7 +494,7 @@ function playFile(path, name) {
|
|||
const media = document.createElement(isVideo ? 'video' : 'audio');
|
||||
media.controls = true;
|
||||
media.autoplay = true;
|
||||
media.src = `serve_media.php?file=${encodeURIComponent(path)}`;
|
||||
media.src = buildMediaStreamUrl(path);
|
||||
|
||||
media.addEventListener('error', () => {
|
||||
container.innerHTML = `
|
||||
|
|
|
|||
8
authz_media.php
Normal file
8
authz_media.php
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
require_once __DIR__ . '/auth.php';
|
||||
|
||||
require_auth(false);
|
||||
http_response_code(204);
|
||||
exit;
|
||||
|
|
@ -148,7 +148,20 @@ if [[ -n "$DOCROOT" ]]; then
|
|||
fi
|
||||
|
||||
echo "Using PHP runner: $PHP_RUNNER"
|
||||
echo "Starting frankenphp on :$PORT"
|
||||
export FREAX_DOCROOT="$(pwd)"
|
||||
export FREAX_SITE_ADDR=":$PORT"
|
||||
if [[ -n "${MEDIA_ROOT:-}" && -d "${MEDIA_ROOT}" ]]; then
|
||||
export FREAX_MEDIA_ROOT="$(cd "$MEDIA_ROOT" && pwd -P)"
|
||||
else
|
||||
export FREAX_MEDIA_ROOT="/__FREAX_MEDIA_ROOT_NOT_SET__"
|
||||
fi
|
||||
export FREAX_AUTH_UPSTREAM="127.0.0.1:$PORT"
|
||||
|
||||
echo "Starting frankenphp with Caddyfile"
|
||||
echo "FREAX_SITE_ADDR=$FREAX_SITE_ADDR"
|
||||
echo "FREAX_DOCROOT=$FREAX_DOCROOT"
|
||||
echo "FREAX_MEDIA_ROOT=$FREAX_MEDIA_ROOT"
|
||||
echo "FREAX_AUTH_UPSTREAM=$FREAX_AUTH_UPSTREAM"
|
||||
echo "MEDIA_USER=$MEDIA_USER"
|
||||
echo "MEDIA_PASS_HASH set (bcrypt)"
|
||||
if [[ -n "${MEDIA_ROOT:-}" ]]; then
|
||||
|
|
@ -199,6 +212,6 @@ CACHE_LOOP_PID=$!
|
|||
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
frankenphp php-server --listen ":$PORT" &
|
||||
frankenphp run --config "$(pwd)/Caddyfile" --adapter caddyfile &
|
||||
SERVER_PID=$!
|
||||
wait "$SERVER_PID"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue