commit f50b715df0786cd4cb39a05b4a4d13066dc6d77d Author: Szymon Kolano Date: Fri Aug 23 19:34:04 2024 +0200 docker, docker-compose, bash diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..535d6e3 --- /dev/null +++ b/install.sh @@ -0,0 +1,102 @@ +#!/bin/bash +install_path=$(pwd) +nextcloud_path=/opt/docker/nextcloud +npm_path=/opt/docker/npm + + + +# Prepare OS for installation +echo +echo "----------------------------------------------" +echo " Ten skrypt przeznaczony jest dla systemów " +echo " Ubuntu 22.04 LTS" +echo "----------------------------------------------" + +# Check requirements + +echo +echo "----------------------------------------------" +echo " Sprawdzam wymagania systemowe... " +echo "----------------------------------------------" + +check_system() { + if [ -f /etc/os-release ]; then + . /etc/os-release + if [ "$NAME" = "Ubuntu" ] && [ "$VERSION_ID" = "22.04" ]; then + else + echo "BŁĄD: Skrypt wspiera jedynie Ubuntu 22.04 LTS" + exit 1 + fi + else + echo "BŁĄD: Skrypt wspiera jedynie Ubuntu 22.04 LTS" + exit 1 + fi +} + +check_system + + +echo +echo "----------------------------------------------" +echo " Sprawdzam czy wymagane porty są dostępne... " +echo "----------------------------------------------" + +check_port() { + nc -z localhost $1 >/dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "BŁĄD: Port $1 jest zajęty. Odblokuj port $1 i uruchom skrypt ponownie." + exit 1 + fi +} + +check_port 80 +check_port 8080 +check_port 8081 +check_port 8082 +check_port 443 +check_port 81 + +echo +echo "----------------------------------------------" +echo " Wszystkie wymagane porty są dostępne! " +echo "----------------------------------------------" + + +# Prepare OS +sudo apt update +sudo apt upgrade -y +sudo apt install -y vim htop git +mkdir -p $nextcloud_path +mkdir -p $npm_path + + +# Prepare deployments +cd $nextcloud_path +generate_and_save_passwords() { + mysql_root_pass=$(openssl rand -base64 15) + echo "MYSQL_ROOT_PASSWORD=$mysql_root_pass" > .env + mysql_pass=$(openssl rand -base64 15) + echo "MYSQL_PASSWORD=$mysql_pass" > .env + +} + +generate_and_save_passwords + + +# Install docker & docker compose +curl "https://get.docker.com" | bash +sudo apt install docker-compose-plugin +sudo usermod -aG docker $(whoami) + +# Deploy Nginx Proxy Manager +cd $npm_path +sudo docker compose up -d + +# Deploy Nextcloud + MariaDB + Redis +cd $nextcloud_path +sudo docker compose up -d + +echo +echo "----------------------------------------------" +echo " Sukces! Nextcloud został zainstalowany! " +echo "----------------------------------------------" \ No newline at end of file diff --git a/nextcloud/.env b/nextcloud/.env new file mode 100644 index 0000000..e69de29 diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml new file mode 100644 index 0000000..6ec7771 --- /dev/null +++ b/nextcloud/docker-compose.yml @@ -0,0 +1,69 @@ +version: '3.7' + +services: + nc: + image: nextcloud:stable + container_name: nextcloud + restart: unless-stopped + ports: + - 8082:80 + volumes: + - nc_data:/var/www/html + - apache2:/etc/apache2 + - ./php.ini:/usr/local/etc/php/conf.d/php-custom.ini + networks: + - redisnet + - dbnet + environment: + - REDIS_HOST=redis + - MYSQL_HOST=db + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_PASSWORD= + depends_on: + - db + - redis + + redis: + image: redis:alpine + container_name: redis + restart: always + networks: + - redisnet + + db: + image: mariadb:10.5.9 + container_name: mariadb + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + restart: always + volumes: + - db_data:/var/lib/mysql + networks: + - dbnet + environment: + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + - TZ=Europe/Warsaw + + phpmyadmin: + depends_on: + - db + container_name: phpmyadmin + image: phpmyadmin/phpmyadmin:latest + restart: always + ports: + - 8081:80 + environment: + PMA_HOST: db + networks: + - dbnet + +volumes: + db_data: + nc_data: + apache2: +networks: + dbnet: + redisnet: \ No newline at end of file diff --git a/npm/docker-compose.yml b/npm/docker-compose.yml new file mode 100644 index 0000000..a7b4bbd --- /dev/null +++ b/npm/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.8' +services: + app: + image: 'jc21/nginx-proxy-manager:latest' + restart: unless-stopped + ports: + - '80:80' + - '81:81' + - '443:443' + volumes: + - ./data:/data + - ./letsencrypt:/etc/letsencrypt \ No newline at end of file