feat(marketing): Windows-PC-Schutz Download-Seite + Installer
- /download/windows: eigene, korrekt geframte Windows-Seite (PC-DNS-Schutz, nicht iPhone-Supervision) - Installer in public/downloads/RebreakMagic-Setup.exe (3,7 MB, aus CI-Artefakt) - deploy-marketing.sh: --info=progress2 -> --progress (macOS-rsync-kompatibel) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
2c1eecd1f7
commit
7ad8625d8e
135
apps/marketing/app/pages/download/windows.vue
Normal file
135
apps/marketing/app/pages/download/windows.vue
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
<template>
|
||||||
|
<div class="min-h-screen bg-gray-950 text-white flex flex-col items-center justify-center px-4 py-16">
|
||||||
|
<div class="w-full max-w-md">
|
||||||
|
<!-- Logo / Brand -->
|
||||||
|
<div class="flex items-center gap-3 mb-10">
|
||||||
|
<div class="w-12 h-12 rounded-2xl bg-indigo-500 flex items-center justify-center">
|
||||||
|
<span class="text-2xl font-bold">R</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h1 class="text-2xl font-bold tracking-tight">ReBreak für Windows</h1>
|
||||||
|
<p class="text-sm text-gray-400">Glücksspiel-Schutz für deinen PC</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Header -->
|
||||||
|
<h2 class="text-3xl font-extrabold mb-2">Schutz für deinen Windows-PC</h2>
|
||||||
|
<p class="text-gray-400 mb-1 text-sm">
|
||||||
|
Version {{ version }} · {{ buildDate }}
|
||||||
|
</p>
|
||||||
|
<span
|
||||||
|
class="inline-block bg-amber-500/15 text-amber-400 text-xs font-semibold px-2.5 py-1 rounded-full mb-6"
|
||||||
|
>
|
||||||
|
Beta — für Pro & Legend
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<!-- Was es macht -->
|
||||||
|
<div class="bg-indigo-950/30 border border-indigo-800/30 rounded-2xl p-5 mb-6">
|
||||||
|
<p class="text-sm text-indigo-200 leading-relaxed">
|
||||||
|
<strong>Systemweiter Schutz.</strong> ReBreak für Windows blockt Glücksspielseiten
|
||||||
|
auf <strong>DNS-Ebene</strong> — in jedem Browser, jeder App. Auch Chrome, Edge und
|
||||||
|
Brave, die normalerweise das System-DNS umgehen, werden zuverlässig gefiltert.
|
||||||
|
Ein Hintergrunddienst schützt die Einstellung vor dem Abschalten.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Download Button -->
|
||||||
|
<a
|
||||||
|
:href="exeUrl"
|
||||||
|
class="block w-full bg-indigo-600 hover:bg-indigo-500 active:bg-indigo-700 transition-colors text-white text-center font-bold text-lg py-4 rounded-2xl mb-4 shadow-lg shadow-indigo-900/40"
|
||||||
|
download
|
||||||
|
>
|
||||||
|
Installer herunterladen ({{ exeSize }})
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<!-- SHA256 -->
|
||||||
|
<p class="text-xs text-gray-500 text-center break-all mb-10">
|
||||||
|
SHA256: <span class="font-mono">{{ sha256 }}</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<!-- Install Instructions -->
|
||||||
|
<div class="bg-gray-900 rounded-2xl p-6 mb-8">
|
||||||
|
<h3 class="font-bold text-base mb-4 text-white">Setup in 3 Schritten</h3>
|
||||||
|
<ol class="space-y-4">
|
||||||
|
<li class="flex gap-3">
|
||||||
|
<span class="w-7 h-7 shrink-0 rounded-full bg-indigo-600 flex items-center justify-center text-sm font-bold">1</span>
|
||||||
|
<div>
|
||||||
|
<p class="font-medium text-sm text-white">Installer laden & ausführen</p>
|
||||||
|
<p class="text-xs text-gray-400 mt-0.5">Doppelklick auf die .exe. Windows-SmartScreen ggf. „Weitere Informationen → Trotzdem ausführen" (App ist noch nicht signiert).</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="flex gap-3">
|
||||||
|
<span class="w-7 h-7 shrink-0 rounded-full bg-indigo-600 flex items-center justify-center text-sm font-bold">2</span>
|
||||||
|
<div>
|
||||||
|
<p class="font-medium text-sm text-white">Mit ReBreak verbinden</p>
|
||||||
|
<p class="text-xs text-gray-400 mt-0.5">In der ReBreak-App auf dem Handy einen 6-stelligen Code erzeugen (Geräte → Gerät hinzufügen → Windows) und in der PC-App eingeben.</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="flex gap-3">
|
||||||
|
<span class="w-7 h-7 shrink-0 rounded-full bg-indigo-600 flex items-center justify-center text-sm font-bold">3</span>
|
||||||
|
<div>
|
||||||
|
<p class="font-medium text-sm text-white">Fertig</p>
|
||||||
|
<p class="text-xs text-gray-400 mt-0.5">Der Schutz läuft ab sofort im Hintergrund — auch nach einem Neustart.</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Voraussetzungen -->
|
||||||
|
<div class="bg-gray-900 rounded-2xl p-6 mb-8">
|
||||||
|
<h3 class="font-bold text-base mb-3 text-white">Voraussetzungen</h3>
|
||||||
|
<ul class="space-y-2 text-xs text-gray-400">
|
||||||
|
<li>• Windows 10 ({{ minWindows }}) oder Windows 11, 64-Bit</li>
|
||||||
|
<li>• Administrator-Rechte für die Installation</li>
|
||||||
|
<li>• Ein ReBreak-Account mit Pro oder Legend</li>
|
||||||
|
<li>• Die ReBreak-App auf deinem Handy (für die Kopplung)</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Deaktivieren -->
|
||||||
|
<div class="bg-gray-900 rounded-2xl p-6 mb-8">
|
||||||
|
<h3 class="font-bold text-base mb-3 text-white">Wie wird der Schutz wieder gelöst?</h3>
|
||||||
|
<p class="text-xs text-gray-400 leading-relaxed">
|
||||||
|
Bewusst nicht per Klick: Der Schutz lässt sich nur mit Wartezeit (Cooldown) wieder
|
||||||
|
pausieren — das schützt dich genau vor dem Impuls, der ihn im Drang-Moment loswerden will.
|
||||||
|
Bei Abo-Ende oder Account-Löschung wird der Schutz ordnungsgemäß freigegeben.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Beta Notice -->
|
||||||
|
<div class="bg-amber-950/40 border border-amber-800/30 rounded-xl p-4 mb-8">
|
||||||
|
<p class="text-amber-300 text-xs leading-relaxed">
|
||||||
|
<strong>Beta-Hinweis:</strong> ReBreak für Windows ist in geschlossener Beta. Bei Problemen oder
|
||||||
|
Feedback bitte E-Mail an
|
||||||
|
<a href="mailto:support@rebreak.org" class="underline">support@rebreak.org</a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<p class="text-center text-xs text-gray-600">
|
||||||
|
© {{ new Date().getFullYear() }} Rebreak ·
|
||||||
|
<NuxtLink to="/datenschutz" class="hover:text-gray-400">Datenschutz</NuxtLink>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
// Werte bei jedem Windows-Release aktualisieren (oder per Script aus dem Build).
|
||||||
|
const version = "0.1.0";
|
||||||
|
const buildDate = "Juni 2026";
|
||||||
|
const exeSize = "3,7 MB";
|
||||||
|
const minWindows = "21H2";
|
||||||
|
const sha256 = "f1d073b28cc3cf31f3b9da826eff71cd73e1169a1c6ae1ff64a056ee4cf0dd87";
|
||||||
|
const exeUrl = "/downloads/RebreakMagic-Setup.exe";
|
||||||
|
|
||||||
|
useSeoMeta({
|
||||||
|
title: "ReBreak für Windows – Glücksspiel-Schutz für deinen PC",
|
||||||
|
description:
|
||||||
|
"Blockt Glücksspielseiten systemweit auf deinem Windows-PC — in jedem Browser, auch Chrome und Edge. Per DNS-over-HTTPS, mit Tamper-Schutz im Hintergrund.",
|
||||||
|
});
|
||||||
|
|
||||||
|
definePageMeta({
|
||||||
|
layout: false,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
BIN
apps/marketing/public/downloads/RebreakMagic-Setup.exe
Normal file
BIN
apps/marketing/public/downloads/RebreakMagic-Setup.exe
Normal file
Binary file not shown.
@ -20,7 +20,8 @@ REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|||||||
MARKETING_DIR="$REPO_ROOT/apps/marketing"
|
MARKETING_DIR="$REPO_ROOT/apps/marketing"
|
||||||
|
|
||||||
# Server-Settings (anpassen wenn anderer Host/User)
|
# Server-Settings (anpassen wenn anderer Host/User)
|
||||||
SSH_HOST="${MARKETING_SSH_HOST:-root@49.13.55.22}"
|
# 2026-06-06: Default auf Clone (91.99.225.223) umgestellt -- ALT-Box 49.13.55.22 ist migriert/abgeschaltet
|
||||||
|
SSH_HOST="${MARKETING_SSH_HOST:-root@91.99.225.223}"
|
||||||
REMOTE_DIR="${MARKETING_REMOTE_DIR:-/var/www/marketing-staging}"
|
REMOTE_DIR="${MARKETING_REMOTE_DIR:-/var/www/marketing-staging}"
|
||||||
|
|
||||||
log() { echo "[deploy-marketing] $(date '+%H:%M:%S') $*"; }
|
log() { echo "[deploy-marketing] $(date '+%H:%M:%S') $*"; }
|
||||||
@ -49,14 +50,18 @@ PUBLIC_DIR="$MARKETING_DIR/.output/public"
|
|||||||
log "Build ok ($(du -sh "$PUBLIC_DIR" | cut -f1))"
|
log "Build ok ($(du -sh "$PUBLIC_DIR" | cut -f1))"
|
||||||
|
|
||||||
# 2. rsync nach Server
|
# 2. rsync nach Server
|
||||||
RSYNC_FLAGS=(-az --delete --info=progress2)
|
# --progress statt --info=progress2: macOS' System-rsync (2.6.9 / openrsync)
|
||||||
|
# kennt --info nicht. --progress läuft auf alt + neu.
|
||||||
|
RSYNC_FLAGS=(-az --delete --progress)
|
||||||
if [[ "${DRY_RUN:-0}" == "1" ]]; then
|
if [[ "${DRY_RUN:-0}" == "1" ]]; then
|
||||||
RSYNC_FLAGS+=(--dry-run)
|
RSYNC_FLAGS+=(--dry-run)
|
||||||
log "DRY_RUN aktiv -- nur Simulation"
|
log "DRY_RUN aktiv -- nur Simulation"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log "Step 2: rsync nach $SSH_HOST:$REMOTE_DIR ..."
|
log "Step 2: rsync nach $SSH_HOST:$REMOTE_DIR ..."
|
||||||
|
SSH_KEY="${MARKETING_SSH_KEY:-$HOME/.ssh/id_ed25519}"
|
||||||
rsync "${RSYNC_FLAGS[@]}" \
|
rsync "${RSYNC_FLAGS[@]}" \
|
||||||
|
-e "ssh -i $SSH_KEY" \
|
||||||
"$PUBLIC_DIR/" \
|
"$PUBLIC_DIR/" \
|
||||||
"$SSH_HOST:$REMOTE_DIR/"
|
"$SSH_HOST:$REMOTE_DIR/"
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user