last config, all working selfnode

This commit is contained in:
root 2025-10-05 14:02:12 +00:00
parent fd2005d31e
commit 61d0f3769b
3 changed files with 99 additions and 2 deletions

View File

@ -188,6 +188,9 @@ services:
- ${TUSD_DATA_DIR_HOST:-./data/tusd}:/data
- /var/run/docker.sock:/var/run/docker.sock # required by conversion pipeline
restart: unless-stopped
cpus: ${CONVERT_PROCESS_CPUS:-0.5}
mem_limit: ${CONVERT_PROCESS_MEM:-512m}
cpuset: ${CONVERT_CPUSET:-0}
networks: [mynet]
backend-convert-v3:
@ -212,6 +215,9 @@ services:
- ${TUSD_DATA_DIR_HOST:-./data/tusd}:/data
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
cpus: ${CONVERT_V3_CPUS:-1}
mem_limit: ${CONVERT_V3_MEM:-2048m}
cpuset: ${CONVERT_CPUSET:-0}
networks: [mynet]
backend-index-scout-v3:

View File

@ -202,7 +202,7 @@ server {
add_header Access-Control-Allow-Origin $cors_origin always;
add_header Access-Control-Allow-Credentials "true" always;
add_header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD" always;
add_header Access-Control-Allow-Headers "Origin, Cache-Control, Content-Type, Accept, Authorization, Referer, User-Agent, Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site, x-admin-token" always;
add_header Access-Control-Allow-Headers "Origin, Cache-Control, Content-Type, Accept, Authorization, Referer, User-Agent, Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site, x-admin-token, Tus-Resumable, tus-resumable, Upload-Length, upload-length, Upload-Offset, upload-offset, Upload-Metadata, upload-metadata, Upload-Defer-Length, upload-defer-length, Upload-Concat, upload-concat, x-file-name, x-last-chunk, x-chunk-start, x-upload-id, x-request-id" always;
add_header Vary "Origin" always;
# Вебсокеты (на будущее)

View File

@ -291,6 +291,89 @@ mkdir -p "$BASE_DIR/postgres-data" "$BASE_DIR/data/ipfs" "$BASE_DIR/data/tusd" "
update_env DB_DATA_DIR_HOST "$BASE_DIR/postgres-data"
update_env IPFS_DATA_DIR_HOST "$BASE_DIR/data/ipfs"
update_env TUSD_DATA_DIR_HOST "$BASE_DIR/data/tusd"
# Normalise host mount paths so docker run inside containers resolves them correctly
ensure_absolute_host_path() {
local key="$1" default="$2"
local current
current=$(ini_val "$key")
if [[ -z "$current" || "$current" != /* ]]; then
update_env "$key" "$default"
fi
}
ensure_absolute_host_path BACKEND_DATA_DIR_HOST "$BASE_DIR/dynamicStorage"
ensure_absolute_host_path BACKEND_LOGS_DIR_HOST "$BASE_DIR/app-logs"
set_env_if_missing() {
local key="$1" value="$2"
local current
current=$(ini_val "$key")
if [[ -z "$current" ]]; then
update_env "$key" "$value"
fi
}
TOTAL_CPUS=$(getconf _NPROCESSORS_ONLN 2>/dev/null || nproc 2>/dev/null || printf '2')
if ! [[ "$TOTAL_CPUS" =~ ^[0-9]+$ ]] || [ "$TOTAL_CPUS" -le 0 ]; then
TOTAL_CPUS=2
fi
HALF_CPUS_FLOAT=$(python3 - <<'PY'
import os
cpus = int(os.environ.get('TOTAL_CPUS', '2'))
if cpus <= 1:
print('0.5')
else:
value = cpus / 2
if abs(value - int(value)) < 1e-9:
print(int(value))
else:
formatted = f"{value:.2f}"
print(formatted.rstrip('0').rstrip('.'))
PY
)
HALF_CPUS_INT=$(( TOTAL_CPUS / 2 ))
if [ "$HALF_CPUS_INT" -le 0 ]; then
HALF_CPUS_INT=1
fi
if [ "$HALF_CPUS_INT" -ge "$TOTAL_CPUS" ] && [ "$TOTAL_CPUS" -gt 1 ]; then
HALF_CPUS_INT=$((TOTAL_CPUS - 1))
fi
if [ "$HALF_CPUS_INT" -le 0 ]; then
HALF_CPUS_INT=1
fi
if [ "$HALF_CPUS_INT" -eq 1 ]; then
CONVERT_CPUSET="0"
else
last=$((HALF_CPUS_INT - 1))
CONVERT_CPUSET="0-${last}"
fi
TOTAL_MEM_KB=$(awk '/MemTotal/ {print $2}' /proc/meminfo 2>/dev/null || printf '0')
if ! [[ "$TOTAL_MEM_KB" =~ ^[0-9]+$ ]] || [ "$TOTAL_MEM_KB" -le 0 ]; then
TOTAL_MEM_KB=$((4096 * 1024))
fi
HALF_MEM_MB=$(( TOTAL_MEM_KB / 2048 ))
if [ "$HALF_MEM_MB" -lt 512 ]; then
HALF_MEM_MB=512
fi
set_env_if_missing CONVERT_CPUSET "$CONVERT_CPUSET"
set_env_if_missing CONVERT_V3_CPUS "$HALF_CPUS_FLOAT"
set_env_if_missing CONVERT_V3_MEM "${HALF_MEM_MB}m"
set_env_if_missing CONVERT_PROCESS_CPUS "0.5"
set_env_if_missing CONVERT_PROCESS_MEM "512m"
set_env_if_missing MEDIA_CONVERTER_CPU_LIMIT "$HALF_CPUS_FLOAT"
set_env_if_missing MEDIA_CONVERTER_MEM_LIMIT "${HALF_MEM_MB}m"
set_env_if_missing MEDIA_CONVERTER_CPUSET "$CONVERT_CPUSET"
if ! grep -qE '^CONVERT_V3_MAX_CONCURRENCY=' "$ENV_FILE"; then
if [ "$HALF_CPUS_INT" -gt 2 ]; then
update_env CONVERT_V3_MAX_CONCURRENCY "2"
else
update_env CONVERT_V3_MAX_CONCURRENCY "$HALF_CPUS_INT"
fi
fi
if ! grep -qE '^IPFS_GATEWAY_BIND=' "$ENV_FILE"; then
update_env IPFS_GATEWAY_BIND "0.0.0.0"
fi
@ -306,6 +389,14 @@ if ! docker compose version >/dev/null 2>&1 && ! docker-compose --version >/dev/
exit 1
fi
MEDIA_CONVERTER_CONTEXT="$BASE_DIR/converter-module/converter"
if [[ -d "$MEDIA_CONVERTER_CONTEXT" ]]; then
echo "Building media_converter image from $MEDIA_CONVERTER_CONTEXT ..."
docker build -t media_converter:latest "$MEDIA_CONVERTER_CONTEXT"
else
echo "Warning: converter-module directory not found; skipping media_converter build" >&2
fi
set -x
COMPOSE_FILE_PATH="$SCRIPT_DIR/docker-compose.yml"
COMPOSE_PROJECT=$(python3 "$SCRIPT_DIR/compose_name.py" "$BASE_DIR")