init
This commit is contained in:
1 parent
b6b63a663b
commit
8a99e9e845
14 files changed
+961
No files matched your search
@@ -0,0 +1,3 @@
|
|||||||
|
MARIADB/
|
||||||
|
WEBSERVER/
|
||||||
|
TEMP/
|
||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
# Basis-Image: Apache + PHP
|
||||||
|
FROM php:8.2-apache
|
||||||
|
|
||||||
|
# PHP Erweiterungen installieren (mysqli)
|
||||||
|
RUN docker-php-ext-install mysqli
|
||||||
|
|
||||||
|
# pdftk installieren
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y pdftk net-tools geoip-bin && \
|
||||||
|
apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Apache Mod Rewrite aktivieren (optional)
|
||||||
|
RUN a2enmod rewrite
|
||||||
|
|
||||||
|
# NEU: AllowOverride All aktivieren, damit .htaccess funktioniert
|
||||||
|
RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDrDCCAzOgAwIBAgISBftNmlblpprVEwQ90Ba8xcnJMAoGCCqGSM49BAMDMDIx
|
||||||
|
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
|
||||||
|
ODAeFw0yNTEyMTAwNzA0MTNaFw0yNjAzMTAwNzA0MTJaMBwxGjAYBgNVBAMTEWJs
|
||||||
|
YWNrcGkuaXB2NjQubmV0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEUjOsE2/
|
||||||
|
P2uG7qtZzACOvGIo60ILeArhcXkabLeYZuYiM+m9V8lzfRw1I69f2C2cG6oKZZN0
|
||||||
|
jfbaupqp2hsTnqOCAj0wggI5MA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAUBggr
|
||||||
|
BgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQULsYl0Ccu
|
||||||
|
8LxQ3E3ErsbZlVaz4UkwHwYDVR0jBBgwFoAUjw0TovYuftFQbDMYOF1ZjiNykcow
|
||||||
|
MgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZodHRwOi8vZTguaS5sZW5jci5v
|
||||||
|
cmcvMDMGA1UdEQQsMCqCEWJsYWNrcGkuaXB2NjQubmV0ghV3d3cuYmxhY2twaS5p
|
||||||
|
cHY2NC5uZXQwEwYDVR0gBAwwCjAIBgZngQwBAgEwLQYDVR0fBCYwJDAioCCgHoYc
|
||||||
|
aHR0cDovL2U4LmMubGVuY3Iub3JnLzc0LmNybDCCAQsGCisGAQQB1nkCBAIEgfwE
|
||||||
|
gfkA9wB2AEmcm2neHXzs/DbezYdkprhbrwqHgBnRVVL76esp3fjDAAABmwdItI4A
|
||||||
|
AAQDAEcwRQIgEWU6WP/UjWpOplHAJyVKu38dHZdFsWVmksGleeLuv58CIQCMU1T1
|
||||||
|
efco+svUKzC0AgQ+wVx2LLKoExngI29CklPVeAB9ABqLnWlKV5jImaDKiL30j8C0
|
||||||
|
VmDMw2ANH3H0af/H0ayjAAABmwdIuGsACAAABQAjFj4YBAMARjBEAiAGF8tLRC+P
|
||||||
|
FV1kyEihTlluRDL3+O6HnYP6gvpRHgMIJgIgWMBgZXFgPmSbY31H5ASbkfSrkt5E
|
||||||
|
fJ44yviNrAjRXbAwCgYIKoZIzj0EAwMDZwAwZAIwdT1TTRq/4DueiBoofMh7s+CZ
|
||||||
|
Viz7TqDfpsAiSV7V6FD3NkH08OJds/BOywlc4jZ0AjAV6WG+PPQ302/VeYCKSczn
|
||||||
|
p3haTeSiFQgUTzA4/Jwva+745L5TXe1/lyzL3s2lt5Q=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEVjCCAj6gAwIBAgIQY5WTY8JOcIJxWRi/w9ftVjANBgkqhkiG9w0BAQsFADBP
|
||||||
|
MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy
|
||||||
|
Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa
|
||||||
|
Fw0yNzAzMTIyMzU5NTlaMDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF
|
||||||
|
bmNyeXB0MQswCQYDVQQDEwJFODB2MBAGByqGSM49AgEGBSuBBAAiA2IABNFl8l7c
|
||||||
|
S7QMApzSsvru6WyrOq44ofTUOTIzxULUzDMMNMchIJBwXOhiLxxxs0LXeb5GDcHb
|
||||||
|
R6EToMffgSZjO9SNHfY9gjMy9vQr5/WWOrQTZxh7az6NSNnq3u2ubT6HTKOB+DCB
|
||||||
|
9TAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
|
||||||
|
MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFI8NE6L2Ln7RUGwzGDhdWY4j
|
||||||
|
cpHKMB8GA1UdIwQYMBaAFHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEB
|
||||||
|
BCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzATBgNVHSAE
|
||||||
|
DDAKMAgGBmeBDAECATAnBgNVHR8EIDAeMBygGqAYhhZodHRwOi8veDEuYy5sZW5j
|
||||||
|
ci5vcmcvMA0GCSqGSIb3DQEBCwUAA4ICAQBnE0hGINKsCYWi0Xx1ygxD5qihEjZ0
|
||||||
|
RI3tTZz1wuATH3ZwYPIp97kWEayanD1j0cDhIYzy4CkDo2jB8D5t0a6zZWzlr98d
|
||||||
|
AQFNh8uKJkIHdLShy+nUyeZxc5bNeMp1Lu0gSzE4McqfmNMvIpeiwWSYO9w82Ob8
|
||||||
|
otvXcO2JUYi3svHIWRm3+707DUbL51XMcY2iZdlCq4Wa9nbuk3WTU4gr6LY8MzVA
|
||||||
|
aDQG2+4U3eJ6qUF10bBnR1uuVyDYs9RhrwucRVnfuDj29CMLTsplM5f5wSV5hUpm
|
||||||
|
Uwp/vV7M4w4aGunt74koX71n4EdagCsL/Yk5+mAQU0+tue0JOfAV/R6t1k+Xk9s2
|
||||||
|
HMQFeoxppfzAVC04FdG9M+AC2JWxmFSt6BCuh3CEey3fE52Qrj9YM75rtvIjsm/1
|
||||||
|
Hl+u//Wqxnu1ZQ4jpa+VpuZiGOlWrqSP9eogdOhCGisnyewWJwRQOqK16wiGyZeR
|
||||||
|
xs/Bekw65vwSIaVkBruPiTfMOo0Zh4gVa8/qJgMbJbyrwwG97z/PRgmLKCDl8z3d
|
||||||
|
tA0Z7qq7fta0Gl24uyuB05dqI5J1LvAzKuWdIjT1tP8qCoxSE/xpix8hX2dt3h+/
|
||||||
|
jujUgFPFZ0EVZ0xSyBNRF3MboGZnYXFUxpNjTWPKpagDHJQmqrAcDmWJnMsFY3jS
|
||||||
|
u1igv3OefnWjSQ==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgXXSjWepmrhBxCPnB
|
||||||
|
e9swRUqo71F+dsQtbNfUySLF37KhRANCAAQRSM6wTb8/a4buq1nMAI68YijrQgt4
|
||||||
|
CuFxeRpst5hm5iIz6b1XyXN9HDUjr1/YLZwbqgplk3SN9tq6mqnaGxOe
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
global
|
||||||
|
log stdout format raw local0 info
|
||||||
|
maxconn 8192
|
||||||
|
|
||||||
|
defaults
|
||||||
|
log global
|
||||||
|
mode http
|
||||||
|
option httplog
|
||||||
|
option dontlognull
|
||||||
|
option forwardfor
|
||||||
|
timeout connect 5000
|
||||||
|
timeout client 50000
|
||||||
|
timeout server 50000
|
||||||
|
|
||||||
|
frontend https
|
||||||
|
bind *:80
|
||||||
|
|
||||||
|
acl is_public hdr_end(host) -i public.local.ipv64.net
|
||||||
|
acl is_backend hdr_end(host) -i backend.local.ipv64.net
|
||||||
|
acl is_stats hdr_end(host) -i stats.local.ipv64.net
|
||||||
|
|
||||||
|
use_backend web_public if is_public
|
||||||
|
use_backend web_backend if is_backend
|
||||||
|
use_backend stats if is_stats
|
||||||
|
|
||||||
|
default_backend web_public
|
||||||
|
|
||||||
|
backend web_public
|
||||||
|
server node1 172.30.0.11:80 cookie node1 check
|
||||||
|
|
||||||
|
backend web_backend
|
||||||
|
server node1 172.30.0.13:80 cookie node1 check
|
||||||
|
|
||||||
|
backend stats
|
||||||
|
mode http
|
||||||
|
stats enable
|
||||||
|
stats uri /
|
||||||
|
stats realm Haproxy\ Statistics
|
||||||
|
stats auth worker:p2x338
|
||||||
|
stats admin if TRUE
|
||||||
|
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
RED="\e[31m"
|
||||||
|
GREEN="\e[32m"
|
||||||
|
YELLOW="\e[33m"
|
||||||
|
BLUE="\e[34m"
|
||||||
|
RESET="\e[0m"
|
||||||
|
|
||||||
|
log_info() { echo -e "${BLUE}[INFO]${RESET} $1"; }
|
||||||
|
log_success() { echo -e "${GREEN}[OK]${RESET} $1"; }
|
||||||
|
log_warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; }
|
||||||
|
log_error() { echo -e "${RED}[ERROR]${RESET} $1"; }
|
||||||
|
|
||||||
|
trap 'log_error "Fehler in Zeile $LINENO"' ERR
|
||||||
|
|
||||||
|
if [[ "$EUID" -ne 0 ]]; then
|
||||||
|
log_error "Script muss als root laufen!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec 9>/var/lock/docker-control.lock
|
||||||
|
flock -n 9 || { log_error "Script läuft bereits!"; exit 1; }
|
||||||
|
|
||||||
|
export_database() {
|
||||||
|
log_info "Exportiere DEV"
|
||||||
|
cp /data/TEMP/Database.sql /data/TEMP/Database-$(date +%Y-%m-%d_%H-%M-%S).sql
|
||||||
|
echo "Letzten 5 Dateien gelistet:"
|
||||||
|
du -sh /data/TEMP/* | tail -n 5
|
||||||
|
mariadb-dump -h 127.0.0.1 -u worker -pbBHofurUJWKzPE8Z --all-databases > /data/TEMP/Database.sql
|
||||||
|
log_info "DEV wurde nach DEV.sql exportiert"
|
||||||
|
}
|
||||||
|
|
||||||
|
import_database() {
|
||||||
|
$timestamp=$(date +%Y%m%d%H%M%S)
|
||||||
|
log_info "Bereinige alte Datenbank"
|
||||||
|
mariadb -h 127.0.0.1 -u worker -pbBHofurUJWKzPE8Z -e "DROP DATABASE DEV; CREATE DATABASE DEV;"
|
||||||
|
log_info "Alte Datenbank bereinigt"
|
||||||
|
echo ""
|
||||||
|
log_info "Lese DEV.sql ein"
|
||||||
|
mariadb -h 127.0.0.1 -u worker -pbBHofurUJWKzPE8Z DEV < /data/TEMP/Database.sql
|
||||||
|
mv /data/TEMP/Database.sql /data/TEMP/Database-${timestamp}.sql
|
||||||
|
log_info "DEV-${timestamp}.sql wurde eingelesen"
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTION="${1:-}"
|
||||||
|
|
||||||
|
case "$ACTION" in
|
||||||
|
|
||||||
|
export)
|
||||||
|
export_database
|
||||||
|
;;
|
||||||
|
|
||||||
|
import)
|
||||||
|
import_database
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Usage:"
|
||||||
|
echo " $0 import"
|
||||||
|
echo " $0 export"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# -------------------------------
|
||||||
|
# Server Status Report Script
|
||||||
|
# -------------------------------
|
||||||
|
# Datum/Zeit
|
||||||
|
DATE=$(date +"%Y-%m-%d %H:%M:%S")
|
||||||
|
|
||||||
|
# -------------------------------
|
||||||
|
# Systemauslastung
|
||||||
|
# -------------------------------
|
||||||
|
|
||||||
|
CPU_LOAD=$(uptime | awk -F 'load average:' '{ print $2 }' | sed 's/^ *//')
|
||||||
|
CPU_TEMP=$(vcgencmd measure_temp)
|
||||||
|
MEMORY_USAGE=$(free -h | awk '/Mem:/ {print $3 " used / " $2 " total"}')
|
||||||
|
DISK_USAGE=$(df -h /)
|
||||||
|
NFS_USAGE=$(df -h /data)
|
||||||
|
|
||||||
|
# -------------------------------
|
||||||
|
# Docker Status
|
||||||
|
# -------------------------------
|
||||||
|
|
||||||
|
if command -v docker &> /dev/null
|
||||||
|
then
|
||||||
|
DOCKER_CONTAINERS=$(docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Image}}")
|
||||||
|
else
|
||||||
|
DOCKER_CONTAINERS="Docker ist nicht installiert oder der Docker-Daemon läuft nicht."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# -------------------------------
|
||||||
|
# Ausgabe auf Konsole
|
||||||
|
# -------------------------------
|
||||||
|
|
||||||
|
echo "Server Status Report"
|
||||||
|
echo =====================================================
|
||||||
|
echo
|
||||||
|
echo "Hostname : $(hostname)"
|
||||||
|
echo "Datum : $DATE"
|
||||||
|
echo "CPU Load : $CPU_LOAD"
|
||||||
|
echo "CPU Temperature : $CPU_TEMP"
|
||||||
|
echo "RAM : $MEMORY_USAGE"
|
||||||
|
echo
|
||||||
|
echo "System Festplatten:"
|
||||||
|
echo "$DISK_USAGE"
|
||||||
|
echo
|
||||||
|
echo "NFS Festplatten:"
|
||||||
|
echo "$NFS_USAGE"
|
||||||
|
echo
|
||||||
|
echo "Docker Container:"
|
||||||
|
echo "$DOCKER_CONTAINERS"
|
||||||
|
echo
|
||||||
|
echo "====================================================="
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DB_HOST="127.0.0.1"
|
||||||
|
DB_USER="worker"
|
||||||
|
DB_PASS="bBHofurUJWKzPE8Z"
|
||||||
|
DB_NAME="LIVE"
|
||||||
|
|
||||||
|
CERT_NAME="mrhossa"
|
||||||
|
EMAIL="bruno.eckhardt07@gmail.com"
|
||||||
|
|
||||||
|
PEM_FILE="/data/HAPROXY/mrhossa.pem"
|
||||||
|
BACKUP_DIR="/data/HAPROXY/backups"
|
||||||
|
|
||||||
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
|
||||||
|
echo "Lade Domains aus MySQL..."
|
||||||
|
|
||||||
|
DOMAINS=$(mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" -D "$DB_NAME" -N -B -e "SELECT SUBDOMAIN FROM Domains;")
|
||||||
|
|
||||||
|
DOMAIN_ARGS=()
|
||||||
|
|
||||||
|
for domain in $DOMAINS
|
||||||
|
do
|
||||||
|
DOMAIN_ARGS+=("-d" "$domain")
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Domains:"
|
||||||
|
printf '%s\n' "${DOMAIN_ARGS[@]}"
|
||||||
|
|
||||||
|
# Backup vorhandenes Zertifikat
|
||||||
|
if [ -f "$PEM_FILE" ]; then
|
||||||
|
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
|
||||||
|
cp "$PEM_FILE" "$BACKUP_DIR/mrhossa_$TIMESTAMP.pem"
|
||||||
|
echo "Backup erstellt: $BACKUP_DIR/mrhossa_$TIMESTAMP.pem"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Bereinige alte Backups..."
|
||||||
|
ls -t $BACKUP_DIR/*.pem 2>/dev/null | tail -n +21 | xargs -r rm -f
|
||||||
|
|
||||||
|
echo "Stoppe HAProxy Container..."
|
||||||
|
sudo docker stop haproxy
|
||||||
|
|
||||||
|
echo "Hole/erneuere Zertifikat..."
|
||||||
|
|
||||||
|
sudo certbot certonly --standalone \
|
||||||
|
--cert-name "$CERT_NAME" \
|
||||||
|
"${DOMAIN_ARGS[@]}" \
|
||||||
|
--non-interactive \
|
||||||
|
--agree-tos \
|
||||||
|
-m "$EMAIL" \
|
||||||
|
--keep-until-expiring
|
||||||
|
|
||||||
|
echo "Finde aktuelles Zertifikat..."
|
||||||
|
|
||||||
|
LATEST_CERT=$(ls -dt /etc/letsencrypt/live/mrhossa* | head -n1)
|
||||||
|
|
||||||
|
echo "Benutze Zertifikat aus:"
|
||||||
|
echo "$LATEST_CERT"
|
||||||
|
|
||||||
|
echo "Baue HAProxy PEM..."
|
||||||
|
|
||||||
|
cat "$LATEST_CERT/privkey.pem" \
|
||||||
|
"$LATEST_CERT/fullchain.pem" \
|
||||||
|
> "$PEM_FILE"
|
||||||
|
|
||||||
|
echo "Starte HAProxy Container..."
|
||||||
|
sudo docker start haproxy
|
||||||
|
|
||||||
|
echo "Fertig."
|
||||||
@@ -0,0 +1,241 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# ./deploy.sh public
|
||||||
|
# ./deploy.sh backend
|
||||||
|
# ./deploy.sh all
|
||||||
|
# ./deploy.sh list-backups public
|
||||||
|
# ./deploy.sh rollback public
|
||||||
|
# ./deploy.sh rollback public PUBLIC-20260216-143015-server01
|
||||||
|
|
||||||
|
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Farben
|
||||||
|
########################################
|
||||||
|
RED="\e[31m"
|
||||||
|
GREEN="\e[32m"
|
||||||
|
YELLOW="\e[33m"
|
||||||
|
BLUE="\e[34m"
|
||||||
|
BOLD="\e[1m"
|
||||||
|
RESET="\e[0m"
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Logging
|
||||||
|
########################################
|
||||||
|
log_info() { echo -e "${BLUE}[INFO]${RESET} $1"; }
|
||||||
|
log_success() { echo -e "${GREEN}[OK]${RESET} $1"; }
|
||||||
|
log_warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; }
|
||||||
|
log_error() { echo -e "${RED}[ERROR]${RESET} $1"; }
|
||||||
|
|
||||||
|
trap 'log_error "Fehler in Zeile $LINENO"' ERR
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Konfiguration
|
||||||
|
########################################
|
||||||
|
BASE_DIR="/data/WEBSERVER"
|
||||||
|
BACKUP_DIR="$BASE_DIR/BACKUP"
|
||||||
|
|
||||||
|
PUBLIC_REPO="http://gitea.blackpi.ipv64.net/bruno/Web-Public.git"
|
||||||
|
BACKEND_REPO="http://gitea.blackpi.ipv64.net/bruno/Backend.git"
|
||||||
|
|
||||||
|
TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
|
||||||
|
HOSTNAME=$(hostname)
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Root-Check
|
||||||
|
########################################
|
||||||
|
if [[ "$EUID" -ne 0 ]]; then
|
||||||
|
log_error "Script muss als root laufen!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Lockfile
|
||||||
|
########################################
|
||||||
|
exec 9>/var/lock/webdeploy.lock
|
||||||
|
flock -n 9 || { log_error "Deploy läuft bereits!"; exit 1; }
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Helper
|
||||||
|
########################################
|
||||||
|
ensure_directory() {
|
||||||
|
[[ -d "$1" ]] || mkdir -p "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
restart_container() {
|
||||||
|
local container="$1"
|
||||||
|
if docker ps -a --format '{{.Names}}' | grep -q "^${container}$"; then
|
||||||
|
docker restart "$container" >/dev/null
|
||||||
|
log_success "Container $container neu gestartet."
|
||||||
|
else
|
||||||
|
log_warn "Container $container existiert nicht."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
backup_current() {
|
||||||
|
local name="$1"
|
||||||
|
local target="$BASE_DIR/$name"
|
||||||
|
local rsync_server="10.233.1.89"
|
||||||
|
local rsync_user="root"
|
||||||
|
local rsync_dir="/root/BACKUP/NFS/WEBSERVER/"
|
||||||
|
|
||||||
|
if [[ -d "$target" ]]; then
|
||||||
|
ensure_directory "$BACKUP_DIR"
|
||||||
|
local backup_name="${name}-${TIMESTAMP}-${HOSTNAME}"
|
||||||
|
mv "$target" "$BACKUP_DIR/$backup_name"
|
||||||
|
log_info "$name wurde lokal gesichert: $backup_name"
|
||||||
|
|
||||||
|
# rsync ausführen
|
||||||
|
if rsync -avz "$BACKUP_DIR/$backup_name" "${rsync_user}@${rsync_server}:${rsync_dir}"; then
|
||||||
|
log_info "$backup_name wurde erfolgreich auf den Backup-Server: ${rsync_user}@${rsync_server}:${rsync_dir} kopiert."
|
||||||
|
else
|
||||||
|
log_error "Fehler beim Kopieren von $backup_name auf den Backup-Server!"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
deploy() {
|
||||||
|
local name="$1"
|
||||||
|
local repo="$2"
|
||||||
|
local container="$3"
|
||||||
|
local target="$BASE_DIR/$name"
|
||||||
|
|
||||||
|
log_info "Deploying $name ..."
|
||||||
|
|
||||||
|
backup_current "$name"
|
||||||
|
|
||||||
|
git clone "$repo" "$target"
|
||||||
|
|
||||||
|
if [[ "$name" == "BACKEND" ]]; then
|
||||||
|
git -C "$target" checkout live
|
||||||
|
fi
|
||||||
|
|
||||||
|
restart_container "$container"
|
||||||
|
log_success "$name erfolgreich deployed."
|
||||||
|
}
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Rollback
|
||||||
|
########################################
|
||||||
|
list_backups() {
|
||||||
|
local name="$1"
|
||||||
|
log_info "Verfügbare Backups für $name:"
|
||||||
|
ls -ldt "$BACKUP_DIR/${name}-"* 2>/dev/null || log_warn "Keine Backups gefunden."
|
||||||
|
}
|
||||||
|
|
||||||
|
rollback() {
|
||||||
|
local name="$1"
|
||||||
|
local container="$2"
|
||||||
|
local specific_backup="${3:-}"
|
||||||
|
|
||||||
|
ensure_directory "$BACKUP_DIR"
|
||||||
|
|
||||||
|
local current="$BASE_DIR/$name"
|
||||||
|
local backup_to_restore
|
||||||
|
|
||||||
|
if [[ -n "$specific_backup" ]]; then
|
||||||
|
backup_to_restore="$BACKUP_DIR/$specific_backup"
|
||||||
|
else
|
||||||
|
backup_to_restore=$(ls -dt "$BACKUP_DIR/${name}-"* 2>/dev/null | head -n1)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "${backup_to_restore:-}" || ! -d "$backup_to_restore" ]]; then
|
||||||
|
log_error "Kein gültiges Backup gefunden!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_warn "Rollback von $name → $(basename "$backup_to_restore")"
|
||||||
|
|
||||||
|
# 🔴 Container stoppen
|
||||||
|
if docker ps --format '{{.Names}}' | grep -q "^${container}$"; then
|
||||||
|
log_info "Stoppe Container $container ..."
|
||||||
|
docker stop "$container" >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 🔴 Verzeichnis sicher löschen
|
||||||
|
if [[ -d "$current" ]]; then
|
||||||
|
log_info "Entferne aktuelles Verzeichnis ..."
|
||||||
|
rm -rf "$current"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 🔴 Backup zurückspielen
|
||||||
|
mv "$backup_to_restore" "$current"
|
||||||
|
|
||||||
|
# 🟢 Container neu starten
|
||||||
|
docker start "$container" >/dev/null
|
||||||
|
log_success "Rollback abgeschlossen."
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Fetch
|
||||||
|
########################################
|
||||||
|
fetch_changes() {
|
||||||
|
local name="$1"
|
||||||
|
local target="$BASE_DIR/$name"
|
||||||
|
|
||||||
|
if [[ -d "$target/.git" ]]; then
|
||||||
|
git -C "$target" fetch origin
|
||||||
|
git -C "$target" diff HEAD..origin/main --name-only
|
||||||
|
else
|
||||||
|
log_warn "$name ist nicht installiert."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# CLI
|
||||||
|
########################################
|
||||||
|
ACTION="${1:-}"
|
||||||
|
TARGET="${2:-}"
|
||||||
|
OPTIONAL="${3:-}"
|
||||||
|
|
||||||
|
case "$ACTION" in
|
||||||
|
all)
|
||||||
|
deploy "PUBLIC" "$PUBLIC_REPO" "webserver_public"
|
||||||
|
deploy "BACKEND" "$BACKEND_REPO" "webserver_backend"
|
||||||
|
;;
|
||||||
|
public)
|
||||||
|
deploy "PUBLIC" "$PUBLIC_REPO" "webserver_public"
|
||||||
|
;;
|
||||||
|
backend)
|
||||||
|
deploy "BACKEND" "$BACKEND_REPO" "webserver_backend"
|
||||||
|
;;
|
||||||
|
rollback)
|
||||||
|
case "$TARGET" in
|
||||||
|
public)
|
||||||
|
rollback "PUBLIC" "webserver_public" "$OPTIONAL"
|
||||||
|
;;
|
||||||
|
backend)
|
||||||
|
rollback "BACKEND" "webserver_backend" "$OPTIONAL"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 rollback {public|backend} [backup-name]"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
list-backups)
|
||||||
|
case "$TARGET" in
|
||||||
|
public) list_backups "PUBLIC" ;;
|
||||||
|
backend) list_backups "BACKEND" ;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 list-backups {public|backend}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
fetch)
|
||||||
|
fetch_changes "PUBLIC"
|
||||||
|
fetch_changes "BACKEND"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage:"
|
||||||
|
echo " $0 {all|public|backend}"
|
||||||
|
echo " $0 rollback {public|backend} [backup-name]"
|
||||||
|
echo " $0 list-backups {public|backend}"
|
||||||
|
echo " $0 fetch"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
RED="\e[31m"
|
||||||
|
GREEN="\e[32m"
|
||||||
|
YELLOW="\e[33m"
|
||||||
|
BLUE="\e[34m"
|
||||||
|
RESET="\e[0m"
|
||||||
|
|
||||||
|
log_info() { echo -e "${BLUE}[INFO]${RESET} $1"; }
|
||||||
|
log_success() { echo -e "${GREEN}[OK]${RESET} $1"; }
|
||||||
|
log_warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; }
|
||||||
|
log_error() { echo -e "${RED}[ERROR]${RESET} $1"; }
|
||||||
|
|
||||||
|
trap 'log_error "Fehler in Zeile $LINENO"' ERR
|
||||||
|
|
||||||
|
if [[ "$EUID" -ne 0 ]]; then
|
||||||
|
log_error "Script muss als root laufen!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec 9>/var/lock/docker-control.lock
|
||||||
|
flock -n 9 || { log_error "Script läuft bereits!"; exit 1; }
|
||||||
|
|
||||||
|
docker_up() {
|
||||||
|
|
||||||
|
local CONTAINER="$1"
|
||||||
|
|
||||||
|
if [[ "$CONTAINER" == "all" ]]; then
|
||||||
|
log_info "Starte alle gestoppten Container"
|
||||||
|
docker start $(docker ps -aq)
|
||||||
|
else
|
||||||
|
log_info "Starte Container: $CONTAINER"
|
||||||
|
docker start "$CONTAINER"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_success "Start abgeschlossen"
|
||||||
|
}
|
||||||
|
|
||||||
|
docker_stop() {
|
||||||
|
|
||||||
|
local CONTAINER="$1"
|
||||||
|
|
||||||
|
if [[ "$CONTAINER" == "all" ]]; then
|
||||||
|
log_info "Stoppe alle Container"
|
||||||
|
docker stop $(docker ps -q)
|
||||||
|
else
|
||||||
|
log_info "Stoppe Container: $CONTAINER"
|
||||||
|
docker stop "$CONTAINER"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_success "Stop abgeschlossen"
|
||||||
|
}
|
||||||
|
|
||||||
|
docker_restart() {
|
||||||
|
|
||||||
|
local CONTAINER="$1"
|
||||||
|
|
||||||
|
if [[ "$CONTAINER" == "all" ]]; then
|
||||||
|
log_info "Restart aller Container"
|
||||||
|
docker restart $(docker ps -q)
|
||||||
|
else
|
||||||
|
log_info "Restart Container: $CONTAINER"
|
||||||
|
docker restart "$CONTAINER"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_success "Restart abgeschlossen"
|
||||||
|
}
|
||||||
|
|
||||||
|
docker_remove() {
|
||||||
|
|
||||||
|
local CONTAINER="$1"
|
||||||
|
|
||||||
|
if [[ "$CONTAINER" == "all" ]]; then
|
||||||
|
log_info "Loesche aller Container"
|
||||||
|
docker stop $(docker ps -q)
|
||||||
|
docker rm $(docker ps -q)
|
||||||
|
else
|
||||||
|
log_info "Loesche Container: $CONTAINER"
|
||||||
|
docker stop "$CONTAINER"
|
||||||
|
docker rm "$CONTAINER"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_success "Loeschen abgeschlossen"
|
||||||
|
}
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# CLI
|
||||||
|
########################################
|
||||||
|
|
||||||
|
ACTION="${1:-}"
|
||||||
|
TARGET="${2:-}"
|
||||||
|
|
||||||
|
case "$ACTION" in
|
||||||
|
|
||||||
|
up)
|
||||||
|
docker_up "$TARGET"
|
||||||
|
;;
|
||||||
|
|
||||||
|
stop)
|
||||||
|
docker_stop "$TARGET"
|
||||||
|
;;
|
||||||
|
|
||||||
|
restart)
|
||||||
|
docker_restart "$TARGET"
|
||||||
|
;;
|
||||||
|
|
||||||
|
remove)
|
||||||
|
docker_remove "$TARGET"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Usage:"
|
||||||
|
echo " $0 up <container|all>"
|
||||||
|
echo " $0 stop <container|all>"
|
||||||
|
echo " $0 remove <container|all>"
|
||||||
|
echo " $0 restart <container|all>"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
RED="\e[31m"
|
||||||
|
GREEN="\e[32m"
|
||||||
|
YELLOW="\e[33m"
|
||||||
|
BLUE="\e[34m"
|
||||||
|
BOLD="\e[1m"
|
||||||
|
RESET="\e[0m"
|
||||||
|
|
||||||
|
log_info() { echo -e "${BLUE}[INFO]${RESET} $1"; }
|
||||||
|
log_success() { echo -e "${GREEN}[OK]${RESET} $1"; }
|
||||||
|
log_warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; }
|
||||||
|
log_error() { echo -e "${RED}[ERROR]${RESET} $1"; }
|
||||||
|
|
||||||
|
trap 'log_error "Fehler in Zeile $LINENO"' ERR
|
||||||
|
|
||||||
|
if [[ "$EUID" -ne 0 ]]; then
|
||||||
|
log_error "Script muss als root laufen!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
backend() {
|
||||||
|
echo ""
|
||||||
|
echo "BACKEND Sitemap wird erzeugt..."
|
||||||
|
echo ""
|
||||||
|
BASEURL="https://backend.blackpi.ipv64.net"
|
||||||
|
SEARCH_PATH="/data/WEBSERVER/BACKEND/WEBROOT"
|
||||||
|
SITEMAP="/data/WEBSERVER/BACKEND/WEBROOT/sitemap.xml"
|
||||||
|
EXCLUDE_DIRS=(
|
||||||
|
"config_backups"
|
||||||
|
"Commands"
|
||||||
|
"controller"
|
||||||
|
"modules"
|
||||||
|
"config.php"
|
||||||
|
"main.js"
|
||||||
|
"style.js"
|
||||||
|
"login.php"
|
||||||
|
".htaccess"
|
||||||
|
"static"
|
||||||
|
"templates"
|
||||||
|
#"api"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo '<?xml version="1.0" encoding="UTF-8"?>' > $SITEMAP
|
||||||
|
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' >> $SITEMAP
|
||||||
|
|
||||||
|
find "$SEARCH_PATH" -type f | while read file; do
|
||||||
|
relpath="${file#$SEARCH_PATH/}"
|
||||||
|
|
||||||
|
skip=false
|
||||||
|
for dir in "${EXCLUDE_DIRS[@]}"; do
|
||||||
|
if [[ "$relpath" == "$dir"* ]]; then
|
||||||
|
skip=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ "$skip" = true ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
lastmod=$(date -r "$file" "+%Y-%m-%d")
|
||||||
|
|
||||||
|
changefreq="daily"
|
||||||
|
priority="1.0"
|
||||||
|
|
||||||
|
if [ "$relpath" == "index.php" ] || [ "$relpath" == "index.html" ]; then
|
||||||
|
changefreq="weekly"
|
||||||
|
priority="1.0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " <url>" >> $SITEMAP
|
||||||
|
echo " <loc>$BASEURL/$relpath</loc>" >> $SITEMAP
|
||||||
|
echo " <lastmod>$lastmod</lastmod>" >> $SITEMAP
|
||||||
|
echo " <changefreq>$changefreq</changefreq>" >> $SITEMAP
|
||||||
|
echo " <priority>$priority</priority>" >> $SITEMAP
|
||||||
|
echo " </url>" >> $SITEMAP
|
||||||
|
|
||||||
|
echo " -> $BASEURL/$relpath"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo '</urlset>' >> $SITEMAP
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Sitemap wurde erzeugt: $SITEMAP"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
public() {
|
||||||
|
echo ""
|
||||||
|
echo " PUBLIC Sitemap wird erzeugt..."
|
||||||
|
echo ""
|
||||||
|
BASEURL="https://www.blackpi.ipv64.net"
|
||||||
|
SEARCH_PATH="/data/WEBSERVER/PUBLIC/WEBROOT"
|
||||||
|
SITEMAP="/data/WEBSERVER/PUBLIC/WEBROOT/sitemap.xml"
|
||||||
|
EXCLUDE_DIRS=(
|
||||||
|
"controller"
|
||||||
|
"moduls"
|
||||||
|
"templates"
|
||||||
|
"services/GenBerichte/"
|
||||||
|
"services/GenBerichte/Arbeitsberichte/overtime_corrections.json"
|
||||||
|
"services/Berichte/Arbeitsberichte/overtime_corrections.json"
|
||||||
|
"services/test/"
|
||||||
|
"services/test.php"
|
||||||
|
"main.js"
|
||||||
|
"style.js"
|
||||||
|
"api"
|
||||||
|
".htaccess"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo '<?xml version="1.0" encoding="UTF-8"?>' > $SITEMAP
|
||||||
|
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' >> $SITEMAP
|
||||||
|
|
||||||
|
find "$SEARCH_PATH" -type f | while read file; do
|
||||||
|
relpath="${file#$SEARCH_PATH/}"
|
||||||
|
|
||||||
|
skip=false
|
||||||
|
for dir in "${EXCLUDE_DIRS[@]}"; do
|
||||||
|
if [[ "$relpath" == "$dir"* ]]; then
|
||||||
|
skip=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ "$skip" = true ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
lastmod=$(date -r "$file" "+%Y-%m-%d")
|
||||||
|
|
||||||
|
changefreq="daily"
|
||||||
|
priority="1.0"
|
||||||
|
|
||||||
|
if [ "$relpath" == "index.php" ] || [ "$relpath" == "index.html" ]; then
|
||||||
|
changefreq="weekly"
|
||||||
|
priority="1.0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " <url>" >> $SITEMAP
|
||||||
|
echo " <loc>$BASEURL/$relpath</loc>" >> $SITEMAP
|
||||||
|
echo " <lastmod>$lastmod</lastmod>" >> $SITEMAP
|
||||||
|
echo " <changefreq>$changefreq</changefreq>" >> $SITEMAP
|
||||||
|
echo " <priority>$priority</priority>" >> $SITEMAP
|
||||||
|
echo " </url>" >> $SITEMAP
|
||||||
|
|
||||||
|
echo " -> $BASEURL/$relpath"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo '</urlset>' >> $SITEMAP
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Sitemap wurde erzeugt: $SITEMAP"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTION="${1:-}"
|
||||||
|
TARGET="${2:-}"
|
||||||
|
OPTIONAL="${3:-}"
|
||||||
|
|
||||||
|
case "$ACTION" in
|
||||||
|
all)
|
||||||
|
backend
|
||||||
|
public
|
||||||
|
;;
|
||||||
|
public)
|
||||||
|
public
|
||||||
|
;;
|
||||||
|
backend)
|
||||||
|
backend
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo " $0 {public|backend}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Git Config"
|
||||||
|
|
||||||
|
USER="bruno"
|
||||||
|
MAIL="bruno.eckhardt07@gmail.com"
|
||||||
|
|
||||||
|
git config --global credential.helper store
|
||||||
|
git config --global user.name $USER
|
||||||
|
git config --global user.email $MAIL
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"files.exclude": {
|
||||||
|
// "**/.git": true,
|
||||||
|
// "**/WEBSERVER": true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
services:
|
||||||
|
haproxy:
|
||||||
|
image: haproxy:latest
|
||||||
|
container_name: HAPROXY
|
||||||
|
volumes:
|
||||||
|
- ./HAPROXY/:/usr/local/etc/haproxy
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
networks:
|
||||||
|
docker-net:
|
||||||
|
ipv4_address: 172.30.0.10
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
webserver-public:
|
||||||
|
build: .
|
||||||
|
container_name: WEBSERVER-PUBLIC
|
||||||
|
volumes:
|
||||||
|
- ./WEBSERVER/PUBLIC/WEBROOT/:/var/www/html/
|
||||||
|
ports:
|
||||||
|
- "8001:80"
|
||||||
|
networks:
|
||||||
|
docker-net:
|
||||||
|
ipv4_address: 172.30.0.11
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
webserver-backend:
|
||||||
|
build: .
|
||||||
|
container_name: WEBSERVER-BACKEND
|
||||||
|
volumes:
|
||||||
|
- ./WEBSERVER/BACKEND/WEBROOT/:/var/www/html/
|
||||||
|
ports:
|
||||||
|
- "8002:80"
|
||||||
|
networks:
|
||||||
|
docker-net:
|
||||||
|
ipv4_address: 172.30.0.13
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
mariadb:
|
||||||
|
image: mariadb:latest
|
||||||
|
container_name: MARIADB
|
||||||
|
volumes:
|
||||||
|
- ./MARIADB:/var/lib/mysql
|
||||||
|
ports:
|
||||||
|
- "3306:3306"
|
||||||
|
environment:
|
||||||
|
MARIADB_ROOT_PASSWORD: bBHofurUJWKzPE8Z
|
||||||
|
MARIADB_DATABASE: DEV
|
||||||
|
MARIADB_USER: worker
|
||||||
|
MARIADB_PASSWORD: bBHofurUJWKzPE8Z
|
||||||
|
networks:
|
||||||
|
docker-net:
|
||||||
|
ipv4_address: 172.30.0.12
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
networks:
|
||||||
|
docker-net:
|
||||||
|
driver: bridge
|
||||||
|
ipam:
|
||||||
|
config:
|
||||||
|
- subnet: 172.30.0.0/16
|
||||||
+39
@@ -0,0 +1,39 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Farben
|
||||||
|
########################################
|
||||||
|
RED="\e[31m"
|
||||||
|
GREEN="\e[32m"
|
||||||
|
YELLOW="\e[33m"
|
||||||
|
BLUE="\e[34m"
|
||||||
|
BOLD="\e[1m"
|
||||||
|
RESET="\e[0m"
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Logging
|
||||||
|
########################################
|
||||||
|
log_info() { echo -e "${BLUE}[INFO]${RESET} $1"; }
|
||||||
|
log_success() { echo -e "${GREEN}[OK]${RESET} $1"; }
|
||||||
|
log_warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; }
|
||||||
|
log_error() { echo -e "${RED}[ERROR]${RESET} $1"; }
|
||||||
|
|
||||||
|
BASE_DIR="$(pwd)/WEBSERVER/"
|
||||||
|
TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
|
||||||
|
HOSTNAME=$(hostname)
|
||||||
|
|
||||||
|
PUBLIC_REPO="https://gitea.mrhossa.de/bruno/Web-Public.git"
|
||||||
|
BACKEND_REPO="https://gitea.mrhossa.de/bruno/Backend.git"
|
||||||
|
|
||||||
|
if [[ "$EUID" -ne 0 ]]; then
|
||||||
|
log_error "Script muss als root laufen!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
git clone https://gitea.mrhossa.de/bruno/Backend.git $BASE_DIR/BACKEND
|
||||||
|
git -C $BASE_DIR/BACKEND checkout live
|
||||||
|
docker restart webserver_backend
|
||||||
|
|
||||||
|
git clone https://gitea.mrhossa.de/bruno/Web-Public.git $BASE_DIR/PUBLIC
|
||||||
Reference in new issue
Block a user