Last active 1752636128

Proxmox VE Post-Install Configuration Script

urocibg revised this gist 1752636128. Go to revision

1 file changed, 1 insertion, 1 deletion

proxmox-setup.sh

@@ -1,7 +1,7 @@
1 1 #!/bin/bash
2 2
3 3 # Proxmox VE Post-Install Configuration Script
4 - # Автор: Proxmox Helper Scripts
4 + # Автор: Федя Серафиев и Proxmox Helper Scripts
5 5 # Версия: 1.0
6 6
7 7 # Цветови променливи

urocibg revised this gist 1752636071. Go to revision

1 file changed, 307 insertions

proxmox-setup.sh(file created)

@@ -0,0 +1,307 @@
1 + #!/bin/bash
2 +
3 + # Proxmox VE Post-Install Configuration Script
4 + # Автор: Proxmox Helper Scripts
5 + # Версия: 1.0
6 +
7 + # Цветови променливи
8 + RD=$(echo "\033[01;31m")
9 + YW=$(echo "\033[33m")
10 + GN=$(echo "\033[1;92m")
11 + BL=$(echo "\033[36m")
12 + CL=$(echo "\033[m")
13 + BFR="\\r\\033[K"
14 + HOLD="-"
15 + CM="${GN}✓${CL}"
16 + CROSS="${RD}✗${CL}"
17 +
18 + # Функции за съобщения
19 + msg_info() {
20 + local msg="$1"
21 + echo -ne " ${HOLD} ${YW}${msg}..."
22 + }
23 +
24 + msg_ok() {
25 + local msg="$1"
26 + echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
27 + }
28 +
29 + msg_error() {
30 + local msg="$1"
31 + echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
32 + }
33 +
34 + # Хедър информация
35 + header_info() {
36 + clear
37 + cat <<"EOF"
38 + ____ _ ____________
39 + / __ \_________ _ ______ ___ ____ | | / / ____/
40 + / /_/ / ___/ __ \| |/_/ __ `__ \/ __ \ | | / / __/
41 + / ____/ / / /_/ /> </ / / / / / /_/ / | |/ / /___
42 + /_/ /_/ \____/_/|_/_/ /_/ /_/\____/ |___/_____/
43 +
44 + ____ __ ____ __ ____
45 + / __ \____ _____/ /_ / _/___ _____/ /_____ _/ / /
46 + / /_/ / __ \/ ___/ __/ / // __ \/ ___/ __/ __ `/ / /
47 + / ____/ /_/ (__ ) /_ _/ // / / (__ ) /_/ /_/ / / /
48 + /_/ \____/____/\__/ /___/_/ /_/____/\__/\__,_/_/_/
49 +
50 + Конфигурационен скрипт за Proxmox VE
51 + Версия 1.0
52 + EOF
53 + echo -e "${BL}════════════════════════════════════════════════════════════${CL}"
54 + echo -e "${GN}Добре дошли в помощника за конфигуриране на Proxmox VE!${CL}"
55 + echo -e "${BL}════════════════════════════════════════════════════════════${CL}"
56 + echo
57 + }
58 +
59 + # Проверка за root права
60 + check_root() {
61 + if [[ $EUID -ne 0 ]]; then
62 + msg_error "Този скрипт трябва да бъде стартиран като root потребител"
63 + exit 1
64 + fi
65 + }
66 +
67 + # Проверка за Proxmox VE
68 + check_proxmox() {
69 + if [[ ! -f /etc/pve/local/pve-ssl.pem ]]; then
70 + msg_error "Proxmox VE не е открит в тази система"
71 + exit 1
72 + fi
73 + }
74 +
75 + # Функция за изключване на напомнянето за абонамент
76 + disable_subscription_nag() {
77 + if [[ ! -f /etc/apt/apt.conf.d/no-nag-script ]]; then
78 + CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "НАПОМНЯНЕ ЗА АБОНАМЕНТ" --menu "Това ще изключи съобщението, което ви напомня да закупите абонамент всеки път, когато влезете в уеб интерфейса.\n \nИзключване на напомнянето за абонамент?" 14 58 2 \
79 + "yes" " " \
80 + "no" " " 3>&2 2>&1 1>&3)
81 + case $CHOICE in
82 + yes)
83 + whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Поддръжка на абонаменти" "Подкрепата на екипа за разработка на софтуера е от съществено значение. Проверете официалния уебсайт за Поддръжка на абонаменти за цени. Без тяхната посветена работа нямаше да имаме този изключителен софтуер." 10 58
84 + msg_info "Изключване на напомнянето за абонамент"
85 + echo "DPkg::Post-Invoke { \"dpkg -V proxmox-widget-toolkit | grep -q '/proxmoxlib\.js$'; if [ \$? -eq 1 ]; then { echo 'Премахване на напомнянето от интерфейса...'; sed -i '/.*data\.status.*{/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; }; fi\"; };" >/etc/apt/apt.conf.d/no-nag-script
86 + apt --reinstall install proxmox-widget-toolkit &>/dev/null
87 + msg_ok "Напомнянето за абонамент е изключено (Изтрийте кеша на браузъра)"
88 + ;;
89 + no)
90 + msg_error "Избрахте 'не' за изключване на напомнянето"
91 + ;;
92 + esac
93 + else
94 + msg_ok "Напомнянето за абонамент вече е изключено"
95 + fi
96 + }
97 +
98 + # Функция за корекция на източниците
99 + fix_sources() {
100 + CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "КОРЕКЦИЯ НА ИЗТОЧНИЦИТЕ" --menu "Това ще коригира източниците на Proxmox VE за правилна работа.\n \nКорекция на източниците на Proxmox VE?" 14 58 2 \
101 + "yes" " " \
102 + "no" " " 3>&2 2>&1 1>&3)
103 + case $CHOICE in
104 + yes)
105 + msg_info "Коригиране на източниците на Proxmox VE"
106 + cat <<EOF >/etc/apt/sources.list
107 + deb http://deb.debian.org/debian bookworm main contrib
108 + deb http://deb.debian.org/debian bookworm-updates main contrib
109 + deb http://security.debian.org/debian-security bookworm-security main contrib
110 + EOF
111 + echo 'APT::Get::Update::SourceListWarnings::NonFreeFirmware "false";' >/etc/apt/apt.conf.d/no-bookworm-firmware.conf
112 + msg_ok "Източниците на Proxmox VE са коригирани"
113 + ;;
114 + no)
115 + msg_error "Избрахте 'не' за корекция на източниците"
116 + ;;
117 + esac
118 + }
119 +
120 + # Функция за изключване на enterprise хранилище
121 + disable_enterprise_repo() {
122 + CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PVE-ENTERPRISE" --menu "Хранилището 'pve-enterprise' е достъпно само за потребители, закупили абонамент за Proxmox VE.\n \nИзключване на 'pve-enterprise' хранилище?" 14 58 2 \
123 + "yes" " " \
124 + "no" " " 3>&2 2>&1 1>&3)
125 + case $CHOICE in
126 + yes)
127 + msg_info "Изключване на 'pve-enterprise' хранилище"
128 + cat <<EOF >/etc/apt/sources.list.d/pve-enterprise.list
129 + # deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise
130 + EOF
131 + msg_ok "'pve-enterprise' хранилището е изключено"
132 + ;;
133 + no)
134 + msg_error "Избрахте 'не' за изключване на хранилището"
135 + ;;
136 + esac
137 + }
138 +
139 + # Функция за активиране на no-subscription хранилище
140 + enable_no_subscription_repo() {
141 + CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PVE-NO-SUBSCRIPTION" --menu "Хранилището 'pve-no-subscription' предоставя достъп до всички компоненти с отворен код на Proxmox VE.\n \nАктивиране на 'pve-no-subscription' хранилище?" 14 58 2 \
142 + "yes" " " \
143 + "no" " " 3>&2 2>&1 1>&3)
144 + case $CHOICE in
145 + yes)
146 + msg_info "Активиране на 'pve-no-subscription' хранилище"
147 + cat <<EOF >/etc/apt/sources.list.d/pve-install-repo.list
148 + deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
149 + EOF
150 + msg_ok "'pve-no-subscription' хранилището е активирано"
151 + ;;
152 + no)
153 + msg_error "Избрахте 'не' за активиране на хранилището"
154 + ;;
155 + esac
156 + }
157 +
158 + # Функция за обновяване на системата
159 + update_system() {
160 + CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "ОБНОВЯВАНЕ НА СИСТЕМАТА" --menu "Това ще обнови всички пакети в системата.\n \nОбновяване на системата?" 14 58 2 \
161 + "yes" " " \
162 + "no" " " 3>&2 2>&1 1>&3)
163 + case $CHOICE in
164 + yes)
165 + msg_info "Обновяване на списъка с пакети"
166 + apt update &>/dev/null
167 + msg_ok "Списъкът с пакети е обновен"
168 +
169 + msg_info "Обновяване на системата"
170 + apt full-upgrade -y &>/dev/null
171 + msg_ok "Системата е обновена"
172 +
173 + msg_info "Почистване на ненужни пакети"
174 + apt autoremove -y &>/dev/null
175 + apt autoclean &>/dev/null
176 + msg_ok "Ненужните пакети са премахнати"
177 + ;;
178 + no)
179 + msg_error "Избрахте 'не' за обновяване на системата"
180 + ;;
181 + esac
182 + }
183 +
184 + # Функция за конфигуриране на firewall
185 + configure_firewall() {
186 + CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "FIREWALL КОНФИГУРАЦИЯ" --menu "Активиране на основна firewall конфигурация?\n \nТова ще активира основни firewall правила за защита." 14 58 2 \
187 + "yes" " " \
188 + "no" " " 3>&2 2>&1 1>&3)
189 + case $CHOICE in
190 + yes)
191 + msg_info "Конфигуриране на firewall"
192 + # Активиране на firewall в Proxmox
193 + pvesh set /cluster/firewall/options --enable 1 &>/dev/null
194 + msg_ok "Firewall е активиран"
195 + ;;
196 + no)
197 + msg_error "Избрахте 'не' за активиране на firewall"
198 + ;;
199 + esac
200 + }
201 +
202 + # Функция за показване на системна информация
203 + show_system_info() {
204 + clear
205 + header_info
206 + echo -e "${BL}════════════════════════════════════════════════════════════${CL}"
207 + echo -e "${GN} СИСТЕМНА ИНФОРМАЦИЯ ${CL}"
208 + echo -e "${BL}════════════════════════════════════════════════════════════${CL}"
209 + echo
210 + echo -e "${YW}Proxmox VE версия:${CL} $(pveversion | head -1)"
211 + echo -e "${YW}Операционна система:${CL} $(lsb_release -d | cut -f2)"
212 + echo -e "${YW}Kernel версия:${CL} $(uname -r)"
213 + echo -e "${YW}Архитектура:${CL} $(uname -m)"
214 + echo -e "${YW}Възходящо време:${CL} $(uptime -p)"
215 + echo -e "${YW}Натоварване:${CL} $(uptime | awk -F'load average:' '{print $2}')"
216 + echo -e "${YW}Памет:${CL} $(free -h | grep '^Mem:' | awk '{print $3"/"$2}')"
217 + echo -e "${YW}Дисково пространство:${CL} $(df -h / | tail -1 | awk '{print $3"/"$2" ("$5" използвано)"}')"
218 + echo
219 + echo -e "${BL}════════════════════════════════════════════════════════════${CL}"
220 + echo
221 + read -p "Натиснете Enter за връщане в главното меню..."
222 + }
223 +
224 + # Главно меню
225 + main_menu() {
226 + while true; do
227 + header_info
228 + CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "ГЛАВНО МЕНЮ" --menu "Изберете опция:" 20 70 10 \
229 + "1" "Изключване на напомнянето за абонамент" \
230 + "2" "Корекция на източниците" \
231 + "3" "Изключване на enterprise хранилище" \
232 + "4" "Активиране на no-subscription хранилище" \
233 + "5" "Обновяване на системата" \
234 + "6" "Конфигуриране на firewall" \
235 + "7" "Показване на системна информация" \
236 + "8" "Изпълнение на всички конфигурации" \
237 + "9" "Изход" 3>&2 2>&1 1>&3)
238 +
239 + case $CHOICE in
240 + 1)
241 + disable_subscription_nag
242 + ;;
243 + 2)
244 + fix_sources
245 + ;;
246 + 3)
247 + disable_enterprise_repo
248 + ;;
249 + 4)
250 + enable_no_subscription_repo
251 + ;;
252 + 5)
253 + update_system
254 + ;;
255 + 6)
256 + configure_firewall
257 + ;;
258 + 7)
259 + show_system_info
260 + ;;
261 + 8)
262 + echo -e "${GN}Изпълнение на всички конфигурации...${CL}"
263 + echo
264 + disable_subscription_nag
265 + fix_sources
266 + disable_enterprise_repo
267 + enable_no_subscription_repo
268 + update_system
269 + configure_firewall
270 + echo
271 + echo -e "${GN}Всички конфигурации са завършени!${CL}"
272 + echo -e "${YW}Препоръчва се рестартиране на системата.${CL}"
273 + echo
274 + read -p "Натиснете Enter за връщане в главното меню..."
275 + ;;
276 + 9)
277 + echo -e "${GN}Благодарим ви за използването на Proxmox VE Helper Scripts!${CL}"
278 + exit 0
279 + ;;
280 + *)
281 + msg_error "Невалидна опция"
282 + ;;
283 + esac
284 +
285 + echo
286 + read -p "Натиснете Enter за връщане в главното меню..."
287 + done
288 + }
289 +
290 + # Основна функция
291 + main() {
292 + check_root
293 + check_proxmox
294 +
295 + # Проверка за whiptail
296 + if ! command -v whiptail &> /dev/null; then
297 + msg_info "Инсталиране на whiptail"
298 + apt update &>/dev/null
299 + apt install -y whiptail &>/dev/null
300 + msg_ok "whiptail е инсталиран"
301 + fi
302 +
303 + main_menu
304 + }
305 +
306 + # Стартиране на скрипта
307 + main "$@"
Newer Older