Skip to content

Commit

Permalink
Add install.sh script
Browse files Browse the repository at this point in the history
  • Loading branch information
fatihbaltaci committed Apr 23, 2023
1 parent 0468298 commit 74d5c37
Show file tree
Hide file tree
Showing 2 changed files with 117 additions and 46 deletions.
91 changes: 45 additions & 46 deletions selfhosted/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
version: '3.8'

services:
nginx:
ddosify_nginx:
image: nginx:1.23.3-alpine
ports:
- '8014:80'
Expand All @@ -14,22 +14,22 @@ services:
networks:
- ddosify

frontend:
ddosify_frontend:
image: ddosify/selfhosted_frontend:latest
depends_on:
- backend
- ddosify_backend
restart: always
pull_policy: always
networks:
- ddosify

backend:
ddosify_backend:
image: ddosify/selfhosted_backend:latest
depends_on:
- postgres_selfhosted
- influxdb
- backend_redis
- minio
- ddosify_postgres_selfhosted
- ddosify_influxdb
- ddosify_backend_redis
- ddosify_minio
env_file:
- .env
networks:
Expand All @@ -38,14 +38,14 @@ services:
pull_policy: always
command: /workspace/start_scripts/start_app_onprem.sh

hammermanager:
ddosify_hammermanager:
ports:
- "8001:8001"
image: ddosify/selfhosted_hammermanager:latest
depends_on:
- postgres_selfhosted
- rabbitmq_job
- rabbitmq_celery
- ddosify_postgres_selfhosted
- ddosify_rabbitmq_job
- ddosify_rabbitmq_celery
env_file:
- .env
networks:
Expand All @@ -54,13 +54,13 @@ services:
pull_policy: always
command: /workspace/start_scripts/start_app.sh

hammermanager_celery_worker:
ddosify_hammermanager_celery_worker:
image: ddosify/selfhosted_hammermanager:latest
depends_on:
- postgres_selfhosted
- rabbitmq_job
- rabbitmq_celery
- hammermanager
- ddosify_postgres_selfhosted
- ddosify_rabbitmq_job
- ddosify_rabbitmq_celery
- ddosify_hammermanager
env_file:
- .env
networks:
Expand All @@ -69,13 +69,13 @@ services:
pull_policy: always
command: /workspace/start_scripts/start_celery_worker.sh

hammermanager_celery_beat:
ddosify_hammermanager_celery_beat:
image: ddosify/selfhosted_hammermanager:latest
depends_on:
- postgres_selfhosted
- rabbitmq_job
- rabbitmq_celery
- hammermanager
- ddosify_postgres_selfhosted
- ddosify_rabbitmq_job
- ddosify_rabbitmq_celery
- ddosify_hammermanager
env_file:
- .env
networks:
Expand All @@ -84,26 +84,26 @@ services:
pull_policy: always
command: /workspace/start_scripts/start_celery_beat.sh

hammer:
ddosify_hammer:
image: ddosify/selfhosted_hammer:latest
depends_on:
- rabbitmq_job
- influxdb
- hammermanager
- minio
- ddosify_rabbitmq_job
- ddosify_influxdb
- ddosify_hammermanager
- ddosify_minio
env_file:
- .env
networks:
- ddosify
restart: always
pull_policy: always

hammerdebug:
ddosify_hammerdebug:
image: ddosify/selfhosted_hammer:latest
depends_on:
- rabbitmq_job
- influxdb
- hammermanager
- ddosify_rabbitmq_job
- ddosify_influxdb
- ddosify_hammermanager
env_file:
- .env
environment:
Expand All @@ -113,33 +113,33 @@ services:
restart: always
pull_policy: always

postgres_selfhosted:
ddosify_postgres_selfhosted:
image: "postgres:13.6"
volumes:
- postgres_data:/var/lib/postgresql/data
- ddosify_postgres_data:/var/lib/postgresql/data
- ./init_scripts/postgres:/docker-entrypoint-initdb.d
env_file:
- .env
networks:
- ddosify
restart: always

rabbitmq_celery:
ddosify_rabbitmq_celery:
image: "rabbitmq:3.9.4"
networks:
- ddosify
restart: always

rabbitmq_job:
ddosify_rabbitmq_job:
image: "rabbitmq:3.9.4"
networks:
- ddosify
restart: always

