This commit is contained in:
v 2026-10-25 18:23:02 +03:00
parent 4a4972553c
commit fc886fb03e
4 changed files with 1250 additions and 169 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
/state/snapshots
zarya-code.xml
zarya-state.xml

0
state/collect_state.sh Normal file → Executable file
View file

View file

@ -45,13 +45,20 @@ The content is organized as follows:
<directory_structure>
bin/
fc
gg
op
zarya
cmd/
a.sh
disks.sh
errors.sh
exec.sh
flux.sh
git-credential.sh
logs.sh
net.sh
nodes.sh
pack.sh
pods.sh
run.sh
@ -81,64 +88,48 @@ state/
03_vyos.sh
04_tier0.sh
05_k8s.sh
collect_state.sh
config.env
</directory_structure>
<files>
This section contains the contents of the repository's files.
<file path="bin/zarya">
<file path="bin/fc">
#!/bin/bash
set -euo pipefail
ZARYA_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
source "${ZARYA_DIR}/lib/common.sh"
if [[ $# -eq 0 ]]; then
echo "Использование: fc <файл>"
exit 1
fi
if [[ -f "$1" ]]; then
wl-copy < "$1"
echo "'$1' +++"
else
echo "'$1'+++"
fi
</file>
SUBCMD="${1:-help}"
shift || true
<file path="bin/gg">
#!/bin/bash
set -euo pipefail
if [[ -z "${1:-}" ]]; then
echo "Тема СВО не раскрыта: gg \"сообщение\""
exit 1
fi
git add . && git commit -m "$1" && git push
</file>
case "${SUBCMD}" in
p|pod|pods) exec "${ZARYA_DIR}/cmd/pods.sh" "$@" ;;
e|err|errors) exec "${ZARYA_DIR}/cmd/errors.sh" "$@" ;;
l|log|logs) exec "${ZARYA_DIR}/cmd/logs.sh" "$@" ;;
n|net) exec "${ZARYA_DIR}/cmd/net.sh" "$@" ;;
d|df|disks) exec "${ZARYA_DIR}/cmd/disks.sh" "$@" ;;
unseal) exec "${ZARYA_DIR}/cmd/unseal.sh" "$@" ;;
login|start) exec "${ZARYA_DIR}/cmd/session.sh" "start" "$@" ;;
logout|clean) exec "${ZARYA_DIR}/cmd/session.sh" "clean" "$@" ;;
up) exec "${ZARYA_DIR}/cmd/up.sh" "$@" ;;
run) exec "${ZARYA_DIR}/cmd/run.sh" "$@" ;;
a|apply) exec "${ZARYA_DIR}/cmd/a.sh" "$@" ;;
snap) exec "${ZARYA_DIR}/cmd/snap.sh" "$@" ;;
pack) exec "${ZARYA_DIR}/cmd/pack.sh" "$@" ;;
reset|nuke) exec "${ZARYA_DIR}/layers/reset.sh" "$@" ;;
gc) exec "${ZARYA_DIR}/layers/gc.sh" "$@" ;;
help|--help|-h)
cat <<EOF
Zarya C2 Operator Interface (z)
Команды диагностики:
z pods [-w] [-n <ns>] [-s <query>] [-A] Просмотр подов
z errors Мгновенный триаж сломанных сервисов
z logs <service> [-f] [-t <N>] Логи любого сервиса без ввода неймспейса
z net Сетевой радар доступности узлов (1 сек)
z disks Срез пулов astra/terra и ZVOL томов K8s
Управление и сессия:
z login [TTL] Открытие смены (YubiKey + RAM)
z logout Мгновенная очистка RAM
z unseal Распечатывание OpenBao Vault
Деплой и IaC:
z up [layer] Макро-слои (host, net, tier0, talos, apps, all)
z run <selector> Плейбуки Ansible (01, 02)
z a [-auto-approve] OpenTofu apply в RAM-изоляции
Телеметрия и LLM:
z snap Снятие полного .md аудита в snapshots/
z pack [code|state|atlas] Сборка контекста Repomix
EOF
;;
*)
log_err "Неизвестная команда: ${SUBCMD}. Введите 'z help'."
exit 1
;;
esac
<file path="bin/op">
#!/bin/bash
set -euo pipefail
if [[ $# -eq 0 ]]; then
echo "Использование: op <файл...>"
exit 1
fi
for f in "$@"; do
printf "file://%s\r\n" "$(realpath "$f")"
done | wl-copy -t text/uri-list
</file>
<file path="cmd/a.sh">
@ -201,6 +192,47 @@ if [[ "$has_errors" == false ]]; then
fi
</file>
<file path="cmd/exec.sh">
#!/bin/bash
set -euo pipefail
ZARYA_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
source "${ZARYA_DIR}/lib/common.sh"
if [[ $# -eq 0 ]]; then
log_err "Использование: z exec <команда> [аргументы...]"
exit 1
fi
run_isolated "$@"
</file>
<file path="cmd/flux.sh">
#!/bin/bash
set -uo pipefail
ZARYA_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
source "${ZARYA_DIR}/lib/common.sh"
subcmd="${1:-status}"
shift || true
case "${subcmd}" in
sync|reconcile|s)
log_info "Принудительная конвергенция FluxCD..."
flux reconcile source git atlas-repo -n flux-system 2>/dev/null || true
flux reconcile kustomization infra-sync -n flux-system 2>/dev/null || true
flux reconcile kustomization apps-sync -n flux-system 2>/dev/null || true
log_ok "Синхронизация завершена."
;;
logs|log|l)
log_info "Стриминг логов kustomize-controller..."
exec kubectl -n flux-system logs -l app.kubernetes.io/name=kustomize-controller --tail=50 -f
;;
status|st)
echo -e "${BLUE}=== СТАТУС РЕПОЗИТОРИЕВ И KUSTOMIZATION (FLUX) ===${NC}"
kubectl -n flux-system get gitrepositories,kustomizations,helmreleases 2>/dev/null || log_err "Flux недоступен"
;;
*)
kubectl -n flux-system get kustomizations 2>/dev/null || log_err "Flux недоступен"
;;
esac
</file>
<file path="cmd/logs.sh">
#!/bin/bash
set -uo pipefail
@ -264,34 +296,49 @@ check_target "Traefik L2 VIP" "10.0.30.200" 443
check_target "Perimeter VPS" "153.76.194.24" 443
</file>
<file path="cmd/pack.sh">
<file path="cmd/nodes.sh">
#!/bin/bash
set -euo pipefail
ZARYA_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
mode="${1:-state}"
case "${mode}" in
state)
echo "==> Снятие свежего аудита..."
"${ZARYA_DIR}/state/collect_state.sh" all >/dev/null 2>&1 || true
echo "==> Упаковка среза состояния Repomix (zarya-state.xml)..."
repomix --config "${ZARYA_DIR}/repomix.state.json"
echo "✔ Файл zarya-state.xml готов для отправки в LLM."
;;
code)
echo "==> Упаковка кодовой базы zarya (zarya-code.xml)..."
repomix --config "${ZARYA_DIR}/repomix.config.json"
echo "✔ Файл zarya-code.xml готов."
;;
atlas)
echo "==> Упаковка чистой инфраструктуры atlas (atlas-code.xml)..."
cd "${ATLAS_DIR}" && repomix
echo "✔ Файл atlas/repomix-output.xml готов."
;;
*)
echo "Использование: z pack [state|code|atlas]"
exit 1
;;
esac
set -u
watch_mode=false
while [[ $# -gt 0 ]]; do
case "$1" in
-w|--watch) watch_mode=true; shift ;;
*) shift ;;
esac
done
render_nodes() {
local raw
raw=$(kubectl get nodes -L topology.kubernetes.io/zone,topology.kubernetes.io/region 2>/dev/null || true)
echo "$raw" | awk '
BEGIN {
ERR = "\033[38;2;255;46;76m"
RUN = "\033[38;2;166;227;161m"
HEAD = "\033[38;2;147;154;183m"
RST = "\033[0m"
}
NR==1 { print HEAD $0 RST; next }
{
if ($2 ~ /Ready/ && $2 !~ /NotReady/) {
print RUN $0 RST
}
else {
print ERR $0 RST
}
}'
}
if [[ "$watch_mode" == true ]]; then
trap 'tput cnorm 2>/dev/null || true; echo ""; exit 0' INT TERM
tput civis 2>/dev/null || true
clear
while true; do
tput cup 0 0 2>/dev/null || true
render_nodes
tput ed 2>/dev/null || true
sleep 1
done
else
render_nodes
fi
</file>
<file path="cmd/pods.sh">
@ -727,99 +774,6 @@ log_warn() { echo -e "${YELLOW}⚠${NC} $*"; }
log_err() { echo -e "${RED}✖${NC} $*"; }
</file>
<file path="lib/net.sh">
#!/bin/bash
# Network routing and terminal prerequisites
ensure_prerequisites() {
local target_ip="${VAULT_ADDR#*//}"
target_ip="${target_ip%%:*}"
if ! ip route get "${target_ip}" 2>/dev/null | grep -q "${VYOS_ROUTER_IP}"; then
log_info "Восстанавливаем маршрут к ${NET_PREFIX} через VyOS (${VYOS_ROUTER_IP})..."
sudo ip route replace "${NET_PREFIX}" via "${VYOS_ROUTER_IP}" 2>/dev/null || true
fi
# Регистрация Git Credential Helper (доменный и прямой IP Tier-0)
local target_helper="!${REPO_ROOT}/deploy.sh git-credential"
local current_helper
current_helper=$(git config --global --get credential."https://${GIT_HOST}".helper 2>/dev/null || true)
if [[ "${current_helper}" != "${target_helper}" ]]; then
git config --global credential."https://${GIT_HOST}".helper "${target_helper}"
fi
local direct_helper
direct_helper=$(git config --global --get credential."http://10.0.10.13:3000".helper 2>/dev/null || true)
if [[ "${direct_helper}" != "${target_helper}" ]]; then
git config --global credential."http://10.0.10.13:3000".helper "${target_helper}"
fi
# Нативная привязка IdentityFile для всех C2-хостов и LXC-контейнеров
local ssh_hosts="proxmox pve0 vyos vyos_router 10.0.* dns0 vault0 git0 storage0 registry0"
if [[ -f "${HOME}/.ssh/config" ]] && ! grep -q "IdentityFile ${RAM_KEY}" "${HOME}/.ssh/config"; then
printf "\nHost %s\n IdentityFile %s\n IdentitiesOnly yes\n" "${ssh_hosts}" "${RAM_KEY}" >> "${HOME}/.ssh/config"
fi
}
</file>
<file path="lib/session.sh">
#!/bin/bash
# Session state in RAM tmpfs and YubiKey integration
load_secrets_to_ram() {
local hours="${1:-$DEFAULT_SESSION_TTL}"
local now
now=$(date +%s)
ensure_prerequisites
# Валидация сессии по наличию непустых кэша секретов и SSH-ключа
if [[ -f "${RAM_CACHE}" ]] && [[ -f "${RAM_KEY}" ]] && [[ -s "${RAM_KEY}" ]]; then
local created age cached_ttl
created=$(stat -c %Y "${RAM_CACHE}" 2>/dev/null || echo 0)
age=$(( now - created ))
cached_ttl=$(grep '^# TTL_SECONDS=' "${RAM_CACHE}" 2>/dev/null | cut -d= -f2 || echo 3600)
if [[ "${cached_ttl}" -ne 0 ]] && (( age >= cached_ttl )); then
log_warn "Время сессии истекло ($(( age / 60 )) мин >= $(( cached_ttl / 60 )) мин). Инвалидация кэша..."
rm -f "${RAM_CACHE}" "${RAM_KEY}"
else
return 0
fi
fi
local ttl_seconds
if [[ "${hours}" -eq 0 ]]; then
ttl_seconds=0
else
ttl_seconds=$(( hours * 3600 ))
fi
log_info "🔐 Вход в защищенный контур C2..."
read -s -p "Master Password: " KP_PASS
echo ""
local yk_args=()
if ykman info >/dev/null 2>&1; then
yk_args=("-y" "2")
log_info "YubiKey обнаружен. Приготовьтесь к аппаратному подтверждению (1 касание)..."
fi
# Атомарный 1-Touch экспорт всей базы KDBX в RAM (ровно 1 касание YubiKey на всю сессию)
local tmp_dump="/dev/shm/.kdbx_dump_${now}_$$.xml"
rm -f "${tmp_dump}"
touch "${tmp_dump}"
chmod 600 "${tmp_dump}"
if ! echo "${KP_PASS}" | keepassxc-cli export "${yk_args[@]}" "${KDBX_PATH}" -f xml > "${tmp_dump}" 2>/dev/null; then
log_err "Ошибка расшифровки базы KDBX (неверный пароль или таймаут касания YubiKey)"
rm -f "${tmp_dump}"
unset KP_PASS
return 1
fi
unset KP_PASS
python3 "${REPO_ROOT}/scripts/lib/kdbx_parser.py" "${tmp_dump}" "${RAM_CACHE}" "${RAM_KEY}" "${ttl_seconds}" "${PVE_ENDPOINT}" "${VAULT_ADDR}"
rm -f "${tmp_dump}"
log_ok "База расшифрована за 1 касание. Ключ и секреты в RAM (TTL: ${hours}ч)"
}
run_isolated() {
ensure_prerequisites
load_secrets_to_ram
(
set -a
source "${RAM_CACHE}"
set +a
"$@"
)
}
</file>
<file path="lib/vault.sh">
#!/bin/bash
# OpenBao Vault operations and Kubernetes Secret synchronization
@ -1161,6 +1115,71 @@ timeout 10s kubectl --kubeconfig="${KUBECONFIG_PATH}" -n storage exec statefulse
echo '```'
</file>
<file path="state/collect_state.sh">
#!/bin/bash
set -uo pipefail
ZARYA_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
STATE_DIR="${ZARYA_DIR}/state"
SNAPSHOTS_DIR="${STATE_DIR}/snapshots"
TARGET="${1:-all}"
MODULES=(
"00_workstation.sh"
"01_pve.sh"
"02_vps.sh"
"03_vyos.sh"
"04_tier0.sh"
"05_k8s.sh"
)
mkdir -p "${SNAPSHOTS_DIR}"
generate_header() {
local mod_name="$1"
local timestamp branch short_hash commit_msg
timestamp=$(date -u +"%Y-%m-%d %H:%M:%S UTC")
branch=$(git -C "${ATLAS_DIR:-$HOME/Projects/atlas}" branch --show-current 2>/dev/null || echo "unknown")
short_hash=$(git -C "${ATLAS_DIR:-$HOME/Projects/atlas}" rev-parse --short HEAD 2>/dev/null || echo "none")
commit_msg=$(git -C "${ATLAS_DIR:-$HOME/Projects/atlas}" log -1 --format='%s' 2>/dev/null || echo "none")
cat <<EOF
# Sovereign C2 Runtime: ${mod_name}
**Срез:** ${timestamp} | **Git:** ${branch}@${short_hash} ("${commit_msg}")
EOF
}
run_single_module() {
local mod="$1"
local mod_name="${mod%.sh}"
local script="${STATE_DIR}/${mod}"
local out_file="${SNAPSHOTS_DIR}/${mod_name}.md"
local tmp_file="${out_file}.tmp"
echo " -> Сбор модуля: ${mod_name}..."
generate_header "${mod_name}" > "${tmp_file}"
if [[ -x "${script}" ]]; then
"${script}" >> "${tmp_file}" 2>&1
else
bash "${script}" >> "${tmp_file}" 2>&1
fi
mv "${tmp_file}" "${out_file}"
}
if [[ "${TARGET}" == "all" ]]; then
echo "==> Сбор полного аудита Sovereign C2 в ${SNAPSHOTS_DIR}..."
for mod in "${MODULES[@]}"; do
run_single_module "${mod}"
done
echo "✔ Все модули телеметрии успешно сохранены."
else
case "${TARGET}" in
00_workstation|workstation|host) run_single_module "00_workstation.sh" ;;
01_pve|pve) run_single_module "01_pve.sh" ;;
02_vps|vps) run_single_module "02_vps.sh" ;;
03_vyos|vyos|net) run_single_module "03_vyos.sh" ;;
04_tier0|tier0) run_single_module "04_tier0.sh" ;;
05_k8s|k8s|talos) run_single_module "05_k8s.sh" ;;
*)
echo "Неизвестный модуль: ${TARGET}"
exit 1
;;
esac
fi
</file>
<file path="config.env">
#!/bin/bash
# Atlas C2 Configuration SSOT
@ -1178,4 +1197,216 @@ PVE_ENDPOINT="https://192.168.1.177:8006/"
DEFAULT_SESSION_TTL=1
</file>
<file path="bin/zarya">
#!/bin/bash
set -euo pipefail
ZARYA_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
source "${ZARYA_DIR}/lib/common.sh"
SUBCMD="${1:-help}"
shift || true
case "${SUBCMD}" in
git-credential) exec "${ZARYA_DIR}/cmd/git-credential.sh" "$@" ;;
exec) exec "${ZARYA_DIR}/cmd/exec.sh" "$@" ;;
p|pod|pods) exec "${ZARYA_DIR}/cmd/pods.sh" "$@" ;;
node|nodes) exec "${ZARYA_DIR}/cmd/nodes.sh" "$@" ;;
flux) exec "${ZARYA_DIR}/cmd/flux.sh" "$@" ;;
e|err|errors) exec "${ZARYA_DIR}/cmd/errors.sh" "$@" ;;
l|log|logs) exec "${ZARYA_DIR}/cmd/logs.sh" "$@" ;;
n|net) exec "${ZARYA_DIR}/cmd/net.sh" "$@" ;;
d|df|disks) exec "${ZARYA_DIR}/cmd/disks.sh" "$@" ;;
unseal) exec "${ZARYA_DIR}/cmd/unseal.sh" "$@" ;;
login|start) exec "${ZARYA_DIR}/cmd/session.sh" "start" "$@" ;;
logout|clean) exec "${ZARYA_DIR}/cmd/session.sh" "clean" "$@" ;;
up) exec "${ZARYA_DIR}/cmd/up.sh" "$@" ;;
run) exec "${ZARYA_DIR}/cmd/run.sh" "$@" ;;
a|apply) exec "${ZARYA_DIR}/cmd/a.sh" "$@" ;;
snap) exec "${ZARYA_DIR}/cmd/snap.sh" "$@" ;;
pack) exec "${ZARYA_DIR}/cmd/pack.sh" "$@" ;;
reset|nuke) exec "${ZARYA_DIR}/layers/reset.sh" "$@" ;;
gc) exec "${ZARYA_DIR}/layers/gc.sh" "$@" ;;
help|--help|-h)
cat <<EOF
ZARYA Operator Interface (z)
Диагностика и мониторинг:
z pods [-w] [-n <ns>] [-s <query>] [-A] Просмотр подов
z nodes [-w] Статус нод, роли, зона и регион
z errors Мгновенный триаж сломанных сервисов
z logs <service> [-f] [-t <N>] Логи сервиса без ввода неймспейса
z net Сетевой радар доступности узлов (1 сек)
z disks Срез пулов astra/terra и томов K8s
GitOps и оркестрация:
z flux [status|sync|logs] Управление GitOps-конвергенцией
z exec <команда...> Вызов бинарников внутри RAM-изоляции
Сессия и доступы:
z login [TTL] Открытие смены (YubiKey + RAM)
z logout Мгновенная очистка RAM
z unseal Распечатывание OpenBao Vault
Деплой и IaC:
z up [layer] Макро-слои (host, net, tier0, talos, apps, all)
z run <selector> Плейбуки Ansible (01, 02)
z a [-auto-approve] OpenTofu apply в RAM-изоляции
Телеметрия и LLM:
z snap Снятие аудита в state/snapshots/
z pack [all|atlas|code|state] Сборка контекстов Repomix для LLM
EOF
;;
*)
log_err "Неизвестная команда: ${SUBCMD}. Введите 'z help'."
exit 1
;;
esac
</file>
<file path="cmd/git-credential.sh">
#!/bin/bash
set -euo pipefail
ZARYA_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
source "${ZARYA_DIR}/lib/common.sh"
if [[ -f "${RAM_CACHE}" ]]; then
token=$(grep '^export ATLAS_PUSH_TOKEN=' "${RAM_CACHE}" 2>/dev/null | cut -d= -f2- | tr -d '"'\'' ' || true)
if [[ -n "${token}" ]]; then
echo "username=atlas"
echo "password=${token}"
fi
fi
exit 0
</file>
<file path="cmd/pack.sh">
#!/bin/bash
set -euo pipefail
ZARYA_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
source "${ZARYA_DIR}/lib/common.sh"
mode="${1:-all}"
pack_atlas() {
log_info "==> [1/3] Упаковка чистой архитектуры Atlas (atlas-code.xml)..."
(cd "${ATLAS_DIR}" && repomix --config "${ATLAS_DIR}/repomix.config.json")
log_ok "Файл ${ATLAS_DIR}/atlas-code.xml готов."
}
pack_zarya() {
log_info "==> [2/3] Упаковка станции оператора Zarya (zarya-code.xml)..."
(cd "${ZARYA_DIR}" && repomix --config "${ZARYA_DIR}/repomix.config.json")
log_ok "Файл ${ZARYA_DIR}/zarya-code.xml готов."
}
pack_state() {
log_info "==> [3/3] Снятие живого аудита и упаковка телеметрии (zarya-state.xml)..."
"${ZARYA_DIR}/state/collect_state.sh" all
(cd "${ZARYA_DIR}" && repomix --config "${ZARYA_DIR}/repomix.state.json")
log_ok "Файл ${ZARYA_DIR}/zarya-state.xml готов."
}
case "${mode}" in
all)
pack_atlas
echo ""
pack_zarya
echo ""
pack_state
echo ""
log_ok "Все три контекста Repomix собраны без ошибок."
;;
atlas)
pack_atlas
;;
code)
pack_zarya
;;
state)
pack_state
;;
*)
log_err "Использование: z pack [all|atlas|code|state]"
exit 1
;;
esac
</file>
<file path="lib/net.sh">
#!/bin/bash
ensure_prerequisites() {
local target_ip="${VAULT_ADDR#*//}"
target_ip="${target_ip%%:*}"
if ! ip route get "${target_ip}" 2>/dev/null | grep -q "${VYOS_ROUTER_IP}"; then
log_info "Восстанавливаем маршрут к ${NET_PREFIX} через VyOS (${VYOS_ROUTER_IP})..."
sudo ip route replace "${NET_PREFIX}" via "${VYOS_ROUTER_IP}" 2>/dev/null || true
fi
local target_helper="!${ZARYA_DIR}/bin/zarya git-credential"
local current_helper
current_helper=$(git config --global --get credential."https://${GIT_HOST}".helper 2>/dev/null || true)
if [[ "${current_helper}" != "${target_helper}" ]]; then
git config --global credential."https://${GIT_HOST}".helper "${target_helper}"
fi
local direct_helper
direct_helper=$(git config --global --get credential."http://10.0.10.13:3000".helper 2>/dev/null || true)
if [[ "${direct_helper}" != "${target_helper}" ]]; then
git config --global credential."http://10.0.10.13:3000".helper "${target_helper}"
fi
local ssh_hosts="proxmox pve0 vyos vyos_router 10.0.* dns0 vault0 git0 storage0 registry0"
if [[ -f "${HOME}/.ssh/config" ]] && ! grep -q "IdentityFile ${RAM_KEY}" "${HOME}/.ssh/config"; then
printf "\nHost %s\n IdentityFile %s\n IdentitiesOnly yes\n" "${ssh_hosts}" "${RAM_KEY}" >> "${HOME}/.ssh/config"
fi
}
</file>
<file path="lib/session.sh">
#!/bin/bash
load_secrets_to_ram() {
local hours="${1:-$DEFAULT_SESSION_TTL}"
local now
now=$(date +%s)
ensure_prerequisites
if [[ -f "${RAM_CACHE}" ]] && [[ -f "${RAM_KEY}" ]] && [[ -s "${RAM_KEY}" ]]; then
local created age cached_ttl
created=$(stat -c %Y "${RAM_CACHE}" 2>/dev/null || echo 0)
age=$(( now - created ))
cached_ttl=$(grep '^# TTL_SECONDS=' "${RAM_CACHE}" 2>/dev/null | cut -d= -f2 || echo 3600)
if [[ "${cached_ttl}" -ne 0 ]] && (( age >= cached_ttl )); then
log_warn "Время сессии истекло ($(( age / 60 )) мин >= $(( cached_ttl / 60 )) мин). Инвалидация кэша..."
rm -f "${RAM_CACHE}" "${RAM_KEY}"
else
return 0
fi
fi
local ttl_seconds
if [[ "${hours}" -eq 0 ]]; then
ttl_seconds=0
else
ttl_seconds=$(( hours * 3600 ))
fi
log_info "🔐 Вход в защищенный контур Zarya..."
read -s -p "Master Password: " KP_PASS
echo ""
local yk_args=()
if ykman info >/dev/null 2>&1; then
yk_args=("-y" "2")
log_info "YubiKey обнаружен. Приготовьтесь к аппаратному подтверждению (1 касание)..."
fi
local tmp_dump="/dev/shm/.kdbx_dump_${now}_$$.xml"
rm -f "${tmp_dump}"
touch "${tmp_dump}"
chmod 600 "${tmp_dump}"
if ! echo "${KP_PASS}" | keepassxc-cli export "${yk_args[@]}" "${KDBX_PATH}" -f xml > "${tmp_dump}" 2>/dev/null; then
log_err "Ошибка расшифровки базы KDBX (неверный пароль или таймаут касания YubiKey)"
rm -f "${tmp_dump}"
unset KP_PASS
return 1
fi
unset KP_PASS
python3 "${ZARYA_DIR}/lib/kdbx_parser.py" "${tmp_dump}" "${RAM_CACHE}" "${RAM_KEY}" "${ttl_seconds}" "${PVE_ENDPOINT}" "${VAULT_ADDR}"
rm -f "${tmp_dump}"
log_ok "База расшифрована за 1 касание. Ключ и секреты в RAM (TTL: ${hours}ч)"
}
run_isolated() {
ensure_prerequisites
load_secrets_to_ram
(
set -a
source "${RAM_CACHE}"
set +a
"$@"
)
}
</file>
</files>

