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