influxdb:
ddosify_influxdb:
image: "influxdb:2.1.1"
volumes:
- influxdb_data:/var/lib/influxdb
- ddosify_influxdb_data:/var/lib/influxdb
- ./init_scripts/influxdb:/docker-entrypoint-initdb.d
environment:
- DOCKER_INFLUXDB_INIT_MODE=setup
Expand All @@ -151,15 +151,15 @@ services:
- ddosify
restart: always

backend_redis:
ddosify_backend_redis:
image: "redis:6.2.6"
volumes:
- redis_data:/data
- ddosify_redis_data:/data
networks:
- ddosify
restart: always

minio:
ddosify_minio:
image: minio/minio:RELEASE.2023-04-13T03-08-07Z
ports:
- "9000:9000"
Expand All @@ -172,16 +172,15 @@ services:
- ddosify
restart: always
volumes:
- minio_data:/data
- ddosify_minio_data:/data
command: server /data

volumes:
postgres_data:
influxdb_data:
redis_data:
minio_data:
ddosify_postgres_data:
ddosify_influxdb_data:
ddosify_redis_data:
ddosify_minio_data:


networks:
ddosify:
name: selfhosted_ddosify
72 changes: 72 additions & 0 deletions selfhosted/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
#!/bin/bash

set -e

echo "⚡ Installing Ddosify Self Hosted..."

echo "🔍 Checking prerequisites..."

# Check if Git is installed
if ! command -v git >/dev/null 2>&1; then
echo "❌ Git not found. Please install Git and try again."
exit 1
fi

# Check if Docker is installed
if ! command -v docker >/dev/null 2>&1; then
echo "❌ Docker not found. Please install Docker and try again."
exit 1
fi

# Check if Docker Compose is installed
if ! command -v docker-compose >/dev/null 2>&1 && ! command -v docker >/dev/null 2>&1 || ! docker compose version >/dev/null 2>&1; then
echo "❌ Docker Compose not found. Please install Docker Compose and try again."
exit 1
fi


echo "🚀 Starting installation of Ddosify Self Hosted..."

REPO_DIR="$HOME/.ddosify"

# Check if repository already exists
if [ -d "$REPO_DIR" ]; then
echo "🔄 Repository already exists at $REPO_DIR - Attempting to update..."
cd "$REPO_DIR"
git checkout selfhosted_release >/dev/null 2>&1
cd "$REPO_DIR/selfhosted"
git pull >/dev/null 2>&1

# Check for errors during pull
if [ $? -ne 0 ]; then
read -p "⚠️ Error updating repository. Clean and update? [Y/n]: " answer
answer=${answer:-Y}
if [[ $answer =~ ^[Yy]$ ]]; then
git reset --hard >/dev/null 2>&1
git clean -fd >/dev/null 2>&1
git pull >/dev/null 2>&1
fi
fi
else
# Clone the repository
echo "📦 Cloning repository to $REPO_DIR directory..."
git clone https://github.com/ddosify/ddosify.git "$REPO_DIR" >/dev/null 2>&1
cd "$REPO_DIR"
git checkout selfhosted_release >/dev/null 2>&1
cd "$REPO_DIR/selfhosted"
fi

# Determine which compose command to use
COMPOSE_COMMAND="docker-compose"
if command -v docker >/dev/null 2>&1 && docker compose version >/dev/null 2>&1; then
COMPOSE_COMMAND="docker compose"
fi

echo "🚀 Deploying Ddosify Self Hosted..."
$COMPOSE_COMMAND -f "$REPO_DIR/selfhosted/docker-compose.yml" up -d
echo "⏳ Waiting for services to be ready..."
docker run --rm --network ddosify_selfhosted_ddosify busybox:1.34.1 /bin/sh -c "until nc -z nginx 80 && nc -z backend 8008 && nc -z hammermanager 8001 && nc -z rabbitmq_celery 5672 && nc -z rabbitmq_job 5672 && nc -z postgres_selfhosted 5432 && nc -z influxdb 8086; do sleep 5; done"
echo "✅ Ddosify Self Hosted installation complete!"
echo "📁 Installation directory: $REPO_DIR/selfhosted"

echo "🌐 Open http://localhost:8014 in your browser to access the application."

0 comments on commit 74d5c37

Please sign in to comment.