Last active 1752669988

Инсталатор за Docker приложения в Proxmox контейнери

urocibg revised this gist 1752669988. Go to revision

1 file changed, 138 insertions, 5 deletions

proxmox-apps-installer.sh

@@ -43,10 +43,33 @@ show_header() {
43 43 echo ""
44 44 }
45 45
46 + # Функция за почистване на проблемни repositories
47 + fix_repositories() {
48 + log "Почистване на проблемни repositories..."
49 +
50 + # Почистване на AnyDesk repository ако създава проблеми
51 + if [[ -f /etc/apt/sources.list.d/anydesk-stable.list ]]; then
52 + echo -e "${YELLOW}⚠️ Намерен AnyDesk repository, премахвам временно...${NC}"
53 + mv /etc/apt/sources.list.d/anydesk-stable.list /etc/apt/sources.list.d/anydesk-stable.list.bak || true
54 + fi
55 +
56 + # Почистване на кеша
57 + apt-get clean
58 + rm -rf /var/lib/apt/lists/*
59 +
60 + # Актуализиране на пакетите
61 + apt-get update -qq
62 +
63 + log "Repositories са почистени"
64 + }
65 +
46 66 # Функция за проверка на системни изисквания
47 67 check_requirements() {
48 68 log "Проверка на системни изисквания..."
49 69
70 + # Почистване на repositories преди проверка
71 + fix_repositories
72 +
50 73 # Проверка дали сме в Proxmox контейнер
51 74 if [[ ! -f /proc/1/cgroup ]] || ! grep -q "lxc" /proc/1/cgroup 2>/dev/null; then
52 75 echo -e "${YELLOW}⚠️ Предупреждение: Не се засича Proxmox LXC контейнер${NC}"
@@ -62,7 +85,7 @@ check_requirements() {
62 85 fi
63 86
64 87 # Проверка на мрежова свързаност
65 - if ! ping -c 1 google.com &> /dev/null; then
88 + if ! ping -c 1 8.8.8.8 &> /dev/null; then
66 89 echo -e "${RED}❌ Няма интернет връзка${NC}"
67 90 exit 1
68 91 fi
@@ -82,26 +105,59 @@ install_docker() {
82 105
83 106 # Актуализиране на пакетите
84 107 apt-get update -qq
85 - apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
108 + apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common
109 +
110 + # Определяне на правилната Ubuntu версия за Docker
111 + UBUNTU_CODENAME=$(lsb_release -cs)
112 +
113 + # Проверка дали версията е поддържана от Docker
114 + case $UBUNTU_CODENAME in
115 + "focal"|"jammy"|"mantic"|"noble")
116 + DOCKER_CODENAME=$UBUNTU_CODENAME
117 + ;;
118 + *)
119 + # Ако версията не е поддържана, използвай focal като fallback
120 + echo -e "${YELLOW}⚠️ Ubuntu $UBUNTU_CODENAME не е официално поддържана, използвам focal${NC}"
121 + DOCKER_CODENAME="focal"
122 + ;;
123 + esac
124 +
125 + # Премахване на стари Docker инсталации
126 + apt-get remove -y docker docker-engine docker.io containerd runc || true
86 127
87 128 # Добавяне на Docker GPG ключ
88 129 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
89 130
90 131 # Добавяне на Docker repository
91 - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
132 + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $DOCKER_CODENAME stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
92 133
93 - # Инсталиране на Docker
134 + # Актуализиране на пакетите
94 135 apt-get update -qq
136 +
137 + # Инсталиране на Docker
95 138 apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
96 139
140 + # Проверка на инсталацията
141 + if ! docker --version &> /dev/null; then
142 + log "Грешка при инсталирането на Docker"
143 + exit 1
144 + fi
145 +
97 146 # Стартиране на Docker
98 147 systemctl enable docker
99 148 systemctl start docker
100 149
101 150 # Инсталиране на Docker Compose standalone
102 - curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
151 + DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")')
152 + curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
103 153 chmod +x /usr/local/bin/docker-compose
104 154
155 + # Проверка на Docker Compose
156 + if ! docker-compose --version &> /dev/null; then
157 + log "Грешка при инсталирането на Docker Compose"
158 + exit 1
159 + fi
160 +
105 161 log "Docker е инсталиран успешно"
106 162 }
107 163
@@ -120,6 +176,64 @@ create_directories() {
120 176 log "Директориите са създадени"
121 177 }
122 178
179 + # Функция за диагностика на проблеми
180 + diagnose_system() {
181 + echo -e "${BLUE}🔍 Диагностика на системата...${NC}"
182 +
183 + echo -e "${YELLOW}📋 Система:${NC}"
184 + echo " OS: $(cat /etc/os-release | grep PRETTY_NAME | cut -d= -f2 | tr -d '\"')"
185 + echo " Kernel: $(uname -r)"
186 + echo " Architecture: $(dpkg --print-architecture)"
187 + echo ""
188 +
189 + echo -e "${YELLOW}📋 Мрежа:${NC}"
190 + echo " IP адрес: $(ip route get 8.8.8.8 | sed -n '/src/{s/.*src *\([^ ]*\).*/\1/p;q}' 2>/dev/null || echo 'Неизвестен')"
191 + echo " DNS: $(cat /etc/resolv.conf | grep nameserver | head -1 | awk '{print $2}' || echo 'Неизвестен')"
192 + echo ""
193 +
194 + echo -e "${YELLOW}📋 Репозитории:${NC}"
195 + apt-get update -qq 2>&1 | grep -E "(ERROR|WARNING|W:|E:)" | head -5 || echo " Няма грешки"
196 + echo ""
197 +
198 + echo -e "${YELLOW}📋 Дисково пространство:${NC}"
199 + df -h / | tail -1 | awk '{print " Използвано: " $3 "/" $2 " (" $5 ")"}'
200 + echo ""
201 +
202 + echo -e "${YELLOW}📋 Памет:${NC}"
203 + free -h | grep Mem | awk '{print " Използвана: " $3 "/" $2}'
204 + echo ""
205 + }
206 +
207 + # Функция за автоматично поправяне на проблеми
208 + auto_fix() {
209 + log "Автоматично поправяне на проблеми..."
210 +
211 + # Поправяне на времева зона
212 + if [[ ! -f /etc/timezone ]] || [[ $(cat /etc/timezone) != "Europe/Sofia" ]]; then
213 + echo -e "${BLUE}🕐 Настройка на времева зона...${NC}"
214 + ln -sf /usr/share/zoneinfo/Europe/Sofia /etc/localtime
215 + echo "Europe/Sofia" > /etc/timezone
216 + dpkg-reconfigure -f noninteractive tzdata
217 + fi
218 +
219 + # Поправяне на locale
220 + if ! locale -a | grep -q "bg_BG.UTF-8"; then
221 + echo -e "${BLUE}🌍 Инсталиране на български locale...${NC}"
222 + apt-get install -y locales
223 + locale-gen bg_BG.UTF-8
224 + update-locale LANG=bg_BG.UTF-8
225 + fi
226 +
227 + # Поправяне на DNS
228 + if ! grep -q "8.8.8.8" /etc/resolv.conf; then
229 + echo -e "${BLUE}🌐 Добавяне на резервен DNS...${NC}"
230 + echo "nameserver 8.8.8.8" >> /etc/resolv.conf
231 + echo "nameserver 8.8.4.4" >> /etc/resolv.conf
232 + fi
233 +
234 + log "Автоматичното поправяне е завършено"
235 + }
236 +
123 237 # Функция за генериране на случайни пароли
124 238 generate_password() {
125 239 openssl rand -base64 32 | tr -d "=+/" | cut -c1-25
@@ -746,6 +860,17 @@ main() {
746 860 fi
747 861 read -p "Натиснете Enter за да продължите..."
748 862 ;;
863 + 12)
864 + echo -e "${BLUE}Диагностика на системата...${NC}"
865 + diagnose_system
866 + read -p "Натиснете Enter за да продължите..."
867 + ;;
868 + 13)
869 + echo -e "${BLUE}Автоматично поправяне...${NC}"
870 + auto_fix
871 + echo -e "${GREEN}✅ Автоматичното поправяне е завършено${NC}"
872 + read -p "Натиснете Enter за да продължите..."
873 + ;;
749 874 0)
750 875 echo -e "${GREEN}Благодаря за използването на Proxmox Apps Installer!${NC}"
751 876 log "Инсталаторът е приключен"
@@ -953,6 +1078,14 @@ case "${1:-}" in
953 1078 check_ports
954 1079 exit 0
955 1080 ;;
1081 + --diagnose|-d)
1082 + diagnose_system
1083 + exit 0
1084 + ;;
1085 + --fix|-f)
1086 + auto_fix
1087 + exit 0
1088 + ;;
956 1089 *)
957 1090 # Нормално изпълнение
958 1091 main "$@"

