From b2ceb3180985837c9ee7defc9fbcabbf44c86067 Mon Sep 17 00:00:00 2001 From: Szymon Kolano Date: Mon, 28 Oct 2024 07:54:50 +0100 Subject: [PATCH] init --- .assets/banner.jpg | Bin 0 -> 34566 bytes install.sh | 103 +++++++++++++++++++++++++++++++++++ nextcloud/.env | 0 nextcloud/docker-compose.yml | 69 +++++++++++++++++++++++ npm/docker-compose.yml | 12 ++++ 5 files changed, 184 insertions(+) create mode 100644 .assets/banner.jpg create mode 100644 install.sh create mode 100644 nextcloud/.env create mode 100644 nextcloud/docker-compose.yml create mode 100644 npm/docker-compose.yml diff --git a/.assets/banner.jpg b/.assets/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..114f98392d4f0d167d94e7d6359f7d625b632c9d GIT binary patch literal 34566 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 literal 0 HcmV?d00001 diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..4cf54cb --- /dev/null +++ b/install.sh @@ -0,0 +1,103 @@ +#!/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 + : # Pusta instrukcja (no-op) + else + echo "BŁĄD: Skrypt wspiera jedynie Ubuntu 22.04 LTS" + exit 1 + fi + else + echo "BŁĄD: Nie można znaleźć pliku /etc/os-release" + 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