Initialisiere Explor.Code.Law mit RII-Pipeline und Strato-Deploy.
Some checks failed
Deploy explore / deploy (push) Failing after 18s
Some checks failed
Deploy explore / deploy (push) Failing after 18s
Entscheidungen als Markdown, Normen-Index und schlankes Git-Sync nach /opt/explore (Gitea Actions, ohne Docker). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
150
setup-ssh-deploy.sh
Executable file
150
setup-ssh-deploy.sh
Executable file
@@ -0,0 +1,150 @@
|
||||
#!/bin/bash
|
||||
# SSH Deploy Key Setup for explore
|
||||
#
|
||||
# Automatisiert:
|
||||
# 1. Erzeugt ein SSH-Schlüsselpaar (nur für Deployment)
|
||||
# 2. Hinterlegt den Public Key auf dem Server
|
||||
# 3. Speichert den Private Key als Gitea Secret via API
|
||||
#
|
||||
# Voraussetzungen:
|
||||
# - ssh-keygen, jq, curl
|
||||
# - SSH-Zugang zum Server (z.B. ~/.ssh/gitea_deploy)
|
||||
# - Gitea API-Token (mit repo-Rechten)
|
||||
# - Repo michaelkole/explore muss bereits existieren
|
||||
#
|
||||
# Usage: ./setup-ssh-deploy.sh
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_NAME="explore"
|
||||
SERVER_IP="82.165.92.92"
|
||||
SERVER_USER="root"
|
||||
GITEA_HOST="git.coded.law"
|
||||
GITEA_OWNER="michaelkole"
|
||||
GITEA_REPO="explore"
|
||||
KEY_FILE="$HOME/.ssh/deploy_${PROJECT_NAME}"
|
||||
SECRET_NAME="SSH_PRIVATE_KEY"
|
||||
|
||||
echo ""
|
||||
echo "SSH Deploy Key Setup für $PROJECT_NAME"
|
||||
echo "========================================"
|
||||
echo ""
|
||||
|
||||
if [ -z "${GITEA_TOKEN:-}" ]; then
|
||||
echo "Gitea API-Token wird benötigt (mit repo-Rechten)."
|
||||
echo "Erstellen unter: https://$GITEA_HOST/user/settings/applications"
|
||||
echo ""
|
||||
read -rsp "Gitea API-Token: " GITEA_TOKEN
|
||||
echo ""
|
||||
fi
|
||||
|
||||
if [ -z "$GITEA_TOKEN" ]; then
|
||||
echo "Fehler: Kein Token angegeben."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Prüfe Gitea-Zugang..."
|
||||
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \
|
||||
-H "Authorization: token $GITEA_TOKEN" \
|
||||
"https://$GITEA_HOST/api/v1/repos/$GITEA_OWNER/$GITEA_REPO")
|
||||
|
||||
if [ "$HTTP_CODE" != "200" ]; then
|
||||
echo "Fehler: Gitea API antwortet mit HTTP $HTTP_CODE."
|
||||
echo "Prüfe Token und Repo-Pfad: $GITEA_OWNER/$GITEA_REPO"
|
||||
echo "Repo ggf. zuerst anlegen unter https://$GITEA_HOST/repo/create"
|
||||
exit 1
|
||||
fi
|
||||
echo " Gitea OK"
|
||||
|
||||
if [ -f "$KEY_FILE" ]; then
|
||||
echo ""
|
||||
echo "SSH Key existiert bereits: $KEY_FILE"
|
||||
read -rp "Überschreiben? (j/N) " OVERWRITE
|
||||
if [[ ! "$OVERWRITE" =~ ^[jJyY]$ ]]; then
|
||||
echo "Verwende bestehenden Key."
|
||||
else
|
||||
rm -f "$KEY_FILE" "$KEY_FILE.pub"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -f "$KEY_FILE" ]; then
|
||||
echo "Erzeuge SSH-Schlüsselpaar..."
|
||||
ssh-keygen -t ed25519 -C "deploy@$PROJECT_NAME" -f "$KEY_FILE" -N ""
|
||||
chmod 600 "$KEY_FILE"
|
||||
echo " Key erzeugt: $KEY_FILE"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Hinterlege Public Key auf $SERVER_USER@$SERVER_IP..."
|
||||
|
||||
SSH_OPTS="-o StrictHostKeyChecking=accept-new -o ConnectTimeout=5"
|
||||
EXISTING_KEY=""
|
||||
|
||||
if ! ssh $SSH_OPTS -o BatchMode=yes "$SERVER_USER@$SERVER_IP" "true" 2>/dev/null; then
|
||||
echo " Direkter SSH-Zugang nicht möglich (nur Key-Auth?)."
|
||||
echo " Suche bestehenden SSH-Key..."
|
||||
for candidate in ~/.ssh/id_ed25519 ~/.ssh/id_rsa ~/.ssh/gitea_deploy; do
|
||||
if [ -f "$candidate" ] && ssh -i "$candidate" $SSH_OPTS -o BatchMode=yes "$SERVER_USER@$SERVER_IP" "true" 2>/dev/null; then
|
||||
EXISTING_KEY="$candidate"
|
||||
echo " Gefunden: $candidate"
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ -z "$EXISTING_KEY" ]; then
|
||||
echo ""
|
||||
echo " Kein funktionierender SSH-Key gefunden."
|
||||
echo " Bitte manuell:"
|
||||
echo " cat $KEY_FILE.pub | ssh -i ~/.ssh/gitea_deploy $SERVER_USER@$SERVER_IP 'cat >> ~/.ssh/authorized_keys'"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$EXISTING_KEY" ]; then
|
||||
ssh -i "$EXISTING_KEY" "$SERVER_USER@$SERVER_IP" "mkdir -p ~/.ssh && chmod 700 ~/.ssh"
|
||||
cat "$KEY_FILE.pub" | ssh -i "$EXISTING_KEY" "$SERVER_USER@$SERVER_IP" "cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
|
||||
else
|
||||
ssh "$SERVER_USER@$SERVER_IP" "mkdir -p ~/.ssh && chmod 700 ~/.ssh"
|
||||
cat "$KEY_FILE.pub" | ssh "$SERVER_USER@$SERVER_IP" "cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
|
||||
fi
|
||||
echo " Public Key auf Server hinterlegt"
|
||||
|
||||
echo "Teste SSH-Verbindung mit Deploy Key..."
|
||||
if ssh -i "$KEY_FILE" $SSH_OPTS -o BatchMode=yes "$SERVER_USER@$SERVER_IP" "echo 'SSH OK'" 2>/dev/null; then
|
||||
echo " SSH-Verbindung OK"
|
||||
else
|
||||
echo " WARNUNG: SSH-Test fehlgeschlagen. Prüfe authorized_keys auf dem Server."
|
||||
fi
|
||||
|
||||
if ! command -v jq &>/dev/null; then
|
||||
echo "Fehler: jq fehlt (brew install jq)."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Speichere Private Key als Gitea Secret '$SECRET_NAME'..."
|
||||
PRIVATE_KEY_CONTENT=$(cat "$KEY_FILE")
|
||||
|
||||
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \
|
||||
-X PUT \
|
||||
-H "Authorization: token $GITEA_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"data\": $(echo "$PRIVATE_KEY_CONTENT" | jq -Rs .)}" \
|
||||
"https://$GITEA_HOST/api/v1/repos/$GITEA_OWNER/$GITEA_REPO/actions/secrets/$SECRET_NAME")
|
||||
|
||||
if [ "$HTTP_CODE" = "201" ] || [ "$HTTP_CODE" = "204" ]; then
|
||||
echo " Secret '$SECRET_NAME' gespeichert"
|
||||
else
|
||||
echo " Fehler: Gitea API antwortet mit HTTP $HTTP_CODE"
|
||||
echo " Manuell: https://$GITEA_HOST/$GITEA_OWNER/$GITEA_REPO/settings/actions/secrets"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "========================================"
|
||||
echo "SSH Deploy Key Setup abgeschlossen!"
|
||||
echo "========================================"
|
||||
echo ""
|
||||
echo " Private Key: $KEY_FILE"
|
||||
echo " Public Key: $KEY_FILE.pub"
|
||||
echo " Server: $SERVER_USER@$SERVER_IP"
|
||||
echo " Gitea Secret: $SECRET_NAME ($GITEA_OWNER/$GITEA_REPO)"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user