Expand local_machine docs and automation for connectivity, games, and ops.

Add proxy/VPN/telegram launchd and emergency runbooks; reorganize apps docs;
document JA3 CrossOver runbook and Wine troubleshooting; add GOG/HoMM game
scripts, disk cleanup guides, and gitea push-via-proxy helper. Ignore temp/.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
ahauimix
2026-06-01 08:12:19 +03:00
parent a39ef89125
commit 1938b7c743
135 changed files with 9933 additions and 388 deletions

View File

@@ -0,0 +1,152 @@
#!/usr/bin/env bash
# JA3 из GOG offline backup: setup_*.exe + setup_*-1.bin … -4.bin в одной папке.
# Galaxy не нужен. Установщик читает .bin рядом с .exe (не копируем 15 GB в bottle).
set -euo pipefail
GOG_DIR="$(cd "$(dirname "$0")" && pwd)"
# shellcheck source=config.sh
source "${GOG_DIR}/config.sh"
JA3_GAMES_DIR="${JA3_GAMES_DIR:-${HOME}/Games}"
JA3_SETUP_EXE="${JA3_SETUP_EXE:-}"
LOG="/tmp/ja3-multipart-install-${BOTTLE_NAME}.log"
# Имена GOG v1.5.2 (80730); при другой версии задайте JA3_SETUP_EXE.
JA3_EXE_DEFAULT="${JA3_GAMES_DIR}/setup_jagged_alliance_3_1.5.2_(80730).exe"
JA3_BINS=(
"${JA3_GAMES_DIR}/setup_jagged_alliance_3_1.5.2_(80730)-1.bin"
"${JA3_GAMES_DIR}/setup_jagged_alliance_3_1.5.2_(80730)-2.bin"
"${JA3_GAMES_DIR}/setup_jagged_alliance_3_1.5.2_(80730)-3.bin"
"${JA3_GAMES_DIR}/setup_jagged_alliance_3_1.5.2_(80730)-4.bin"
)
gog_unix_to_win() {
local u="$1"
if [[ -x "${WINEPATH_BIN}" ]]; then
"${WINEPATH_BIN}" -w "${u}"
else
# fallback: Z: = /
local rest="${u#/}"
echo "Z:\\\\${rest//\//\\\\}"
fi
}
find_setup_exe() {
if [[ -n "${JA3_SETUP_EXE}" && -f "${JA3_SETUP_EXE}" ]]; then
echo "${JA3_SETUP_EXE}"
return 0
fi
if [[ -f "${JA3_EXE_DEFAULT}" ]]; then
echo "${JA3_EXE_DEFAULT}"
return 0
fi
local f
f="$(find "${JA3_GAMES_DIR}" -maxdepth 1 -iname 'setup*jagged*alliance*3*.exe' -print -quit 2>/dev/null || true)"
[[ -n "${f}" && -f "${f}" ]] && echo "${f}" && return 0
return 1
}
usage() {
cat <<EOF
Использование: bash $0
Папка с архивами (по умолчанию): ${JA3_GAMES_DIR}
Нужны 5 файлов в одной папке:
setup_jagged_alliance_3_1.5.2_(80730).exe (~1 MB, лаунчер Inno)
setup_jagged_alliance_3_1.5.2_(80730)-1.bin … -4.bin
Скачать недостающий .exe: https://www.gog.com/account → JA3 → offline backup (первая, ~1 MB часть).
Или:
lgogdownloader --login
bash ${GOG_DIR}/fetch-ja3-setup-exe.sh
Переменные: JA3_GAMES_DIR, JA3_SETUP_EXE
EOF
}
verify_parts() {
local exe="$1"
local missing=0
local b
if [[ ! -d "${JA3_GAMES_DIR}" ]]; then
echo "❌ Нет каталога: ${JA3_GAMES_DIR}"
return 1
fi
for b in "${JA3_BINS[@]}"; do
if [[ ! -f "${b}" ]]; then
echo "❌ Нет: ${b}"
missing=1
fi
done
if [[ ! -f "${exe}" ]]; then
echo "❌ Нет лаунчера .exe (~1 MB) в ${JA3_GAMES_DIR}"
echo " У вас есть 4× .bin — без .exe установка GOG не стартует."
echo " Скачайте с account.gog.com первую часть offline backup (installer0, ~1 MB)."
echo " Или: bash ${GOG_DIR}/fetch-ja3-setup-exe.sh"
missing=1
fi
[[ "${missing}" -eq 0 ]]
}
main() {
local exe win_exe
exe="$(find_setup_exe)" || exe=""
if ! verify_parts "${exe}"; then
echo ""
usage
exit 1
fi
bash "${GOG_DIR}/emergency-stop.sh" || true
gog_swap_guard "${GOG_SWAP_MAX_MB:-400}" || exit 1
# bins (~15 GB) + распаковка в bottle (~16 GB) — пик ~2530 GB на Data
gog_disk_guard "${JA3_MIN_DISK_GB:-25}" || {
echo "❌ Мало места: нужно ≥25 GB свободно на Data (архивы + игра в bottle)."
echo " Сейчас: $(df -h "$(gog_data_volume_path)" | awk 'NR==2 {print $4 " свободно, " $5 " занято"}')"
exit 1
}
export_wine_env_gog
gog_wine_check
win_exe="$(gog_unix_to_win "${exe}")"
SILENT=(/VERYSILENT /SUPPRESSMSGBOXES /NORESTART)
echo "Установка JA3 из multipart (без Galaxy)"
echo " Папка: ${JA3_GAMES_DIR}"
echo " Wine: ${win_exe}"
echo " Лог: ${LOG}"
: >"${LOG}"
# Inno ищет .bin в каталоге установщика — запуск из JA3_GAMES_DIR
cd "${JA3_GAMES_DIR}"
if ! "${WINE64}" "${win_exe}" "${SILENT[@]}" >>"${LOG}" 2>&1; then
echo "⚠️ Wine-Inno не прошёл — пробуем innoextract (без botva2/gdi32)…"
if command -v innoextract >/dev/null 2>&1; then
exec bash "${GOG_DIR}/install-ja3-innoextract.sh"
fi
echo "❌ Установщик завершился с ошибкой:"
strings "${LOG}" 2>/dev/null | tail -20 || tail -20 "${LOG}"
exit 1
fi
if [[ -f "${BOTTLE_DIR}/drive_c/GOG Games/Jagged Alliance 3/JA3.exe" ]]; then
date -u +"%Y-%m-%dT%H:%M:%SZ" >"${BOTTLE_DIR}/.ja3_installed"
echo ""
echo "OK: JA3 установлен."
echo " Запуск: bash ${GOG_DIR}/run-ja3.sh"
echo " После проверки игры можно удалить .bin в ${JA3_GAMES_DIR} (~15 GB)."
else
echo "⚠️ JA3.exe не найден в bottle — tail лога:"
tail -40 "${LOG}"
exit 1
fi
}
main "$@"