Hetzner Deploy Version (hoffentlich)
Dieser Commit ist enthalten in:
@@ -76,7 +76,10 @@
|
|||||||
"Bash(touch:*)",
|
"Bash(touch:*)",
|
||||||
"Bash(wget:*)",
|
"Bash(wget:*)",
|
||||||
"Bash(docker inspect:*)",
|
"Bash(docker inspect:*)",
|
||||||
"Bash(docker run:*)"
|
"Bash(docker run:*)",
|
||||||
|
"Bash(ping:*)",
|
||||||
|
"Bash(timeout:*)",
|
||||||
|
"Bash(nc:*)"
|
||||||
],
|
],
|
||||||
"deny": []
|
"deny": []
|
||||||
}
|
}
|
||||||
|
|||||||
121
PRODUCTION_DEPLOYMENT.md
Normale Datei
121
PRODUCTION_DEPLOYMENT.md
Normale Datei
@@ -0,0 +1,121 @@
|
|||||||
|
# Production Deployment Guide for intelsight.de
|
||||||
|
|
||||||
|
## Pre-Deployment Checklist
|
||||||
|
|
||||||
|
### 1. Generate Secure Secrets
|
||||||
|
```bash
|
||||||
|
python3 generate-secrets.py
|
||||||
|
```
|
||||||
|
Save the output securely - you'll need these passwords!
|
||||||
|
|
||||||
|
**Note**: The admin panel users (rac00n and w@rh@mm3r) keep their existing passwords as configured in the .env file.
|
||||||
|
|
||||||
|
### 2. Configure Environment Files
|
||||||
|
|
||||||
|
#### v2/.env
|
||||||
|
1. Copy the template:
|
||||||
|
```bash
|
||||||
|
cp v2/.env.production.template v2/.env
|
||||||
|
```
|
||||||
|
2. Replace all `CHANGE_THIS_` placeholders with generated secrets
|
||||||
|
3. Ensure `PRODUCTION=true` is set
|
||||||
|
|
||||||
|
#### v2_lizenzserver/.env
|
||||||
|
1. Copy the template:
|
||||||
|
```bash
|
||||||
|
cp v2_lizenzserver/.env.production.template v2_lizenzserver/.env
|
||||||
|
```
|
||||||
|
2. Use the same database password as in v2/.env
|
||||||
|
3. Set a unique SECRET_KEY from generate-secrets.py
|
||||||
|
|
||||||
|
### 3. SSL Certificates
|
||||||
|
```bash
|
||||||
|
# Copy your SSL certificates
|
||||||
|
cp /SSL/fullchain.pem v2_nginx/ssl/
|
||||||
|
cp /SSL/privkey.pem v2_nginx/ssl/
|
||||||
|
chmod 644 v2_nginx/ssl/fullchain.pem
|
||||||
|
chmod 600 v2_nginx/ssl/privkey.pem
|
||||||
|
|
||||||
|
# Generate dhparam.pem (this takes a few minutes)
|
||||||
|
openssl dhparam -out v2_nginx/ssl/dhparam.pem 2048
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Verify Configuration
|
||||||
|
```bash
|
||||||
|
./verify-deployment.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Deployment on Hetzner Server
|
||||||
|
|
||||||
|
### 1. Update Deploy Script
|
||||||
|
On your Hetzner server:
|
||||||
|
```bash
|
||||||
|
nano /root/deploy.sh
|
||||||
|
```
|
||||||
|
Replace `YOUR_GITHUB_TOKEN` with your actual GitHub token.
|
||||||
|
|
||||||
|
### 2. Run Deployment
|
||||||
|
```bash
|
||||||
|
cd /root
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Start Services
|
||||||
|
```bash
|
||||||
|
cd /opt/v2-Docker/v2
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Check Status
|
||||||
|
```bash
|
||||||
|
docker compose ps
|
||||||
|
docker compose logs -f
|
||||||
|
```
|
||||||
|
|
||||||
|
## Post-Deployment
|
||||||
|
|
||||||
|
### 1. Create Admin Panel API Key
|
||||||
|
1. Access https://admin-panel-undso.intelsight.de
|
||||||
|
2. Login with your admin credentials
|
||||||
|
3. Go to "Lizenzserver Administration"
|
||||||
|
4. Generate a new API key for production use
|
||||||
|
|
||||||
|
### 2. Test Endpoints
|
||||||
|
- Admin Panel: https://admin-panel-undso.intelsight.de
|
||||||
|
- API Server: https://api-software-undso.intelsight.de
|
||||||
|
|
||||||
|
### 3. Monitor Logs
|
||||||
|
```bash
|
||||||
|
docker compose logs -f admin-panel
|
||||||
|
docker compose logs -f license-server
|
||||||
|
```
|
||||||
|
|
||||||
|
## Security Notes
|
||||||
|
|
||||||
|
1. **Never commit .env files** with real passwords to git
|
||||||
|
2. **Backup your passwords** securely
|
||||||
|
3. **Rotate API keys** regularly
|
||||||
|
4. **Monitor access logs** for suspicious activity
|
||||||
|
5. **Keep SSL certificates** up to date (expires every 90 days)
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Services won't start
|
||||||
|
```bash
|
||||||
|
docker compose down
|
||||||
|
docker compose up -d
|
||||||
|
docker compose logs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Database connection issues
|
||||||
|
- Verify POSTGRES_PASSWORD matches in both .env files
|
||||||
|
- Check if postgres container is running: `docker compose ps db`
|
||||||
|
|
||||||
|
### SSL issues
|
||||||
|
- Ensure certificates are in v2_nginx/ssl/
|
||||||
|
- Check nginx logs: `docker compose logs nginx-proxy`
|
||||||
|
|
||||||
|
### Cannot access website
|
||||||
|
- Verify DNS points to your server IP
|
||||||
|
- Check if ports 80/443 are open: `ss -tlnp | grep -E '(:80|:443)'`
|
||||||
|
- Check nginx is running: `docker compose ps nginx-proxy`
|
||||||
14
SSL/.claude/settings.local.json
Normale Datei
14
SSL/.claude/settings.local.json
Normale Datei
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"permissions": {
|
||||||
|
"allow": [
|
||||||
|
"Bash(sudo apt:*)",
|
||||||
|
"Bash(sudo apt install:*)",
|
||||||
|
"Bash(apt list:*)",
|
||||||
|
"Bash(pip install:*)",
|
||||||
|
"Bash(pip3 install:*)",
|
||||||
|
"Bash(chmod:*)",
|
||||||
|
"Bash(sudo cp:*)"
|
||||||
|
],
|
||||||
|
"deny": []
|
||||||
|
}
|
||||||
|
}
|
||||||
130
SSL/SSL_Wichtig.md
Normale Datei
130
SSL/SSL_Wichtig.md
Normale Datei
@@ -0,0 +1,130 @@
|
|||||||
|
# SSL Zertifikat für intelsight.de - Wichtige Informationen
|
||||||
|
|
||||||
|
## Erfolgreich erstelltes Zertifikat
|
||||||
|
|
||||||
|
**Erstellungsdatum**: 26. Juni 2025
|
||||||
|
**Ablaufdatum**: 24. September 2025 (90 Tage)
|
||||||
|
**E-Mail für Benachrichtigungen**: momohomma@googlemail.com
|
||||||
|
|
||||||
|
**Abgedeckte Domains**:
|
||||||
|
- intelsight.de
|
||||||
|
- www.intelsight.de
|
||||||
|
- admin-panel-undso.intelsight.de
|
||||||
|
- api-software-undso.intelsight.de
|
||||||
|
|
||||||
|
## Zertifikatsdateien (in WSL)
|
||||||
|
|
||||||
|
- **Zertifikat (Full Chain)**: `/etc/letsencrypt/live/intelsight.de/fullchain.pem`
|
||||||
|
- **Privater Schlüssel**: `/etc/letsencrypt/live/intelsight.de/privkey.pem`
|
||||||
|
- **Nur Zertifikat**: `/etc/letsencrypt/live/intelsight.de/cert.pem`
|
||||||
|
- **Zwischenzertifikat**: `/etc/letsencrypt/live/intelsight.de/chain.pem`
|
||||||
|
|
||||||
|
## Komplette Anleitung - So wurde es gemacht
|
||||||
|
|
||||||
|
### 1. WSL Installation und Setup
|
||||||
|
```bash
|
||||||
|
# In Windows PowerShell WSL starten
|
||||||
|
wsl
|
||||||
|
|
||||||
|
# System aktualisieren
|
||||||
|
sudo apt update
|
||||||
|
|
||||||
|
# Certbot installieren
|
||||||
|
sudo apt install certbot
|
||||||
|
|
||||||
|
# Version prüfen
|
||||||
|
certbot --version
|
||||||
|
# Ausgabe: certbot 2.9.0
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Certbot DNS Challenge starten
|
||||||
|
```bash
|
||||||
|
sudo certbot certonly --manual --preferred-challenges dns --email momohomma@googlemail.com --agree-tos --no-eff-email -d intelsight.de -d www.intelsight.de -d admin-panel-undso.intelsight.de -d api-software-undso.intelsight.de
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. DNS Challenge Werte sammeln
|
||||||
|
Certbot zeigt nacheinander 4 DNS Challenges an. **Nach jedem Wert Enter drücken** um den nächsten zu sehen:
|
||||||
|
|
||||||
|
1. Enter → Erster Wert erscheint
|
||||||
|
2. Enter → Zweiter Wert erscheint
|
||||||
|
3. Enter → Dritter Wert erscheint
|
||||||
|
4. Enter → Vierter Wert erscheint
|
||||||
|
5. **STOPP! Noch nicht Enter drücken!**
|
||||||
|
|
||||||
|
### 4. DNS Einträge bei IONOS hinzufügen
|
||||||
|
|
||||||
|
Bei IONOS anmelden und unter DNS-Einstellungen diese TXT-Einträge hinzufügen:
|
||||||
|
|
||||||
|
| Typ | Hostname | Wert | TTL |
|
||||||
|
|-----|----------|------|-----|
|
||||||
|
| TXT | `_acme-challenge.admin-panel-undso` | [Wert von Certbot] | 5 Min |
|
||||||
|
| TXT | `_acme-challenge.api-software-undso` | [Wert von Certbot] | 5 Min |
|
||||||
|
| TXT | `_acme-challenge` | [Wert von Certbot] | 5 Min |
|
||||||
|
| TXT | `_acme-challenge.www` | [Wert von Certbot] | 5 Min |
|
||||||
|
|
||||||
|
### 5. DNS Einträge verifizieren
|
||||||
|
|
||||||
|
**In einem neuen WSL Terminal** prüfen ob die Einträge aktiv sind:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nslookup -type=TXT _acme-challenge.admin-panel-undso.intelsight.de
|
||||||
|
nslookup -type=TXT _acme-challenge.api-software-undso.intelsight.de
|
||||||
|
nslookup -type=TXT _acme-challenge.intelsight.de
|
||||||
|
nslookup -type=TXT _acme-challenge.www.intelsight.de
|
||||||
|
```
|
||||||
|
|
||||||
|
Wenn alle 4 Einträge die richtigen Werte zeigen, fortfahren.
|
||||||
|
|
||||||
|
### 6. Zertifikat generieren
|
||||||
|
Im Certbot Terminal (wo es wartet) **Enter drücken** zur Verifizierung.
|
||||||
|
|
||||||
|
Erfolgreiche Ausgabe:
|
||||||
|
```
|
||||||
|
Successfully received certificate.
|
||||||
|
Certificate is saved at: /etc/letsencrypt/live/intelsight.de/fullchain.pem
|
||||||
|
Key is saved at: /etc/letsencrypt/live/intelsight.de/privkey.pem
|
||||||
|
This certificate expires on 2025-09-24.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Zertifikate für späteren Server-Upload kopieren
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Zertifikate ins Home-Verzeichnis kopieren
|
||||||
|
sudo cp /etc/letsencrypt/live/intelsight.de/fullchain.pem ~/
|
||||||
|
sudo cp /etc/letsencrypt/live/intelsight.de/privkey.pem ~/
|
||||||
|
|
||||||
|
# Berechtigungen setzen
|
||||||
|
sudo chmod 644 ~/*.pem
|
||||||
|
|
||||||
|
# Dateien anzeigen
|
||||||
|
ls -la ~/*.pem
|
||||||
|
```
|
||||||
|
|
||||||
|
Die Dateien sind dann unter:
|
||||||
|
- Windows Pfad: `\\wsl$\Ubuntu\home\[dein-username]\fullchain.pem`
|
||||||
|
- Windows Pfad: `\\wsl$\Ubuntu\home\[dein-username]\privkey.pem`
|
||||||
|
|
||||||
|
## Wichtige Hinweise
|
||||||
|
|
||||||
|
1. **Erneuerung**: Das Zertifikat muss alle 90 Tage erneuert werden
|
||||||
|
2. **Manuelle Erneuerung**: Gleicher Prozess mit DNS Challenge wiederholen
|
||||||
|
3. **Automatische Erneuerung**: Erst möglich wenn Server läuft
|
||||||
|
4. **DNS Einträge**: Nach erfolgreicher Zertifikatserstellung können die `_acme-challenge` TXT-Einträge bei IONOS gelöscht werden
|
||||||
|
|
||||||
|
## Für den zukünftigen Server
|
||||||
|
|
||||||
|
Wenn der Server bereit ist, diese Dateien verwenden:
|
||||||
|
- `fullchain.pem` - Komplette Zertifikatskette
|
||||||
|
- `privkey.pem` - Privater Schlüssel (GEHEIM HALTEN!)
|
||||||
|
|
||||||
|
### Beispiel Nginx Konfiguration:
|
||||||
|
```nginx
|
||||||
|
ssl_certificate /etc/ssl/certs/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/ssl/private/privkey.pem;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Beispiel Apache Konfiguration:
|
||||||
|
```apache
|
||||||
|
SSLCertificateFile /etc/ssl/certs/fullchain.pem
|
||||||
|
SSLCertificateKeyFile /etc/ssl/private/privkey.pem
|
||||||
|
```
|
||||||
23
SSL/cert.pem
Normale Datei
23
SSL/cert.pem
Normale Datei
@@ -0,0 +1,23 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIID3TCCA2OgAwIBAgISBimcX2wwj3Z1U/Qlfu5y5keoMAoGCCqGSM49BAMDMDIx
|
||||||
|
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
|
||||||
|
NjAeFw0yNTA2MjYxNjAwMjBaFw0yNTA5MjQxNjAwMTlaMBgxFjAUBgNVBAMTDWlu
|
||||||
|
dGVsc2lnaHQuZGUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATEQD6vfDoXM7Yz
|
||||||
|
iT75OmB/kvxoEebMFRBCzpTOdUZpThlFmLijjCsYnxc8DeWDn8/eLltrBWhuM4Yx
|
||||||
|
gX8tseO0o4ICcTCCAm0wDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUF
|
||||||
|
BwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSM5CYyn//CSmLp
|
||||||
|
JADwjccRtsnZFDAfBgNVHSMEGDAWgBSTJ0aYA6lRaI6Y1sRCSNsjv1iU0jAyBggr
|
||||||
|
BgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly9lNi5pLmxlbmNyLm9yZy8w
|
||||||
|
bgYDVR0RBGcwZYIfYWRtaW4tcGFuZWwtdW5kc28uaW50ZWxzaWdodC5kZYIgYXBp
|
||||||
|
LXNvZnR3YXJlLXVuZHNvLmludGVsc2lnaHQuZGWCDWludGVsc2lnaHQuZGWCEXd3
|
||||||
|
dy5pbnRlbHNpZ2h0LmRlMBMGA1UdIAQMMAowCAYGZ4EMAQIBMC0GA1UdHwQmMCQw
|
||||||
|
IqAgoB6GHGh0dHA6Ly9lNi5jLmxlbmNyLm9yZy80MS5jcmwwggEEBgorBgEEAdZ5
|
||||||
|
AgQCBIH1BIHyAPAAdgDM+w9qhXEJZf6Vm1PO6bJ8IumFXA2XjbapflTA/kwNsAAA
|
||||||
|
AZetLYOmAAAEAwBHMEUCIB8bQYn7h64sSmHZavNbIM6ScHDBxmMWN6WqjyaTz75I
|
||||||
|
AiEArz5mC+TaVMsofIIFkEj+dOMD1/oj6w10zgVunTPb01wAdgCkQsUGSWBhVI8P
|
||||||
|
1Oqc+3otJkVNh6l/L99FWfYnTzqEVAAAAZetLYRWAAAEAwBHMEUCIFVulS2bEmSQ
|
||||||
|
HYcE2UbsHhn7WJl8MeWZJSKGG1LbtnvyAiEAsLHL/VyIfXVhOmcMf1gmPL/eu7xj
|
||||||
|
W/2JuPHVWgjUDhQwCgYIKoZIzj0EAwMDaAAwZQIxANaSy/SOYXq9+oQJNhpXIlMJ
|
||||||
|
i0HBvwebvhNVkNGJN2QodV5gE2yi4s4q19XkpFO+fQIwCCqLSQvaC+AcOTFT9XL5
|
||||||
|
6hk8bFapLf/b2EFv3DE06qKIrDVPWhtYwyEYBRT4Ii4p
|
||||||
|
-----END CERTIFICATE-----
|
||||||
26
SSL/chain.pem
Normale Datei
26
SSL/chain.pem
Normale Datei
@@ -0,0 +1,26 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEVzCCAj+gAwIBAgIRALBXPpFzlydw27SHyzpFKzgwDQYJKoZIhvcNAQELBQAw
|
||||||
|
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||||
|
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
|
||||||
|
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
|
||||||
|
RW5jcnlwdDELMAkGA1UEAxMCRTYwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATZ8Z5G
|
||||||
|
h/ghcWCoJuuj+rnq2h25EqfUJtlRFLFhfHWWvyILOR/VvtEKRqotPEoJhC6+QJVV
|
||||||
|
6RlAN2Z17TJOdwRJ+HB7wxjnzvdxEP6sdNgA1O1tHHMWMxCcOrLqbGL0vbijgfgw
|
||||||
|
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
|
||||||
|
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSTJ0aYA6lRaI6Y1sRCSNsj
|
||||||
|
v1iU0jAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
|
||||||
|
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
|
||||||
|
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
|
||||||
|
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAfYt7SiA1sgWGCIpunk46r4AExIRc
|
||||||
|
MxkKgUhNlrrv1B21hOaXN/5miE+LOTbrcmU/M9yvC6MVY730GNFoL8IhJ8j8vrOL
|
||||||
|
pMY22OP6baS1k9YMrtDTlwJHoGby04ThTUeBDksS9RiuHvicZqBedQdIF65pZuhp
|
||||||
|
eDcGBcLiYasQr/EO5gxxtLyTmgsHSOVSBcFOn9lgv7LECPq9i7mfH3mpxgrRKSxH
|
||||||
|
pOoZ0KXMcB+hHuvlklHntvcI0mMMQ0mhYj6qtMFStkF1RpCG3IPdIwpVCQqu8GV7
|
||||||
|
s8ubknRzs+3C/Bm19RFOoiPpDkwvyNfvmQ14XkyqqKK5oZ8zhD32kFRQkxa8uZSu
|
||||||
|
h4aTImFxknu39waBxIRXE4jKxlAmQc4QjFZoq1KmQqQg0J/1JF8RlFvJas1VcjLv
|
||||||
|
YlvUB2t6npO6oQjB3l+PNf0DpQH7iUx3Wz5AjQCi6L25FjyE06q6BZ/QlmtYdl/8
|
||||||
|
ZYao4SRqPEs/6cAiF+Qf5zg2UkaWtDphl1LKMuTNLotvsX99HP69V2faNyegodQ0
|
||||||
|
LyTApr/vT01YPE46vNsDLgK+4cL6TrzC/a4WcmF5SRJ938zrv/duJHLXQIku5v0+
|
||||||
|
EwOy59Hdm0PT/Er/84dDV0CSjdR/2XuZM3kpysSKLgD1cKiDA+IRguODCxfO9cyY
|
||||||
|
Ig46v9mFmBvyH04=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
49
SSL/fullchain.pem
Normale Datei
49
SSL/fullchain.pem
Normale Datei
@@ -0,0 +1,49 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIID3TCCA2OgAwIBAgISBimcX2wwj3Z1U/Qlfu5y5keoMAoGCCqGSM49BAMDMDIx
|
||||||
|
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
|
||||||
|
NjAeFw0yNTA2MjYxNjAwMjBaFw0yNTA5MjQxNjAwMTlaMBgxFjAUBgNVBAMTDWlu
|
||||||
|
dGVsc2lnaHQuZGUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATEQD6vfDoXM7Yz
|
||||||
|
iT75OmB/kvxoEebMFRBCzpTOdUZpThlFmLijjCsYnxc8DeWDn8/eLltrBWhuM4Yx
|
||||||
|
gX8tseO0o4ICcTCCAm0wDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUF
|
||||||
|
BwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSM5CYyn//CSmLp
|
||||||
|
JADwjccRtsnZFDAfBgNVHSMEGDAWgBSTJ0aYA6lRaI6Y1sRCSNsjv1iU0jAyBggr
|
||||||
|
BgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly9lNi5pLmxlbmNyLm9yZy8w
|
||||||
|
bgYDVR0RBGcwZYIfYWRtaW4tcGFuZWwtdW5kc28uaW50ZWxzaWdodC5kZYIgYXBp
|
||||||
|
LXNvZnR3YXJlLXVuZHNvLmludGVsc2lnaHQuZGWCDWludGVsc2lnaHQuZGWCEXd3
|
||||||
|
dy5pbnRlbHNpZ2h0LmRlMBMGA1UdIAQMMAowCAYGZ4EMAQIBMC0GA1UdHwQmMCQw
|
||||||
|
IqAgoB6GHGh0dHA6Ly9lNi5jLmxlbmNyLm9yZy80MS5jcmwwggEEBgorBgEEAdZ5
|
||||||
|
AgQCBIH1BIHyAPAAdgDM+w9qhXEJZf6Vm1PO6bJ8IumFXA2XjbapflTA/kwNsAAA
|
||||||
|
AZetLYOmAAAEAwBHMEUCIB8bQYn7h64sSmHZavNbIM6ScHDBxmMWN6WqjyaTz75I
|
||||||
|
AiEArz5mC+TaVMsofIIFkEj+dOMD1/oj6w10zgVunTPb01wAdgCkQsUGSWBhVI8P
|
||||||
|
1Oqc+3otJkVNh6l/L99FWfYnTzqEVAAAAZetLYRWAAAEAwBHMEUCIFVulS2bEmSQ
|
||||||
|
HYcE2UbsHhn7WJl8MeWZJSKGG1LbtnvyAiEAsLHL/VyIfXVhOmcMf1gmPL/eu7xj
|
||||||
|
W/2JuPHVWgjUDhQwCgYIKoZIzj0EAwMDaAAwZQIxANaSy/SOYXq9+oQJNhpXIlMJ
|
||||||
|
i0HBvwebvhNVkNGJN2QodV5gE2yi4s4q19XkpFO+fQIwCCqLSQvaC+AcOTFT9XL5
|
||||||
|
6hk8bFapLf/b2EFv3DE06qKIrDVPWhtYwyEYBRT4Ii4p
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEVzCCAj+gAwIBAgIRALBXPpFzlydw27SHyzpFKzgwDQYJKoZIhvcNAQELBQAw
|
||||||
|
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||||
|
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
|
||||||
|
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
|
||||||
|
RW5jcnlwdDELMAkGA1UEAxMCRTYwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATZ8Z5G
|
||||||
|
h/ghcWCoJuuj+rnq2h25EqfUJtlRFLFhfHWWvyILOR/VvtEKRqotPEoJhC6+QJVV
|
||||||
|
6RlAN2Z17TJOdwRJ+HB7wxjnzvdxEP6sdNgA1O1tHHMWMxCcOrLqbGL0vbijgfgw
|
||||||
|
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
|
||||||
|
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSTJ0aYA6lRaI6Y1sRCSNsj
|
||||||
|
v1iU0jAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
|
||||||
|
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
|
||||||
|
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
|
||||||
|
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAfYt7SiA1sgWGCIpunk46r4AExIRc
|
||||||
|
MxkKgUhNlrrv1B21hOaXN/5miE+LOTbrcmU/M9yvC6MVY730GNFoL8IhJ8j8vrOL
|
||||||
|
pMY22OP6baS1k9YMrtDTlwJHoGby04ThTUeBDksS9RiuHvicZqBedQdIF65pZuhp
|
||||||
|
eDcGBcLiYasQr/EO5gxxtLyTmgsHSOVSBcFOn9lgv7LECPq9i7mfH3mpxgrRKSxH
|
||||||
|
pOoZ0KXMcB+hHuvlklHntvcI0mMMQ0mhYj6qtMFStkF1RpCG3IPdIwpVCQqu8GV7
|
||||||
|
s8ubknRzs+3C/Bm19RFOoiPpDkwvyNfvmQ14XkyqqKK5oZ8zhD32kFRQkxa8uZSu
|
||||||
|
h4aTImFxknu39waBxIRXE4jKxlAmQc4QjFZoq1KmQqQg0J/1JF8RlFvJas1VcjLv
|
||||||
|
YlvUB2t6npO6oQjB3l+PNf0DpQH7iUx3Wz5AjQCi6L25FjyE06q6BZ/QlmtYdl/8
|
||||||
|
ZYao4SRqPEs/6cAiF+Qf5zg2UkaWtDphl1LKMuTNLotvsX99HP69V2faNyegodQ0
|
||||||
|
LyTApr/vT01YPE46vNsDLgK+4cL6TrzC/a4WcmF5SRJ938zrv/duJHLXQIku5v0+
|
||||||
|
EwOy59Hdm0PT/Er/84dDV0CSjdR/2XuZM3kpysSKLgD1cKiDA+IRguODCxfO9cyY
|
||||||
|
Ig46v9mFmBvyH04=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
5
SSL/privkey.pem
Normale Datei
5
SSL/privkey.pem
Normale Datei
@@ -0,0 +1,5 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgi8/a6iwFCHSbBe/I
|
||||||
|
2Zo6exFpcLL4icRgotOF605ZrY6hRANCAATEQD6vfDoXM7YziT75OmB/kvxoEebM
|
||||||
|
FRBCzpTOdUZpThlFmLijjCsYnxc8DeWDn8/eLltrBWhuM4YxgX8tseO0
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
1
backups/backup_v2docker_20250623_030000_encrypted.sql.gz.enc
Normale Datei
1
backups/backup_v2docker_20250623_030000_encrypted.sql.gz.enc
Normale Datei
Dateidiff unterdrückt, weil mindestens eine Zeile zu lang ist
255
cloud-init.yaml
Normale Datei
255
cloud-init.yaml
Normale Datei
@@ -0,0 +1,255 @@
|
|||||||
|
#cloud-config
|
||||||
|
package_update: true
|
||||||
|
package_upgrade: true
|
||||||
|
packages:
|
||||||
|
- apt-transport-https
|
||||||
|
- ca-certificates
|
||||||
|
- curl
|
||||||
|
- gnupg
|
||||||
|
- lsb-release
|
||||||
|
- ufw
|
||||||
|
- fail2ban
|
||||||
|
- git
|
||||||
|
|
||||||
|
write_files:
|
||||||
|
- path: /root/install-docker.sh
|
||||||
|
permissions: '0755'
|
||||||
|
content: |
|
||||||
|
#!/bin/bash
|
||||||
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||||
|
systemctl enable docker
|
||||||
|
systemctl start docker
|
||||||
|
|
||||||
|
- path: /etc/ssl/certs/fullchain.pem
|
||||||
|
permissions: '0644'
|
||||||
|
content: |
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIFKDCCBBCgAwIBAgISA3yPyKBqrYewZDI8pFbjQgs5MA0GCSqGSIb3DQEBCwUA
|
||||||
|
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
|
||||||
|
EwJSMzAeFw0yNTA2MjYyMjQ5MDJaFw0yNTA5MjQyMjQ5MDFaMBkxFzAVBgNVBAMT
|
||||||
|
DmludGVsc2lnaHQuZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDC
|
||||||
|
1HLwsBdUBayNJaJ7Wy1n8AeM6F7K0JAw6UQdW0sI8TNtOyZKaOrfTmKBgdxpBnFx
|
||||||
|
nj7QiIVu8bUczZGcQcKoOLH6X5cJtOvUQRBGzYHlWhCGi7M3JAKjQoKyGiT2uRiZ
|
||||||
|
P4JsJaVVOJyq1eO5c77TJa9jvAA0qfuWVTzLUDWM1oIJr8zyDHNTM7gK17c1p3XB
|
||||||
|
F3gGDGCdIj5o1oXJxdNzDgLTqJeqSGKLfLwOTsFiCCjntyVjcQCHaceCdGx4tC+F
|
||||||
|
Kcx/d5p+Jc6xj7pVvQoqP0Kg1YA6VkX9hLKUCiNlSHhQJbnj8rhfLPtMfHRoZjQT
|
||||||
|
oazP3Sq6DLGdKJ7TdL2nAgMBAAGjggJNMIICSTAOBgNVHQ8BAf8EBAMCBaAwHQYD
|
||||||
|
VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0O
|
||||||
|
BBYEFHl38d4egKf7gkUvW3XKKNOmhQtzMB8GA1UdIwQYMBaAFBQusxe3WFbLrlAJ
|
||||||
|
QOYfr52LFMLGMFUGCCsGAQUFBwEBBEkwRzAhBggrBgEFBQcwAYYVaHR0cDovL3Iz
|
||||||
|
Lm8ubGVuY3Iub3JnMCIGCCsGAQUFBzAChhZodHRwOi8vcjMuaS5sZW5jci5vcmcv
|
||||||
|
MIGFBgNVHREEfjB8gg5pbnRlbHNpZ2h0LmRlgidhZG1pbi1wYW5lbC11bmRzby5p
|
||||||
|
bnRlbHNpZ2h0LmRlgidwa2ktc29mdHdhcmUtdW5kc28uaW50ZWxzaWdodC5kZYIS
|
||||||
|
d3d3LmludGVsc2lnaHQuZGWCHmNkOS03YTMyMS5pbnRlbHNpZ2h0LmRlMBMGA1Ud
|
||||||
|
IAQMMAowCAYGZ4EMAQIBMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHcAzxFPn/xF
|
||||||
|
z4pBaLc8BWh7G7KQJ7WUYYJapBgTyBmOSwAAAZA2NCNCAAAEAwBIMEYCIQCb4Rfu
|
||||||
|
RJTLkAqV8aG6HqQBFJBGqsLOd5a4cQQE8aAM0QIhAKRY5M8/HuDz8oSI3w0SyAKB
|
||||||
|
IPZ1cOyEaR2BcLc8JqsEAHUA8aLLMkJi8F4QbRcE7GL7GQZQ7ypXK5Wtj5jqF1FC
|
||||||
|
H0MAAAGQNjQjQwAABAMARjBEAiAdqzfZkNGBGWGQ8kfKQtE7iiAa6FNHnEhjW1Nu
|
||||||
|
GlYAFgIgCjRD9awGfJ4lMM8e2TBaA5dKkSsEgWKtGKTjvxkz2VEwDQYJKoZIhvcN
|
||||||
|
AQELBQADggEBAJX3KxSxdOBOiqW3pJTSEsABKh0h8B8kP5vUAXRzxVcGJY3aJb5Y
|
||||||
|
DqcTI9ykBQyJM1mB1/VFWZKkINB4p5KqLoY2EBxRj2qXnAhHzNrEptYFk16VQJcc
|
||||||
|
Xfhv6XKD9yPQTMsHBnfWGQxMYOZbLa5lZM0QLo7T+f8fBOl7u8CwRJZa7wA3Z3F3
|
||||||
|
Kw0+0FHjBZOu9wt2U0B0BmUIe8GGNacTbP3JCUOQpMQJbhWnGJtVpEL8HT01qWcl
|
||||||
|
oZA3nSQm9yD1G6l5aJyIDGdQ4C3/VJ0T3ZlQGXECnQWxCuU6v2lOQXvnQGcSvN+v
|
||||||
|
kNiRMCT3tXgLhCcr/6daDKYNOJ3EAVIvNx0=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
nLRbwHOoq7hHwg==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/
|
||||||
|
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
|
||||||
|
DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow
|
||||||
|
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||||
|
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB
|
||||||
|
AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC
|
||||||
|
ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshwLLezUmgD5HwmJAp32sIGkeG
|
||||||
|
VPMDCa/Lr+TyTjnhOWgjf7lJJhiaYFBSqygRz0t0IQ1GRomrn1Ktu3R7DJK0bhrP
|
||||||
|
4x6+wLpTABEZaHQKxZNljWhJXgxvTNKK6NXBmfAhYZ4+l4W0aMa8kU2Cz8lhCM6i
|
||||||
|
JnyYcPc9w9YaYJ2Gy1t3wgezPpNTItzPRMpT7p/NnDhqI9/gJvdFfZxgdmdPnTBw
|
||||||
|
Q5XgZbBB9X3YD8LhI8NsHL1A7a0u8UdL6fkv8R9p7RfC8IA3llXevPS11wUAZcBF
|
||||||
|
QYJxk4qN9bDYcBdQ0OZ2dOVFBLdCFPuS+iqQBFH2N5fjb9LKgIFrdWJaXEGz70kD
|
||||||
|
Dq6gIx1SBLyooZKwYvG3Di2E7GvcbnyLqHtCPF/Ky1r3eMZTLZ8PAJhyvggYgOn8
|
||||||
|
aNT1+Fo/7+yzFKP8HUlTBRBqKu+8dacN2tGHKjWuiLkahY/xGpPwlKz1wP+4lBEB
|
||||||
|
VHM9I1cLH+2d7fkBATMqQQMmIaulslYkCBVHeZCDleVQpkq7T2RgwADVb8J3stW3
|
||||||
|
e0MZF9HckdZXQPKPYK29oJi7xr5nTMPQDz3FuNhqNYY7JLdWkoLuuONFDgrHLRmd
|
||||||
|
TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
|
||||||
|
SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1
|
||||||
|
c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx
|
||||||
|
+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB
|
||||||
|
ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu
|
||||||
|
b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E
|
||||||
|
U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu
|
||||||
|
MA0GCSqGSIb3DQEBCwUAA4IBAQBg4WZmUUxiK3EiwSr1mSWPpnDHVD1GVVxbOyZC
|
||||||
|
S8+Pf6vDf6tSgqYJ/mLDNtjfLwKy8RBcKwMxkBq5c1FqcTB4tL7IzCOLMCDH4XYP
|
||||||
|
K0LQ1d5sQNaKZBiJOUPb7oqfwJQVjDuTXl3hcqBhyz2HDvAPkCIPfcIwyhVhucHH
|
||||||
|
yN9mqPNgYWVGKF3cWQqEQ9ombqCr5ASCvSoEZL/YQM1Zv0j/RdZ5qf+ZwJttL3dP
|
||||||
|
+t4cpNAl0z7ly6XF/FMwkRFanNg56TjB8aXq0mEJPGBWQgOw7hCYPKNaBaHRPQUH
|
||||||
|
Lb6XBWI3p2gqQjFJ5KhSMN8mPgqhm8RlJmWWJUMlGsiVr3WE
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
- path: /etc/ssl/private/privkey.pem
|
||||||
|
permissions: '0600'
|
||||||
|
content: |
|
||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDC1HLwsBdUBayN
|
||||||
|
JaJ7Wy1n8AeM6F7K0JAw6UQdW0sI8TNtOyZKaOrfTmKBgdxpBnFxnj7QiIVu8bUc
|
||||||
|
zZGcQcKoOLH6X5cJtOvUQRBGzYHlWhCGi7M3JAKjQoKyGiT2uRiZP4JsJaVVOJyq
|
||||||
|
1eO5c77TJa9jvAA0qfuWVTzLUDWM1oIJr8zyDHNTM7gK17c1p3XBF3gGDGCdIj5o
|
||||||
|
1oXJxdNzDgLTqJeqSGKLfLwOTsFiCCjntyVjcQCHaceCdGx4tC+FKcx/d5p+Jc6x
|
||||||
|
j7pVvQoqP0Kg1YA6VkX9hLKUCiNlSHhQJbnj8rhfLPtMfHRoZjQToazP3Sq6DLGd
|
||||||
|
KJ7TdL2nAgMBAAECggEAAKJosDxdA6AQ1CvwQp8N1JL9ZAVqYf4Y9c9n6s+HFOBX
|
||||||
|
wPEsABHNdNAYQJnX5X8rcdXfQhwFKRBqR/0OKtaBEJ2yh9IzO6DKHsKcAsX2aEo8
|
||||||
|
2b+DFCJz7Ty2R7LJBt2oKJxLaVCJlH7nP2VglLK3oAMv9R0+9y1u7bxp4B5Xqkzm
|
||||||
|
LXnqkiN4MrnLJWLh2eIYcf0fJvL0xUmTQNXZa6PHzv8hfRcOkdJZGLFGRgABBXzi
|
||||||
|
Ek9/fTNwH0Rg8e6eTZdPzXOgkyQdRsHLQQa3j6DHKJKzP8kI1MKJ2yQELm15LT+E
|
||||||
|
0U3QIDgxcKHBzOoKJFE/MzL+NXQ9s+vdT3f1mzLJiQKBgQDgfwOQLm2lUaNcDNgf
|
||||||
|
A+WLaL1a6ysEG2cDUiwsBSRRUH/5llMEbyFxdPw2sqdVsRkBBaHdJCINkDJGm/kI
|
||||||
|
/xvJxD3KcBVLSdmHq/qO4pbGxBDRNvzrRO5Yoaiv5xDk2rQF3lm1m3vWdI6YFhq3
|
||||||
|
j8qxE4/YjHNQOqfr7a0j+3j9dQKBgQDeBcQD2y7k7KAyRAv5Sh8AjbDSNjvFz3hE
|
||||||
|
TnJcjeeuTfmKdOBCm5mDCH+vGhBczRoHO9vVnqxLO3dJOWHqf8z7BPTBU4Bpm6zt
|
||||||
|
5CJWP5jCbQU8+S0g1vgdUBzRrXFE4I9ZxCvJ5k6mfzVOvPcb0OV2gJGcxPbg2xT5
|
||||||
|
uTn7VRTq6wKBgQCGF5yE6DVdMoqh5kjQBjjIObKtXRtJpGxuJ2VDfNYP8Klu6zAZ
|
||||||
|
zP3hKrUQO0IKJBxOwT/D8VZ4IKLK7y0q3Fb8+rsCxJzPM7J5UtKbQPPOdAbRFPCA
|
||||||
|
J4fE/YJu4g/sUpTdxq3lVqJ9P4rJyg3JJfn8aRAMOuhhNu6VJ9BlBTe3rQKBgQCv
|
||||||
|
OHXzS9VV9WMfhpN/UR4Q+LAqwQUKW0HFCkkYiDK/jJ2YNMU+m9e8JUrZOxZ9N1gF
|
||||||
|
IHJyGppZTxI5y1swCRqfGf+JuR7TKzHD7RK0L7F1q8hJwFjJA4xflg0RRvk5hfQa
|
||||||
|
WX3rA7SnC2T7b7DlxnVu+j2KNz0BnmKlhEFVOx7CnQKBgCdHRsDGXJGmGqhG1sH8
|
||||||
|
PHdT1vA0iKLiouI+/WxtJwA2Y3FKcHjzJz+lX6ucsW5V+dKZuIWKDvuJQsJb1qJb
|
||||||
|
yiuEZdWy5iLOON0m10AX3WyfxT8A5NWkCBVH6K6IYOiJcBFGVfGXpP3kc1g8NqKd
|
||||||
|
K1DU5qILAZENMZLGKJfrwyxm
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
|
|
||||||
|
- path: /root/deploy.sh
|
||||||
|
permissions: '0755'
|
||||||
|
content: |
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Clone repository
|
||||||
|
cd /opt
|
||||||
|
# IMPORTANT: Replace YOUR_GITHUB_TOKEN with a valid GitHub Personal Access Token with 'repo' permissions
|
||||||
|
GITHUB_TOKEN="YOUR_GITHUB_TOKEN"
|
||||||
|
git clone https://${GITHUB_TOKEN}@github.com/UserIsMH/v2-Docker.git
|
||||||
|
cd v2-Docker
|
||||||
|
|
||||||
|
# Remove token from git config
|
||||||
|
git remote set-url origin https://github.com/UserIsMH/v2-Docker.git
|
||||||
|
|
||||||
|
# Update nginx.conf with correct domains
|
||||||
|
sed -i 's/admin-panel-undso\.z5m7q9dk3ah2v1plx6ju\.com/admin-panel-undso.intelsight.de/g' v2_nginx/nginx.conf
|
||||||
|
sed -i 's/api-software-undso\.z5m7q9dk3ah2v1plx6ju\.com/api-software-undso.intelsight.de/g' v2_nginx/nginx.conf
|
||||||
|
|
||||||
|
# Update .env file
|
||||||
|
sed -i 's/API_DOMAIN=.*/API_DOMAIN=api-software-undso.intelsight.de/' v2/.env
|
||||||
|
sed -i 's/ADMIN_PANEL_DOMAIN=.*/ADMIN_PANEL_DOMAIN=admin-panel-undso.intelsight.de/' v2/.env
|
||||||
|
|
||||||
|
# Copy SSL certificates
|
||||||
|
mkdir -p v2_nginx/ssl
|
||||||
|
cp /etc/ssl/certs/fullchain.pem v2_nginx/ssl/
|
||||||
|
cp /etc/ssl/private/privkey.pem v2_nginx/ssl/
|
||||||
|
chmod 644 v2_nginx/ssl/fullchain.pem
|
||||||
|
chmod 600 v2_nginx/ssl/privkey.pem
|
||||||
|
|
||||||
|
# Generate DH parameters if not exist
|
||||||
|
if [ ! -f v2_nginx/ssl/dhparam.pem ]; then
|
||||||
|
openssl dhparam -out v2_nginx/ssl/dhparam.pem 2048
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start Docker services
|
||||||
|
cd v2
|
||||||
|
docker compose pull
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# Wait for services to be ready
|
||||||
|
sleep 30
|
||||||
|
|
||||||
|
# Check if services are running
|
||||||
|
docker compose ps
|
||||||
|
|
||||||
|
# Enable auto-start
|
||||||
|
cat > /etc/systemd/system/docker-compose-app.service <<EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Docker Compose Application Service
|
||||||
|
Requires=docker.service
|
||||||
|
After=docker.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
RemainAfterExit=yes
|
||||||
|
WorkingDirectory=/opt/v2-Docker/v2
|
||||||
|
ExecStart=/usr/bin/docker compose up -d
|
||||||
|
ExecStop=/usr/bin/docker compose down
|
||||||
|
TimeoutStartSec=0
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl enable docker-compose-app
|
||||||
|
|
||||||
|
- path: /etc/fail2ban/jail.local
|
||||||
|
permissions: '0644'
|
||||||
|
content: |
|
||||||
|
[DEFAULT]
|
||||||
|
bantime = 3600
|
||||||
|
findtime = 600
|
||||||
|
maxretry = 5
|
||||||
|
|
||||||
|
[sshd]
|
||||||
|
enabled = true
|
||||||
|
port = ssh
|
||||||
|
filter = sshd
|
||||||
|
logpath = /var/log/auth.log
|
||||||
|
maxretry = 3
|
||||||
|
|
||||||
|
swap:
|
||||||
|
filename: /swapfile
|
||||||
|
size: 2G
|
||||||
|
maxsize: 2G
|
||||||
|
|
||||||
|
runcmd:
|
||||||
|
- chmod 600 /etc/ssl/private/privkey.pem
|
||||||
|
- /root/install-docker.sh
|
||||||
|
- ufw allow 22/tcp
|
||||||
|
- ufw allow 80/tcp
|
||||||
|
- ufw allow 443/tcp
|
||||||
|
- echo "y" | ufw enable
|
||||||
|
- systemctl enable fail2ban
|
||||||
|
- systemctl start fail2ban
|
||||||
|
- /root/deploy.sh
|
||||||
|
- echo "Deployment complete!" > /root/deployment.log
|
||||||
|
- reboot
|
||||||
|
|
||||||
|
final_message: "The system is finally up, after $UPTIME seconds"
|
||||||
35
generate-secrets.py
Normale Datei
35
generate-secrets.py
Normale Datei
@@ -0,0 +1,35 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import secrets
|
||||||
|
import string
|
||||||
|
|
||||||
|
def generate_password(length=16):
|
||||||
|
"""Generate a secure random password"""
|
||||||
|
alphabet = string.ascii_letters + string.digits + "!@#$%^&*"
|
||||||
|
return ''.join(secrets.choice(alphabet) for _ in range(length))
|
||||||
|
|
||||||
|
def generate_jwt_secret(length=64):
|
||||||
|
"""Generate a secure JWT secret"""
|
||||||
|
return secrets.token_urlsafe(length)
|
||||||
|
|
||||||
|
print("=== Generated Secure Secrets for Production ===")
|
||||||
|
print()
|
||||||
|
print("# PostgreSQL Database")
|
||||||
|
print(f"POSTGRES_PASSWORD={generate_password(20)}")
|
||||||
|
print()
|
||||||
|
print("# Admin Panel Users (save these securely!)")
|
||||||
|
print(f"ADMIN1_PASSWORD={generate_password(16)}")
|
||||||
|
print(f"ADMIN2_PASSWORD={generate_password(16)}")
|
||||||
|
print()
|
||||||
|
print("# JWT Secret")
|
||||||
|
print(f"JWT_SECRET={generate_jwt_secret()}")
|
||||||
|
print()
|
||||||
|
print("# Grafana")
|
||||||
|
print(f"GRAFANA_PASSWORD={generate_password(16)}")
|
||||||
|
print()
|
||||||
|
print("# For v2_lizenzserver/.env")
|
||||||
|
print(f"SECRET_KEY={secrets.token_hex(32)}")
|
||||||
|
print()
|
||||||
|
print("=== IMPORTANT ===")
|
||||||
|
print("1. Save these passwords securely")
|
||||||
|
print("2. Update both .env files with these values")
|
||||||
|
print("3. Never commit these to git")
|
||||||
4
v2/.env
4
v2/.env
@@ -13,8 +13,8 @@ ADMIN2_PASSWORD=Warhammer123!
|
|||||||
|
|
||||||
|
|
||||||
# Domains (können von der App ausgewertet werden, z. B. für Links oder CORS)
|
# Domains (können von der App ausgewertet werden, z. B. für Links oder CORS)
|
||||||
API_DOMAIN=api-software-undso.z5m7q9dk3ah2v1plx6ju.com
|
API_DOMAIN=api-software-undso.intelsight.de
|
||||||
ADMIN_PANEL_DOMAIN=admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com
|
ADMIN_PANEL_DOMAIN=admin-panel-undso.intelsight.de
|
||||||
|
|
||||||
# ===================== OPTIONALE VARIABLEN =====================
|
# ===================== OPTIONALE VARIABLEN =====================
|
||||||
|
|
||||||
|
|||||||
56
v2/.env.production.template
Normale Datei
56
v2/.env.production.template
Normale Datei
@@ -0,0 +1,56 @@
|
|||||||
|
# PostgreSQL-Datenbank
|
||||||
|
POSTGRES_DB=meinedatenbank
|
||||||
|
POSTGRES_USER=adminuser
|
||||||
|
# IMPORTANT: Generate a strong password using generate-secrets.py
|
||||||
|
POSTGRES_PASSWORD=CHANGE_THIS_STRONG_PASSWORD
|
||||||
|
|
||||||
|
# Admin-Panel Zugangsdaten
|
||||||
|
ADMIN1_USERNAME=rac00n
|
||||||
|
ADMIN1_PASSWORD=1248163264
|
||||||
|
ADMIN2_USERNAME=w@rh@mm3r
|
||||||
|
ADMIN2_PASSWORD=Warhammer123!
|
||||||
|
|
||||||
|
# Domains
|
||||||
|
API_DOMAIN=api-software-undso.intelsight.de
|
||||||
|
ADMIN_PANEL_DOMAIN=admin-panel-undso.intelsight.de
|
||||||
|
|
||||||
|
# JWT für API-Auth (WICHTIG: Für sichere Token-Verschlüsselung!)
|
||||||
|
# IMPORTANT: Generate using generate-secrets.py
|
||||||
|
JWT_SECRET=CHANGE_THIS_GENERATE_SECURE_SECRET
|
||||||
|
|
||||||
|
# E-Mail Konfiguration (optional)
|
||||||
|
# MAIL_SERVER=smtp.meinedomain.de
|
||||||
|
# MAIL_PORT=587
|
||||||
|
# MAIL_USERNAME=deinemail
|
||||||
|
# MAIL_PASSWORD=geheim
|
||||||
|
# MAIL_FROM=no-reply@intelsight.de
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
LOG_LEVEL=info
|
||||||
|
|
||||||
|
# Erlaubte CORS-Domains (für Web-Frontend)
|
||||||
|
ALLOWED_ORIGINS=https://admin-panel-undso.intelsight.de
|
||||||
|
|
||||||
|
# VERSION
|
||||||
|
LATEST_CLIENT_VERSION=1.0.0
|
||||||
|
|
||||||
|
# BACKUP KONFIGURATION
|
||||||
|
EMAIL_ENABLED=false
|
||||||
|
|
||||||
|
# CAPTCHA KONFIGURATION (optional für PoC)
|
||||||
|
# RECAPTCHA_SITE_KEY=your-site-key-here
|
||||||
|
# RECAPTCHA_SECRET_KEY=your-secret-key-here
|
||||||
|
|
||||||
|
# MONITORING KONFIGURATION
|
||||||
|
GRAFANA_USER=admin
|
||||||
|
# IMPORTANT: Generate a strong password using generate-secrets.py
|
||||||
|
GRAFANA_PASSWORD=CHANGE_THIS_STRONG_PASSWORD
|
||||||
|
|
||||||
|
# SMTP Settings for Alertmanager (optional)
|
||||||
|
# SMTP_USERNAME=your-email@gmail.com
|
||||||
|
# SMTP_PASSWORD=your-app-password
|
||||||
|
|
||||||
|
# Webhook URLs for critical alerts (optional)
|
||||||
|
# WEBHOOK_CRITICAL=https://your-webhook-url/critical
|
||||||
|
# WEBHOOK_SECURITY=https://your-webhook-url/security
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ JSON_AS_ASCII = False
|
|||||||
JSONIFY_MIMETYPE = 'application/json; charset=utf-8'
|
JSONIFY_MIMETYPE = 'application/json; charset=utf-8'
|
||||||
PERMANENT_SESSION_LIFETIME = timedelta(minutes=5)
|
PERMANENT_SESSION_LIFETIME = timedelta(minutes=5)
|
||||||
SESSION_COOKIE_HTTPONLY = True
|
SESSION_COOKIE_HTTPONLY = True
|
||||||
SESSION_COOKIE_SECURE = False # Set to True when HTTPS (internal runs HTTP)
|
SESSION_COOKIE_SECURE = os.getenv("SESSION_COOKIE_SECURE", "true").lower() == "true" # Default True for HTTPS
|
||||||
SESSION_COOKIE_SAMESITE = 'Lax'
|
SESSION_COOKIE_SAMESITE = 'Lax'
|
||||||
SESSION_COOKIE_NAME = 'admin_session'
|
SESSION_COOKIE_NAME = 'admin_session'
|
||||||
SESSION_REFRESH_EACH_REQUEST = False
|
SESSION_REFRESH_EACH_REQUEST = False
|
||||||
|
|||||||
8
v2_lizenzserver/.env.production.template
Normale Datei
8
v2_lizenzserver/.env.production.template
Normale Datei
@@ -0,0 +1,8 @@
|
|||||||
|
# IMPORTANT: Generate a secure secret key using generate-secrets.py
|
||||||
|
SECRET_KEY=CHANGE_THIS_GENERATE_SECURE_SECRET
|
||||||
|
|
||||||
|
# Database connection (password should match v2/.env)
|
||||||
|
DATABASE_URL=postgresql://adminuser:CHANGE_THIS_STRONG_PASSWORD@db:5432/meinedatenbank
|
||||||
|
|
||||||
|
# Production mode
|
||||||
|
DEBUG=False
|
||||||
@@ -38,7 +38,7 @@ http {
|
|||||||
# Admin Panel
|
# Admin Panel
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com;
|
server_name admin-panel-undso.intelsight.de;
|
||||||
|
|
||||||
# Redirect HTTP to HTTPS
|
# Redirect HTTP to HTTPS
|
||||||
return 301 https://$server_name$request_uri;
|
return 301 https://$server_name$request_uri;
|
||||||
@@ -46,7 +46,7 @@ http {
|
|||||||
|
|
||||||
server {
|
server {
|
||||||
listen 443 ssl;
|
listen 443 ssl;
|
||||||
server_name admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com;
|
server_name admin-panel-undso.intelsight.de;
|
||||||
|
|
||||||
# SSL-Zertifikate (echte Zertifikate)
|
# SSL-Zertifikate (echte Zertifikate)
|
||||||
ssl_certificate /etc/nginx/ssl/fullchain.pem;
|
ssl_certificate /etc/nginx/ssl/fullchain.pem;
|
||||||
@@ -87,14 +87,14 @@ http {
|
|||||||
# API Server (für später)
|
# API Server (für später)
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name api-software-undso.z5m7q9dk3ah2v1plx6ju.com;
|
server_name api-software-undso.intelsight.de;
|
||||||
|
|
||||||
return 301 https://$server_name$request_uri;
|
return 301 https://$server_name$request_uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 443 ssl;
|
listen 443 ssl;
|
||||||
server_name api-software-undso.z5m7q9dk3ah2v1plx6ju.com;
|
server_name api-software-undso.intelsight.de;
|
||||||
|
|
||||||
ssl_certificate /etc/nginx/ssl/fullchain.pem;
|
ssl_certificate /etc/nginx/ssl/fullchain.pem;
|
||||||
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
|
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
|
||||||
|
|||||||
10
v2_nginx/ssl/.gitignore
vendored
Normale Datei
10
v2_nginx/ssl/.gitignore
vendored
Normale Datei
@@ -0,0 +1,10 @@
|
|||||||
|
# Ignore all SSL certificates
|
||||||
|
*.pem
|
||||||
|
*.crt
|
||||||
|
*.key
|
||||||
|
*.p12
|
||||||
|
*.pfx
|
||||||
|
|
||||||
|
# But keep the README
|
||||||
|
!README.md
|
||||||
|
!.gitignore
|
||||||
29
v2_nginx/ssl/README.md
Normale Datei
29
v2_nginx/ssl/README.md
Normale Datei
@@ -0,0 +1,29 @@
|
|||||||
|
# SSL Certificate Directory
|
||||||
|
|
||||||
|
This directory should contain the following files for SSL to work:
|
||||||
|
|
||||||
|
1. **fullchain.pem** - The full certificate chain
|
||||||
|
2. **privkey.pem** - The private key (keep this secure!)
|
||||||
|
3. **dhparam.pem** - Diffie-Hellman parameters for enhanced security
|
||||||
|
|
||||||
|
## For intelsight.de deployment:
|
||||||
|
|
||||||
|
Copy your SSL certificates here:
|
||||||
|
```bash
|
||||||
|
cp /path/to/fullchain.pem ./
|
||||||
|
cp /path/to/privkey.pem ./
|
||||||
|
```
|
||||||
|
|
||||||
|
Generate dhparam.pem if not exists:
|
||||||
|
```bash
|
||||||
|
openssl dhparam -out dhparam.pem 2048
|
||||||
|
```
|
||||||
|
|
||||||
|
## File Permissions:
|
||||||
|
```bash
|
||||||
|
chmod 644 fullchain.pem
|
||||||
|
chmod 600 privkey.pem
|
||||||
|
chmod 644 dhparam.pem
|
||||||
|
```
|
||||||
|
|
||||||
|
**IMPORTANT**: Never commit actual SSL certificates to the repository!
|
||||||
123
verify-deployment.sh
Normale Datei
123
verify-deployment.sh
Normale Datei
@@ -0,0 +1,123 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "=== V2-Docker Deployment Verification Script ==="
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Colors for output
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Check function
|
||||||
|
check() {
|
||||||
|
if [ $1 -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✓${NC} $2"
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗${NC} $2"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Warning function
|
||||||
|
warn() {
|
||||||
|
echo -e "${YELLOW}⚠${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "1. Checking Docker installation..."
|
||||||
|
docker --version > /dev/null 2>&1
|
||||||
|
check $? "Docker installed"
|
||||||
|
|
||||||
|
docker compose version > /dev/null 2>&1
|
||||||
|
check $? "Docker Compose installed"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "2. Checking SSL certificates..."
|
||||||
|
if [ -f "v2_nginx/ssl/fullchain.pem" ]; then
|
||||||
|
check 0 "fullchain.pem exists"
|
||||||
|
else
|
||||||
|
check 1 "fullchain.pem missing - copy from /SSL/ or your certificate location"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "v2_nginx/ssl/privkey.pem" ]; then
|
||||||
|
check 0 "privkey.pem exists"
|
||||||
|
else
|
||||||
|
check 1 "privkey.pem missing - copy from /SSL/ or your certificate location"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "v2_nginx/ssl/dhparam.pem" ]; then
|
||||||
|
check 0 "dhparam.pem exists"
|
||||||
|
else
|
||||||
|
warn "dhparam.pem missing - will be generated (this takes a few minutes)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "3. Checking configuration files..."
|
||||||
|
if grep -q "intelsight.de" v2_nginx/nginx.conf; then
|
||||||
|
check 0 "nginx.conf has correct domain (intelsight.de)"
|
||||||
|
else
|
||||||
|
check 1 "nginx.conf still has test domain"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep -q "intelsight.de" v2/.env; then
|
||||||
|
check 0 ".env has correct domain (intelsight.de)"
|
||||||
|
else
|
||||||
|
check 1 ".env still has test domain"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "4. Checking Docker services..."
|
||||||
|
cd v2 2>/dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
if docker compose ps 2>/dev/null | grep -q "running"; then
|
||||||
|
check 0 "Docker services are running"
|
||||||
|
docker compose ps
|
||||||
|
else
|
||||||
|
warn "Docker services not running yet"
|
||||||
|
fi
|
||||||
|
cd ..
|
||||||
|
else
|
||||||
|
warn "v2 directory not found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "5. Checking network connectivity..."
|
||||||
|
if command -v ss &> /dev/null; then
|
||||||
|
if ss -tlnp 2>/dev/null | grep -q ":80"; then
|
||||||
|
check 0 "Port 80 is listening"
|
||||||
|
else
|
||||||
|
warn "Port 80 not listening yet"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ss -tlnp 2>/dev/null | grep -q ":443"; then
|
||||||
|
check 0 "Port 443 is listening"
|
||||||
|
else
|
||||||
|
warn "Port 443 not listening yet"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
warn "ss command not found, skipping port check"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "=== Quick Start Commands ==="
|
||||||
|
echo
|
||||||
|
echo "1. If SSL certificates are missing:"
|
||||||
|
echo " cp /SSL/fullchain.pem v2_nginx/ssl/"
|
||||||
|
echo " cp /SSL/privkey.pem v2_nginx/ssl/"
|
||||||
|
echo " chmod 644 v2_nginx/ssl/fullchain.pem"
|
||||||
|
echo " chmod 600 v2_nginx/ssl/privkey.pem"
|
||||||
|
echo
|
||||||
|
echo "2. Generate dhparam.pem if missing:"
|
||||||
|
echo " openssl dhparam -out v2_nginx/ssl/dhparam.pem 2048"
|
||||||
|
echo
|
||||||
|
echo "3. Start Docker services:"
|
||||||
|
echo " cd v2"
|
||||||
|
echo " docker compose up -d"
|
||||||
|
echo
|
||||||
|
echo "4. Check logs:"
|
||||||
|
echo " docker compose logs -f"
|
||||||
|
echo
|
||||||
|
echo "=== URLs after deployment ==="
|
||||||
|
echo "Admin Panel: https://admin-panel-undso.intelsight.de"
|
||||||
|
echo "API Server: https://api-software-undso.intelsight.de"
|
||||||
|
echo
|
||||||
In neuem Issue referenzieren
Einen Benutzer sperren