From a1b3878bfc60887ef360bb403bb76f0f6350ad63 Mon Sep 17 00:00:00 2001 From: HYC Fixer Date: Sun, 30 Aug 2026 13:20:00 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8D=201G=20=E5=86=85=E5=AD=98=20?= =?UTF-8?q?armv7=20=E8=AE=BE=E5=A4=87:=20settings.json=20=E4=BD=8E?= =?UTF-8?q?=E9=85=8D(show=5Fhash=20=E5=85=B3/max=5Fworkers=3D2/=E7=BC=93?= =?UTF-8?q?=E5=AD=9864MB/=E4=B8=8A=E4=BC=A0=E4=B8=8A=E9=99=90256MB/ws-sse?= =?UTF-8?q?=20=E5=85=B3)=20+=20=E6=96=B0=E5=A2=9E=20install-armv7.sh=20?= =?UTF-8?q?=E5=88=86=E6=AD=A5=E5=AE=89=E8=A3=85=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/install-armv7.sh | 115 +++++++++++++++++++++++++++++++++++++++ settings.json | 28 +++++----- 2 files changed, 129 insertions(+), 14 deletions(-) create mode 100755 scripts/install-armv7.sh diff --git a/scripts/install-armv7.sh b/scripts/install-armv7.sh new file mode 100755 index 0000000..1460634 --- /dev/null +++ b/scripts/install-armv7.sh @@ -0,0 +1,115 @@ +#!/bin/bash +# ============================================ +# HYC下载站 v2.3 - ARMv7 / 低内存设备 安装脚本 +# +# 电视盒子(1G 内存)上很多带 C 扩展的包没有预编译 wheel, +# 一次性 pip install -r requirements.txt 会在编译某个包时整体失败。 +# 本脚本按"核心必装 / 可选按需"分开安装,单个失败不连累其他。 +# +# 用法: +# bash scripts/install-armv7.sh # 只装核心 +# bash scripts/install-armv7.sh --with-postgresql # 加 PostgreSQL +# bash scripts/install-armv7.sh --with-mysql # 加 MySQL +# bash scripts/install-armv7.sh --with-sftp # 加 SFTP 同步(paramiko) +# +# 环境变量: +# PYTHON=python3.11 指定 Python(默认 python3) +# VENV_DIR=./venv 虚拟环境目录(默认 ./venv) +# ============================================ +set -e + +PYTHON=${PYTHON:-python3} +VENV_DIR=${VENV_DIR:-./venv} + +echo "==========================================" +echo " HYC下载站 v2.3 - ARMv7 安装" +echo "==========================================" + +# ---------- 1. 检查 Python ---------- +echo "" +echo "==> [1/5] 检查 Python 版本" +if ! command -v "$PYTHON" >/dev/null 2>&1; then + echo "错误: 找不到 $PYTHON" + echo "提示: 电视盒子 Debian 系可用: apt install python3 python3-venv" + exit 1 +fi +$PYTHON --version +python_ok=$($PYTHON -c 'import sys; print(1 if sys.version_info >= (3, 8) else 0)') +if [ "$python_ok" != "1" ]; then + echo "警告: Python 版本过低(需要 3.8+),建议 python3.11" +fi + +# ---------- 2. 创建虚拟环境 ---------- +echo "" +echo "==> [2/5] 创建虚拟环境: $VENV_DIR" +if ! $PYTHON -m venv "$VENV_DIR" 2>/dev/null; then + echo "错误: 创建虚拟环境失败" + echo "提示: 需要先安装 python3-venv: apt install python3-venv" + exit 1 +fi +# shellcheck disable=SC1091 +source "$VENV_DIR/bin/activate" +pip install --upgrade pip 2>/dev/null || echo " (pip 升级跳过)" + +# ---------- 3. 核心依赖(必装) ---------- +echo "" +echo "==> [3/5] 安装核心依赖" +CORE_PKGS="psutil requests croniter sqlalchemy python-multipart" +for pkg in $CORE_PKGS; do + if pip install "$pkg" >/dev/null 2>&1; then + echo " ✓ $pkg" + else + echo " ✗ $pkg 安装失败(继续,不影响其他)" + fi +done + +# bcrypt: armv7 可能需要编译;装不上则走 PBKDF2 回退(认证仍可用,但建议装上) +echo " ... bcrypt(密码哈希)" +if pip install bcrypt >/dev/null 2>&1; then + echo " ✓ bcrypt" +else + echo " ⚠ bcrypt 安装失败 → 将使用 PBKDF2 回退(功能可用;建议装 gcc 后重试)" +fi + +# ---------- 4. 可选依赖(按参数) ---------- +echo "" +echo "==> [4/5] 可选依赖" +if [[ "$*" == *"--with-postgresql"* ]]; then + echo " ... psycopg2-binary(PostgreSQL)" + pip install psycopg2-binary >/dev/null 2>&1 && echo " ✓ psycopg2" \ + || echo " ⚠ psycopg2 编译失败 → PostgreSQL 不可用(可先用 SQLite)" +fi +if [[ "$*" == *"--with-mysql"* ]]; then + echo " ... pymysql / cryptography(MySQL)" + pip install pymysql cryptography >/dev/null 2>&1 && echo " ✓ pymysql" \ + || echo " ⚠ MySQL 依赖失败(可先用 SQLite)" +fi +if [[ "$*" == *"--with-sftp"* ]]; then + echo " ... paramiko(SFTP 同步)" + pip install paramiko >/dev/null 2>&1 && echo " ✓ paramiko" \ + || echo " ⚠ paramiko 失败 → SFTP 同步不可用" +fi + +# ---------- 5. 目录与收尾 ---------- +echo "" +echo "==> [5/5] 创建数据目录" +mkdir -p downloads data logs +echo " ✓ downloads/ data/ logs/ 已就绪" + +echo "" +echo "==========================================" +echo " 安装完成!" +echo "==========================================" +echo " 启动服务器:" +echo " source $VENV_DIR/bin/activate" +echo " python main.py --memory-limit 256M --workers 2" +echo "" +echo " 1G 内存建议(电视盒子):" +echo " - 已适配 settings.json(show_hash 关闭、max_workers=2、缓存 64MB)" +echo " - 强烈建议加 swap,否则大文件同步/上传易 OOM:" +echo " fallocate -l 1G /swapfile && chmod 600 /swapfile" +echo " mkswap /swapfile && swapon /swapfile" +echo " echo '/swapfile none swap sw 0 0' >> /etc/fstab" +echo " - 外接 300G 存储请把 settings.json 的 base_dir 指向挂载点" +echo " (如 /mnt/usb/downloads),并同步改 database.sqlite.path" +echo "==========================================" diff --git a/settings.json b/settings.json index d88a115..2a401c7 100644 --- a/settings.json +++ b/settings.json @@ -6,12 +6,12 @@ "api_version": "v2", "directory_listing": true, "enable_stats": true, - "show_hash": true, + "show_hash": false, "ignore_hidden": true, - "max_upload_size": 1073741824, + "max_upload_size": 268435456, "timeout": 30, "enable_range": true, - "max_workers": 10, + "max_workers": 2, "auth_type": "basic", "auth_user": "admin", "auth_pass": "admin123", @@ -21,10 +21,10 @@ "ip_whitelist_enabled": false, "ip_whitelist": [], "ip_blacklist": [], - "enable_ws": true, - "enable_sse": true, + "enable_ws": false, + "enable_sse": false, "enable_monitor": true, - "monitor_interval": 3, + "monitor_interval": 10, "enable_sync": true, "sync_config": null, "sync_sources": {}, @@ -574,17 +574,17 @@ "sort_reverse": false, "calculate_hash": false, "max_search_results": 100, - "session_timeout": 60, + "session_timeout": 300, "sync_interval": 60, "auto_sync": false, "auto_clean": false, "clean_interval": 7, "enable_browse": true, "show_hidden": false, - "enable_websocket": true, + "enable_websocket": false, "max_threads": 4, - "health_check_interval": 30, - "request_timeout": 300, + "health_check_interval": 60, + "request_timeout": 60, "enable_alerts": true, "disk_warning_threshold": 80, "disk_critical_threshold": 90, @@ -594,8 +594,8 @@ "alert_email": "", "log_file": "./logs/hyc.log", "log_level": "INFO", - "cache_size": 1073741824, - "cache_ttl": 3600, + "cache_size": 67108864, + "cache_ttl": 86400, "pool_size": 5, - "max_overflow": 10 -} \ No newline at end of file + "max_overflow": 5 +}