View file

@ -42,10 +42,857 @@ The content is organized as follows:
</file_summary>
<directory_structure>
state/
snapshots/
00_workstation.md
01_pve.md
02_vps.md
03_vyos.md
04_tier0.md
05_k8s.md
</directory_structure>
<files>
This section contains the contents of the repository's files.
<file path="state/snapshots/00_workstation.md">
# Sovereign C2 Runtime: 00_workstation
**Срез:** 2026-10-25 15:20:06 UTC | **Git:** master@10fbe14 ("git")
## 0. Рабочая станция администратора (Operator Environment)
### Инфраструктурные SSH-хосты (~/.ssh/config):
```text
Host proxmox pve0
Hostname 192.168.1.177
Port 22
User root
Host vyos vyos_router
Hostname 192.168.1.2
Port 22
User vyos
Host 10.0.* dns0 vault0 git0 storage0 registry0
User root
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
LogLevel ERROR
Host fin21
Hostname 153.76.194.24
Port 22
User atlas
Host incserv
Hostname 31.76.100.166
Port 8765
User root
Host router
Hostname 192.168.1.1
Port 1488
User root
Host proxmox pve0 vyos vyos_router fin21 10.0.*
IdentityFile /dev/shm/.atlas_core
IdentitiesOnly yes
```
### Рабочие алиасы и функции оператора (Active Workflow Aliases):
```bash
# Маркер # >>> ATLAS C2 WORKFLOW >>> не найден в ~/.bashrc
```
### Статус RAM-кэша секретов (/dev/shm/.atlas_secrets_cache):
```text
Размер: 1058 байт | Права: 600 | Создан: 2026-10-25 18:08:15.915202821 +0300
```
### Проверка Git Credential Helper (git.svo88.space):
```text
Username: atlas
Password: [PRESENT in RAM]
```
### Ядро, память, ZRAM и параметры Coredump:
```text
Kernel: 7.2.5-3-omarchy
Swapon: NAME TYPE SIZE USED PRIO
/swap/swapfile file 13.5G 0B 0
/dev/zram0 partition 13.5G 358M 100
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd 13.5G 331.5M 89.6M 95M [SWAP]
Coredump config:
#Storage=external
#ProcessSizeMax=32G
```
### Токены безопасности и ключи в ssh-agent:
```text
Active SSH Agent keys:
The agent has no identities.
YubiKey / FIDO2 Status:
Device type: YubiKey 5 Nano
Serial number: 29508635
Firmware version: 5.7.1
Form factor: Nano (USB-A)
Enabled USB interfaces: OTP, FIDO, CCID
Applications
Yubico OTP Enabled
FIDO U2F Enabled
FIDO2 Enabled
OATH Enabled
PIV Enabled
OpenPGP Enabled
YubiHSM Auth Enabled
```
### Зеркала пакетов Pacman (Mirrorlist):
```text
/etc/pacman.conf:[options]
/etc/pacman.conf:[core]
/etc/pacman.conf:[extra]
/etc/pacman.conf:[multilib]
/etc/pacman.conf:[omarchy]
/etc/pacman.conf:Server = https://pkgs.omarchy.org/stable/$arch
/etc/pacman.d/mirrorlist:Server = https://stable-mirror.omarchy.org/$repo/os/$arch
/etc/pacman.d/mirrorlist.bak:Server = https://mirror.omarchy.org/$repo/os/$arch
/etc/pacman.d/mirrorlist.omarchy-upgrade-to-quattro.20260905155315.bak:Server = https://mirror.omarchy.org/$repo/os/$arch
Нет данных о зеркалах
```
### Маршрутизация на хосте (Routing to C2):
```text
default via 192.168.1.2 dev enp34s0 proto dhcp src 192.168.1.247 metric 100
10.0.0.0/16 via 192.168.1.2 dev enp34s0 proto static metric 100
192.168.1.0/24 dev enp34s0 proto kernel scope link src 192.168.1.247 metric 100
```
### Версии локальных инструментов:
```text
OpenTofu: OpenTofu v1.12.1
Kubectl: gitVersion: v1.36.4
Talosctl: Client:
Talos v1.14.0
```
### Состояние локального Git-репозитория (SSOT Source):
```text
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Последний коммит:
Remote URL: no remote
```
---
</file>
<file path="state/snapshots/01_pve.md">
# Sovereign C2 Runtime: 01_pve
**Срез:** 2026-10-25 15:20:06 UTC | **Git:** master@10fbe14 ("git")
## 1. Гипервизор Proxmox VE (192.168.1.177)
### Память хоста, Uptime и Температура CPU:
```text
18:20:07 up 3:30, 1 user, load average: 1.59, 1.90, 1.69
total used free shared buff/cache available
Mem: 37Gi 30Gi 5.8Gi 75Mi 1.3Gi 6.6Gi
Swap: 0B 0B 0B
```
### Здоровье физических дисков (SMART):
```text
/dev/sda: SMART overall-health self-assessment test result: PASSED
/dev/sdb: SMART overall-health self-assessment test result: PASSED
/dev/sdc: SMART overall-health self-assessment test result: PASSED
/dev/sdd: SMART overall-health self-assessment test result: PASSED
/dev/sde: SMART overall-health self-assessment test result: PASSED
/dev/sdf: SMART overall-health self-assessment test result: PASSED
```
### Статус шифрования ZFS (Encryption & Keys):
```text
NAME PROPERTY VALUE SOURCE
astra encryption aes-256-gcm -
astra keystatus available -
astra keyformat raw -
astra keylocation file:///etc/zfs/keys/astra.key local
terra encryption aes-256-gcm -
terra keystatus available -
terra keyformat raw -
terra keylocation file:///etc/zfs/keys/terra.key local
```
### Здоровье и емкость ZFS-пулов:
```text
NAME SIZE ALLOC FREE FRAG CAP HEALTH
astra 2.78T 540G 2.25T 9% 18% ONLINE
terra 1.81T 345G 1.48T 0% 18% ONLINE
NAME USED AVAIL REFER MOUNTPOINT
astra 360G 1.44T 55.0M /astra
astra/vm-100-cloudinit 128K 1.44T 128K -
astra/vm-100-disk-0 1.06G 1.44T 1.06G -
astra/vm-201-disk-0 1.38G 1.44T 1.38G -
astra/vm-202-disk-0 14.8G 1.44T 14.8G -
astra/vm-203-disk-0 20.4G 1.44T 20.4G -
astra/vm-9999-pvc-16daf271-579d-473a-b2cd-2ae23f8c71f8 27.2M 1.44T 27.2M -
astra/vm-9999-pvc-21f70a1b-cfd9-4a66-97df-3a7f3eb11945 8.61M 1.44T 8.61M -
astra/vm-9999-pvc-30c91980-762a-4fcc-ad6a-3ae0f6763ccd 203M 1.44T 203M -
astra/vm-9999-pvc-5c7cb4da-0c08-4910-b16b-455d794bfe1b 714K 1.44T 714K -
astra/vm-9999-pvc-5dd23675-8684-49c8-a7f6-f01f751f27a7 5.13M 1.44T 5.13M -
astra/vm-9999-pvc-6eb8c148-32b0-45af-8945-2799d04875a3 884K 1.44T 884K -
astra/vm-9999-pvc-740959a7-8178-4ff0-90e8-4b2f1bf76feb 1.05M 1.44T 1.05M -
astra/vm-9999-pvc-79601320-1a12-492e-82bc-8ed0fcf61205 416K 1.44T 416K -
astra/vm-9999-pvc-7abe1930-1af6-4a2b-a448-bb5ac36f559f 7.02M 1.44T 7.02M -
astra/vm-9999-pvc-a0d0830f-fa85-4b93-8e30-e49b144971f9 320G 1.44T 320G -
astra/vm-9999-pvc-a240047c-9f33-415c-b4d0-f4d3cf2da780 970K 1.44T 970K -
astra/vm-9999-pvc-c10b6a5c-7372-4061-96cc-edcae1972bcf 375M 1.44T 375M -
astra/vm-9999-pvc-c8060f22-70b0-4167-b6bb-f609cd128a0f 1.33M 1.44T 1.33M -
astra/vm-9999-pvc-e54b6545-1c5f-4284-a517-6cad984ef1b2 2.54M 1.44T 2.54M -
astra/vm-9999-pvc-f2bc2379-4ec8-4c89-92c8-f3ee7e02f242 704M 1.44T 704M -
astra/vm-9999-pvc-fd1afe82-6d46-464d-bd8c-159690678f3a 14.5M 1.44T 14.5M -
astra/vm-9999-pvc-fed30933-a9f3-42c0-b29a-d8c35dbd6cc4 20.7M 1.44T 20.7M -
terra 345G 1.42T 12.6G /terra
terra/media 248K 1.42T 248K /terra/media
terra/s3 192K 1.42T 192K /terra/s3
terra/vault 333G 1.42T 333G /terra/vault
```
### Физическая емкость каталогов на /terra:
```text
68K /terra/media
4.6M /terra/models
171K /terra/packages
13G /terra/registry
8.5K /terra/s3
4.3M /terra/torrents
333G /terra/vault
```
### Блочные устройства хоста и тома ZVOL (lsblk):
```text
NAME FSTYPE SIZE MOUNTPOINTS
loop0 ext4 4G
loop1 ext4 4G
loop2 ext4 2G
loop3 ext4 8G
loop4 ext4 8G
sda 1.8T
├─sda1 zfs_member 1.8T
└─sda9 8M
sdb 953.9G
├─sdb1 zfs_member 953.9G
└─sdb9 8M
sdc 476.9G
├─sdc1 vfat 976M /boot/efi
├─sdc2 linux_raid_member 977M
│ └─md0 ext4 976M /boot
└─sdc3 linux_raid_member 445.3G
└─md1 crypto_LUKS 445.1G
└─md1_crypt ext4 445.1G /
sdd 953.9G
├─sdd1 zfs_member 953.9G
└─sdd9 8M
sde 447.1G
├─sde1 vfat 976M
├─sde2 linux_raid_member 977M
│ └─md0 ext4 976M /boot
└─sde3 linux_raid_member 445.2G
└─md1 crypto_LUKS 445.1G
└─md1_crypt ext4 445.1G /
sdf 953.9G
├─sdf1 zfs_member 953.9G
└─sdf9 8M
zd0 ext4 2G
zd16 ext4 10G
zd32 ext4 10G
zd48 ext4 20G
zd64 iso9660 4M
zd80 ext4 5G
zd96 ext4 5G
zd112 ext4 5G
zd128 ext4 5G
zd144 100G
├─zd144p1 vfat 100M
├─zd144p2 1M
├─zd144p3 xfs 2G
├─zd144p4 1M
├─zd144p5 xfs 100M
└─zd144p6 xfs 97.8G
zd160 ext4 30G
zd176 ext4 30G
zd192 ext4 400G
zd208 ext4 100G
zd224 100G
├─zd224p1 vfat 100M
├─zd224p2 1M
├─zd224p3 xfs 2G
├─zd224p4 1M
├─zd224p5 xfs 100M
└─zd224p6 xfs 97.8G
zd240 10G
├─zd240p1 1M
├─zd240p2 vfat 256M
└─zd240p3 ext4 9G
zd256 ext4 100G
zd272 20G
├─zd272p1 vfat 100M
├─zd272p2 1M
├─zd272p3 xfs 2G
├─zd272p4 1M
├─zd272p5 xfs 100M
└─zd272p6 xfs 17.8G
zd288 ext4 20G
zd304 ext4 15G
zd320 ext4 5G
zd336 ext4 30G
```
### Виртуальные диски K8s и ВМ (ZVOLs на astra):
```text
NAME VOLSIZE USED REFER
astra/vm-100-cloudinit 4M 128K 128K
astra/vm-100-disk-0 10G 1.06G 1.06G
astra/vm-201-disk-0 20G 1.38G 1.38G
astra/vm-202-disk-0 100G 14.8G 14.8G
astra/vm-203-disk-0 100G 20.4G 20.4G
astra/vm-9999-pvc-16daf271-579d-473a-b2cd-2ae23f8c71f8 10G 27.2M 27.2M
astra/vm-9999-pvc-21f70a1b-cfd9-4a66-97df-3a7f3eb11945 100G 8.61M 8.61M
astra/vm-9999-pvc-30c91980-762a-4fcc-ad6a-3ae0f6763ccd 100G 203M 203M
astra/vm-9999-pvc-5c7cb4da-0c08-4910-b16b-455d794bfe1b 5G 714K 714K
astra/vm-9999-pvc-5dd23675-8684-49c8-a7f6-f01f751f27a7 20G 5.13M 5.13M
astra/vm-9999-pvc-6eb8c148-32b0-45af-8945-2799d04875a3 10G 884K 884K
astra/vm-9999-pvc-740959a7-8178-4ff0-90e8-4b2f1bf76feb 15G 1.05M 1.05M
astra/vm-9999-pvc-79601320-1a12-492e-82bc-8ed0fcf61205 2G 416K 416K
astra/vm-9999-pvc-7abe1930-1af6-4a2b-a448-bb5ac36f559f 5G 7.02M 7.02M
astra/vm-9999-pvc-a0d0830f-fa85-4b93-8e30-e49b144971f9 400G 320G 320G
astra/vm-9999-pvc-a240047c-9f33-415c-b4d0-f4d3cf2da780 5G 970K 970K
astra/vm-9999-pvc-c10b6a5c-7372-4061-96cc-edcae1972bcf 5G 375M 375M
astra/vm-9999-pvc-c8060f22-70b0-4167-b6bb-f609cd128a0f 20G 1.33M 1.33M
astra/vm-9999-pvc-e54b6545-1c5f-4284-a517-6cad984ef1b2 5G 2.54M 2.54M
astra/vm-9999-pvc-f2bc2379-4ec8-4c89-92c8-f3ee7e02f242 30G 704M 704M
astra/vm-9999-pvc-fd1afe82-6d46-464d-bd8c-159690678f3a 30G 14.5M 14.5M
astra/vm-9999-pvc-fed30933-a9f3-42c0-b29a-d8c35dbd6cc4 30G 20.7M 20.7M
```
### Модули ядра (nfsd, zfs):
```text
zfs 6262784 44
nfsd 1011712 3
```
### Теги сетевых карт ВМ 100 (VyOS) в Proxmox:
```text
net0: virtio=BC:24:11:DC:6D:EC,bridge=vmbr0,firewall=0
net1: virtio=BC:24:11:3F:CB:C9,bridge=vmbr0,firewall=0,tag=20
net2: virtio=BC:24:11:EA:32:2F,bridge=vmbr0,firewall=0,tag=30
net3: virtio=BC:24:11:59:E8:8D,bridge=vmbr0,firewall=0,tag=10
```
### Точки монтирования LXC-контейнеров (/etc/pve/lxc/*.conf):
```text
/etc/pve/lxc/101.conf:mp0: /astra/data/dns0,mp=/opt/technitium/dns/config
/etc/pve/lxc/102.conf:mp0: /astra/data/vault0,mp=/var/lib/bao/data
/etc/pve/lxc/103.conf:mp0: /astra/data/git0,mp=/var/lib/forgejo
/etc/pve/lxc/104.conf:mp0: /terra/media,mp=/media
/etc/pve/lxc/104.conf:mp1: /terra/torrents,mp=/torrents
/etc/pve/lxc/104.conf:mp2: /terra/vault,mp=/backups
/etc/pve/lxc/104.conf:mp3: /terra/models,mp=/models
/etc/pve/lxc/104.conf:mp4: /terra/packages,mp=/packages
/etc/pve/lxc/105.conf:mp0: /terra/registry,mp=/mnt/registry
```
### Флаги автостарта ВМ и Контейнеров (onboot):
```text
/etc/pve/qemu-server/100.conf:onboot: 1
/etc/pve/qemu-server/201.conf:onboot: 1
/etc/pve/qemu-server/202.conf:onboot: 1
/etc/pve/qemu-server/203.conf:onboot: 1
/etc/pve/lxc/101.conf:onboot: 1
/etc/pve/lxc/102.conf:onboot: 1
/etc/pve/lxc/103.conf:onboot: 1
/etc/pve/lxc/104.conf:onboot: 1
/etc/pve/lxc/105.conf:onboot: 1
```
### Виртуальные машины (QEMU) и Контейнеры (LXC):
```text
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 vyos-router running 2048 10.00 2594
201 talos-master-1 running 2560 20.00 2698
202 talos-worker-1 running 10240 100.00 3869
203 talos-worker-2 running 10240 100.00 4919
VMID Status Lock Name
101 running dns0
102 running vault0
103 running git0
104 running storage0
105 running registry0
```
---
</file>
<file path="state/snapshots/02_vps.md">
# Sovereign C2 Runtime: 02_vps
**Срез:** 2026-10-25 15:20:12 UTC | **Git:** master@10fbe14 ("git")
## 2. Периметр: Белый VPS (Host: fin21, IP: 153.76.194.24)
### WireGuard wg0 на VPS:
```text
interface: wg0
public key: tS0m/x/dVCs8+N+mtSH3PENWpEUymJDiuPNWrCySMWY=
private key: (hidden)
listening port: 51820
peer: yYiGIZK3nTqxmMm6OXDkeniwtsAJkM6ozcGibexitR4=
endpoint: 45.93.6.172:46777
allowed ips: 10.8.0.2/32, 10.0.30.200/32
latest handshake: 3 hours, 28 minutes, 44 seconds ago
transfer: 64.06 MiB received, 54.22 MiB sent
```
### Статус системных сервисов (Edge Stack):
```text
WireGuard: active | HAProxy: active | Xray: active | Nginx: active
```
### Прослушиваемые сокеты (Ports 80, 443, 4443, 8443, 51820):
```text
udp UNCONN 0 0 0.0.0.0:51820 0.0.0.0:*
udp UNCONN 0 0 [::]:51820 [::]:*
tcp LISTEN 0 4096 127.0.0.1:4443 0.0.0.0:* users:(("haproxy",pid=862,fd=10))
tcp LISTEN 0 511 127.0.0.1:8443 0.0.0.0:* users:(("nginx",pid=739,fd=5),("nginx",pid=735,fd=5))
tcp LISTEN 0 4096 0.0.0.0:80 0.0.0.0:* users:(("haproxy",pid=862,fd=9))
tcp LISTEN 0 4096 *:443 *:* users:(("xray",pid=690,fd=3))
```
### Тест аварийной заглушки Nginx (127.0.0.1:8443):
```text
Atlas Sovereign Home Server is currently offline for maintenance.
```
### Конфигурация SSH-демона (sshd runtime):
```text
permitrootlogin no
passwordauthentication yes
```
---
</file>
<file path="state/snapshots/03_vyos.md">
# Sovereign C2 Runtime: 03_vyos
**Срез:** 2026-10-25 15:20:15 UTC | **Git:** master@10fbe14 ("git")
## 3. Маршрутизатор VyOS (192.168.1.2)
### Сетевые интерфейсы и L2-транк (VLANs 10, 20, 30):
```text
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address MAC VRF MTU S/L Description
----------- -------------- ----------------- ------- ----- ----- -------------------
eth0 192.168.1.2/24 bc:24:11:dc:6d:ec default 1500 u/u WAN_TRUNK
eth1 10.0.20.1/24 bc:24:11:3f:cb:c9 default 1500 u/u K8S
eth2 10.0.10.1/24 bc:24:11:59:e8:8d default 1500 u/u TIER0
eth3 10.0.30.1/24 bc:24:11:ea:32:2f default 1500 u/u LAN_CLIENTS
lo 127.0.0.1/8 00:00:00:00:00:00 default 65536 u/u
::1/128
tun0 172.19.0.1/30 n/a default 65535 u/u
wg0 10.8.0.2/24 n/a default 1420 u/u TUNNEL_TO_VPS_FIN21
```
### ARP-таблица K8s-интерфейса eth1 (проверка связности с нодами):
```text
10.0.20.11 lladdr bc:24:11:12:c5:1b REACHABLE
10.0.20.12 lladdr bc:24:11:ef:1a:d4 STALE
10.0.20.10 lladdr bc:24:11:71:b6:82 REACHABLE
fe80::be24:11ff:fe12:c51b lladdr bc:24:11:12:c5:1b STALE
fe80::be24:11ff:feef:1ad4 lladdr bc:24:11:ef:1a:d4 STALE
fe80::be24:11ff:fe71:b682 lladdr bc:24:11:71:b6:82 STALE
```
### DHCP-сервер и выданные лизы (Options 3, 6):
```text
IP Address MAC address State Lease start Lease expiration Remaining Pool Hostname Origin
------------ ----------------- ------- ------------------- ------------------- ----------- ----------- -------------- --------
10.0.20.10 bc:24:11:71:b6:82 active 2026-10-25 11:51:32 2026-10-26 11:51:32 20:31:16 K8S talos-master-1 local
10.0.20.11 bc:24:11:12:c5:1b active 2026-10-25 12:29:01 2026-10-26 12:29:01 21:08:45 K8S talos-worker-1 local
10.0.20.12 bc:24:11:ef:1a:d4 active 2026-10-25 12:29:04 2026-10-26 12:29:04 21:08:48 K8S talos-worker-2 local
10.0.30.100 bc:24:11:eb:38:63 active 2026-10-25 12:29:02 2026-10-26 12:29:02 21:08:46 LAN_CLIENTS talos-worker-1 local
10.0.30.101 bc:24:11:bb:00:d3 active 2026-10-25 12:29:05 2026-10-26 12:29:05 21:08:49 LAN_CLIENTS talos-worker-2 local
```
### Перехват DNS через DNAT (Rule 53 -> 127.0.0.42:53):
```text
Rule Source Destination Proto In-Int Translation
------ --------- ------------- -------- -------- -------------
53 0.0.0.0/0 0.0.0.0/0 TCP, UDP LAN 127.0.0.42
sport any dport 53 port 53
```
### Контейнеры маршрутизатора (Sing-Box & Zapret2):
```text
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9217a0a6ac83 ghcr.io/sagernet/sing-box:latest run -c /etc/sing-... 3 hours ago Up 3 hours sing-box
c7e27e9bb9fc docker.io/vernette/ss-zapret2:latest /etc/zapret/run.s... 3 hours ago Up 3 hours 1080/tcp, 8388/tcp zapret2
```
### Наличие /dev/net/tun внутри контейнера sing-box:
```text
crw-rw-rw- 1 root root 10, 200 Oct 25 11:51 /dev/net/tun
```
### Задержка VLESS-канала через Clash API (Main-1-out -> fin21):
```text
{"type": "VLESS", "name": "Main-1-out", "udp": true, "history": [{"time":"2026-10-25T15:19:30.52662628Z","delay":122}]}```
### Статус таймера автосинхронизации Git (singbox-sync):
```text
● singbox-sync.timer - Periodic Sing-Box Config Git Sync Timer
Loaded: loaded (/etc/systemd/system/singbox-sync.timer; enabled; preset: enabled)
Active: active (waiting) since Sun 2026-10-25 11:51:13 UTC; 3h 29min ago
Trigger: Sun 2026-10-25 15:20:23 UTC; 6s left
Triggers: ● singbox-sync.service
Oct 25 11:51:13 vyos-router systemd[1]: Started Periodic Sing-Box Config Git Sync Timer.
Oct 25 15:19:23 vyos-router systemd[1]: singbox-sync.service: Deactivated successfully.
Oct 25 15:19:23 vyos-router systemd[1]: Finished Automated Sing-Box Config Git Sync.
Oct 25 15:19:53 vyos-router systemd[1]: Starting Automated Sing-Box Config Git Sync...
Oct 25 15:19:54 vyos-router systemd[1]: singbox-sync.service: Deactivated successfully.
Oct 25 15:19:54 vyos-router systemd[1]: Finished Automated Sing-Box Config Git Sync.
```
### Статус WireGuard туннеля wg0 и пинг до VPS:
```text
interface: wg0
public key: yYiGIZK3nTqxmMm6OXDkeniwtsAJkM6ozcGibexitR4=
private key: (hidden)
listening port: 34756
peer: tS0m/x/dVCs8+N+mtSH3PENWpEUymJDiuPNWrCySMWY=
endpoint: 153.76.194.24:51820
allowed ips: 10.8.0.0/24
latest handshake: 3 hours, 28 minutes, 47 seconds ago
transfer: 1.12 KiB received, 282.34 KiB sent
persistent keepalive: every 25 seconds
VyOS или туннель недоступен
```
### Таблица маршрутизации (show ip route):
```text
Codes: K - kernel route, C - connected, L - local, S - static,
R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
f - OpenFabric, t - Table-Direct,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
IPv4 unicast VRF default:
S>* 0.0.0.0/0 [1/0] via 192.168.1.1, eth0, weight 1, 03:28:52
C>* 10.0.10.0/24 is directly connected, eth2, weight 1, 03:28:58
L>* 10.0.10.1/32 is directly connected, eth2, weight 1, 03:28:58
C>* 10.0.20.0/24 is directly connected, eth1, weight 1, 03:28:58
L>* 10.0.20.1/32 is directly connected, eth1, weight 1, 03:28:58
C>* 10.0.30.0/24 is directly connected, eth3, weight 1, 03:28:58
L>* 10.0.30.1/32 is directly connected, eth3, weight 1, 03:28:58
C>* 10.8.0.0/24 is directly connected, wg0, weight 1, 03:28:57
L>* 10.8.0.2/32 is directly connected, wg0, weight 1, 03:28:57
C>* 172.19.0.0/30 is directly connected, tun0, weight 1, 03:28:55
L>* 172.19.0.1/32 is directly connected, tun0, weight 1, 03:28:55
C>* 192.168.1.0/24 is directly connected, eth0, weight 1, 03:28:58
L>* 192.168.1.2/32 is directly connected, eth0, weight 1, 03:28:58
```
---
</file>
<file path="state/snapshots/04_tier0.md">
# Sovereign C2 Runtime: 04_tier0
**Срез:** 2026-10-25 15:20:22 UTC | **Git:** master@10fbe14 ("git")
## 4. Сервисы Tier-0 (Air-Gap фундамент)
### Technitium DNS (10.0.10.11:53):
* **Внутренний домен (*.svo88.space -> 10.0.30.200):** 10.0.30.200
* **Внешний резолв (google.com):** 173.194.220.100
### OpenBao Vault (10.0.10.12:8200):
```json
{"type":"shamir","initialized":true,"sealed":false,"t":1,"n":1,"progress":0,"nonce":"","version":"2.0.1","build_date":"2024-09-03T19:57:34Z","migration":false,"cluster_name":"vault-cluster-74026fc7","cluster_id":"79b6d270-a6b1-b082-39be-aeb24d8841f5","recovery_seal":false,"storage_type":"file"}
```
### Zot OCI Registry (10.0.10.15:5000):
```json
{"repositories":["alpine","docker.io/getmeili/meilisearch","docker.io/grafana/loki","docker.io/jellyfin/jellyfin","docker.io/library/alpine","docker.io/library/busybox","docker.io/library/nginx","docker.io/library/postgres","docker.io/library/redis","docker.io/library/traefik","docker.io/netboxcommunity/netbox","docker.io/opencloudeu/opencloud-rolling","docker.io/owncloud/ocis","docker.io/searxng/searxng","docker.io/vaultwarden/server","docker.io/victoriametrics/victoria-metrics","docker.io/xream/sub-store","ghcr.io/anatol/pacoloco","ghcr.io/donkie/spoolman","ghcr.io/external-secrets/external-secrets","ghcr.io/fluxcd/helm-controller","ghcr.io/fluxcd/image-automation-controller","ghcr.io/fluxcd/image-reflector-controller","ghcr.io/fluxcd/kustomize-controller","ghcr.io/fluxcd/notification-controller","ghcr.io/fluxcd/source-controller","ghcr.io/fluxcd/source-watcher","ghcr.io/goauthentik/server","ghcr.io/immich-app/postgres","ghcr.io/karakeep-app/karakeep","ghcr.io/karakeep-app/karakeep-chrome","ghcr.io/kiwix/kiwix-serve","ghcr.io/sergelogvinov/proxmox-csi-controller","ghcr.io/sergelogvinov/proxmox-csi-node","ghcr.io/siderolabs/kubelet","ghcr.io/sysadminsmedia/homebox","ghcr.io/triliumnext/notes","ghcr.io/triliumnext/trilium","ghcr.io/we-promise/sure","ghcr.io/xiao-villamor/printstash","k8s.io/coredns/coredns","k8s.io/kube-apiserver","k8s.io/kube-controller-manager","k8s.io/kube-proxy","k8s.io/kube-scheduler","k8s.io/sig-storage/csi-attacher","k8s.io/sig-storage/csi-provisioner","k8s.io/sig-storage/csi-resizer","k8s.io/sig-storage/livenessprobe","quay.io/invidious/invidious","quay.io/invidious/invidious-companion","quay.io/jetstack/cert-manager-cainjector"]}```
### Forgejo GitOps Server (10.0.10.13:3000):
```json
{"version":"7.0.4+gitea-1.21.11"}
```
### Ядерный NFS nfsd (storage0 - 10.0.10.14):
```text
== Активные экспорты ядра (exportfs):
/media 127.0.0.1(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/torrents 127.0.0.1(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/backups 127.0.0.1(async,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/models 127.0.0.1(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/packages 127.0.0.1(async,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/media 10.0.0.0/16(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/torrents 10.0.0.0/16(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/backups 10.0.0.0/16(async,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/models 10.0.0.0/16(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/packages 10.0.0.0/16(async,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
== Емкость смонтированных ZFS-датасетов:
Filesystem Size Used Available Use% Mounted on
terra/media 1.4T 1.0M 1.4T 0% /media
terra 1.4T 12.6G 1.4T 1% /torrents
terra/vault 1.7T 332.6G 1.4T 19% /backups
terra 1.4T 12.6G 1.4T 1% /torrents
== Права точки монтирования OpenCloud:
drwxrws--- 5 1000 1000 5 Oct 25 12:31 /backups/opencloud-users
```
---
</file>
<file path="state/snapshots/05_k8s.md">
# Sovereign C2 Runtime: 05_k8s
**Срез:** 2026-10-25 15:20:22 UTC | **Git:** master@10fbe14 ("git")
## 5. Kubernetes Платформа & Нагрузки
### Участники кластера Talos (OS-level):
```text
10.0.20.10: error getting server version: error constructing client: failed to create client connection: failed to resolve configuration context: talos config file is empty
Talos API недоступен
```
### Ноды кластера K8s:
```text
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
talos-1il-vwa Ready control-plane 3h26m v1.37.0 10.0.20.10 <none> Talos (v1.14.0) 6.18.48-talos (amd64) containerd://2.3.4
talos-worker-1 Ready <none> 171m v1.37.0 10.0.20.11 <none> Talos (v1.14.0) 6.18.48-talos (amd64) containerd://2.3.4
talos-worker-2 Ready <none> 170m v1.37.0 10.0.20.12 <none> Talos (v1.14.0) 6.18.48-talos (amd64) containerd://2.3.4
```
### Топологические лейблы нод (Proxmox-CSI topology):
```text
NAME STATUS ROLES AGE VERSION ZONE REGION
talos-1il-vwa Ready control-plane 3h26m v1.37.0
talos-worker-1 Ready <none> 171m v1.37.0 pve0 atlas
talos-worker-2 Ready <none> 170m v1.37.0 pve0 atlas
```
### Статус ExternalSecrets (Синхронизация из Vault):
```text
NAME AGE STATUS CAPABILITIES READY
clustersecretstore.external-secrets.io/openbao-backend 33d Valid ReadWrite True
NAMESPACE NAME STORETYPE STORE REFRESH INTERVAL STATUS READY LAST SYNC
authentik externalsecret.external-secrets.io/authentik-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 49m
databases externalsecret.external-secrets.io/all-db-passwords ClusterSecretStore openbao-backend 1h SecretSynced True 20m
databases externalsecret.external-secrets.io/postgres-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 20m
documents externalsecret.external-secrets.io/paperless-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 20m
flux-system externalsecret.external-secrets.io/atlas-repo-auth ClusterSecretStore openbao-backend 1h SecretSyncedError False 3d1h
infra externalsecret.external-secrets.io/netbox-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 20m
kube-system externalsecret.external-secrets.io/proxmox-csi-config ClusterSecretStore openbao-backend 1h SecretSynced True 20m
media externalsecret.external-secrets.io/immich-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 20m
media externalsecret.external-secrets.io/invidious-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 20m
monitoring externalsecret.external-secrets.io/grafana-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 20m
security externalsecret.external-secrets.io/vaultwarden-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 20m
tools externalsecret.external-secrets.io/homebox-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 20m
tools externalsecret.external-secrets.io/karakeep-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 20m
tools externalsecret.external-secrets.io/printstash-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 20m
tools externalsecret.external-secrets.io/searxng-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 20m
tools externalsecret.external-secrets.io/sure-credentials ClusterSecretStore openbao-backend 1h SecretSynced True 20m
```
### Сетевой ingress, сертификаты TLS и L2 Fast-Path VIP:
```text
NAMESPACE NAME READY SECRET AGE
authentik certificate.cert-manager.io/auth-svo88-tls True auth-svo88-tls 27d
devices certificate.cert-manager.io/print-svo88-tls True print-svo88-tls 7d5h
documents certificate.cert-manager.io/paperless-svo88-tls True paperless-svo88-tls 26d
documents certificate.cert-manager.io/trilium-svo88-tls True trilium-svo88-tls 21d
infra certificate.cert-manager.io/dns-svo88-tls True dns-svo88-tls 26d
infra certificate.cert-manager.io/git-svo88-tls True git-svo88-tls 27d
infra certificate.cert-manager.io/netbox-svo88-tls True netbox-svo88-tls 26d
infra certificate.cert-manager.io/pkg-svo88-tls True pkg-svo88-tls 6d20h
infra certificate.cert-manager.io/pve-svo88-tls True pve-svo88-tls 26d
infra certificate.cert-manager.io/vault-svo88-tls True vault-svo88-tls 26d
infra certificate.cert-manager.io/zot-svo88-tls True zot-svo88-tls 27d
media certificate.cert-manager.io/immich-svo88-tls True immich-svo88-tls 25d
media certificate.cert-manager.io/jellyfin-svo88-tls True jellyfin-svo88-tls 21d
media certificate.cert-manager.io/metube-svo88-tls True metube-svo88-tls 21d
media certificate.cert-manager.io/yt-svo88-tls True yt-svo88-tls 21d
security certificate.cert-manager.io/vw-svo88-tls True vw-svo88-tls 31d
storage certificate.cert-manager.io/opencloud-svo88-tls True opencloud-svo88-tls 26d
tools certificate.cert-manager.io/dash-svo88-tls True dash-svo88-tls 21d
tools certificate.cert-manager.io/finance-svo88-tls True finance-svo88-tls 26d
tools certificate.cert-manager.io/homebox-svo88-tls True homebox-svo88-tls 27d
tools certificate.cert-manager.io/keep-svo88-tls True keep-svo88-tls 21d
tools certificate.cert-manager.io/printstash-svo88-tls True printstash-svo88-tls 27d
tools certificate.cert-manager.io/search-svo88-tls True search-svo88-tls 26d
tools certificate.cert-manager.io/spoolman-svo88-tls True spoolman-svo88-tls 7d5h
tools certificate.cert-manager.io/sub-store-svo88-tls True sub-store-svo88-tls 3d9h
NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE
authentik ingress.networking.k8s.io/authentik traefik auth.svo88.space 10.0.30.200 80, 443 27d
devices ingress.networking.k8s.io/qidi-printer traefik print.svo88.space 10.0.30.200 80, 443 7d5h
documents ingress.networking.k8s.io/paperless traefik paperless.svo88.space 10.0.30.200 80, 443 26d
documents ingress.networking.k8s.io/trilium traefik trilium.svo88.space 10.0.30.200 80, 443 21d
infra ingress.networking.k8s.io/forgejo-git traefik git.svo88.space 10.0.30.200 80, 443 27d
infra ingress.networking.k8s.io/netbox traefik netbox.svo88.space 10.0.30.200 80, 443 26d
infra ingress.networking.k8s.io/openbao-vault traefik vault.svo88.space 10.0.30.200 80, 443 26d
infra ingress.networking.k8s.io/pkg-custom traefik pkg.svo88.space 10.0.30.200 80 6d20h
infra ingress.networking.k8s.io/pkg-server traefik pkg.svo88.space 10.0.30.200 80, 443 6d20h
infra ingress.networking.k8s.io/proxmox-ve traefik pve.svo88.space 10.0.30.200 80, 443 26d
infra ingress.networking.k8s.io/technitium-dns traefik dns.svo88.space 10.0.30.200 80, 443 26d
infra ingress.networking.k8s.io/zot-registry traefik zot.svo88.space 10.0.30.200 80, 443 27d
media ingress.networking.k8s.io/immich traefik immich.svo88.space 10.0.30.200 80, 443 25d
media ingress.networking.k8s.io/invidious traefik yt.svo88.space 10.0.30.200 80, 443 21d
media ingress.networking.k8s.io/jellyfin traefik jellyfin.svo88.space 10.0.30.200 80, 443 21d
media ingress.networking.k8s.io/metube traefik metube.svo88.space 10.0.30.200 80, 443 21d
security ingress.networking.k8s.io/vaultwarden traefik vw.svo88.space 10.0.30.200 80, 443 31d
storage ingress.networking.k8s.io/opencloud traefik opencloud.svo88.space 10.0.30.200 80, 443 26d
tools ingress.networking.k8s.io/dashboard traefik dash.svo88.space 10.0.30.200 80, 443 21d
tools ingress.networking.k8s.io/homebox traefik homebox.svo88.space 10.0.30.200 80, 443 27d
tools ingress.networking.k8s.io/karakeep traefik keep.svo88.space 10.0.30.200 80, 443 21d
tools ingress.networking.k8s.io/printstash traefik printstash.svo88.space 10.0.30.200 80, 443 27d
tools ingress.networking.k8s.io/searxng traefik search.svo88.space 10.0.30.200 80, 443 26d
tools ingress.networking.k8s.io/spoolman traefik spoolman.svo88.space 10.0.30.200 80, 443 7d5h
tools ingress.networking.k8s.io/sub-store traefik sub-store.svo88.space 10.0.30.200 80, 443 3d9h
tools ingress.networking.k8s.io/sure-finance traefik finance.svo88.space 10.0.30.200 80, 443 26d
NAME AGE
ciliuml2announcementpolicy.cilium.io/lan-fastpath-announcement 35d
NAME DISABLED CONFLICTING IPS AVAILABLE AGE
ciliumloadbalancerippool.cilium.io/lan-ingress-pool false False 0 35d
Traefik VIP (10.0.30.200:443) HTTP Status: 404
```
### Диски и тома (PVC / PV):
```text
NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
databases persistentvolumeclaim/postgres-data-postgres-core-0 Bound pvc-30c91980-762a-4fcc-ad6a-3ae0f6763ccd 100Gi RWO proxmox-csi-db <unset> 32d
documents persistentvolumeclaim/paperless-data-pvc Bound pvc-fed30933-a9f3-42c0-b29a-d8c35dbd6cc4 30Gi RWO proxmox-csi-general <unset> 32d
documents persistentvolumeclaim/trilium-data-pvc Bound pvc-16daf271-579d-473a-b2cd-2ae23f8c71f8 10Gi RWO proxmox-csi-general <unset> 21d
infra persistentvolumeclaim/netbox-media-pvc Bound pvc-6eb8c148-32b0-45af-8945-2799d04875a3 10Gi RWO proxmox-csi-general <unset> 32d
infra persistentvolumeclaim/nfs-packages-pvc Bound nfs-packages-pv 200Gi RWX <unset> 6d20h
media persistentvolumeclaim/immich-db-pvc Bound pvc-f2bc2379-4ec8-4c89-92c8-f3ee7e02f242 30Gi RWO proxmox-csi-db <unset> 25d
media persistentvolumeclaim/immich-library-pvc Bound pvc-a0d0830f-fa85-4b93-8e30-e49b144971f9 400Gi RWO proxmox-csi-general <unset> 25d
media persistentvolumeclaim/jellyfin-config-pvc Bound pvc-5dd23675-8684-49c8-a7f6-f01f751f27a7 20Gi RWO proxmox-csi-general <unset> 21d
media persistentvolumeclaim/nfs-kiwix-pvc Bound nfs-kiwix-pv 200Gi ROX <unset> 32d
media persistentvolumeclaim/nfs-media-pvc Bound nfs-media-pv 1Ti RWX <unset> 21d
media persistentvolumeclaim/nfs-torrents-pvc Bound nfs-torrents-pv 500Gi RWX <unset> 32d
monitoring persistentvolumeclaim/grafana-data-pvc Bound pvc-c10b6a5c-7372-4061-96cc-edcae1972bcf 5Gi RWO proxmox-csi-general <unset> 16d
monitoring persistentvolumeclaim/loki-data-pvc Bound pvc-fd1afe82-6d46-464d-bd8c-159690678f3a 30Gi RWO proxmox-csi-general <unset> 16d
monitoring persistentvolumeclaim/victoria-metrics-pvc Bound pvc-c8060f22-70b0-4167-b6bb-f609cd128a0f 20Gi RWO proxmox-csi-general <unset> 16d
security persistentvolumeclaim/vaultwarden-data-pvc Bound pvc-7abe1930-1af6-4a2b-a448-bb5ac36f559f 5Gi RWO proxmox-csi-general <unset> 32d
storage persistentvolumeclaim/nfs-opencloud-users-pvc Bound nfs-opencloud-users-pv 600Gi RWX <unset> 21d
storage persistentvolumeclaim/opencloud-data-pvc Bound pvc-21f70a1b-cfd9-4a66-97df-3a7f3eb11945 100Gi RWO proxmox-csi-general <unset> 16d
tools persistentvolumeclaim/homebox-data-pvc Bound pvc-a240047c-9f33-415c-b4d0-f4d3cf2da780 5Gi RWO proxmox-csi-general <unset> 32d
tools persistentvolumeclaim/karakeep-data-pvc Bound pvc-740959a7-8178-4ff0-90e8-4b2f1bf76feb 15Gi RWO proxmox-csi-general <unset> 21d
tools persistentvolumeclaim/karakeep-meili-pvc Bound pvc-5c7cb4da-0c08-4910-b16b-455d794bfe1b 5Gi RWO proxmox-csi-general <unset> 21d
tools persistentvolumeclaim/printstash-models-pvc Bound printstash-models-pv 100Gi RWX <unset> 32d
tools persistentvolumeclaim/spoolman-data-pvc Bound pvc-e54b6545-1c5f-4284-a517-6cad984ef1b2 5Gi RWO proxmox-csi-general <unset> 7d5h
tools persistentvolumeclaim/sub-store-data-pvc Bound pvc-79601320-1a12-492e-82bc-8ed0fcf61205 2Gi RWO proxmox-csi-general <unset> 3d9h
NAMESPACE NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE
persistentvolume/nfs-kiwix-pv 200Gi ROX Retain Bound media/nfs-kiwix-pvc <unset> 32d
persistentvolume/nfs-media-pv 1Ti RWX Retain Bound media/nfs-media-pvc <unset> 21d
persistentvolume/nfs-opencloud-users-pv 600Gi RWX Retain Bound storage/nfs-opencloud-users-pvc <unset> 21d
persistentvolume/nfs-packages-pv 200Gi RWX Retain Bound infra/nfs-packages-pvc <unset> 6d20h
persistentvolume/nfs-torrents-pv 500Gi RWX Retain Bound media/nfs-torrents-pvc <unset> 32d
persistentvolume/printstash-models-pv 100Gi RWX Retain Bound tools/printstash-models-pvc <unset> 32d
persistentvolume/pvc-16daf271-579d-473a-b2cd-2ae23f8c71f8 10Gi RWO Delete Bound documents/trilium-data-pvc proxmox-csi-general <unset> 21d
persistentvolume/pvc-21f70a1b-cfd9-4a66-97df-3a7f3eb11945 100Gi RWO Delete Bound storage/opencloud-data-pvc proxmox-csi-general <unset> 16d
persistentvolume/pvc-30c91980-762a-4fcc-ad6a-3ae0f6763ccd 100Gi RWO Delete Bound databases/postgres-data-postgres-core-0 proxmox-csi-db <unset> 32d
persistentvolume/pvc-5c7cb4da-0c08-4910-b16b-455d794bfe1b 5Gi RWO Delete Bound tools/karakeep-meili-pvc proxmox-csi-general <unset> 21d
persistentvolume/pvc-5dd23675-8684-49c8-a7f6-f01f751f27a7 20Gi RWO Delete Bound media/jellyfin-config-pvc proxmox-csi-general <unset> 21d
persistentvolume/pvc-6eb8c148-32b0-45af-8945-2799d04875a3 10Gi RWO Delete Bound infra/netbox-media-pvc proxmox-csi-general <unset> 32d
persistentvolume/pvc-740959a7-8178-4ff0-90e8-4b2f1bf76feb 15Gi RWO Delete Bound tools/karakeep-data-pvc proxmox-csi-general <unset> 21d
persistentvolume/pvc-79601320-1a12-492e-82bc-8ed0fcf61205 2Gi RWO Delete Bound tools/sub-store-data-pvc proxmox-csi-general <unset> 3d9h
persistentvolume/pvc-7abe1930-1af6-4a2b-a448-bb5ac36f559f 5Gi RWO Delete Bound security/vaultwarden-data-pvc proxmox-csi-general <unset> 32d
persistentvolume/pvc-a0d0830f-fa85-4b93-8e30-e49b144971f9 400Gi RWO Delete Bound media/immich-library-pvc proxmox-csi-general <unset> 25d
persistentvolume/pvc-a240047c-9f33-415c-b4d0-f4d3cf2da780 5Gi RWO Delete Bound tools/homebox-data-pvc proxmox-csi-general <unset> 32d
persistentvolume/pvc-c10b6a5c-7372-4061-96cc-edcae1972bcf 5Gi RWO Delete Bound monitoring/grafana-data-pvc proxmox-csi-general <unset> 16d
persistentvolume/pvc-c8060f22-70b0-4167-b6bb-f609cd128a0f 20Gi RWO Delete Bound monitoring/victoria-metrics-pvc proxmox-csi-general <unset> 16d
persistentvolume/pvc-e54b6545-1c5f-4284-a517-6cad984ef1b2 5Gi RWO Delete Bound tools/spoolman-data-pvc proxmox-csi-general <unset> 7d5h
persistentvolume/pvc-f2bc2379-4ec8-4c89-92c8-f3ee7e02f242 30Gi RWO Delete Bound media/immich-db-pvc proxmox-csi-db <unset> 25d
persistentvolume/pvc-fd1afe82-6d46-464d-bd8c-159690678f3a 30Gi RWO Delete Bound monitoring/loki-data-pvc proxmox-csi-general <unset> 16d
persistentvolume/pvc-fed30933-a9f3-42c0-b29a-d8c35dbd6cc4 30Gi RWO Delete Bound documents/paperless-data-pvc proxmox-csi-general <unset> 32d
```
### Статус DaemonSet Proxmox-CSI Node:
```text
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
proxmox-csi-plugin-node 2 2 2 2 2 <none> 33d
```
### Статус пространства мониторинга (VictoriaMetrics & Grafana):
```text
NAME READY AGE
statefulset.apps/grafana 1/1 16d
statefulset.apps/loki 1/1 16d
statefulset.apps/victoriametrics 1/1 16d
NAME READY STATUS RESTARTS AGE
pod/grafana-0 1/1 Running 0 169m
pod/loki-0 1/1 Running 0 169m
pod/victoriametrics-0 1/1 Running 0 169m
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
persistentvolumeclaim/grafana-data-pvc Bound pvc-c10b6a5c-7372-4061-96cc-edcae1972bcf 5Gi RWO proxmox-csi-general <unset> 16d
persistentvolumeclaim/loki-data-pvc Bound pvc-fd1afe82-6d46-464d-bd8c-159690678f3a 30Gi RWO proxmox-csi-general <unset> 16d
persistentvolumeclaim/victoria-metrics-pvc Bound pvc-c8060f22-70b0-4167-b6bb-f609cd128a0f 20Gi RWO proxmox-csi-general <unset> 16d
```
### Логи ошибок Proxmox CSI Plugin (последние строки):
```text
Defaulted container "proxmox-csi-plugin-controller" out of: proxmox-csi-plugin-controller, csi-attacher, csi-provisioner, csi-resizer, liveness-probe
Defaulted container "proxmox-csi-plugin-node" out of: proxmox-csi-plugin-node, csi-node-driver-registrar, liveness-probe
Defaulted container "proxmox-csi-plugin-node" out of: proxmox-csi-plugin-node, csi-node-driver-registrar, liveness-probe
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.012208 1 controller.go:605] "ControllerPublishVolume: volume published" cluster="atlas" volumeID="atlas/pve0/astra/vm-9999-pvc-fed30933-a9f3-42c0-b29a-d8c35dbd6cc4" nodeID="talos-worker-2"
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.131792 1 controller.go:605] "ControllerPublishVolume: volume published" cluster="atlas" volumeID="atlas/pve0/astra/vm-9999-pvc-740959a7-8178-4ff0-90e8-4b2f1bf76feb" nodeID="talos-worker-2"
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.206486 1 controller.go:605] "ControllerPublishVolume: volume published" cluster="atlas" volumeID="atlas/pve0/astra/vm-9999-pvc-5dd23675-8684-49c8-a7f6-f01f751f27a7" nodeID="talos-worker-2"
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.277975 1 controller.go:605] "ControllerPublishVolume: volume published" cluster="atlas" volumeID="atlas/pve0/astra/vm-9999-pvc-5c7cb4da-0c08-4910-b16b-455d794bfe1b" nodeID="talos-worker-2"
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.352701 1 controller.go:605] "ControllerPublishVolume: volume published" cluster="atlas" volumeID="atlas/pve0/astra/vm-9999-pvc-7abe1930-1af6-4a2b-a448-bb5ac36f559f" nodeID="talos-worker-2"
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.430266 1 controller.go:605] "ControllerPublishVolume: volume published" cluster="atlas" volumeID="atlas/pve0/astra/vm-9999-pvc-a240047c-9f33-415c-b4d0-f4d3cf2da780" nodeID="talos-worker-2"
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.509551 1 controller.go:605] "ControllerPublishVolume: volume published" cluster="atlas" volumeID="atlas/pve0/astra/vm-9999-pvc-e54b6545-1c5f-4284-a517-6cad984ef1b2" nodeID="talos-worker-2"
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.669146 1 controller.go:513] "ControllerPublishVolume: called" args="{\"node_id\":\"talos-worker-2\",\"volume_capability\":{\"access_mode\":{\"mode\":\"SINGLE_NODE_MULTI_WRITER\"},\"mount\":{\"fs_type\":\"ext4\"}},\"volume_context\":{\"backup\":\"0\",\"cache\":\"none\",\"discard\":\"on\",\"iothread\":\"1\",\"replicate\":\"0\",\"ssd\":\"1\",\"storage\":\"astra\",\"storage.kubernetes.io/csiProvisionerIdentity\":\"1790776828491-7787-csi.proxmox.sinextra.dev\"},\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-5c7cb4da-0c08-4910-b16b-455d794bfe1b\"}"
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.669198 1 controller.go:554] "ControllerPublishVolume: VM ID not found in NodeID, will lookup by node name" nodeID="talos-worker-2"
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.681187 1 controller.go:1112] "failed to get proxmox VMID from ProviderID" nodeID="talos-worker-2" providerID=""
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.873038 1 controller.go:513] "ControllerPublishVolume: called" args="{\"node_id\":\"talos-worker-2\",\"volume_capability\":{\"access_mode\":{\"mode\":\"SINGLE_NODE_MULTI_WRITER\"},\"mount\":{\"fs_type\":\"ext4\"}},\"volume_context\":{\"backup\":\"0\",\"cache\":\"none\",\"discard\":\"on\",\"iothread\":\"1\",\"replicate\":\"0\",\"ssd\":\"1\",\"storage\":\"astra\",\"storage.kubernetes.io/csiProvisionerIdentity\":\"1790090280571-543-csi.proxmox.sinextra.dev\"},\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-7abe1930-1af6-4a2b-a448-bb5ac36f559f\"}"
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.873096 1 controller.go:554] "ControllerPublishVolume: VM ID not found in NodeID, will lookup by node name" nodeID="talos-worker-2"
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:43.882474 1 controller.go:1112] "failed to get proxmox VMID from ProviderID" nodeID="talos-worker-2" providerID=""
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:44.084431 1 controller.go:605] "ControllerPublishVolume: volume published" cluster="atlas" volumeID="atlas/pve0/astra/vm-9999-pvc-5c7cb4da-0c08-4910-b16b-455d794bfe1b" nodeID="talos-worker-2"
[pod/proxmox-csi-plugin-controller-6cc485545-8r8rn/proxmox-csi-plugin-controller] I1025 12:31:44.357862 1 controller.go:605] "ControllerPublishVolume: volume published" cluster="atlas" volumeID="atlas/pve0/astra/vm-9999-pvc-7abe1930-1af6-4a2b-a448-bb5ac36f559f" nodeID="talos-worker-2"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:19:29.408317 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-6eb8c148-32b0-45af-8945-2799d04875a3\",\"volume_path\":\"/var/lib/kubelet/pods/b6ccf3ff-f0fc-411e-b5aa-5bbd61174578/volumes/kubernetes.io~csi/pvc-6eb8c148-32b0-45af-8945-2799d04875a3/mount\"}"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:19:37.576536 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:19:37.577998 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-21f70a1b-cfd9-4a66-97df-3a7f3eb11945\",\"volume_path\":\"/var/lib/kubelet/pods/f3402b78-9a95-4a5c-89c9-7535456d39e0/volumes/kubernetes.io~csi/pvc-21f70a1b-cfd9-4a66-97df-3a7f3eb11945/mount\"}"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:19:47.887356 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:19:47.888572 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-7abe1930-1af6-4a2b-a448-bb5ac36f559f\",\"volume_path\":\"/var/lib/kubelet/pods/ce3b896c-9957-4a70-b713-265ab487c32b/volumes/kubernetes.io~csi/pvc-7abe1930-1af6-4a2b-a448-bb5ac36f559f/mount\"}"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:19:49.095236 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:19:49.096521 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-a240047c-9f33-415c-b4d0-f4d3cf2da780\",\"volume_path\":\"/var/lib/kubelet/pods/919bd05a-93f8-44e3-850e-7a8dd2a570d6/volumes/kubernetes.io~csi/pvc-a240047c-9f33-415c-b4d0-f4d3cf2da780/mount\"}"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:19:53.657181 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:19:53.658240 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-5c7cb4da-0c08-4910-b16b-455d794bfe1b\",\"volume_path\":\"/var/lib/kubelet/pods/6f2a60b0-1a3a-405b-9344-59e91ed09b23/volumes/kubernetes.io~csi/pvc-5c7cb4da-0c08-4910-b16b-455d794bfe1b/mount\"}"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:19:53.659625 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:19:53.660965 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-740959a7-8178-4ff0-90e8-4b2f1bf76feb\",\"volume_path\":\"/var/lib/kubelet/pods/6f2a60b0-1a3a-405b-9344-59e91ed09b23/volumes/kubernetes.io~csi/pvc-740959a7-8178-4ff0-90e8-4b2f1bf76feb/mount\"}"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:20:09.981192 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:20:09.982711 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-f2bc2379-4ec8-4c89-92c8-f3ee7e02f242\",\"volume_path\":\"/var/lib/kubelet/pods/fa9abffb-f2c3-470f-9ee7-7bd93688270c/volumes/kubernetes.io~csi/pvc-f2bc2379-4ec8-4c89-92c8-f3ee7e02f242/mount\"}"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:20:11.278791 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-grhkv/proxmox-csi-plugin-node] I1025 15:20:11.280160 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-30c91980-762a-4fcc-ad6a-3ae0f6763ccd\",\"volume_path\":\"/var/lib/kubelet/pods/9ce6cd32-c936-4d17-8597-3efdb4845bc8/volumes/kubernetes.io~csi/pvc-30c91980-762a-4fcc-ad6a-3ae0f6763ccd/mount\"}"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:18:03.366763 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-16daf271-579d-473a-b2cd-2ae23f8c71f8\",\"volume_path\":\"/var/lib/kubelet/pods/acf12f16-e6fd-4934-a561-577be079d7fa/volumes/kubernetes.io~csi/pvc-16daf271-579d-473a-b2cd-2ae23f8c71f8/mount\"}"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:18:32.621786 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:18:32.622940 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-a0d0830f-fa85-4b93-8e30-e49b144971f9\",\"volume_path\":\"/var/lib/kubelet/pods/71957a25-d462-4eed-a51a-25bec487e7d6/volumes/kubernetes.io~csi/pvc-a0d0830f-fa85-4b93-8e30-e49b144971f9/mount\"}"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:18:52.802709 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:18:52.804175 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-c8060f22-70b0-4167-b6bb-f609cd128a0f\",\"volume_path\":\"/var/lib/kubelet/pods/baea777b-a7d7-404b-b642-f7e41d3b74de/volumes/kubernetes.io~csi/pvc-c8060f22-70b0-4167-b6bb-f609cd128a0f/mount\"}"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:19:11.307289 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:19:11.308598 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-c10b6a5c-7372-4061-96cc-edcae1972bcf\",\"volume_path\":\"/var/lib/kubelet/pods/288247da-f98a-4d43-9f15-e882d4c7acb5/volumes/kubernetes.io~csi/pvc-c10b6a5c-7372-4061-96cc-edcae1972bcf/mount\"}"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:19:37.015178 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:19:37.016475 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-fd1afe82-6d46-464d-bd8c-159690678f3a\",\"volume_path\":\"/var/lib/kubelet/pods/096b52fa-6650-4996-8813-dd472343cf8e/volumes/kubernetes.io~csi/pvc-fd1afe82-6d46-464d-bd8c-159690678f3a/mount\"}"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:19:54.754757 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:19:54.755939 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-16daf271-579d-473a-b2cd-2ae23f8c71f8\",\"volume_path\":\"/var/lib/kubelet/pods/acf12f16-e6fd-4934-a561-577be079d7fa/volumes/kubernetes.io~csi/pvc-16daf271-579d-473a-b2cd-2ae23f8c71f8/mount\"}"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:19:57.979195 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:19:57.980398 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-a0d0830f-fa85-4b93-8e30-e49b144971f9\",\"volume_path\":\"/var/lib/kubelet/pods/71957a25-d462-4eed-a51a-25bec487e7d6/volumes/kubernetes.io~csi/pvc-a0d0830f-fa85-4b93-8e30-e49b144971f9/mount\"}"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:20:20.775598 1 node.go:524] "NodeGetCapabilities: called"
[pod/proxmox-csi-plugin-node-lmq9g/proxmox-csi-plugin-node] I1025 15:20:20.776955 1 node.go:415] "NodeGetVolumeStats: called" args="{\"volume_id\":\"atlas/pve0/astra/vm-9999-pvc-c8060f22-70b0-4167-b6bb-f609cd128a0f\",\"volume_path\":\"/var/lib/kubelet/pods/baea777b-a7d7-404b-b642-f7e41d3b74de/volumes/kubernetes.io~csi/pvc-c8060f22-70b0-4167-b6bb-f609cd128a0f/mount\"}"
```
### Синхронизация GitOps (FluxCD):
```text
NAMESPACE NAME URL AGE READY STATUS
flux-system gitrepository.source.toolkit.fluxcd.io/atlas-repo http://10.0.10.13:3000/atlas/atlas.git 33d True stored artifact for revision 'master@sha1:10fbe14ef463bef034856278733f9ad3155cd866'
NAMESPACE NAME AGE READY STATUS
flux-system kustomization.kustomize.toolkit.fluxcd.io/apps-sync 33d True Applied revision: master@sha1:10fbe14ef463bef034856278733f9ad3155cd866
flux-system kustomization.kustomize.toolkit.fluxcd.io/infra-sync 33d True Applied revision: master@sha1:10fbe14ef463bef034856278733f9ad3155cd866
NAMESPACE NAME AGE READY STATUS
cert-manager helmrelease.helm.toolkit.fluxcd.io/cert-manager 33d True Helm upgrade succeeded for release cert-manager/cert-manager.v2 with chart cert-manager@v1.21.3
external-secrets helmrelease.helm.toolkit.fluxcd.io/external-secrets 33d True Helm upgrade succeeded for release external-secrets/external-secrets.v5 with chart external-secrets@2.14.0
kube-system helmrelease.helm.toolkit.fluxcd.io/cilium 33d True Helm upgrade succeeded for release kube-system/cilium.v6 with chart cilium@1.15.5
kube-system helmrelease.helm.toolkit.fluxcd.io/proxmox-csi-plugin 33d True Helm upgrade succeeded for release kube-system/proxmox-csi-plugin.v4 with chart proxmox-csi-plugin@0.5.12
```
### Проблемные поды (Non-Running):
```text
NAMESPACE NAME READY STATUS RESTARTS AGE
databases postgres-init-databases-4lk9r 0/1 Completed 0 169m
```
### Последние события-предупреждения (Warning Events):
```text
NAMESPACE LAST SEEN TYPE REASON OBJECT MESSAGE
traefik 42m Warning FailedToStartServiceHealthcheck service/traefik node talos-worker-1 failed to start healthcheck "traefik/traefik" on port 30366: listen tcp4 10.0.20.11:30366: bind: address already in use
traefik 42m Warning FailedToStartServiceHealthcheck service/traefik node talos-1il-vwa failed to start healthcheck "traefik/traefik" on port 30366: listen tcp4 10.0.20.10:30366: bind: address already in use
traefik 12m Warning FailedToStartServiceHealthcheck service/traefik node talos-worker-1 failed to start healthcheck "traefik/traefik" on port 30366: listen tcp4 10.0.20.11:30366: bind: address already in use
traefik 12m Warning FailedToStartServiceHealthcheck service/traefik node talos-1il-vwa failed to start healthcheck "traefik/traefik" on port 30366: listen tcp4 10.0.20.10:30366: bind: address already in use
monitoring 51m Warning FailedCreate daemonset/vector-agent Error creating: pods "vector-agent-7tjsw" is forbidden: violates PodSecurity "baseline:latest": hostPath volumes (volume "var-log-pods")
monitoring 34m Warning FailedCreate daemonset/vector-agent Error creating: pods "vector-agent-t6n9v" is forbidden: violates PodSecurity "baseline:latest": hostPath volumes (volume "var-log-pods")
monitoring 17m Warning FailedCreate daemonset/vector-agent Error creating: pods "vector-agent-rsbtk" is forbidden: violates PodSecurity "baseline:latest": hostPath volumes (volume "var-log-pods")
flux-system 16m Warning UpdateFailed externalsecret/atlas-repo-auth could not get secret data from provider
flux-system 3m34s Warning UpdateFailed externalsecret/atlas-repo-auth could not get secret data from provider
monitoring 73s Warning FailedCreate daemonset/vector-agent Error creating: pods "vector-agent-xsj4k" is forbidden: violates PodSecurity "baseline:latest": hostPath volumes (volume "var-log-pods")
```
### Реальный объем данных OpenCloud (/var/lib/opencloud-users):
```text
331.7G /var/lib/opencloud-users
```
</file>
</files>