mirror of
https://github.com/andrey271192/amnezia_web.git
synced 2026-09-20 14:41:59 +00:00
fix(install): persist community/UI env from prev container; auto LANDING_PORT
- Restore ALLOW_COMMUNITY_GITHUB_ACTIVATION and related vars from old amnezia-admin - Pick free LANDING_PORT when host :80 is busy - README: FAQ token field, 8080 vs PRO, landing port Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
16
README.md
16
README.md
@@ -82,6 +82,22 @@ curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia_web/main/scrip
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Частые проблемы
|
||||||
|
|
||||||
|
### Пропало поле «токен GitHub» под плашкой FREE
|
||||||
|
|
||||||
|
Форма показывается только если в контейнере **`ALLOW_COMMUNITY_GITHUB_ACTIVATION=1`** (и редакция **community**). Переменную нужно хотя бы один раз задать с **`export`** (см. выше). Начиная с актуального **`install.sh`**, при следующем обновлении панели **`ALLOW_COMMUNITY_*`**, **`COMMUNITY_UPGRADE_*`**, **`AMNEZIA_EDITION`** и ряд других значений **подтягиваются из предыдущего контейнера `amnezia-admin`**, чтобы не терять настройку.
|
||||||
|
|
||||||
|
### `Bind for 0.0.0.0:8080 failed: port is already allocated` у `amnezia-admin-pro`
|
||||||
|
|
||||||
|
На **8080** уже слушает **FREE**‑панель (**`amnezia-admin`**). Перед запуском образа PRO (**`docker compose`**, **`amnezia-web-pro-deploy`**, свой скрипт): **`docker rm -f amnezia-admin`**, затем снова **`up`**. Два контейнера панели на один и тот же порт не поднять.
|
||||||
|
|
||||||
|
### Лендинг: порт 80 занят
|
||||||
|
|
||||||
|
Если на хосте уже что-то слушает **TCP 80**, установщик сообщит об этом и, при дефолтном **`LANDING_PORT=80`**, сам попробует другой свободный порт (обычно начиная с **8081**). Либо явно: **`LANDING_PORT=8083`**, либо **`SKIP_LANDING=1`**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Лицензия
|
## Лицензия
|
||||||
|
|
||||||
MIT — см. [LICENSE](LICENSE).
|
MIT — см. [LICENSE](LICENSE).
|
||||||
|
|||||||
@@ -122,18 +122,21 @@ PREV_CONTAINER_ENV=""
|
|||||||
if docker inspect "${CONTAINER_NAME}" >/dev/null 2>&1; then
|
if docker inspect "${CONTAINER_NAME}" >/dev/null 2>&1; then
|
||||||
PREV_CONTAINER_ENV="$(docker inspect "${CONTAINER_NAME}" --format '{{range .Config.Env}}{{println .}}{{end}}' 2>/dev/null || true)"
|
PREV_CONTAINER_ENV="$(docker inspect "${CONTAINER_NAME}" --format '{{range .Config.Env}}{{println .}}{{end}}' 2>/dev/null || true)"
|
||||||
fi
|
fi
|
||||||
for __ui_var in UI_HIDE_SECTIONS UI_HIDE_USERS UI_HIDE_WARP UI_HIDE_CASCADE WARP_SSH_INSTALL_DIR; do
|
for __reuse_var in UI_HIDE_SECTIONS UI_HIDE_USERS UI_HIDE_WARP UI_HIDE_CASCADE WARP_SSH_INSTALL_DIR \
|
||||||
if [[ -z "${!__ui_var:-}" ]] && [[ -n "${PREV_CONTAINER_ENV}" ]]; then
|
ALLOW_COMMUNITY_GITHUB_ACTIVATION COMMUNITY_PRIVATE_INSTALL_SCRIPT_URL COMMUNITY_INSTALL_FETCH_MS PRIVATE_INSTALL_SCRIPT_MAX_BYTES \
|
||||||
|
COMMUNITY_UPGRADE_URL COMMUNITY_UPGRADE_PITCH AMNEZIA_EDITION \
|
||||||
|
EXPORT_CONFIG_SECRET CLIENT_CONFIG_ENDPOINT CLIENT_EXPORT_DNS1 CLIENT_EXPORT_DNS2; do
|
||||||
|
if [[ -z "${!__reuse_var:-}" ]] && [[ -n "${PREV_CONTAINER_ENV}" ]]; then
|
||||||
PREV_VAL=""
|
PREV_VAL=""
|
||||||
while IFS= read -r __line; do
|
while IFS= read -r __line; do
|
||||||
if [[ "${__line}" == "${__ui_var}="* ]]; then
|
if [[ "${__line}" == "${__reuse_var}="* ]]; then
|
||||||
PREV_VAL="${__line#*=}"
|
PREV_VAL="${__line#*=}"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done <<<"${PREV_CONTAINER_ENV}"
|
done <<<"${PREV_CONTAINER_ENV}"
|
||||||
if [[ -n "${PREV_VAL}" ]]; then
|
if [[ -n "${PREV_VAL}" ]]; then
|
||||||
printf -v "${__ui_var}" '%s' "${PREV_VAL}"
|
printf -v "${__reuse_var}" '%s' "${PREV_VAL}"
|
||||||
echo "→ ${__ui_var} восстановлен из предыдущего контейнера ${CONTAINER_NAME}."
|
echo "→ ${__reuse_var} восстановлен из предыдущего контейнера ${CONTAINER_NAME}."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -175,15 +178,10 @@ for __warp_var in WARP_DIR WARP_CONF_PATH WARP_CLIENTS_LIST AMNEZIA_START_SCRIPT
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
for __export_var in CLIENT_CONFIG_ENDPOINT CLIENT_EXPORT_DNS1 CLIENT_EXPORT_DNS2 EXPORT_CONFIG_SECRET; do
|
for __panel_env_var in UI_HIDE_SECTIONS UI_HIDE_USERS UI_HIDE_WARP UI_HIDE_CASCADE \
|
||||||
if [[ -n "${!__export_var:-}" ]]; then
|
EXPORT_CONFIG_SECRET CLIENT_CONFIG_ENDPOINT CLIENT_EXPORT_DNS1 CLIENT_EXPORT_DNS2; do
|
||||||
RUN_ENV+=( -e "${__export_var}=${!__export_var}" )
|
if [[ -n "${!__panel_env_var:-}" ]]; then
|
||||||
fi
|
RUN_ENV+=( -e "${__panel_env_var}=${!__panel_env_var}" )
|
||||||
done
|
|
||||||
|
|
||||||
for __ui_var in UI_HIDE_SECTIONS UI_HIDE_USERS UI_HIDE_WARP UI_HIDE_CASCADE WARP_SSH_INSTALL_DIR; do
|
|
||||||
if [[ -n "${!__ui_var:-}" ]]; then
|
|
||||||
RUN_ENV+=( -e "${__ui_var}=${!__ui_var}" )
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -208,6 +206,24 @@ for __ce_var in COMMUNITY_UPGRADE_URL COMMUNITY_UPGRADE_PITCH ALLOW_COMMUNITY_GI
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
host_tcp_port_in_use() {
|
||||||
|
local port="$1"
|
||||||
|
command -v ss >/dev/null 2>&1 || return 1
|
||||||
|
ss -tln 2>/dev/null | grep -qE ":${port}([^0-9]|$)"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "${SKIP_LANDING:-}" != "1" ]] && [[ -d "${INSTALL_DIR}/landing" ]]; then
|
||||||
|
if [[ "${LANDING_PORT:-80}" == "80" ]] && host_tcp_port_in_use 80; then
|
||||||
|
echo "⚠ На хосте занят TCP-порт 80 — лендинг нельзя привязать к :80 без конфликта."
|
||||||
|
LP=8081
|
||||||
|
while host_tcp_port_in_use "${LP}" && [[ "${LP}" -lt 8100 ]]; do
|
||||||
|
LP=$((LP + 1))
|
||||||
|
done
|
||||||
|
LANDING_PORT="${LP}"
|
||||||
|
echo "→ Использую LANDING_PORT=${LANDING_PORT} (или задайте LANDING_PORT=… явно)."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
IP="$(hostname -I 2>/dev/null | awk '{print $1}' || true)"
|
IP="$(hostname -I 2>/dev/null | awk '{print $1}' || true)"
|
||||||
|
|
||||||
docker run -d --name "${CONTAINER_NAME}" --restart unless-stopped \
|
docker run -d --name "${CONTAINER_NAME}" --restart unless-stopped \
|
||||||
|
|||||||
Reference in New Issue
Block a user