Adjustments to the Starting script to exclude any ngnix configuration
This commit is contained in:
+1
-16
@@ -24,14 +24,8 @@ fi
|
|||||||
docker compose build website
|
docker compose build website
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
|
||||||
NGINX_SCRIPT="$SCRIPT_DIR/../nginx.sh"
|
|
||||||
if [[ -x "$NGINX_SCRIPT" ]]; then
|
|
||||||
echo "Aktualisiere Nginx Reverse Proxy..."
|
|
||||||
sudo "$NGINX_SCRIPT" apply || echo "Warnung: Nginx konnte nicht automatisch aktualisiert werden."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Wait for website to become healthy (simple HTTP check)
|
# Wait for website to become healthy (simple HTTP check)
|
||||||
check_url="http://127.0.0.1:4999/"
|
check_url="http://localhost:4999"
|
||||||
timeout_seconds=60
|
timeout_seconds=60
|
||||||
interval=2
|
interval=2
|
||||||
elapsed=0
|
elapsed=0
|
||||||
@@ -55,14 +49,5 @@ if [ $elapsed -ge $timeout_seconds ]; then
|
|||||||
echo "Bitte prüfe Container-Logs und nginx-Konfiguration."
|
echo "Bitte prüfe Container-Logs und nginx-Konfiguration."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -x "$SCRIPT_DIR/sync_dev_hosts.sh" ]]; then
|
|
||||||
"$SCRIPT_DIR/sync_dev_hosts.sh" || true
|
|
||||||
if [[ "${DEV_HOSTS_REFRESH_INTERVAL}" != "0" ]]; then
|
|
||||||
nohup bash -lc "while true; do '$SCRIPT_DIR/sync_dev_hosts.sh' >/dev/null 2>&1 || true; sleep '$DEV_HOSTS_REFRESH_INTERVAL'; done" \
|
|
||||||
>"$SCRIPT_DIR/dev-hosts-sync.log" 2>&1 &
|
|
||||||
echo " Dev-Hosts-Sync läuft im Hintergrund (Log: $SCRIPT_DIR/dev-hosts-sync.log)"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Development stack is running on http://localhost:4999"
|
echo "Development stack is running on http://localhost:4999"
|
||||||
echo "Provisioning creates self-signed certs per subdomain when needed."
|
echo "Provisioning creates self-signed certs per subdomain when needed."
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
cd "$SCRIPT_DIR"
|
|
||||||
|
|
||||||
HOSTS_FILE="/etc/hosts"
|
|
||||||
START_MARK="# >>> invario-dev-hosts >>>"
|
|
||||||
END_MARK="# <<< invario-dev-hosts <<<"
|
|
||||||
|
|
||||||
HOST_IP="${DEV_HOSTS_IP:-}"
|
|
||||||
if [[ -z "$HOST_IP" ]]; then
|
|
||||||
HOST_IP="$(hostname -I 2>/dev/null | awk '{print $1}')"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z "$HOST_IP" ]]; then
|
|
||||||
HOST_IP="127.0.0.1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! command -v docker >/dev/null 2>&1; then
|
|
||||||
echo "docker fehlt; Hosts-Sync übersprungen"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! docker compose ps mongodb >/dev/null 2>&1; then
|
|
||||||
echo "mongodb-compose-Service nicht erreichbar; Hosts-Sync übersprungen"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
DOMAINS_RAW="$(docker compose exec -T mongodb mongosh --quiet --eval 'db.getSiblingDB("Invario_Website").school_instances.find({},{_id:0,domain:1}).toArray().forEach(d=>{ if(d.domain){ print(String(d.domain).trim()) } })' 2>/dev/null || true)"
|
|
||||||
|
|
||||||
TMP_BLOCK="$(mktemp)"
|
|
||||||
trap 'rm -f "$TMP_BLOCK"' EXIT
|
|
||||||
|
|
||||||
{
|
|
||||||
echo "$START_MARK"
|
|
||||||
echo "127.0.0.1 localhost"
|
|
||||||
while IFS= read -r line; do
|
|
||||||
domain="$(echo "$line" | tr -d '\r' | xargs)"
|
|
||||||
if [[ -n "$domain" ]]; then
|
|
||||||
echo "$HOST_IP $domain"
|
|
||||||
fi
|
|
||||||
done <<< "$DOMAINS_RAW"
|
|
||||||
echo "$END_MARK"
|
|
||||||
} > "$TMP_BLOCK"
|
|
||||||
|
|
||||||
if [[ "${EUID}" -eq 0 ]]; then
|
|
||||||
sed -i "/$START_MARK/,/$END_MARK/d" "$HOSTS_FILE"
|
|
||||||
cat "$TMP_BLOCK" >> "$HOSTS_FILE"
|
|
||||||
else
|
|
||||||
sudo sed -i "/$START_MARK/,/$END_MARK/d" "$HOSTS_FILE"
|
|
||||||
sudo tee -a "$HOSTS_FILE" < "$TMP_BLOCK" >/dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Hosts-Sync abgeschlossen"
|
|
||||||
@@ -1,176 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# Konfiguration
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
GITEA_DIR="/opt/gitea-server"
|
|
||||||
WEBSITE_DIR="$SCRIPT_DIR/Website"
|
|
||||||
GITEA_DOMAIN="update.meine-domain"
|
|
||||||
GITEA_HTTP_PORT=3001
|
|
||||||
GITEA_SSH_PORT=2222
|
|
||||||
GITEA_BIND_IP="127.0.0.1"
|
|
||||||
WEBSITE_DOMAIN="meine-domain"
|
|
||||||
WEBSITE_UPSTREAM_PORT=4999
|
|
||||||
RUNTIME_ENV_FILE="$GITEA_DIR/runtime.env"
|
|
||||||
ACTION="${1:-start}"
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
echo "Nutzung: $0 [start|stop|restart|status]"
|
|
||||||
}
|
|
||||||
|
|
||||||
current_host_info() {
|
|
||||||
local host_name
|
|
||||||
local host_ip
|
|
||||||
host_name="$(hostname)"
|
|
||||||
host_ip="$(hostname -I 2>/dev/null | awk '{print $1}')"
|
|
||||||
|
|
||||||
if [ -z "$host_ip" ]; then
|
|
||||||
host_ip="unbekannt"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$host_name ($host_ip)"
|
|
||||||
}
|
|
||||||
|
|
||||||
write_gitea_compose() {
|
|
||||||
local gitea_http_port="$1"
|
|
||||||
|
|
||||||
echo "Erstelle docker-compose.yml fuer Gitea..."
|
|
||||||
cat <<EOF > "$GITEA_DIR/docker-compose.yml"
|
|
||||||
networks:
|
|
||||||
gitea:
|
|
||||||
external: false
|
|
||||||
|
|
||||||
services:
|
|
||||||
server:
|
|
||||||
image: gitea/gitea:1.21
|
|
||||||
container_name: gitea
|
|
||||||
environment:
|
|
||||||
- USER_UID=1000
|
|
||||||
- USER_GID=1000
|
|
||||||
- GITEA__database__DB_TYPE=sqlite3
|
|
||||||
- GITEA__server__DOMAIN=$GITEA_DOMAIN
|
|
||||||
- GITEA__server__SSH_DOMAIN=$GITEA_DOMAIN
|
|
||||||
- GITEA__server__HTTP_PORT=3001
|
|
||||||
- GITEA__server__ROOT_URL=https://$GITEA_DOMAIN
|
|
||||||
- GITEA__server__SSH_PORT=$GITEA_SSH_PORT
|
|
||||||
restart: always
|
|
||||||
networks:
|
|
||||||
- gitea
|
|
||||||
volumes:
|
|
||||||
- ./data:/data
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
ports:
|
|
||||||
- "$GITEA_BIND_IP:$gitea_http_port:3001"
|
|
||||||
- "$GITEA_SSH_PORT:22"
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
write_runtime_config() {
|
|
||||||
local gitea_http_port="$1"
|
|
||||||
|
|
||||||
# Runtime-Konfiguration fuer getrenntes nginx Setup speichern.
|
|
||||||
sudo tee "$RUNTIME_ENV_FILE" >/dev/null <<EOF
|
|
||||||
GITEA_DOMAIN=$GITEA_DOMAIN
|
|
||||||
GITEA_HTTP_PORT=$gitea_http_port
|
|
||||||
WEBSITE_DOMAIN=$WEBSITE_DOMAIN
|
|
||||||
WEBSITE_UPSTREAM_PORT=$WEBSITE_UPSTREAM_PORT
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
start_website_service() {
|
|
||||||
if [ ! -d "$WEBSITE_DIR" ]; then
|
|
||||||
echo "Fehler: Website Verzeichnis nicht gefunden: $WEBSITE_DIR"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Starte Website Docker Services..."
|
|
||||||
cd "$WEBSITE_DIR"
|
|
||||||
sudo docker compose up -d
|
|
||||||
}
|
|
||||||
|
|
||||||
start_gitea_service() {
|
|
||||||
echo "Starte Gitea Docker Service..."
|
|
||||||
cd "$GITEA_DIR"
|
|
||||||
sudo docker compose up -d
|
|
||||||
}
|
|
||||||
|
|
||||||
stop_services() {
|
|
||||||
echo "Stoppe Docker Services (Gitea + Website)..."
|
|
||||||
|
|
||||||
if [ -f "$GITEA_DIR/docker-compose.yml" ]; then
|
|
||||||
cd "$GITEA_DIR"
|
|
||||||
sudo docker compose down
|
|
||||||
elif sudo docker ps -a --format '{{.Names}}' | grep -qx gitea; then
|
|
||||||
sudo docker stop gitea >/dev/null
|
|
||||||
sudo docker rm gitea >/dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "$WEBSITE_DIR/docker-compose.yml" ]; then
|
|
||||||
cd "$WEBSITE_DIR"
|
|
||||||
sudo docker compose down || true
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "-------------------------------------------------------"
|
|
||||||
echo "Services wurden gestoppt."
|
|
||||||
echo "Hinweis: nginx Proxy-Konfiguration bleibt aktiv und getrennt verwaltet."
|
|
||||||
echo "-------------------------------------------------------"
|
|
||||||
}
|
|
||||||
|
|
||||||
start_services() {
|
|
||||||
echo "Erstelle Gitea-Verzeichnisse in $GITEA_DIR..."
|
|
||||||
sudo mkdir -p "$GITEA_DIR/data" "$GITEA_DIR/config"
|
|
||||||
|
|
||||||
write_gitea_compose "$GITEA_HTTP_PORT"
|
|
||||||
write_runtime_config "$GITEA_HTTP_PORT"
|
|
||||||
start_gitea_service
|
|
||||||
start_website_service
|
|
||||||
|
|
||||||
if [ -x "$SCRIPT_DIR/nginx.sh" ]; then
|
|
||||||
echo "Aktualisiere Nginx Reverse Proxy..."
|
|
||||||
sudo "$SCRIPT_DIR/nginx.sh" apply || echo "Warnung: Nginx konnte nicht automatisch aktualisiert werden."
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -x "$WEBSITE_DIR/sync_dev_hosts.sh" ]; then
|
|
||||||
echo "Aktualisiere Hosts-Datei fuer Subdomains..."
|
|
||||||
sudo "$WEBSITE_DIR/sync_dev_hosts.sh" || echo "Warnung: Hosts-Sync konnte nicht automatisch aktualisiert werden."
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "-------------------------------------------------------"
|
|
||||||
echo "Docker Services wurden gestartet!"
|
|
||||||
echo "Gitea Intern: $GITEA_BIND_IP:$GITEA_HTTP_PORT"
|
|
||||||
echo "Gitea SSH: $GITEA_SSH_PORT"
|
|
||||||
echo "Website Port: $WEBSITE_UPSTREAM_PORT"
|
|
||||||
echo "Gitea Domain: $GITEA_DOMAIN"
|
|
||||||
echo "Web Domain: $WEBSITE_DOMAIN"
|
|
||||||
echo "Aktueller Host: $(current_host_info)"
|
|
||||||
echo ""
|
|
||||||
echo "Nginx Reverse Proxy wurde automatisch aktualisiert, falls verfuegbar."
|
|
||||||
echo "Hosts-Datei wurde automatisch synchronisiert, falls verfuegbar."
|
|
||||||
echo "-------------------------------------------------------"
|
|
||||||
}
|
|
||||||
|
|
||||||
show_status() {
|
|
||||||
echo "Docker Status (gitea / website):"
|
|
||||||
sudo docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' | grep -E 'NAMES|gitea|website-website-1|website-mongodb-1' || true
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$ACTION" in
|
|
||||||
start)
|
|
||||||
start_services
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
stop_services
|
|
||||||
;;
|
|
||||||
restart)
|
|
||||||
stop_services
|
|
||||||
start_services
|
|
||||||
;;
|
|
||||||
status)
|
|
||||||
show_status
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -1,246 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# Konfiguration
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
NGINX_TEMPLATE_DIR="$SCRIPT_DIR/nginx"
|
|
||||||
GITEA_DIR="/opt/gitea-server"
|
|
||||||
RUNTIME_ENV_FILE="$GITEA_DIR/runtime.env"
|
|
||||||
CERT_DIR="/etc/nginx/certs"
|
|
||||||
SSL_CERT_DAYS="825"
|
|
||||||
|
|
||||||
# Fallback-Werte (werden durch runtime.env ueberschrieben, wenn vorhanden)
|
|
||||||
GITEA_DOMAIN="update.meine-domain"
|
|
||||||
GITEA_HTTP_PORT="3001"
|
|
||||||
WEBSITE_DOMAIN="meine-domain"
|
|
||||||
WEBSITE_UPSTREAM_PORT="4999"
|
|
||||||
|
|
||||||
ACTION="${1:-apply}"
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
echo "Nutzung: $0 [apply|disable|deactivate]"
|
|
||||||
echo "Hinweis: Docker Services mit ./gitea.sh [start|stop|restart|status] verwalten."
|
|
||||||
}
|
|
||||||
|
|
||||||
current_host_info() {
|
|
||||||
local host_name
|
|
||||||
local host_ip
|
|
||||||
host_name="$(hostname)"
|
|
||||||
host_ip="$(hostname -I 2>/dev/null | awk '{print $1}')"
|
|
||||||
|
|
||||||
if [ -z "$host_ip" ]; then
|
|
||||||
host_ip="unbekannt"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$host_name ($host_ip)"
|
|
||||||
}
|
|
||||||
|
|
||||||
load_runtime_config() {
|
|
||||||
if [ -f "$RUNTIME_ENV_FILE" ]; then
|
|
||||||
# Nur erwartete Keys werden geladen.
|
|
||||||
while IFS='=' read -r key value; do
|
|
||||||
case "$key" in
|
|
||||||
GITEA_DOMAIN) GITEA_DOMAIN="$value" ;;
|
|
||||||
GITEA_HTTP_PORT) GITEA_HTTP_PORT="$value" ;;
|
|
||||||
WEBSITE_DOMAIN) WEBSITE_DOMAIN="$value" ;;
|
|
||||||
WEBSITE_UPSTREAM_PORT) WEBSITE_UPSTREAM_PORT="$value" ;;
|
|
||||||
esac
|
|
||||||
done < "$RUNTIME_ENV_FILE"
|
|
||||||
else
|
|
||||||
echo "Warnung: $RUNTIME_ENV_FILE nicht gefunden, nutze Standardwerte."
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
render_nginx_template() {
|
|
||||||
local template_file="$1"
|
|
||||||
local output_file="$2"
|
|
||||||
local domain="$3"
|
|
||||||
local upstream_port="$4"
|
|
||||||
local cert_file="$5"
|
|
||||||
local key_file="$6"
|
|
||||||
|
|
||||||
sed \
|
|
||||||
-e "s|__DOMAIN__|$domain|g" \
|
|
||||||
-e "s|__PORT__|$upstream_port|g" \
|
|
||||||
-e "s|__CERT_FILE__|$cert_file|g" \
|
|
||||||
-e "s|__KEY_FILE__|$key_file|g" \
|
|
||||||
"$template_file" | sudo tee "$output_file" >/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
configure_nginx_site() {
|
|
||||||
local site_name="$1"
|
|
||||||
local domain="$2"
|
|
||||||
local upstream_port="$3"
|
|
||||||
local cert_file="$CERT_DIR/$domain.crt"
|
|
||||||
local key_file="$CERT_DIR/$domain.key"
|
|
||||||
local template_file="$NGINX_TEMPLATE_DIR/$site_name.https.conf.template"
|
|
||||||
local site_file="/etc/nginx/sites-available/$site_name"
|
|
||||||
local site_link="/etc/nginx/sites-enabled/$site_name"
|
|
||||||
|
|
||||||
ensure_ssl_certificate "$domain" "$cert_file" "$key_file"
|
|
||||||
echo "Nutze HTTPS nginx Template fuer $domain."
|
|
||||||
|
|
||||||
if [ ! -f "$template_file" ]; then
|
|
||||||
echo "[FEHLER] nginx Template nicht gefunden: $template_file" >&2
|
|
||||||
echo "[HINWEIS] Prüfe, ob die Datei existiert und korrekt benannt ist." >&2
|
|
||||||
exit 11
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! render_nginx_template "$template_file" "$site_file" "$domain" "$upstream_port" "$cert_file" "$key_file"; then
|
|
||||||
echo "[FEHLER] nginx Template konnte nicht gerendert werden: $template_file" >&2
|
|
||||||
exit 12
|
|
||||||
fi
|
|
||||||
if ! sudo ln -sf "$site_file" "$site_link"; then
|
|
||||||
echo "[FEHLER] Symlink für nginx Site konnte nicht erstellt werden: $site_link" >&2
|
|
||||||
exit 13
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
ensure_ssl_certificate() {
|
|
||||||
local domain="$1"
|
|
||||||
local cert_file="$2"
|
|
||||||
local key_file="$3"
|
|
||||||
|
|
||||||
if ! command -v openssl >/dev/null 2>&1; then
|
|
||||||
echo "[FEHLER] openssl ist nicht installiert. Bitte installiere openssl." >&2
|
|
||||||
exit 21
|
|
||||||
fi
|
|
||||||
|
|
||||||
sudo mkdir -p "$CERT_DIR"
|
|
||||||
|
|
||||||
if [ -f "$cert_file" ] && [ -f "$key_file" ]; then
|
|
||||||
if sudo openssl x509 -in "$cert_file" -noout >/dev/null 2>&1; then
|
|
||||||
echo "SSL Zertifikat gefunden fuer $domain: $cert_file"
|
|
||||||
return
|
|
||||||
else
|
|
||||||
echo "[WARNUNG] Zertifikat $cert_file ist beschädigt oder ungültig. Erstelle neu..."
|
|
||||||
sudo rm -f "$cert_file" "$key_file"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Kein gültiges SSL Zertifikat für $domain gefunden. Erzeuge self-signed Zertifikat..."
|
|
||||||
if ! sudo openssl req -x509 -nodes -newkey rsa:2048 -sha256 \
|
|
||||||
-days "$SSL_CERT_DAYS" \
|
|
||||||
-keyout "$key_file" \
|
|
||||||
-out "$cert_file" \
|
|
||||||
-subj "/CN=$domain" \
|
|
||||||
-addext "subjectAltName=DNS:$domain"; then
|
|
||||||
# Fallback für ältere openssl-Versionen ohne -addext.
|
|
||||||
sudo openssl req -x509 -nodes -newkey rsa:2048 -sha256 \
|
|
||||||
-days "$SSL_CERT_DAYS" \
|
|
||||||
-keyout "$key_file" \
|
|
||||||
-out "$cert_file" \
|
|
||||||
-subj "/CN=$domain"
|
|
||||||
fi
|
|
||||||
|
|
||||||
sudo chmod 600 "$key_file"
|
|
||||||
sudo chmod 644 "$cert_file"
|
|
||||||
echo "[INFO] Selbstsigniertes Zertifikat für $domain wurde erstellt: $cert_file"
|
|
||||||
}
|
|
||||||
|
|
||||||
reload_nginx() {
|
|
||||||
echo "Pruefe nginx Konfiguration..."
|
|
||||||
if ! sudo nginx -t; then
|
|
||||||
echo "[FEHLER] nginx Konfiguration fehlerhaft! Bitte prüfe die Ausgaben oben." >&2
|
|
||||||
exit 31
|
|
||||||
fi
|
|
||||||
|
|
||||||
if sudo pgrep -x nginx >/dev/null 2>&1; then
|
|
||||||
echo "Nginx Prozess gefunden, lade Konfiguration neu..."
|
|
||||||
if ! sudo nginx -s reload; then
|
|
||||||
echo "[WARNUNG] nginx konnte nicht automatisch neu geladen werden."
|
|
||||||
echo "Die Konfiguration wurde geschrieben; bitte nginx bei Bedarf manuell neu laden."
|
|
||||||
fi
|
|
||||||
elif sudo systemctl is-active --quiet nginx; then
|
|
||||||
echo "Lade nginx neu..."
|
|
||||||
if ! sudo systemctl reload nginx; then
|
|
||||||
echo "[WARNUNG] nginx reload via systemd fehlgeschlagen."
|
|
||||||
echo "Bitte prüfe: sudo systemctl status nginx.service"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Nginx ist nicht aktiv, starte nginx..."
|
|
||||||
if ! sudo systemctl start nginx; then
|
|
||||||
echo "[WARNUNG] Nginx konnte nicht über systemd gestartet werden."
|
|
||||||
echo "Falls nginx bereits manuell läuft, kann die Weiterleitung trotzdem funktionieren."
|
|
||||||
echo "Ansonsten prüfe: sudo systemctl status nginx.service"
|
|
||||||
echo "Und Logs mit: sudo journalctl -xeu nginx.service"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
ensure_firewall_http_https() {
|
|
||||||
if ! command -v ufw >/dev/null 2>&1; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if sudo ufw status 2>/dev/null | grep -qi "Status: active"; then
|
|
||||||
echo "Oeffne Firewall fuer 80/tcp und 443/tcp (ufw)..."
|
|
||||||
sudo ufw allow 80/tcp >/dev/null || true
|
|
||||||
sudo ufw allow 443/tcp >/dev/null || true
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
apply_nginx() {
|
|
||||||
if ! command -v nginx >/dev/null 2>&1; then
|
|
||||||
echo "Fehler: nginx ist nicht installiert. Bitte zuerst nginx installieren."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
load_runtime_config
|
|
||||||
|
|
||||||
echo "Erstelle nginx Reverse-Proxy Konfigurationen..."
|
|
||||||
configure_nginx_site "gitea" "$GITEA_DOMAIN" "$GITEA_HTTP_PORT"
|
|
||||||
configure_nginx_site "website" "$WEBSITE_DOMAIN" "$WEBSITE_UPSTREAM_PORT"
|
|
||||||
|
|
||||||
ensure_firewall_http_https
|
|
||||||
reload_nginx
|
|
||||||
|
|
||||||
echo "-------------------------------------------------------"
|
|
||||||
echo "Nginx wurde aktualisiert."
|
|
||||||
echo "Gitea Domain: $GITEA_DOMAIN -> 127.0.0.1:$GITEA_HTTP_PORT"
|
|
||||||
echo "Web Domain: $WEBSITE_DOMAIN -> 127.0.0.1:$WEBSITE_UPSTREAM_PORT"
|
|
||||||
echo "Zertifikat Ordner: $CERT_DIR"
|
|
||||||
echo "Aktueller Host: $(current_host_info)"
|
|
||||||
echo "-------------------------------------------------------"
|
|
||||||
}
|
|
||||||
|
|
||||||
disable_nginx() {
|
|
||||||
local changed=0
|
|
||||||
|
|
||||||
if ! command -v nginx >/dev/null 2>&1; then
|
|
||||||
echo "Fehler: nginx ist nicht installiert."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
for site_name in gitea website; do
|
|
||||||
local site_link="/etc/nginx/sites-enabled/$site_name"
|
|
||||||
if [ -L "$site_link" ] || [ -e "$site_link" ]; then
|
|
||||||
echo "Deaktiviere nginx Site: $site_name"
|
|
||||||
sudo rm -f "$site_link"
|
|
||||||
changed=1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "$changed" -eq 1 ]; then
|
|
||||||
reload_nginx
|
|
||||||
echo "-------------------------------------------------------"
|
|
||||||
echo "Nginx Reverse-Proxy Sites wurden deaktiviert."
|
|
||||||
echo "Aktueller Host: $(current_host_info)"
|
|
||||||
echo "-------------------------------------------------------"
|
|
||||||
else
|
|
||||||
echo "Keine verwalteten nginx Sites aktiv (gitea/website)."
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$ACTION" in
|
|
||||||
apply)
|
|
||||||
apply_nginx
|
|
||||||
;;
|
|
||||||
disable|deactivate)
|
|
||||||
disable_nginx
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
SERVICE_NAME="invario-hosts-sync"
|
|
||||||
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
|
||||||
SYNC_SCRIPT="$SCRIPT_DIR/Website/sync_dev_hosts.sh"
|
|
||||||
SERVICE_TEMPLATE="$SCRIPT_DIR/${SERVICE_NAME}.service"
|
|
||||||
|
|
||||||
echo "=== Invario Hosts-Sync Automatische Einrichtung ==="
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Prüfe ob root
|
|
||||||
if [[ "${EUID}" -ne 0 ]]; then
|
|
||||||
echo "❌ Fehler: Dieses Skript benötigt root-Rechte"
|
|
||||||
echo " Starten Sie mit: sudo $0"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Prüfe Abhängigkeiten
|
|
||||||
if [[ ! -x "$SYNC_SCRIPT" ]]; then
|
|
||||||
echo "❌ Fehler: sync_dev_hosts.sh nicht gefunden unter $SYNC_SCRIPT"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -f "$SERVICE_TEMPLATE" ]]; then
|
|
||||||
echo "❌ Fehler: Service-Template nicht gefunden unter $SERVICE_TEMPLATE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Installiere Service-Datei
|
|
||||||
echo "📋 Installiere systemd-Service..."
|
|
||||||
cp "$SERVICE_TEMPLATE" "$SERVICE_FILE"
|
|
||||||
chmod 644 "$SERVICE_FILE"
|
|
||||||
|
|
||||||
# Lade systemd-Konfiguration neu
|
|
||||||
echo "🔄 Lade systemd-Konfiguration neu..."
|
|
||||||
systemctl daemon-reload
|
|
||||||
|
|
||||||
# Aktiviere und starte Service
|
|
||||||
echo "▶️ Starte und aktiviere ${SERVICE_NAME}.service..."
|
|
||||||
systemctl enable "$SERVICE_NAME.service"
|
|
||||||
systemctl start "$SERVICE_NAME.service"
|
|
||||||
|
|
||||||
# Anzeige Status
|
|
||||||
echo ""
|
|
||||||
echo "✅ Installation abgeschlossen!"
|
|
||||||
echo ""
|
|
||||||
echo "📊 Status überprüfen:"
|
|
||||||
echo " sudo systemctl status $SERVICE_NAME"
|
|
||||||
echo ""
|
|
||||||
echo "📝 Logs anschauen:"
|
|
||||||
echo " sudo journalctl -u $SERVICE_NAME -f"
|
|
||||||
echo ""
|
|
||||||
echo "🛑 Service stoppen:"
|
|
||||||
echo " sudo systemctl stop $SERVICE_NAME"
|
|
||||||
echo ""
|
|
||||||
echo "🗑️ Service deinstallieren:"
|
|
||||||
echo " sudo systemctl disable $SERVICE_NAME"
|
|
||||||
echo " sudo systemctl stop $SERVICE_NAME"
|
|
||||||
echo " sudo rm $SERVICE_FILE"
|
|
||||||
echo " sudo systemctl daemon-reload"
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
SERVICE_NAME="invario-stack-autostart"
|
|
||||||
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
|
||||||
SERVICE_TEMPLATE="$SCRIPT_DIR/${SERVICE_NAME}.service"
|
|
||||||
|
|
||||||
if [[ "${EUID}" -ne 0 ]]; then
|
|
||||||
echo "This script must be run as root. Use: sudo $0"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -f "$SERVICE_TEMPLATE" ]]; then
|
|
||||||
echo "Missing service template: $SERVICE_TEMPLATE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cp "$SERVICE_TEMPLATE" "$SERVICE_FILE"
|
|
||||||
chmod 644 "$SERVICE_FILE"
|
|
||||||
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable "$SERVICE_NAME.service"
|
|
||||||
|
|
||||||
echo "Autostart installed. Start it now with: systemctl start $SERVICE_NAME"
|
|
||||||
echo "Check status with: systemctl status $SERVICE_NAME"
|
|
||||||
Reference in New Issue
Block a user