urocibg revised this gist 1752669242. Go to revision

1 file changed, 960 insertions

proxmox-apps-installer.sh(file created)

@@ -0,0 +1,960 @@
1 + #!/bin/bash
2 +
3 + # Proxmox Apps Installer
4 + # Професионален инсталатор за Docker приложения в Proxmox контейнери
5 + # Автор: Федя Серафиев
6 + # Версия: 1.0
7 +
8 + set -e
9 +
10 + # Цветове за по-добра визуализация
11 + RED='\033[0;31m'
12 + GREEN='\033[0;32m'
13 + YELLOW='\033[1;33m'
14 + BLUE='\033[0;34m'
15 + PURPLE='\033[0;35m'
16 + CYAN='\033[0;36m'
17 + WHITE='\033[1;37m'
18 + NC='\033[0m' # No Color
19 +
20 + # Глобални променливи
21 + INSTALL_DIR="/opt/proxmox-apps"
22 + DATA_DIR="/var/lib/proxmox-apps"
23 + LOG_FILE="/var/log/proxmox-apps-installer.log"
24 +
25 + # Функция за лог
26 + log() {
27 + echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
28 + }
29 +
30 + # Функция за показване на header
31 + show_header() {
32 + clear
33 + echo -e "${CYAN}╔═══════════════════════════════════════════════════════════════════════════════╗${NC}"
34 + echo -e "${CYAN}║ ${WHITE}PROXMOX APPS INSTALLER${CYAN} ║${NC}"
35 + echo -e "${CYAN}║ ${YELLOW}Професионален Docker инсталатор${CYAN} ║${NC}"
36 + echo -e "${CYAN}╠═══════════════════════════════════════════════════════════════════════════════╣${NC}"
37 + echo -e "${CYAN}║${NC} ${GREEN}✓${NC} Nginx Proxy Manager - Reverse Proxy & SSL Management ${CYAN}║${NC}"
38 + echo -e "${CYAN}║${NC} ${GREEN}✓${NC} Dashy V3 - Personalized Dashboard ${CYAN}║${NC}"
39 + echo -e "${CYAN}║${NC} ${GREEN}✓${NC} File Browser - Web File Manager ${CYAN}║${NC}"
40 + echo -e "${CYAN}║${NC} ${GREEN}✓${NC} Droppy - Modern File Sharing ${CYAN}║${NC}"
41 + echo -e "${CYAN}║${NC} ${GREEN}✓${NC} OpenGist - Self-hosted Pastebin ${CYAN}║${NC}"
42 + echo -e "${CYAN}╚═══════════════════════════════════════════════════════════════════════════════╝${NC}"
43 + echo ""
44 + }
45 +
46 + # Функция за проверка на системни изисквания
47 + check_requirements() {
48 + log "Проверка на системни изисквания..."
49 +
50 + # Проверка дали сме в Proxmox контейнер
51 + if [[ ! -f /proc/1/cgroup ]] || ! grep -q "lxc" /proc/1/cgroup 2>/dev/null; then
52 + echo -e "${YELLOW}⚠️ Предупреждение: Не се засича Proxmox LXC контейнер${NC}"
53 + echo -e "${YELLOW} Скриптът ще продължи, но е оптимизиран за Proxmox${NC}"
54 + echo ""
55 + fi
56 +
57 + # Проверка на свободно пространство
58 + AVAILABLE_SPACE=$(df / | tail -1 | awk '{print $4}')
59 + if [[ $AVAILABLE_SPACE -lt 5242880 ]]; then # 5GB в KB
60 + echo -e "${RED}❌ Недостатъчно дисково пространство. Нужни са поне 5GB${NC}"
61 + exit 1
62 + fi
63 +
64 + # Проверка на мрежова свързаност
65 + if ! ping -c 1 google.com &> /dev/null; then
66 + echo -e "${RED}❌ Няма интернет връзка${NC}"
67 + exit 1
68 + fi
69 +
70 + echo -e "${GREEN}✅ Системните изисквания са изпълнени${NC}"
71 + }
72 +
73 + # Функция за инсталиране на Docker
74 + install_docker() {
75 + if command -v docker &> /dev/null; then
76 + log "Docker вече е инсталиран"
77 + return 0
78 + fi
79 +
80 + log "Инсталиране на Docker..."
81 + echo -e "${BLUE}📦 Инсталиране на Docker и Docker Compose...${NC}"
82 +
83 + # Актуализиране на пакетите
84 + apt-get update -qq
85 + apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
86 +
87 + # Добавяне на Docker GPG ключ
88 + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
89 +
90 + # Добавяне на Docker repository
91 + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
92 +
93 + # Инсталиране на Docker
94 + apt-get update -qq
95 + apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
96 +
97 + # Стартиране на Docker
98 + systemctl enable docker
99 + systemctl start docker
100 +
101 + # Инсталиране на Docker Compose standalone
102 + curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
103 + chmod +x /usr/local/bin/docker-compose
104 +
105 + log "Docker е инсталиран успешно"
106 + }
107 +
108 + # Функция за създаване на директории
109 + create_directories() {
110 + log "Създаване на директории..."
111 +
112 + mkdir -p "$INSTALL_DIR"
113 + mkdir -p "$DATA_DIR"
114 + mkdir -p "$DATA_DIR/nginx-proxy-manager"
115 + mkdir -p "$DATA_DIR/dashy"
116 + mkdir -p "$DATA_DIR/filebrowser"
117 + mkdir -p "$DATA_DIR/droppy"
118 + mkdir -p "$DATA_DIR/opengist"
119 +
120 + log "Директориите са създадени"
121 + }
122 +
123 + # Функция за генериране на случайни пароли
124 + generate_password() {
125 + openssl rand -base64 32 | tr -d "=+/" | cut -c1-25
126 + }
127 +
128 + # Функция за инсталиране на Nginx Proxy Manager
129 + install_nginx_proxy_manager() {
130 + log "Инсталиране на Nginx Proxy Manager..."
131 +
132 + cat > "$INSTALL_DIR/nginx-proxy-manager.yml" << 'EOF'
133 + version: '3.8'
134 + services:
135 + nginx-proxy-manager:
136 + image: 'jc21/nginx-proxy-manager:latest'
137 + container_name: nginx-proxy-manager
138 + restart: unless-stopped
139 + ports:
140 + - '80:80'
141 + - '443:443'
142 + - '81:81'
143 + volumes:
144 + - /var/lib/proxmox-apps/nginx-proxy-manager:/data
145 + - /var/lib/proxmox-apps/nginx-proxy-manager/letsencrypt:/etc/letsencrypt
146 + environment:
147 + - DISABLE_IPV6=true
148 + networks:
149 + - proxy-network
150 + healthcheck:
151 + test: ["CMD", "curl", "-f", "http://localhost:81/api/"]
152 + interval: 30s
153 + timeout: 10s
154 + retries: 3
155 +
156 + networks:
157 + proxy-network:
158 + name: proxy-network
159 + driver: bridge
160 + EOF
161 +
162 + cd "$INSTALL_DIR"
163 + docker-compose -f nginx-proxy-manager.yml up -d
164 +
165 + echo -e "${GREEN}✅ Nginx Proxy Manager е инсталиран${NC}"
166 + echo -e "${YELLOW}📋 Администриране: http://your-ip:81${NC}"
167 + echo -e "${YELLOW}📋 Потребител: [email protected]${NC}"
168 + echo -e "${YELLOW}📋 Парола: changeme${NC}"
169 + echo ""
170 + }
171 +
172 + # Функция за инсталиране на Dashy V3
173 + install_dashy() {
174 + log "Инсталиране на Dashy V3..."
175 +
176 + # Създаване на базова конфигурация
177 + cat > "$DATA_DIR/dashy/conf.yml" << 'EOF'
178 + pageInfo:
179 + title: 'Proxmox Dashboard'
180 + description: 'Персонализиран Dashboard за Proxmox Apps'
181 + logo: 'https://raw.githubusercontent.com/Lissy93/dashy/master/public/img/dashy.png'
182 +
183 + appConfig:
184 + theme: 'dark'
185 + layout: 'auto'
186 + iconSize: 'medium'
187 + language: 'bg'
188 +
189 + sections:
190 + - name: 'Proxmox Services'
191 + icon: 'fas fa-server'
192 + items:
193 + - title: 'Nginx Proxy Manager'
194 + description: 'Reverse Proxy & SSL Management'
195 + url: 'http://localhost:81'
196 + icon: 'fas fa-shield-alt'
197 + - title: 'File Browser'
198 + description: 'Web File Manager'
199 + url: 'http://localhost:8080'
200 + icon: 'fas fa-folder'
201 + - title: 'Droppy'
202 + description: 'File Sharing'
203 + url: 'http://localhost:8989'
204 + icon: 'fas fa-cloud-upload-alt'
205 + - title: 'OpenGist'
206 + description: 'Code Snippets'
207 + url: 'http://localhost:6157'
208 + icon: 'fas fa-code'
209 +
210 + - name: 'System Info'
211 + icon: 'fas fa-info-circle'
212 + widgets:
213 + - type: 'system-info'
214 + options:
215 + hostname: true
216 + uptime: true
217 + memory: true
218 + cpu: true
219 + EOF
220 +
221 + cat > "$INSTALL_DIR/dashy.yml" << 'EOF'
222 + version: '3.8'
223 + services:
224 + dashy:
225 + image: 'lissy93/dashy:latest'
226 + container_name: dashy
227 + restart: unless-stopped
228 + ports:
229 + - '4000:80'
230 + volumes:
231 + - /var/lib/proxmox-apps/dashy/conf.yml:/app/public/conf.yml:ro
232 + environment:
233 + - NODE_ENV=production
234 + - UID=1000
235 + - GID=1000
236 + networks:
237 + - proxy-network
238 + healthcheck:
239 + test: ["CMD", "curl", "-f", "http://localhost:80"]
240 + interval: 30s
241 + timeout: 10s
242 + retries: 3
243 +
244 + networks:
245 + proxy-network:
246 + external: true
247 + EOF
248 +
249 + cd "$INSTALL_DIR"
250 + docker-compose -f dashy.yml up -d
251 +
252 + echo -e "${GREEN}✅ Dashy V3 е инсталиран${NC}"
253 + echo -e "${YELLOW}📋 Достъп: http://your-ip:4000${NC}"
254 + echo ""
255 + }
256 +
257 + # Функция за инсталиране на File Browser
258 + install_filebrowser() {
259 + log "Инсталиране на File Browser..."
260 +
261 + # Създаване на база данни
262 + touch "$DATA_DIR/filebrowser/database.db"
263 +
264 + cat > "$INSTALL_DIR/filebrowser.yml" << 'EOF'
265 + version: '3.8'
266 + services:
267 + filebrowser:
268 + image: 'filebrowser/filebrowser:latest'
269 + container_name: filebrowser
270 + restart: unless-stopped
271 + ports:
272 + - '8080:80'
273 + volumes:
274 + - /var/lib/proxmox-apps/filebrowser/database.db:/database.db
275 + - /var/lib/proxmox-apps:/srv/proxmox-apps
276 + - /opt/proxmox-apps:/srv/configs
277 + environment:
278 + - FB_DATABASE=/database.db
279 + - FB_ROOT=/srv
280 + - FB_LOG=stdout
281 + - FB_NOAUTH=false
282 + networks:
283 + - proxy-network
284 + healthcheck:
285 + test: ["CMD", "curl", "-f", "http://localhost:80/health"]
286 + interval: 30s
287 + timeout: 10s
288 + retries: 3
289 +
290 + networks:
291 + proxy-network:
292 + external: true
293 + EOF
294 +
295 + cd "$INSTALL_DIR"
296 + docker-compose -f filebrowser.yml up -d
297 +
298 + echo -e "${GREEN}✅ File Browser е инсталиран${NC}"
299 + echo -e "${YELLOW}📋 Достъп: http://your-ip:8080${NC}"
300 + echo -e "${YELLOW}📋 Потребител: admin${NC}"
301 + echo -e "${YELLOW}📋 Парола: admin${NC}"
302 + echo ""
303 + }
304 +
305 + # Функция за инсталиране на Droppy
306 + install_droppy() {
307 + log "Инсталиране на Droppy..."
308 +
309 + mkdir -p "$DATA_DIR/droppy/config"
310 + mkdir -p "$DATA_DIR/droppy/files"
311 +
312 + cat > "$INSTALL_DIR/droppy.yml" << 'EOF'
313 + version: '3.8'
314 + services:
315 + droppy:
316 + image: 'silverwind/droppy:latest'
317 + container_name: droppy
318 + restart: unless-stopped
319 + ports:
320 + - '8989:8989'
321 + volumes:
322 + - /var/lib/proxmox-apps/droppy/config:/app/config
323 + - /var/lib/proxmox-apps/droppy/files:/app/files
324 + environment:
325 + - NODE_ENV=production
326 + - UID=1000
327 + - GID=1000
328 + networks:
329 + - proxy-network
330 + healthcheck:
331 + test: ["CMD", "curl", "-f", "http://localhost:8989"]
332 + interval: 30s
333 + timeout: 10s
334 + retries: 3
335 +
336 + networks:
337 + proxy-network:
338 + external: true
339 + EOF
340 +
341 + cd "$INSTALL_DIR"
342 + docker-compose -f droppy.yml up -d
343 +
344 + echo -e "${GREEN}✅ Droppy е инсталиран${NC}"
345 + echo -e "${YELLOW}📋 Достъп: http://your-ip:8989${NC}"
346 + echo ""
347 + }
348 +
349 + # Функция за инсталиране на OpenGist
350 + install_opengist() {
351 + log "Инсталиране на OpenGist..."
352 +
353 + OPENGIST_SECRET=$(generate_password)
354 +
355 + cat > "$INSTALL_DIR/opengist.yml" << EOF
356 + version: '3.8'
357 + services:
358 + opengist:
359 + image: 'ghcr.io/thomiceli/opengist:latest'
360 + container_name: opengist
361 + restart: unless-stopped
362 + ports:
363 + - '6157:6157'
364 + volumes:
365 + - /var/lib/proxmox-apps/opengist:/opengist
366 + environment:
367 + - OG_DB_TYPE=sqlite
368 + - OG_DB_PATH=/opengist/opengist.db
369 + - OG_SECRET_KEY=${OPENGIST_SECRET}
370 + - OG_EXTERNAL_URL=http://localhost:6157
371 + - OG_LOG_LEVEL=info
372 + - OG_DISABLE_SIGNUP=false
373 + - OG_REQUIRE_LOGIN=false
374 + networks:
375 + - proxy-network
376 + healthcheck:
377 + test: ["CMD", "curl", "-f", "http://localhost:6157"]
378 + interval: 30s
379 + timeout: 10s
380 + retries: 3
381 +
382 + networks:
383 + proxy-network:
384 + external: true
385 + EOF
386 +
387 + cd "$INSTALL_DIR"
388 + docker-compose -f opengist.yml up -d
389 +
390 + echo -e "${GREEN}✅ OpenGist е инсталиран${NC}"
391 + echo -e "${YELLOW}📋 Достъп: http://your-ip:6157${NC}"
392 + echo ""
393 + }
394 +
395 + # Функция за създаване на master Docker Compose файл
396 + create_master_compose() {
397 + log "Създаване на master Docker Compose файл..."
398 +
399 + cat > "$INSTALL_DIR/docker-compose.yml" << 'EOF'
400 + version: '3.8'
401 +
402 + services:
403 + # Nginx Proxy Manager
404 + nginx-proxy-manager:
405 + image: 'jc21/nginx-proxy-manager:latest'
406 + container_name: nginx-proxy-manager
407 + restart: unless-stopped
408 + ports:
409 + - '80:80'
410 + - '443:443'
411 + - '81:81'
412 + volumes:
413 + - /var/lib/proxmox-apps/nginx-proxy-manager:/data
414 + - /var/lib/proxmox-apps/nginx-proxy-manager/letsencrypt:/etc/letsencrypt
415 + environment:
416 + - DISABLE_IPV6=true
417 + networks:
418 + - proxy-network
419 + healthcheck:
420 + test: ["CMD", "curl", "-f", "http://localhost:81/api/"]
421 + interval: 30s
422 + timeout: 10s
423 + retries: 3
424 +
425 + # Dashy Dashboard
426 + dashy:
427 + image: 'lissy93/dashy:latest'
428 + container_name: dashy
429 + restart: unless-stopped
430 + ports:
431 + - '4000:80'
432 + volumes:
433 + - /var/lib/proxmox-apps/dashy/conf.yml:/app/public/conf.yml:ro
434 + environment:
435 + - NODE_ENV=production
436 + - UID=1000
437 + - GID=1000
438 + networks:
439 + - proxy-network
440 + healthcheck:
441 + test: ["CMD", "curl", "-f", "http://localhost:80"]
442 + interval: 30s
443 + timeout: 10s
444 + retries: 3
445 +
446 + # File Browser
447 + filebrowser:
448 + image: 'filebrowser/filebrowser:latest'
449 + container_name: filebrowser
450 + restart: unless-stopped
451 + ports:
452 + - '8080:80'
453 + volumes:
454 + - /var/lib/proxmox-apps/filebrowser/database.db:/database.db
455 + - /var/lib/proxmox-apps:/srv/proxmox-apps
456 + - /opt/proxmox-apps:/srv/configs
457 + environment:
458 + - FB_DATABASE=/database.db
459 + - FB_ROOT=/srv
460 + - FB_LOG=stdout
461 + - FB_NOAUTH=false
462 + networks:
463 + - proxy-network
464 + healthcheck:
465 + test: ["CMD", "curl", "-f", "http://localhost:80/health"]
466 + interval: 30s
467 + timeout: 10s
468 + retries: 3
469 +
470 + # Droppy File Sharing
471 + droppy:
472 + image: 'silverwind/droppy:latest'
473 + container_name: droppy
474 + restart: unless-stopped
475 + ports:
476 + - '8989:8989'
477 + volumes:
478 + - /var/lib/proxmox-apps/droppy/config:/app/config
479 + - /var/lib/proxmox-apps/droppy/files:/app/files
480 + environment:
481 + - NODE_ENV=production
482 + - UID=1000
483 + - GID=1000
484 + networks:
485 + - proxy-network
486 + healthcheck:
487 + test: ["CMD", "curl", "-f", "http://localhost:8989"]
488 + interval: 30s
489 + timeout: 10s
490 + retries: 3
491 +
492 + # OpenGist
493 + opengist:
494 + image: 'ghcr.io/thomiceli/opengist:latest'
495 + container_name: opengist
496 + restart: unless-stopped
497 + ports:
498 + - '6157:6157'
499 + volumes:
500 + - /var/lib/proxmox-apps/opengist:/opengist
501 + environment:
502 + - OG_DB_TYPE=sqlite
503 + - OG_DB_PATH=/opengist/opengist.db
504 + - OG_SECRET_KEY=CHANGE_THIS_SECRET_KEY
505 + - OG_EXTERNAL_URL=http://localhost:6157
506 + - OG_LOG_LEVEL=info
507 + - OG_DISABLE_SIGNUP=false
508 + - OG_REQUIRE_LOGIN=false
509 + networks:
510 + - proxy-network
511 + healthcheck:
512 + test: ["CMD", "curl", "-f", "http://localhost:6157"]
513 + interval: 30s
514 + timeout: 10s
515 + retries: 3
516 +
517 + networks:
518 + proxy-network:
519 + name: proxy-network
520 + driver: bridge
521 + EOF
522 +
523 + # Заместване на placeholder-a за OpenGist secret
524 + OPENGIST_SECRET=$(generate_password)
525 + sed -i "s/CHANGE_THIS_SECRET_KEY/${OPENGIST_SECRET}/g" "$INSTALL_DIR/docker-compose.yml"
526 +
527 + log "Master Docker Compose файлът е създаден"
528 + }
529 +
530 + # Функция за създаване на управляващи скриптове
531 + create_management_scripts() {
532 + log "Създаване на управляващи скриптове..."
533 +
534 + # Скрипт за старт на всички услуги
535 + cat > "$INSTALL_DIR/start-all.sh" << 'EOF'
536 + #!/bin/bash
537 + cd /opt/proxmox-apps
538 + echo "Стартиране на всички услуги..."
539 + docker-compose up -d
540 + echo "Всички услуги са стартирани!"
541 + EOF
542 +
543 + # Скрипт за спиране на всички услуги
544 + cat > "$INSTALL_DIR/stop-all.sh" << 'EOF'
545 + #!/bin/bash
546 + cd /opt/proxmox-apps
547 + echo "Спиране на всички услуги..."
548 + docker-compose down
549 + echo "Всички услуги са спрени!"
550 + EOF
551 +
552 + # Скрипт за рестарт на всички услуги
553 + cat > "$INSTALL_DIR/restart-all.sh" << 'EOF'
554 + #!/bin/bash
555 + cd /opt/proxmox-apps
556 + echo "Рестартиране на всички услуги..."
557 + docker-compose down
558 + docker-compose up -d
559 + echo "Всички услуги са рестартирани!"
560 + EOF
561 +
562 + # Скрипт за проверка на статуса
563 + cat > "$INSTALL_DIR/status.sh" << 'EOF'
564 + #!/bin/bash
565 + cd /opt/proxmox-apps
566 + echo "Статус на услугите:"
567 + docker-compose ps
568 + echo ""
569 + echo "Използване на ресурси:"
570 + docker stats --no-stream
571 + EOF
572 +
573 + # Скрипт за бекъп
574 + cat > "$INSTALL_DIR/backup.sh" << 'EOF'
575 + #!/bin/bash
576 + BACKUP_DIR="/var/backups/proxmox-apps"
577 + DATE=$(date +%Y%m%d_%H%M%S)
578 + BACKUP_FILE="$BACKUP_DIR/proxmox-apps-backup-$DATE.tar.gz"
579 +
580 + mkdir -p "$BACKUP_DIR"
581 +
582 + echo "Създаване на бекъп..."
583 + tar -czf "$BACKUP_FILE" -C /var/lib proxmox-apps -C /opt proxmox-apps
584 +
585 + echo "Бекъпът е създаден: $BACKUP_FILE"
586 + ls -lh "$BACKUP_FILE"
587 + EOF
588 +
589 + # Скрипт за актуализиране
590 + cat > "$INSTALL_DIR/update.sh" << 'EOF'
591 + #!/bin/bash
592 + cd /opt/proxmox-apps
593 + echo "Актуализиране на Docker образите..."
594 + docker-compose pull
595 + docker-compose up -d
596 + echo "Премахване на стари образи..."
597 + docker image prune -f
598 + echo "Актуализирането е завършено!"
599 + EOF
600 +
601 + # Правене на скриптовете изпълними
602 + chmod +x "$INSTALL_DIR"/*.sh
603 +
604 + log "Управляващите скриптове са създадени"
605 + }
606 +
607 + # Функция за показване на меню
608 + show_menu() {
609 + show_header
610 + echo -e "${WHITE}Изберете опция:${NC}"
611 + echo ""
612 + echo -e "${GREEN}1)${NC} Инсталиране на Nginx Proxy Manager"
613 + echo -e "${GREEN}2)${NC} Инсталиране на Dashy V3"
614 + echo -e "${GREEN}3)${NC} Инсталиране на File Browser"
615 + echo -e "${GREEN}4)${NC} Инсталиране на Droppy"
616 + echo -e "${GREEN}5)${NC} Инсталиране на OpenGist"
617 + echo -e "${GREEN}6)${NC} Инсталиране на всички приложения"
618 + echo -e "${GREEN}7)${NC} Показване на статус"
619 + echo -e "${GREEN}8)${NC} Рестарт на всички услуги"
620 + echo -e "${GREEN}9)${NC} Спиране на всички услуги"
621 + echo -e "${GREEN}10)${NC} Създаване на бекъп"
622 + echo -e "${GREEN}11)${NC} Актуализиране на приложенията"
623 + echo -e "${RED}0)${NC} Изход"
624 + echo ""
625 + echo -e "${YELLOW}Моля, въведете вашия избор [0-11]:${NC} "
626 + }
627 +
628 + # Главна функция
629 + main() {
630 + # Създаване на лог файл
631 + touch "$LOG_FILE"
632 + log "Стартиране на Proxmox Apps Installer"
633 +
634 + # Проверка дали скриптът се изпълнява като root
635 + if [[ $EUID -ne 0 ]]; then
636 + echo -e "${RED}❌ Този скрипт трябва да се изпълни като root${NC}"
637 + exit 1
638 + fi
639 +
640 + # Проверка на системни изисквания
641 + check_requirements
642 +
643 + # Инсталиране на Docker ако не е инсталиран
644 + install_docker
645 +
646 + # Създаване на директории
647 + create_directories
648 +
649 + # Главно меню
650 + while true; do
651 + show_menu
652 + read -r choice
653 +
654 + case $choice in
655 + 1)
656 + echo -e "${BLUE}Инсталиране на Nginx Proxy Manager...${NC}"
657 + install_nginx_proxy_manager
658 + read -p "Натиснете Enter за да продължите..."
659 + ;;
660 + 2)
661 + echo -e "${BLUE}Инсталиране на Dashy V3...${NC}"
662 + install_dashy
663 + read -p "Натиснете Enter за да продължите..."
664 + ;;
665 + 3)
666 + echo -e "${BLUE}Инсталиране на File Browser...${NC}"
667 + install_filebrowser
668 + read -p "Натиснете Enter за да продължите..."
669 + ;;
670 + 4)
671 + echo -e "${BLUE}Инсталиране на Droppy...${NC}"
672 + install_droppy
673 + read -p "Натиснете Enter за да продължите..."
674 + ;;
675 + 5)
676 + echo -e "${BLUE}Инсталиране на OpenGist...${NC}"
677 + install_opengist
678 + read -p "Натиснете Enter за да продължите..."
679 + ;;
680 + 6)
681 + echo -e "${BLUE}Инсталиране на всички приложения...${NC}"
682 + create_master_compose
683 + cd "$INSTALL_DIR"
684 + docker-compose up -d
685 + create_management_scripts
686 + echo -e "${GREEN}✅ Всички приложения са инсталирани успешно!${NC}"
687 + echo ""
688 + echo -e "${YELLOW}📋 Достъп до приложенията:${NC}"
689 + echo -e "${CYAN} • Nginx Proxy Manager: http://your-ip:81${NC}"
690 + echo -e "${CYAN} • Dashy Dashboard: http://your-ip:4000${NC}"
691 + echo -e "${CYAN} • File Browser: http://your-ip:8080${NC}"
692 + echo -e "${CYAN} • Droppy: http://your-ip:8989${NC}"
693 + echo -e "${CYAN} • OpenGist: http://your-ip:6157${NC}"
694 + echo ""
695 + echo -e "${YELLOW}🔧 Управляващи скриптове в $INSTALL_DIR:${NC}"
696 + echo -e "${CYAN} • ./start-all.sh - Стартиране на всички услуги${NC}"
697 + echo -e "${CYAN} • ./stop-all.sh - Спиране на всички услуги${NC}"
698 + echo -e "${CYAN} • ./restart-all.sh - Рестарт на всички услуги${NC}"
699 + echo -e "${CYAN} • ./status.sh - Проверка на статуса${NC}"
700 + echo -e "${CYAN} • ./backup.sh - Създаване на бекъп${NC}"
701 + echo -e "${CYAN} • ./update.sh - Актуализиране${NC}"
702 + read -p "Натиснете Enter за да продължите..."
703 + ;;
704 + 7)
705 + echo -e "${BLUE}Показване на статус...${NC}"
706 + if [[ -f "$INSTALL_DIR/status.sh" ]]; then
707 + bash "$INSTALL_DIR/status.sh"
708 + else
709 + echo -e "${RED}❌ Статус скриптът не е намерен${NC}"
710 + fi
711 + read -p "Натиснете Enter за да продължите..."
712 + ;;
713 + 8)
714 + echo -e "${BLUE}Рестарт на всички услуги...${NC}"
715 + if [[ -f "$INSTALL_DIR/restart-all.sh" ]]; then
716 + bash "$INSTALL_DIR/restart-all.sh"
717 + else
718 + echo -e "${RED}❌ Рестарт скриптът не е намерен${NC}"
719 + fi
720 + read -p "Натиснете Enter за да продължите..."
721 + ;;
722 + 9)
723 + echo -e "${BLUE}Спиране на всички услуги...${NC}"
724 + if [[ -f "$INSTALL_DIR/stop-all.sh" ]]; then
725 + bash "$INSTALL_DIR/stop-all.sh"
726 + else
727 + echo -e "${RED}❌ Стоп скриптът не е намерен${NC}"
728 + fi
729 + read -p "Натиснете Enter за да продължите..."
730 + ;;
731 + 10)
732 + echo -e "${BLUE}Създаване на бекъп...${NC}"
733 + if [[ -f "$INSTALL_DIR/backup.sh" ]]; then
734 + bash "$INSTALL_DIR/backup.sh"
735 + else
736 + echo -e "${RED}❌ Бекъп скриптът не е намерен${NC}"
737 + fi
738 + read -p "Натиснете Enter за да продължите..."
739 + ;;
740 + 11)
741 + echo -e "${BLUE}Актуализиране на приложенията...${NC}"
742 + if [[ -f "$INSTALL_DIR/update.sh" ]]; then
743 + bash "$INSTALL_DIR/update.sh"
744 + else
745 + echo -e "${RED}❌ Актуализиращият скрипт не е намерен${NC}"
746 + fi
747 + read -p "Натиснете Enter за да продължите..."
748 + ;;
749 + 0)
750 + echo -e "${GREEN}Благодаря за използването на Proxmox Apps Installer!${NC}"
751 + log "Инсталаторът е приключен"
752 + exit 0
753 + ;;
754 + *)
755 + echo -e "${RED}❌ Невалиден избор. Моля, опитайте отново.${NC}"
756 + read -p "Натиснете Enter за да продължите..."
757 + ;;
758 + esac
759 + done
760 + }
761 +
762 + # Функция за показване на информация за системата
763 + show_system_info() {
764 + echo -e "${CYAN}╔═══════════════════════════════════════════════════════════════════════════════╗${NC}"
765 + echo -e "${CYAN}║ ${WHITE}СИСТЕМНА ИНФОРМАЦИЯ${CYAN} ║${NC}"
766 + echo -e "${CYAN}╚═══════════════════════════════════════════════════════════════════════════════╝${NC}"
767 + echo ""
768 + echo -e "${YELLOW}📊 Система:${NC} $(hostnamectl | grep "Operating System" | cut -d: -f2 | xargs)"
769 + echo -e "${YELLOW}🖥️ Хост:${NC} $(hostname)"
770 + echo -e "${YELLOW}💾 Памет:${NC} $(free -h | grep Mem | awk '{print $3"/"$2}')"
771 + echo -e "${YELLOW}💿 Диск:${NC} $(df -h / | tail -1 | awk '{print $3"/"$2" ("$5" използвани)"}')"
772 + echo -e "${YELLOW}🐳 Docker:${NC} $(docker --version 2>/dev/null || echo "Не е инсталиран")"
773 + echo -e "${YELLOW}🔧 Docker Compose:${NC} $(docker-compose --version 2>/dev/null || echo "Не е инсталиран")"
774 + echo ""
775 + }
776 +
777 + # Функция за проверка на портове
778 + check_ports() {
779 + echo -e "${BLUE}Проверка на портове...${NC}"
780 +
781 + declare -A PORTS=(
782 + ["80"]="HTTP (Nginx Proxy Manager)"
783 + ["443"]="HTTPS (Nginx Proxy Manager)"
784 + ["81"]="Nginx Proxy Manager Admin"
785 + ["4000"]="Dashy Dashboard"
786 + ["8080"]="File Browser"
787 + ["8989"]="Droppy"
788 + ["6157"]="OpenGist"
789 + )
790 +
791 + for port in "${!PORTS[@]}"; do
792 + if ss -tuln | grep -q ":$port "; then
793 + echo -e "${RED}❌ Порт $port (${PORTS[$port]}) е зает${NC}"
794 + else
795 + echo -e "${GREEN}✅ Порт $port (${PORTS[$port]}) е свободен${NC}"
796 + fi
797 + done
798 + echo ""
799 + }
800 +
801 + # Функция за firewall конфигурация
802 + configure_firewall() {
803 + log "Конфигуриране на firewall..."
804 +
805 + if command -v ufw &> /dev/null; then
806 + echo -e "${BLUE}Конфигуриране на UFW firewall...${NC}"
807 +
808 + # Разрешаване на портове
809 + ufw allow 80/tcp comment "HTTP"
810 + ufw allow 443/tcp comment "HTTPS"
811 + ufw allow 81/tcp comment "Nginx Proxy Manager"
812 + ufw allow 4000/tcp comment "Dashy"
813 + ufw allow 8080/tcp comment "File Browser"
814 + ufw allow 8989/tcp comment "Droppy"
815 + ufw allow 6157/tcp comment "OpenGist"
816 +
817 + # Разрешаване на SSH
818 + ufw allow 22/tcp comment "SSH"
819 +
820 + echo -e "${GREEN}✅ UFW firewall е конфигуриран${NC}"
821 + else
822 + echo -e "${YELLOW}⚠️ UFW не е инсталиран. Моля, конфигурирайте firewall-а ръчно${NC}"
823 + fi
824 + }
825 +
826 + # Функция за показване на полезни команди
827 + show_useful_commands() {
828 + echo -e "${CYAN}╔═══════════════════════════════════════════════════════════════════════════════╗${NC}"
829 + echo -e "${CYAN}║ ${WHITE}ПОЛЕЗНИ КОМАНДИ${CYAN} ║${NC}"
830 + echo -e "${CYAN}╚═══════════════════════════════════════════════════════════════════════════════╝${NC}"
831 + echo ""
832 + echo -e "${YELLOW}🐳 Docker команди:${NC}"
833 + echo -e "${CYAN} docker ps${NC} - Показва работещите контейнери"
834 + echo -e "${CYAN} docker logs <container-name>${NC} - Показва логове на контейнер"
835 + echo -e "${CYAN} docker exec -it <container-name> /bin/bash${NC} - Влизане в контейнер"
836 + echo -e "${CYAN} docker system prune -f${NC} - Почистване на неизползвани ресурси"
837 + echo ""
838 + echo -e "${YELLOW}🔧 Docker Compose команди:${NC}"
839 + echo -e "${CYAN} docker-compose ps${NC} - Статус на услугите"
840 + echo -e "${CYAN} docker-compose logs -f${NC} - Следене на логове"
841 + echo -e "${CYAN} docker-compose pull${NC} - Актуализиране на образите"
842 + echo -e "${CYAN} docker-compose restart <service>${NC} - Рестарт на услуга"
843 + echo ""
844 + echo -e "${YELLOW}📁 Важни директории:${NC}"
845 + echo -e "${CYAN} $INSTALL_DIR${NC} - Конфигурационни файлове"
846 + echo -e "${CYAN} $DATA_DIR${NC} - Данни на приложенията"
847 + echo -e "${CYAN} $LOG_FILE${NC} - Лог файл на инсталатора"
848 + echo ""
849 + }
850 +
851 + # Функция за генериране на SSL сертификати
852 + generate_ssl_info() {
853 + echo -e "${CYAN}╔═══════════════════════════════════════════════════════════════════════════════╗${NC}"
854 + echo -e "${CYAN}║ ${WHITE}SSL СЕРТИФИКАТИ${CYAN} ║${NC}"
855 + echo -e "${CYAN}╚═══════════════════════════════════════════════════════════════════════════════╝${NC}"
856 + echo ""
857 + echo -e "${YELLOW}🔐 За SSL сертификати използвайте Nginx Proxy Manager:${NC}"
858 + echo -e "${CYAN} 1. Отворете http://your-ip:81${NC}"
859 + echo -e "${CYAN} 2. Влезте с [email protected] / changeme${NC}"
860 + echo -e "${CYAN} 3. Променете паролата при първо влизане${NC}"
861 + echo -e "${CYAN} 4. Добавете домейни в 'Proxy Hosts'${NC}"
862 + echo -e "${CYAN} 5. Активирайте 'Force SSL' и 'HTTP/2 Support'${NC}"
863 + echo -e "${CYAN} 6. Nginx Proxy Manager автоматично ще генерира Let's Encrypt сертификати${NC}"
864 + echo ""
865 + }
866 +
867 + # Функция за създаване на systemd службa
868 + create_systemd_service() {
869 + log "Създаване на systemd служба..."
870 +
871 + cat > "/etc/systemd/system/proxmox-apps.service" << 'EOF'
872 + [Unit]
873 + Description=Proxmox Apps Docker Compose
874 + Requires=docker.service
875 + After=docker.service
876 +
877 + [Service]
878 + Type=forking
879 + RemainAfterExit=yes
880 + WorkingDirectory=/opt/proxmox-apps
881 + ExecStart=/usr/local/bin/docker-compose up -d
882 + ExecStop=/usr/local/bin/docker-compose down
883 + ExecReload=/usr/local/bin/docker-compose restart
884 + TimeoutStartSec=0
885 +
886 + [Install]
887 + WantedBy=multi-user.target
888 + EOF
889 +
890 + systemctl daemon-reload
891 + systemctl enable proxmox-apps.service
892 +
893 + echo -e "${GREEN}✅ Systemd служба е създадена и активирана${NC}"
894 + echo -e "${YELLOW}📋 Използвайте: systemctl start|stop|restart proxmox-apps${NC}"
895 + }
896 +
897 + # Trap функция за почистване при прекъсване
898 + cleanup() {
899 + log "Почистване при прекъсване..."
900 + echo -e "${YELLOW}⚠️ Инсталацията е прекъсната${NC}"
901 + exit 130
902 + }
903 +
904 + # Настройка на trap за SIGINT (Ctrl+C)
905 + trap cleanup SIGINT
906 +
907 + # Функция за показване на help
908 + show_help() {
909 + echo -e "${CYAN}╔═══════════════════════════════════════════════════════════════════════════════╗${NC}"
910 + echo -e "${CYAN}║ ${WHITE}ПОМОЩНА ИНФОРМАЦИЯ${CYAN} ║${NC}"
911 + echo -e "${CYAN}╚═══════════════════════════════════════════════════════════════════════════════╝${NC}"
912 + echo ""
913 + echo -e "${YELLOW}📖 Използване:${NC}"
914 + echo -e "${CYAN} sudo ./proxmox-apps-installer.sh${NC}"
915 + echo ""
916 + echo -e "${YELLOW}🔧 Опции:${NC}"
917 + echo -e "${CYAN} --help${NC} - Показва тази помощна информация"
918 + echo -e "${CYAN} --version${NC} - Показва версията на скрипта"
919 + echo -e "${CYAN} --check${NC} - Проверява системните изисквания"
920 + echo -e "${CYAN} --ports${NC} - Проверява наличността на портове"
921 + echo ""
922 + echo -e "${YELLOW}📂 Структура на файлове:${NC}"
923 + echo -e "${CYAN} /opt/proxmox-apps/${NC} - Конфигурационни файлове"
924 + echo -e "${CYAN} /var/lib/proxmox-apps/${NC} - Данни на приложенията"
925 + echo -e "${CYAN} /var/log/proxmox-apps-installer.log${NC} - Лог файл"
926 + echo ""
927 + echo -e "${YELLOW}🌐 Портове по подразбиране:${NC}"
928 + echo -e "${CYAN} 80/443 - Nginx Proxy Manager (HTTP/HTTPS)${NC}"
929 + echo -e "${CYAN} 81 - Nginx Proxy Manager Admin${NC}"
930 + echo -e "${CYAN} 4000 - Dashy Dashboard${NC}"
931 + echo -e "${CYAN} 8080 - File Browser${NC}"
932 + echo -e "${CYAN} 8989 - Droppy${NC}"
933 + echo -e "${CYAN} 6157 - OpenGist${NC}"
934 + echo ""
935 + }
936 +
937 + # Проверка на command line аргументи
938 + case "${1:-}" in
939 + --help|-h)
940 + show_help
941 + exit 0
942 + ;;
943 + --version|-v)
944 + echo "Proxmox Apps Installer v1.0"
945 + exit 0
946 + ;;
947 + --check|-c)
948 + show_system_info
949 + check_requirements
950 + exit 0
951 + ;;
952 + --ports|-p)
953 + check_ports
954 + exit 0
955 + ;;
956 + *)
957 + # Нормално изпълнение
958 + main "$@"
959 + ;;
960 + esac
Newer Older