add helper tooling for vapid push setup
This commit is contained in:
@@ -9,3 +9,6 @@ __pycache__/
|
||||
|
||||
data/
|
||||
instance/
|
||||
.cloudron-push.env
|
||||
.env.local
|
||||
.env.push.local
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
# Push-Setup für Nouri
|
||||
|
||||
## 1. VAPID-Schlüssel erzeugen
|
||||
|
||||
```bash
|
||||
. .venv/bin/activate
|
||||
python scripts/generate_vapid_keys.py
|
||||
```
|
||||
|
||||
Das Script gibt drei Zeilen aus:
|
||||
|
||||
- `NOURI_VAPID_PUBLIC_KEY`
|
||||
- `NOURI_VAPID_PRIVATE_KEY`
|
||||
- `NOURI_VAPID_SUBJECT`
|
||||
|
||||
## 2. In Cloudron eintragen
|
||||
|
||||
In der bestehenden Nouri-App unter `Settings` → `Environment Variables` diese drei Werte anlegen:
|
||||
|
||||
```text
|
||||
NOURI_VAPID_PUBLIC_KEY=...
|
||||
NOURI_VAPID_PRIVATE_KEY=...
|
||||
NOURI_VAPID_SUBJECT=mailto:mail@hnz.io
|
||||
```
|
||||
|
||||
Danach die App neu starten.
|
||||
|
||||
## 3. Auf dem iPhone aktivieren
|
||||
|
||||
1. `nouri.heinz.media` in Safari öffnen
|
||||
2. `Teilen` → `Zum Home-Bildschirm`
|
||||
3. die installierte Web-App öffnen
|
||||
4. in Nouri `Optionen` öffnen
|
||||
5. `Push erlauben` tippen
|
||||
6. danach optional `Test-Mitteilung senden`
|
||||
|
||||
## 4. Bereits vorbereitete lokale Datei
|
||||
|
||||
Wenn lokal bereits eine Datei `.cloudron-push.env` liegt, kannst du deren Werte direkt nach Cloudron übernehmen.
|
||||
|
||||
Die Datei ist absichtlich in `.gitignore`, damit keine geheimen Schlüssel committed werden.
|
||||
@@ -0,0 +1,26 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from py_vapid import Vapid01, b64urlencode
|
||||
from cryptography.hazmat.primitives import serialization
|
||||
|
||||
|
||||
def main() -> None:
|
||||
vapid = Vapid01()
|
||||
vapid.generate_keys()
|
||||
|
||||
public_key = b64urlencode(
|
||||
vapid.public_key.public_bytes(
|
||||
encoding=serialization.Encoding.X962,
|
||||
format=serialization.PublicFormat.UncompressedPoint,
|
||||
)
|
||||
)
|
||||
private_value = vapid.private_key.private_numbers().private_value
|
||||
private_key = b64urlencode(private_value.to_bytes(32, "big"))
|
||||
|
||||
print(f"NOURI_VAPID_PUBLIC_KEY={public_key}")
|
||||
print(f"NOURI_VAPID_PRIVATE_KEY={private_key}")
|
||||
print("NOURI_VAPID_SUBJECT=mailto:mail@hnz.io")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user