GUI: migrate storage from PostgreSQL to SQLite and expose conf download
This commit is contained in:
@@ -24,7 +24,6 @@ GUI_USER="admin"
|
||||
GUI_PASSWORD=""
|
||||
GUI_PASSWORD_GENERATED=0
|
||||
GUI_RESET_DB="no"
|
||||
GUI_DB_PASSWORD=""
|
||||
|
||||
usage() {
|
||||
cat <<'USAGE'
|
||||
@@ -116,16 +115,6 @@ validate_inputs() {
|
||||
fi
|
||||
}
|
||||
|
||||
detect_compose_cmd() {
|
||||
if docker compose version >/dev/null 2>&1; then
|
||||
COMPOSE_CMD=(docker compose)
|
||||
elif command -v docker-compose >/dev/null 2>&1; then
|
||||
COMPOSE_CMD=(docker-compose)
|
||||
else
|
||||
die "Не найден docker compose. Установите docker-compose-plugin или docker-compose."
|
||||
fi
|
||||
}
|
||||
|
||||
reset_existing_install() {
|
||||
log_warn "Выполняю полный reset предыдущей инсталляции WireGuard/GUI"
|
||||
|
||||
@@ -149,14 +138,9 @@ reset_existing_install() {
|
||||
rm -f /etc/systemd/system/wg-admin-gui.service
|
||||
|
||||
if command -v docker >/dev/null 2>&1; then
|
||||
if [[ -f /opt/wg-admin-gui/docker-compose.yml ]]; then
|
||||
detect_compose_cmd
|
||||
(cd /opt/wg-admin-gui && "${COMPOSE_CMD[@]}" down --remove-orphans >/dev/null 2>&1) || true
|
||||
fi
|
||||
|
||||
if [[ -f /opt/wireguard-ui/docker-compose.yml ]]; then
|
||||
detect_compose_cmd
|
||||
(cd /opt/wireguard-ui && "${COMPOSE_CMD[@]}" down --remove-orphans >/dev/null 2>&1) || true
|
||||
(cd /opt/wireguard-ui && docker compose down --remove-orphans >/dev/null 2>&1) || true
|
||||
(cd /opt/wireguard-ui && docker-compose down --remove-orphans >/dev/null 2>&1) || true
|
||||
fi
|
||||
|
||||
docker rm -f wireguard-ui wg-admin-postgres >/dev/null 2>&1 || true
|
||||
@@ -213,8 +197,6 @@ collect_inputs() {
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
GUI_DB_PASSWORD="$(random_alnum 24)"
|
||||
[[ "$GUI_RESET_DB" == "yes" || "$GUI_RESET_DB" == "no" ]] || die "--gui-reset-db должен быть yes или no"
|
||||
fi
|
||||
|
||||
@@ -224,15 +206,7 @@ collect_inputs() {
|
||||
install_packages() {
|
||||
apt_install_if_missing \
|
||||
wireguard wireguard-tools iproute2 iptables curl ca-certificates openssl \
|
||||
docker.io python3 python3-venv python3-pip
|
||||
|
||||
if apt-cache show docker-compose-plugin >/dev/null 2>&1; then
|
||||
apt_install_if_missing docker-compose-plugin
|
||||
elif apt-cache show docker-compose >/dev/null 2>&1; then
|
||||
apt_install_if_missing docker-compose
|
||||
else
|
||||
log_warn "Не найден пакет docker-compose-plugin/docker-compose. Проверьте репозитории APT."
|
||||
fi
|
||||
python3 python3-venv python3-pip
|
||||
}
|
||||
|
||||
setup_sysctl() {
|
||||
@@ -371,37 +345,17 @@ EOF_SYNC_PATH
|
||||
setup_gui() {
|
||||
[[ "$GUI_ENABLE" == "yes" ]] || { log_warn "GUI отключен (GUI_ENABLE=no)"; return; }
|
||||
|
||||
mkdir -p /opt/wg-admin-gui/{app,pgdata}
|
||||
mkdir -p /opt/wg-admin-gui/{app,data}
|
||||
safe_chmod_700 /opt/wg-admin-gui
|
||||
|
||||
cp -a "${PROJECT_ROOT}/gui/." /opt/wg-admin-gui/app/
|
||||
|
||||
cat > /opt/wg-admin-gui/docker-compose.yml <<EOF_COMPOSE
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
container_name: wg-admin-postgres
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_DB=wgadmin
|
||||
- POSTGRES_USER=wgadmin
|
||||
- POSTGRES_PASSWORD=${GUI_DB_PASSWORD}
|
||||
ports:
|
||||
- "127.0.0.1:5432:5432"
|
||||
volumes:
|
||||
- /opt/wg-admin-gui/pgdata:/var/lib/postgresql/data
|
||||
EOF_COMPOSE
|
||||
|
||||
systemd_enable_now docker.service
|
||||
detect_compose_cmd
|
||||
(cd /opt/wg-admin-gui && "${COMPOSE_CMD[@]}" up -d --remove-orphans)
|
||||
|
||||
python3 -m venv /opt/wg-admin-gui/venv
|
||||
/opt/wg-admin-gui/venv/bin/pip install --upgrade pip >/dev/null
|
||||
/opt/wg-admin-gui/venv/bin/pip install -r /opt/wg-admin-gui/app/requirements.txt >/dev/null
|
||||
|
||||
cat > /opt/wg-admin-gui/wg-admin-gui.env <<EOF_ENV
|
||||
DB_DSN=postgresql://wgadmin:${GUI_DB_PASSWORD}@127.0.0.1:5432/wgadmin
|
||||
DB_PATH=/opt/wg-admin-gui/data/wgadmin.db
|
||||
WG_INTERFACE=${WG_INTERFACE}
|
||||
WG_META_FILE=/etc/wireguard/wg-meta.env
|
||||
ADMIN_USER=${GUI_USER}
|
||||
@@ -414,7 +368,7 @@ EOF_ENV
|
||||
cat > /etc/systemd/system/wg-admin-gui.service <<EOF_SERVICE
|
||||
[Unit]
|
||||
Description=WG Admin GUI
|
||||
After=network-online.target docker.service
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
|
||||
Reference in New Issue
Block a user