install_nextcloud_docker.sh
· 5.7 KiB · Bash
Bruto
#!/bin/bash
# Цветове за терминала
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Функция за проверка на root потребител
check_root() {
if [ "$(id -u)" -ne 0 ]; then
echo -e "${RED}Грешка: Този скрипт трябва да се изпълнява с root права!${NC}" >&2
exit 1
fi
}
# Функция за проверка на интернет връзка
check_internet() {
echo -e "${BLUE}Проверка на интернет връзка...${NC}"
if ! ping -c 1 google.com &> /dev/null; then
echo -e "${RED}Грешка: Няма интернет връзка! Моля, проверете мрежата.${NC}"
exit 1
fi
echo -e "${GREEN}Интернет връзката е налична.${NC}"
}
# Функция за инсталиране на Docker
install_docker() {
echo -e "${BLUE}Проверка за инсталиран Docker...${NC}"
if ! command -v docker &> /dev/null; then
echo -e "${YELLOW}Docker не е инсталиран. Започва инсталация...${NC}"
# Инсталиране на необходими пакети
apt-get update
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
# Добавяне на Docker GPG ключ
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Добавяне на Docker repository
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" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Инсталиране на Docker
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
# Проверка на Docker инсталацията
if docker --version &> /dev/null; then
echo -e "${GREEN}Docker е успешно инсталиран.${NC}"
else
echo -e "${RED}Грешка при инсталация на Docker!${NC}"
exit 1
fi
else
echo -e "${GREEN}Docker вече е инсталиран.${NC}"
fi
}
# Функция за инсталиране на Docker Compose
install_docker_compose() {
echo -e "${BLUE}Проверка за инсталиран Docker Compose...${NC}"
if ! command -v docker-compose &> /dev/null; then
echo -e "${YELLOW}Docker Compose не е инсталиран. Започва инсталация...${NC}"
# Изтегляне на Docker Compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Права за изпълнение
chmod +x /usr/local/bin/docker-compose
# Проверка на инсталацията
if docker-compose --version &> /dev/null; then
echo -e "${GREEN}Docker Compose е успешно инсталиран.${NC}"
else
echo -e "${RED}Грешка при инсталация на Docker Compose!${NC}"
exit 1
fi
else
echo -e "${GREEN}Docker Compose вече е инсталиран.${NC}"
fi
}
# Функция за създаване на Docker Compose файл за Nextcloud
create_docker_compose() {
echo -e "${BLUE}Създаване на Docker Compose файл за Nextcloud...${NC}"
cat > docker-compose.yml <<EOF
version: '3'
services:
db:
image: mariadb:10.5
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=nextcloud_root_password
- MYSQL_PASSWORD=nextcloud_password
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
restart: always
ports:
- 8080:80
links:
- db
volumes:
- nextcloud_data:/var/www/html
environment:
- MYSQL_PASSWORD=nextcloud_password
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
volumes:
db_data:
nextcloud_data:
EOF
echo -e "${GREEN}Docker Compose файлът е създаден успешно.${NC}"
}
# Функция за стартиране на Nextcloud
start_nextcloud() {
echo -e "${BLUE}Стартиране на Nextcloud с Docker Compose...${NC}"
docker-compose up -d
echo -e "${GREEN}Nextcloud е стартиран успешно!${NC}"
echo -e "${YELLOW}Можете да достъпите Nextcloud на: http://$(hostname -I | awk '{print $1}'):8080${NC}"
echo -e "${YELLOW}Потребителско име: admin${NC}"
echo -e "${YELLOW}Парола: ще бъде зададена при първо влизане${NC}"
}
# Главна функция
main() {
echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ ИНСТАЛАЦИЯ НА NEXTCLOUD С DOCKER ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════╝${NC}"
check_root
check_internet
install_docker
install_docker_compose
create_docker_compose
start_nextcloud
echo -e "${GREEN}Инсталацията завърши успешно!${NC}"
}
# Стартиране на главната функция
main
1 | #!/bin/bash |
2 | |
3 | # Цветове за терминала |
4 | RED='\033[0;31m' |
5 | GREEN='\033[0;32m' |
6 | YELLOW='\033[1;33m' |
7 | BLUE='\033[0;34m' |
8 | NC='\033[0m' # No Color |
9 | |
10 | # Функция за проверка на root потребител |
11 | check_root() { |
12 | if [ "$(id -u)" -ne 0 ]; then |
13 | echo -e "${RED}Грешка: Този скрипт трябва да се изпълнява с root права!${NC}" >&2 |
14 | exit 1 |
15 | fi |
16 | } |
17 | |
18 | # Функция за проверка на интернет връзка |
19 | check_internet() { |
20 | echo -e "${BLUE}Проверка на интернет връзка...${NC}" |
21 | if ! ping -c 1 google.com &> /dev/null; then |
22 | echo -e "${RED}Грешка: Няма интернет връзка! Моля, проверете мрежата.${NC}" |
23 | exit 1 |
24 | fi |
25 | echo -e "${GREEN}Интернет връзката е налична.${NC}" |
26 | } |
27 | |
28 | # Функция за инсталиране на Docker |
29 | install_docker() { |
30 | echo -e "${BLUE}Проверка за инсталиран Docker...${NC}" |
31 | if ! command -v docker &> /dev/null; then |
32 | echo -e "${YELLOW}Docker не е инсталиран. Започва инсталация...${NC}" |
33 | |
34 | # Инсталиране на необходими пакети |
35 | apt-get update |
36 | apt-get install -y apt-transport-https ca-certificates curl software-properties-common |
37 | |
38 | # Добавяне на Docker GPG ключ |
39 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg |
40 | |
41 | # Добавяне на Docker repository |
42 | 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" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null |
43 | |
44 | # Инсталиране на Docker |
45 | apt-get update |
46 | apt-get install -y docker-ce docker-ce-cli containerd.io |
47 | |
48 | # Проверка на Docker инсталацията |
49 | if docker --version &> /dev/null; then |
50 | echo -e "${GREEN}Docker е успешно инсталиран.${NC}" |
51 | else |
52 | echo -e "${RED}Грешка при инсталация на Docker!${NC}" |
53 | exit 1 |
54 | fi |
55 | else |
56 | echo -e "${GREEN}Docker вече е инсталиран.${NC}" |
57 | fi |
58 | } |
59 | |
60 | # Функция за инсталиране на Docker Compose |
61 | install_docker_compose() { |
62 | echo -e "${BLUE}Проверка за инсталиран Docker Compose...${NC}" |
63 | if ! command -v docker-compose &> /dev/null; then |
64 | echo -e "${YELLOW}Docker Compose не е инсталиран. Започва инсталация...${NC}" |
65 | |
66 | # Изтегляне на Docker Compose |
67 | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
68 | |
69 | # Права за изпълнение |
70 | chmod +x /usr/local/bin/docker-compose |
71 | |
72 | # Проверка на инсталацията |
73 | if docker-compose --version &> /dev/null; then |
74 | echo -e "${GREEN}Docker Compose е успешно инсталиран.${NC}" |
75 | else |
76 | echo -e "${RED}Грешка при инсталация на Docker Compose!${NC}" |
77 | exit 1 |
78 | fi |
79 | else |
80 | echo -e "${GREEN}Docker Compose вече е инсталиран.${NC}" |
81 | fi |
82 | } |
83 | |
84 | # Функция за създаване на Docker Compose файл за Nextcloud |
85 | create_docker_compose() { |
86 | echo -e "${BLUE}Създаване на Docker Compose файл за Nextcloud...${NC}" |
87 | |
88 | cat > docker-compose.yml <<EOF |
89 | version: '3' |
90 | |
91 | services: |
92 | db: |
93 | image: mariadb:10.5 |
94 | restart: always |
95 | command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW |
96 | volumes: |
97 | - db_data:/var/lib/mysql |
98 | environment: |
99 | - MYSQL_ROOT_PASSWORD=nextcloud_root_password |
100 | - MYSQL_PASSWORD=nextcloud_password |
101 | - MYSQL_DATABASE=nextcloud |
102 | - MYSQL_USER=nextcloud |
103 | |
104 | app: |
105 | image: nextcloud |
106 | restart: always |
107 | ports: |
108 | - 8080:80 |
109 | links: |
110 | - db |
111 | volumes: |
112 | - nextcloud_data:/var/www/html |
113 | environment: |
114 | - MYSQL_PASSWORD=nextcloud_password |
115 | - MYSQL_DATABASE=nextcloud |
116 | - MYSQL_USER=nextcloud |
117 | - MYSQL_HOST=db |
118 | |
119 | volumes: |
120 | db_data: |
121 | nextcloud_data: |
122 | EOF |
123 | |
124 | echo -e "${GREEN}Docker Compose файлът е създаден успешно.${NC}" |
125 | } |
126 | |
127 | # Функция за стартиране на Nextcloud |
128 | start_nextcloud() { |
129 | echo -e "${BLUE}Стартиране на Nextcloud с Docker Compose...${NC}" |
130 | docker-compose up -d |
131 | |
132 | echo -e "${GREEN}Nextcloud е стартиран успешно!${NC}" |
133 | echo -e "${YELLOW}Можете да достъпите Nextcloud на: http://$(hostname -I | awk '{print $1}'):8080${NC}" |
134 | echo -e "${YELLOW}Потребителско име: admin${NC}" |
135 | echo -e "${YELLOW}Парола: ще бъде зададена при първо влизане${NC}" |
136 | } |
137 | |
138 | # Главна функция |
139 | main() { |
140 | echo -e "${BLUE}╔════════════════════════════════════════╗${NC}" |
141 | echo -e "${BLUE}║ ИНСТАЛАЦИЯ НА NEXTCLOUD С DOCKER ║${NC}" |
142 | echo -e "${BLUE}╚════════════════════════════════════════╝${NC}" |
143 | |
144 | check_root |
145 | check_internet |
146 | install_docker |
147 | install_docker_compose |
148 | create_docker_compose |
149 | start_nextcloud |
150 | |
151 | echo -e "${GREEN}Инсталацията завърши успешно!${NC}" |
152 | } |
153 | |
154 | # Стартиране на главната функция |
155 | main |