install_nextcloud_docker.sh
· 5.8 KiB · Bash
Sin formato
#!/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 |