**My-Coach-Finder - das CRM für Coches** ====== Schnellzugriff ====== [[https://my-coach-finder.com]] ---- Großer Server - all in One Projekt Hostname: v2202601103831429807.luckysrv.de IP: 159.195.74.158/22, 2a0a:4cc0:c2:3efb:d418:20ff:fe47:a229 Benutzername: root Passwort: 4KpwgOMTtxmA4o3 ssh root@159.195.74.158 ---- sudo claude #SSH ssh root@152.53.155.162 mosh root@152.53.155.162 -- tmux attach -t meine-session || tmux new -s meine-session tmux new -s mcv npx @anthropic-ai/claude-code #port: 22 #pw_old: 046j2k52"bK4--TT1S6447jSZ #pw_new: fwelk3jwekfj234kjllkFWEFWEjh234234lkdgfdQPjHsa234 cd /var/www/html/ # su - webdev pw: 1234 claude --dangerously-skip-permissions codex --dangerously-bypass-approvals-and-sandbox --------------------------------------------------- Hostname: v2202510103831386760.supersrv.de IP: 152.53.155.162/22, 2a00:11c0:47:333a::/64 Root Passwort: 046bK41S6447jSZ --------------------------------------------------- #debian 12 (bookworm) - minimal # System information: IP address: 152.53.155.162 Hostname: v2202510103831386760.supersrv.de #phpmyadmin #URL: https://phpmyadmin.my-coach-finder.com #Username: fastapi_user #Password: ga188qfwtPDr2fO3ILNG #Database: fastapi_db ====== MCF 1.O Server ====== [[https://my-coach-finder.de]] claer npx @anthropic-ai/claude-code #SSH 1. A ssh boothtml@185.207.106.68 -p 2222 1. B autossh -M 0 -p 2222 boothtml@185.207.106.68 1.1 wf234fhkj#P 2. su 2.1 grewglwehljkh435lkhjk354gj3456kjhg 3. cd /var/www/html/live1/ neu grewglwehljkh435lkhjk354gj3456kjhg sudo systemctl restart live1 #debug gunicorn -w 4 'app:app' killall gvfsd-sftp ; killall Thunar ; killall thunar #684 systemctl reload nginx Template 1,2,3 : https://mcf-t1.boothtml.de/ ====== Dinge die unklar sind ====== * Was und wie nach Kauf (Rechnug/Gled/etc) * Wie sieht Coachee bereich aus (was kann er/es?) * Funktioniert passwort rest? -> JA * was braucht Coach wirklich -> KBF? ====== Aktuelle Engpässe ====== * Geld beschaffung/Einnahmen * Kein Personal für Aufgaben erledigung * Kein Geld für Personal * Motivations schwierigkeiten * Wissen im Breich: {{ ::alex_fischer_fragebogen_ausgewertet_21_11_2024.pdf |}} {{::bildschirmfoto_2024-11-21_13-45-51.png?400|}} [[https://my-coach-finder.de/admin_akademie]] ==== Engpasskonzentrierte Strategie (EKS) ==== **4 Grundprinzipien** * Konzentration der Kräfte auf Stärkenpotenziale, Abbau von Verzettelung * Orientierung der Kräfte auf eine engumrissene Zielgruppe * In die Lücke (Marktnische) gehen * Sich in die Tiefe der Problemlösung entwickeln, Marktführerschaft anstreben ====== Tägliches Buissnes ====== **Montag:** * **Newsletter** Report -> neuste Updates **Dinstag** * **Beitäge** für Instgarm und Facebook erstellen und planen **Mittwoch** * **Kaltaquise** mit Coaches Telfoniren **Donnastag** **Freitag** **Samstag** **Sonntag** ====== Master Plan MyCoachFinder ====== ==== Bau-Phase 1.0 Veröffendlichung ==== * APP in PlayStore * APP in AppelStore * Grundfunktionen auf App + Webseite ==== Bau-Phase 1.2 Coach finden ==== ''MCF Panel-Funktionen sind sekundär'' * Coach anzeigen mit Infos mit und ohne anmeldung * Coach-Offer anzeigen mit infos mit und ohne anmeldung * Coaches auf Startseite -> Startseite haubrsächlich für Angebote * Startseite schnell und Performant und Optisch gut * funktionirende Suche mit Ortsangebe/map ==== Bau-Phase 2 Marktforschung/Zielgruppenkompetenz bildung ==== * Podcast als Kostengünstige Werbung / Reichweite / Zielgruppen-Verständnis * aktives Werbungschalten * Auf Messen Präent sein * ersten Paar Tausend € umsetzten * gute Demo + aktiv Kundenaquise Suchende+**Coaches** * heruaarbeiten und entwickln was relvat für Zielgruppe ist * Google Login / Appel Login **Telefone- VERTRIEB** ==== Bau-Phase 3 höhre Automatirungsrate ==== * 200 Coaches * über 200 Kunden * voll Automatierte Rechungstellung ==== Bau-Phase 4 Internationalisirung Teil 1 ==== * "automatischer" Kunde support * ausweiten auf gesamte Dach Region * Englischer Text Support ==== Bau-Phase 5 Internationalisirung Teil 2 ==== * ??? ==== Bau-Phase 6 ==== ==== Bau-Phase 7 ==== ==== Bau-Phase 8 ==== * Mehre Millionen Jahresumsatz im Jahr ====== Funktionen ====== {{::funktions_matrix.png?400|}} {{::bildschirmfoto_2024-11-26_14-03-27.png?400|}} https://tentary.com/de/pricing ====== Steuern ====== ==== Steuern Begriffe ==== Ich bin **Gewerbetreibender** nicht Freiberuflich **Kirchensteuer** 9% **Einkommensteuer** ->[Erhebungsform] Kapitalertragsteuer = Lohnsteuer = freibetrag bis 10347€ im Jahr - Einkommensteuererklärung immer abgeben auch unter freibetrag **Gewerbesteuer** -> freibetrag bis 24.500€ auf Gewinn im Jahr -> keine Gewerbesteuer **Umsatzstuer** (Mehrwertstuer) -> Umsatzsteuergesetz 19% **Umsatzsteuervoranmelung** -> umsatzstuer einahmen - (minus) umsatzstuer ausgaben = zuzahlender umsatz an Finanzamt (Quatlasweise überweisung - Elster) Umsatzsteuervoranmedlung Quatlsweise ab 01.01.2024 Regelbesteuerung max 10 Tage -> Januar 1, April 4, Juli [2] 7, Oktober 10 **Umsatzstuerjahreserklärung** zusammenfassung für das ganze Jahr -> nahezu Identisch zu Umsatzsteuervoranmedlung ==== Kommissiongeschäft ==== Kommissiongeschäft = My-Coach-Finder §3 Abs. 11 UStG Wird ein Unternehmer in die Erbringung einer sonstigen Leistung eingeschaltet und handelt er dabei im eigenen Namen, jedoch für fremde Rechnung, gilt diese Leistung als an ihn und von ihm erbracht. Kommisionsgeschäft i.S §§ 383 ff.HBG nach Kommisonsvertrag I.S.v §675 BGB Kommittent -> Kommisonär -> Dritter (Käufer) Coach -> MyCoachFinder -> Käufer **Pro Verkauf erhält MyCoachFinder 15% Verkaufsprovision** Der Kommissionär wird für die Umsatzbesteuerung mit dem Eigenhändler gleichgesetzt. Das bedeutet, der Verkaufserlös ist in voller Höhe vom Kommissionär zu versteuern. Im Gegenzug steht dem Kommissionär aus der Lieferung des Kommittenten grundsätzlich ein Vorsteuerabzug zu. https://www.youtube.com/watch?v=a_a6-NTU2Jo https://www.youtube.com/watch?v=_LFpnwMHClc ==== Übersicht ==== **Beispiele:** * booking.com stell keine RE aus -> RE nur driekt von Unterkunft https://studenten365.com/library/lecture/read/175519-was-ist-eine-kommission-rechnung CopeCart // Digistore // Elopage https://juliaburget.de/verkaufe-digitale-produkte-ueber-elopage/# ===== APP Appel ===== STR + ALT + G -> Mouse get switch https://www.baeldung.com/linux/xcode 4.3. Download the Installation Media 11.2 Apps, die zum Kauf von Inhalten, Funktionen oder Diensten in einer App ein anderes System als die In-App Purchase API (IAP) nutzen, werden abgelehnt 11.3 Apps, die IAP zum Kauf physischer Waren oder Waren und Dienstleistungen nutzen, die außerhalb der App verwendet werden, werden abgelehnt Waren und Dienstleistungen außerhalb der App: Physische Waren und Dienstleistungen, die in der realen Welt angeboten werden, fallen unter diese Ausnahme. Wenn Ihre App beispielsweise Kleidung verkauft oder einen Fahrdienst anbietet, können Sie Stripe zur Abwicklung dieser In-App-Käufe nutzen. Persönliche Dienste: Eine weitere Ausnahme gilt für Apps, die Echtzeitdienste zwischen zwei Personen anbieten, beispielsweise virtuelle Nachhilfe oder medizinische Beratungen. Allerdings müssen **Dienste, die mehr als einer Person gleichzeitig angeboten werden, z. B. ein Gruppenfitnesskurs, IAP anstelle von Stripe verwenden**. https://www.revenuecat.com/blog/engineering/can-you-use-stripe-for-in-app-purchases/ ====== Systemctl ====== **sudo systemctl daemon-reload** sudo systemctl restart live1 sudo nano /etc/systemd/system/live1.service #for debug conf. sudo journalctl -u gunicorn.service systemctl status systemctl stop some-service systemctl start some-service systemctl disable some-service **sudo systemctl restart live1** **sudo systemctl restart mailjet_mailserver** **sudo systemctl restart uvicorn_quart** ====== Ayrshare ====== Business Plan features and is limited to 5 user profiles. It is USD $299 per month with no long term commitment needed. https://payment.ayrshare.com/business_pricing?email=support@my-coach-finder.com https://docs.ayrshare.com/multiple-client-accounts/user-integration ^ Image 1 ^ Image 2 ^ | {{ ::bildschirmfoto_2024-10-10_20-59-41.png?400 |}} | {{ ::bildschirmfoto_2024-10-15_12-57-06.png?400 |}} | ====== Server Stack ====== **Server 1 Main** Aktiv: * Live1 + Stripe Handling * NGNIX * Gunicorn * Unvicorn * UFW * Fail-To-Ban * Mail-Mailgun-Server * Mariadb * PHPMyAdmin * Uptime-Cuma * Quart-API (Chat, Suche) * Helpseite * Wiki ??? * Appel Auth * PHP Pass Inaktiv: * InfluxDB * Elasticserche **Server 2 Elasticserche** Aktiv: * Elasticserche Inaktiv: ====== Technische Informationen ====== Serverkosten: 16,89 NetCup: RS 2000 G9.5 a1 12M Prozessor: AMD EPYC™ 7702 Prozessorkerne: 6 dediziert Arbeitsspeicher DDR 4 ECC: 16 GB Festplatte: 320 GB SSD MyCoachFinder ist ein CRM für Coaches! [[https://mcf-t1.boothtml.de/pages/index.php|Templates]] #SSH 1. ssh boothtml@185.207.106.68 -p 2222 1.1 wf234fhkj#P 2. su 2.1 grewglwehljkh435lkhjk354gj3456kjhg 3. cd /var/www/html/live1/ #backup (aktuelle datenbank+pip req.+alle daten in /var/www/html) 1. sudo /home/boothtml/mycoachfinder/backups/daily_backup.sh 2. sftp://hosting129525@boothtml.de/mychoachfinder_backup/ [Netcup Webserver] kopiren **Fileziiller** - B1 -> B2 3. auf MyCoachFinder Löschen Täglich 2 Uhr Nachts 0 2 * * * sudo /home/boothtml/mycoachfinder/backups/daily_backup.sh öffent editor: crontab -e Allew Anzeigen lassen: crontab -l #LOG 1. tail -f nohup.out max_worker_pref: (2*CPU)+1 #relaod app killall gunicorn #hard altnativ without check name sudo pkill -f gunicorn nohup gunicorn -w 4 'app:app' > nohup.out 2>&1 & #relaod nginx sudo nginx -t sudo systemctl restart nginx tail -f /var/log/nginx/error.log #port fail sudo pkill -f nginx & wait $! #debug gunicorn -w 4 'app:app' #------------------------------------------------------ crontab -l pgrep -af python3 ps ps aux | grep gunicorn #------------------------------------------------------ #debug sinpets ps aux | grep uvicorn kill -9 121195 netstat -tuln #show sudo lsof -i :8002 #------------------------------------------------------ fastapi.my-coach-finder.de cd /var/www/html/fastapi #testing intern curl fastapi.localhost:8002 #debug uvicorn app:app --reload --port 8002 #start nohup uvicorn app:app --port 8002 > nohup.out 2>&1 & #kill kill $(sudo lsof -t -i :8002) #------------------------------------------- #DB phpmyadmin pw anwendung: ffweh234k# phpmyadmin pw root: ffweh234k# #restart mariadb / phpmyadmin systemctl stop mariadb systemctl start mariadb bootroot -> 92384710kflwb3423 npm install pm2 -g cd /var/www/html/web_check/uptime-kuma #start pm2 start server/server.js --name uptime-kuma #status pm2 status #reset pm2 restart uptime-kuma #stop pm2 stop uptime-kuma #start pm2 start uptime-kuma #Telgramm Logs import requests tel_msg = "Hallo" response = requests.get('https://api.telegram.org/bot6575656872:AAEUnrY_3A5X5l0eKVS610U3QHo4n03WCEM/sendMessage?chat_id=1023177651&text='+str(tel_msg)) print(response.text) if response.status_code == 200: print('Success!') elif response.status_code == 404: print('Not Found.') #Mailer 1 System mail_1_smtp = "mx2e15.netcup.net" mail_1_port = 587 mail_1_mail = "noreplay@my-coach-finder-msg.com" mail_1_password = "" #Mailer 2 Newsletter mail_2_smtp = "mx2e15.netcup.net" mail_2_port = 587 mail_2_mail = "noreplay@my-coach-finder-mail.de" mail_2_password = "" from flask import Flask app = Flask(__name__) @app.route('/test') def hello(): return "Hello, World!" write_output("foo baa") ==== Performance ==== #img loading="lazy" #js type="module" https://developer.mozilla.org/en-US/docs/Web/Performance/Lazy_loading ====== Zertifikate ====== sudo certbot renew sudo systemctl restart nginx #prüfen sudo certbot certificates https://api-v1.my-coach-finder.de/chat/get/chat_list ====== Domains ====== https://my-coach-finder.de/ -> Netcup - im Besitz https://my-coach-finder.com/ -> Netcup - im Besitz (soll auf https://my-coach-finder.de weitergeleitet werden) https://coach-finder.de -> Leer ohne Webseite aber nicht frei - leer https://coach-finder.com -> https://coach-finder.com - änlicher Marktteilnehmer (ertmal keine Action) https://coachfinder.de -> https://gunter-koenig.de/ - nicht im Besitz -> wird kontaktiert https://coachfinder.com -> https://www.easyname.com/ - nicht im Besitz -> support ist angeschreiben ====== Suchfunktion ====== * stellt ein wesentlichen Teil von My-Coach-Finder da -> in dem Namen enthalten * derzeit umgesetzt mit Algolia[extern] und MySQL [intern] aufgrund der schnellren verabreitung und anzeige sowie fehlertolaranz **CoachingDB** {{::bildschirmfoto_2024-11-18_21-46-55.png?400|}} * [[https://www.coachdb.com]] dient als Inpiration * ist Kostenpflichtig sich dort einzutgane bei MCF ist es Kostenfrei * abgrenzung -> schnellres Wachstum **Greator** {{::bildschirmfoto_2024-11-18_21-50-03.png?200|}} * https://greator.com/coaches/ -> Unbakannt was Coach für Listing bezahlt * um die 320 Coaches werden gelistet Suchkreterien: * Ort umkreis in KM * Postleitzahl * Stichworte * Vorname * NAchname * Branche * Verband * Tätigkeit * Foto/kein Foto * Jahre an erfahrung * Stundensatz * Sprache * Länder * Geschlächt * ALter * Anliegen?? ==== Elstaic Grundbegriffe ==== wichtigsten Elasticsearch-Begriffe: * **Index**: Sammlung von Dokumenten, vergleichbar mit einer Tabelle in einer Datenbank. * * **Dokument**: Grundeinheit der Daten in JSON-Format, vergleichbar mit einer Datenbankzeile. * * **Shard**: Aufteilung eines Indexes zur Verteilung auf mehrere Knoten. * ** Primary Shard**: Originaldaten. * ** Replica Shard**: Kopien für Ausfallsicherheit und bessere Abfrageleistung. * * **Cluster**: Verbund von einem oder mehreren Knoten, die zusammenarbeiten. * * **Node**: Einzelner Server im Cluster, speichert Daten und verarbeitet Abfragen. * * **Mapping**: Strukturdefinition der Dokumente in einem Index, inkl. Feldern und Datentypen. * * **Analyzer**: Kombination aus Tokenizer und Filtern zur Textanalyse. Zerlegt und normalisiert Text. * * ** Filter**: Filterelemente wie Token-Filter (z.B. Lowercase, Stop) und Char-Filter zur Anpassung und Bearbeitung von Tokens und Zeichenketten vor der Indexierung. * * **Query**: Abfrage, um Daten aus einem Index zu suchen. Verschiedene Abfragetypen wie Bool, Term oder Range. * * **RESTful API**: Schnittstelle, über die Elasticsearch mittels HTTP-Methoden bedient wird. * * **Inverted Index**: Kernstruktur für schnelle Volltextsuche, ordnet Wörter den Dokumenten zu. * **Stemming**: Reduzierung von Wörtern auf ihre Grundform (z.B. "laufen" zu "lauf"). * **Sprach**e: Unterstützung für verschiedene Sprachen durch spezialisierte Analyzer (z.B. für deutsche oder englische Sprache). ==== Beispiel für einen Elasticsearch-Index ==== PUT /my_index { "settings": { "number_of_shards": 3, // Anzahl der Primär-Shards "number_of_replicas": 2, // Anzahl der Replikats-Shards pro Primär-Shard "analysis": { "analyzer": { "custom_analyzer": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", // Wandelt alle Buchstaben in Kleinbuchstaben um "stemmer_de" // Deutscher Stemming-Filter ] } }, "filter": { "stemmer_de": { "type": "stemmer", "language": "lightgerman" // Stemming für die deutsche Sprache } } } }, "mappings": { "properties": { "name": { "type": "text", // Datentyp für Volltextsuche "analyzer": "custom_analyzer"// Verwendet den benutzerdefinierten Analyzer }, "age": { "type": "integer" // Datentyp für Ganzzahlen }, "email": { "type": "keyword" // Datentyp für genaue Übereinstimmung }, "created_at": { "type": "date" // Datentyp für Datumswerte }, "location": { "type": "geo_point" // Datentyp für geographische Punkte } } } } Erklärung der Teile: Settings * number_of_shards: Legt die Anzahl der Primär-Shards fest, die den Index aufteilen. * number_of_replicas: Legt die Anzahl der Replikat-Shards fest, um Ausfallsicherheit und verbesserte Abfrageleistung zu gewährleisten. * analysis: Konfiguration für die Textanalyse. * analyzer: Definiert benutzerdefinierte Analyzer. * custom_analyzer: Ein benutzerdefinierter Analyzer, der den standard Tokenizer und die lowercase sowie stemmer_de Filter verwendet. * filter: Definiert Filter, die in Analyzern verwendet werden. * stemmer_de: Ein Stemming-Filter für die deutsche Sprache. Mappings * name: Feld für Volltextsuche, verwendet den standard Analyzer. * age: Feld für Ganzzahlen, z.B. für Altersangaben. * email: Feld für exakte Übereinstimmungen, wird als keyword gespeichert. * created_at: Feld für Datumsangaben. * location: Feld für geographische Koordinaten (Latitude und Longitude). ==== Technik ==== Server by Netcup * VPS 4000 G11 12M NUE * 12 vCore (x86) * 32 GB ECC RAM * 1024 GB SSD https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-elasticsearch-on-ubuntu-22-04 sudo systemctl status elasticsearch RAM -Xms4g -Xmx4g ''/etc/elasticsearch/jvm.options'' ''curl -X GET 'http://localhost:9200''' /home/boothtml/kibana-8.14.1# ./bin/kibana --allow-root ssh root@185.207.106.45 -p 2222 vewrllkjlkjh23412lkjh2ADQ22 #start sudo -u elasticsearch nohup /usr/local/elasticsearch-8.14.3/bin/elasticsearch > /usr/local/elasticsearch-8.14.3/logs/elasticsearch_nohup.log 2 #check ps aux | grep elasticsearch pgrep -f elasticsearch #logs tail -f /usr/local/elasticsearch-8.14.3/logs/elasticsearch_nohup.log root@v2202407103831277688:~/elasticsearch-8.14.3# sudo -u elasticsearch /usr/local/elasticsearch-8.14.3/bin/elasticsearch Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`): qECtGN8OgOGksJyClAPl ====== Elasticserche Server V2====== ssh mycoachfinder_user@185.207.106.45 wefhkw23k4jh2gk3asdh2pwef2543 USER: root HIx4YTWIleffhkj neu: whgkjhg23k42jhg234FCWEF234 Host: 185.207.106.45 ########################################################################## # debian 12 (bookworm) - minimal # ########################################################################## System information: IP address: 185.207.106.45 Hostname: v2202407103831277688.ultrasrv.de SSH key fingerprints: 3072 SHA256:8+8WUxqdbiKcDl8el6WhZDw5mgwDZTdM/GIWPuMv1Ag (RSA) 256 SHA256:LNtHtKnTP0EUncwC4ijhUJ5oP5RP/h9b4jiKtlDNQmI (ECDSA) 256 SHA256:BuNYbXBUpA1eur4ONM45gUS/JC3TxiAOrdJ2hxCvowo (ED25519) 3072 MD5:58:4c:e0:1f:7e:d8:4f:49:83:60:c9:75:92:c6:88:04 (RSA) 256 MD5:36:26:ad:e2:98:bd:9c:cb:b6:28:fa:54:bf:1c:82:af (ECDSA) 256 MD5:21:d9:df:21:10:b7:2f:55:ef:19:5d:67:98:70:fe:bf (ED25519) HIx4YTWIleffhkj ==== fivver ==== Kibana URL. [UFW - ist aktiv //sudo ufw deny 5601//] http://185.207.106.45:5601/ superuser: elastic password: 2SR1*BBZ35CMKaV-L2m9 INSTALATION https://www.elastic.co/guide/en/elasticsearch/reference/current/targz.html curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:YOUR_ELASTIC_PASSWORD https://localhost:9200 curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:2SR1*BBZ35CMKaV-L2m9 https://localhost:9200 sudo curl -k -u elastic:2SR1*BBZ35CMKaV-L2m9 https://localhost:9200 ==== Middle Layer ==== https://my-caoch-finder-api-e.de/ /home/mycoachfinder_user/my_caoch_finder# uvicorn main:app --reload --port 8002 pipx install * apt install python3-elasticsearch ==== URL Search JSON ==== URL: [[https://my-coach-finder.de/search/public?q=bauerr&coach=true&offer=true]] * q: str: querry * type: str: json * coach: bool: true|false * offer: bool: true|false * local: str: city * postcode: int: postcode * range: int: km ====== 3. Anbieter ====== - BunnyCDN - Strip - Aryshre - ReveneCat - Netcup - Fivver - Anglolia - Mailjet - Quonto - SevDesk - Adruid Store + App hosting - IOS Store + App Hosting - productboard.com (Roadmap) - getcharla.com (Live-Chatbot) ==== Kibana ==== https://kib.my-caoch-finder-api-e.de root@v2202407103831277688:~/elasticsearch-8.14.3/kibana-8.14.3 ./bin/kibana http://localhost:5601/ root@v2202407103831277688:~/elasticsearch-8.14.3/kibana-8.14.3# ./bin/kibana --allow-root ====== Weiteres ====== **Starbüro** Zielrufnummer: +49302239950820 Benutzername: mycoachfinder Passwort: RTfkHLkx Webseite: https://backend.starbuero.de/login Sicherheit: Nutzer Anlegen bei SCP: Erstelle einen neuen Benutzer bei SCP. SSH-Zugriff: Verbinde dich mit dem Server per SSH: ssh user@ip. Systemaktualisierung: Aktualisiere das System und installiere alle verfügbaren Updates: sudo apt update && sudo apt upgrade. Firewall einrichten: Installiere die Uncomplicated Firewall (UFW): sudo apt install ufw. Firewall aktivieren: Aktiviere die Firewall: sudo ufw enable. Eingehenden Verkehr ablehnen: Setze die Standardeinstellung für eingehenden Verkehr auf Ablehnen: sudo ufw default deny incoming. SSH-Port ändern: Öffne den SSH-Konfigurationseditor: sudo nano /etc/ssh/sshd_config. Ändere den Port von 22 auf 2222 und deaktiviere die Root-Anmeldung (PermitRootLogin no). Firewall-Regeln hinzufügen: Erlaube den neuen SSH-Port und SSH-Zugriff: sudo ufw allow 2222, sudo ufw allow ssh. Standardeinstellungen für ausgehenden Verkehr: Erlaube ausgehenden Verkehr: sudo ufw default allow outgoing. SSH-Dienst neu starten: Neustart des SSH-Dienstes: sudo systemctl restart ssh. Fail2Ban installieren: Installiere Fail2Ban, um Brute-Force-Angriffe zu verhindern: sudo apt install fail2ban. SQL-Server: Webserver (Nginx) installieren: Installiere den Nginx-Webserver: sudo apt install nginx. MariaDB installieren: Installiere den MariaDB-Server: sudo apt install mariadb-server. MariaDB starten: Starte den MariaDB-Dienst: sudo systemctl start mariadb. MariaDB-Status überprüfen: Überprüfe den Status von MariaDB: sudo systemctl status mariadb. In MariaDB einloggen: Melde dich in MariaDB als Root-Benutzer an: sudo mysql -u root -p. Datenbank und Benutzer erstellen: Erstelle eine Datenbank (flask_app_db) und einen Benutzer (flask_user_boothtml) mit entsprechenden Berechtigungen. phpMyAdmin: phpMyAdmin installieren: Installiere phpMyAdmin: sudo apt install phpmyadmin. Symbolischer Link erstellen: Erstelle einen symbolischen Link zu phpMyAdmin im Webroot: sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin. Nginx-Konfiguration anpassen: Passe die Nginx-Konfiguration an, um phpMyAdmin zu aktivieren. Nginx-Dienst neu starten: Neustart des Nginx-Dienstes: sudo systemctl restart nginx. Nginx-Status überprüfen: Überprüfe den Status des Nginx-Dienstes: systemctl status nginx.service. https://my-coach-finder.de/phpmyadmin/ flask_user_boothtml EFewf3#ewf24 Zugang: HTTP-Port öffnen: Erlaube eingehenden HTTP-Verkehr (Port 80): sudo ufw allow 80/tcp. HTTPS-Port öffnen: Erlaube eingehenden HTTPS-Verkehr (Port 443): sudo ufw allow 443/tcp. request.method: GET request.url: http://127.0.0.1:5000/alert/dingding/test?x=y request.base_url: http://127.0.0.1:5000/alert/dingding/test request.url_charset: utf-8 request.url_root: http://127.0.0.1:5000/ str(request.url_rule): /alert/dingding/test request.host_url: http://127.0.0.1:5000/ request.host: 127.0.0.1:5000 request.script_root: request.path: /alert/dingding/test request.full_path: /alert/dingding/test?x=y request.args: ImmutableMultiDict([('x', 'y')]) request.args.get('x'): y request.args.get('app') -> true /false allways True if use APP APP Key key0 /home/liz/Desktop/key/key.jks -> hjreflkhlkj4345345345fhgh#refw53kjhl {{:screenshot_2024-01-09_18-00-05.png?400|}} ====== Newsletter ====== https://www.rapidmail.de/newsletter-guides/newsletter-zustellbarkeit-optimieren-wie-e-mails-nicht-im-spam-landen Whitelist = CSA (Certified Senders Alliance) ⚡ Verwenden Sie nicht nur Großbuchstaben im Betreff ⚡ Verzichten auf spamanfällige Begriffe wie „TEST”, „kostenlos” oder „Geld verdienen” im Betreff ⚡ kein Antwortschreiben durch das Einbauen von „Re:” am Anfang des Betreffs vorteuschen ⚡ nicht mehrere Ausrufezeichen aneinander (!!!) ⚡ nicht mehr als zwei Sonderzeichen (z. B. € oder %) im Betreff ⚡ kein javascript ⚡ eigene Domain für Tracking-Links verwenden ⚡ keine Fantasiewörter - auch nicht zusammengesetzt ⚡ E-Mail-Größe minimieren ⚡ Dateianhänge unter 300 kB ⚡ DKIM und SPF sowie DMARC -> DKIM-Keys und SPF-Records bei Hoster eintragen (mehr trust) ⚡ Hard Bounces (mehrfach keine zustellung möglich) von der Liste zu nehmen ⚡ Mobilgeräte optimieren ====== AppSumo ====== https://appsumo.com **Redemption** setup code: https://www.youtube.com/watch?v=HZOfZIkwYgA&ab_channel=AppSumo sumo: https://my-coach-finder.de/sign-up/appsumo/%(code) app: https://my-coach-finder.de/sign-up/appsumo/CODE?app=true ====== Notizen Call ====== ====== Link zu Mitbewerber ====== https://tentary.com/de/pricing ---> Direkter Kauf von Produkten + Landingpage + Admin + 2% Provision + kein ABO + kein Vertrag = OMG https://www.coach-liste.de/ {{:coach-liste.png?200 |}} https://learningsuite.io/ #no https://coachingszene.de/ #grape {{:coachingzene.png?200|}} https://www.allecoaches.de https://coaches.xing.com/ https://greator.com/coaches/ https://trello.com/b/wKer9H6u/becoach-roadmap https://www.coaching-magazin.de/coaching-tools/apps [Mit in Liste aufgenommen werden!] ==== LINC ==== [[https://linc.de/]] -> [[https://linc-coachingboard.de/]] https://muellmail.com/#/erdmann.coaching@existiert.net 123abc khjgfjkh4325jkhejkhf Erklärvideo für linc-coachingboard {{ ::erklarvideo_zu_allen_funktionen_des_linc_coaching_boards_on_vime.mp4 |}} * bord wie zb Canva * abrebitblätter/PDF Hochladen und Coachee senden * Coachee Session verwaltung ====== Messen ====== **Trainer_Kongress_Berlin** {{ :trainer_kongress_berlin_2024_anmeldeformular_aussteller.pdf |}} {{ :trainer_kongress_berlin_2024_aussteller_info.pdf |}} ====== Templates ====== https://themeforest.net/downloads user: boothtmlcom Public V1: https://mcf-t4.boothtml.de/ httpdocs/my_coch_finder_template/public_v1/HTML/src/ Public V2: https://mcf-t2.boothtml.de httpdocs/my_coch_finder_template/v2_public/1/ -------------------------------------------------------- Dashbord V1: not exist Dashbord V2: https://mcf-t1.boothtml.de httpdocs/my_coch_finder_template/online/website/ -------------------------------------------------------- Webseiten-Builder V1: https://mcf-t3.boothtml.de/ /httpdocs/my_coch_finder_template/webseiten_builder/HTML/ ====== Implementierungs-Weg ====== ==== offer update in Panel ==== Nur 1 Aktuelsirungspunkt -> reverenz ist immer das Formular zum Anlegen -> einfache anpassbarkeit + wartung - selbe seite wie angelegt + URL Param. -> **?edit-offer=ID** - werte Anhand der ID in Felder eingetragen als Type=**Value** - Absenden prüft ob edit-offer=ID geben - wenn ja -> Neues Offer anlegen + Offer mit ID auf gelöscht setzen ''wenn user_id dieses offer besitzt (Sicherheit)'' ====== Data-Mix ====== ssh root@89.58.47.37 -p 2222 pip python3 -m venv boothtml source boothtml/bin/activate 185.207.106.68 user: boothtml root pw: wf234fhkj#P 7N9ypOe23WDnpMI alt Hostname: v2202308103831236321.ultrasrv.de wweffwefew32423kjhl new ssh boothtml@185.207.106.68 -p 2222 MySQL phpmyadmin pw anwendung: ffweh234k# phpmyadmin pw root: ffweh234k# Sicherheit 1. Nutzer Anlegen bei SCP 2. ssh user@ip '-> ssh user@ip -p 2222 3. sudo apt update && sudo apt upgrade 4. sudo apt install ufw 5. sudo ufw enable 6. sudo ufw default deny incoming 7. sudo ufw allow 2222 8. sudo ufw allow ssh 9. sudo ufw default allow outgoing !!!!!! 10. sudo nano /etc/ssh/sshd_config 11. Port 22 → Port 2222 ++ PermitRootLogin no 12. sudo systemctl restart ssh 13. sudo apt install fail2ban SQL-Server 14. sudo apt install nginx 15. sudo apt install mariadb-server 16. sudo systemctl start mariadb 17. sudo systemctl status mariadb 18. sudo mysql -u root -p wref234 19. CREATE DATABASE flask_app_db; CREATE USER 'flask_user_boothtml'@'localhost' IDENTIFIED BY 'EFewf3#ewf24'; GRANT ALL PRIVILEGES ON flask_app_db.* TO 'flask_user_boothtml'@'localhost'; FLUSH PRIVILEGES; phpMyAdmin 20. sudo apt install phpmyadmin 21. sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin 22. sudo nano /etc/nginx/sites-available/default sudo nano /etc/nginx/nginx.conf 23. # Default server configuration # server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } # pass PHP scripts to FastCGI server # #location ~ \.php$ { # include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): # fastcgi_pass unix:/run/php/php7.4-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} location /phpmyadmin { root /var/www/html; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /var/www/html; fastcgi_pass unix:/run/php/php8.2.7-fpm.sock; # Pfad kann je nach PHP-Version variieren fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } } 24. sudo systemctl restart nginx 25. systemctl status nginx.service zugang 26. sudo ufw allow 80/tcp 27. sudo ufw allow 443/tcp 28. gunicorn killall gunicorn cd var/www/live1 gunicorn -w 4 -b 127.0.0.1:8000 app:app & W = Worker sudo systemctl restart nginx https://support.nordvpn.com/de/Konnektivitaet/Linux/1569820152/Aendern-deiner-DNS-Server-unter-Linux.htm DNS=103.86.96.100 3 86 96 FallbackDNS=103.86.99.100 3 86 99 nameserver 192.168.8.216 92 68 8 nameserver 192.168.8.222 92 68 8 nameserver 192.168.8.1 92 68 8 # Too many DNS servers configured, the following entries may be ignored. nameserver 192.168.8.227 92 68 8 nameserver 192.168.8.254 92 68 8 search . sudo nano /etc/systemd/resolved.conf sudo systemctl restart systemd-resolved Eine ansprechende Datenbank für Coaching🚀🚀🚀 Entwicklung unter: https://dev-c.boothtml.com/ Live unter: https://my-coach-finder.com/ Meeting: Nächstes Termine: Di. https://meet.google.com/ekk-grrp-btu Live Editor: https://replit.com/join/ikpmrulveb-hannesfehre ---- Linklliste info@nelly-kostadinova.de * https://www.linkedin.com/in/nelly-kostadinova-b6457828/overlay/about-this-profile/ * https://www.nelly-kostadinova.de/ * https://www.turtlezone.de/ * Workflow: Backup: [[sftp://boothtml@depro6.fcomet.com:17177/home/boothtml]] * Listenpunktzip -r coatch_backup/coatch$(date +"%Y-%m-%d_%H:%M:%S").zip coatch Ziel: * Mind. 100 Kunden im Abo zu über 100€ * Sehr guter Kundensupport - first level [Mitarbeiter oder Chatbot]→ second Level [CEO] * Automatisierungsgrad 100% * Steuer und Rechungen automatisch schicken * Automatisches Mahnwesen open A. Studio - /opt/android-studio/bin/studio.sh ------------------------ info@my-coach-finder.de Bt5m2w5$0 Abrufbar über: https://webmail01.netcup.net Weiterleitung: asgard90@gmx.net, info@boothtml.com --------------------- ==== Tiktokkanal ==== * erstellt inklusive Profilbild. * Aktuell ist der Kanal auf Privat bis wir Videos genriere, * * Username: info@my-coach-finder.de * passworrt: GW5gUKuhMSDvXjMla4s$ info@my-coach-finder.de Bt5m2w5$0 mail.boothtml.com ----------------------- 21 PW: PPp74nNEkPihN2B ------------------------ Username: My_coach_finder password: 9YA%a~)tvF,8Lgk5 Account ist erstellt, samt Profilbild. Beschreibung oder Info text fehlt noch und sollte ergänzt werden. ------------------------ /index /home / public/index.html /about public/about.html /bookmark-jobs public/bookmark-jobs.html /user-list public/user-list.html /coming-soon public/coming-soon.html /contact public/contact.html /faqs public/faqs.html /job-categories public/job-categories.html /job-details public/job-details.html /job-list public/job-list.html /manage-jobs public/manage-jobs.html /manage-jobs-post public/manage-jobs-post.html /pricing public/pricing.html /privacy-policy public/privacy-policy.html /profile public/profile.html /reset-password public/reset-password.html /services public/services.html /sign-in public/sign-in.html /sign-out public/sign-out.html /sign-up public/sign-up.html /user-details public/user-details.html /login /public/login.html ------------------ * Finde deinen perfekten Coach * Lass dich von den besten Coaches inspirieren * Erreiche deine Ziele mit einem Coach an deiner Seite * Coaching für jeden Bedarf - finde deinen passenden Coach * Wir vermitteln qualifizierte Coaches für dein persönliches Wachstum * Finde deinen Coach und starte deine Veränderung * Dein Coach für mehr Erfolg und Zufriedenheit im Leben * Entdecke die besten Coaches für deine individuellen Bedürfnisse * Coaching, das dein Leben verändert - finde deinen Coach bei uns * Professionelle Coaches für ein glücklicheres und erfüllteres Leben. * Finde deinen Erfolgs-Partner: Wir vermitteln Coaches. * Coaches, die dich voranbringen: Jetzt finden und buchen. * Coaching auf dein Leben zugeschnitten: Finde deinen Coach. * Für alle, die weiterkommen wollen: Unsere Coaches unterstützen dich. * Persönliches Wachstum leicht gemacht: Entdecke unsere Coaches. * Finde deinen Coach für Erfolg. * Coaches, die dich voranbringen. * Dein Coaching auf dich zugeschnitten. * Coaches für dein persönliches Wachstum. * Wachse mit unseren Coaches. 1. Finde deinen Erfolgs-Coach. 2. Persönliches Wachstum mit Coaches. 3. Coaching für deine Ziele. 4. Wir vermitteln passende Coaches. 5. Coaches für dich und dein Leben. * Erfolgs-Coaches auf Knopfdruck. * Wachse mit unseren Top-Coaches. * Coaching, das dich weiterbringt. * Coaches, die zu dir passen. * Entfalte dein Potenzial mit unseren Coaches. * Erfolgserlebnisse inklusive. * Dein persönlicher Boost🚀. * Unterstützung auf Abruf. * Experten-Connection. * Leben neu gestalten. Insta: * Hier findest du deinen individuellen Coach🚀! * Dein persönlicher Boost 👉 erreiche Ziele und verwirkliche deine Träume mit individuellem Coaching 💪. TikTok: * Hier findest du deinen individuellen Coach🚀! * Dein persönlicher Boost 💪. --------------------- Free Plan: Kosten: Kostenlos Funktionen: * Basis-Profil auf der Website/App * begrenzte Anzahl von Nutzern * die der Coach unterstützen kann * begrenzte Anzahl von Coaching-Sitzungen pro Monat * grundlegende Messaging-Funktionen für die Zusammenarbeit mit Nutzern Proffesolanl Plan: Kosten: 25 €/Monat Funktionen: * Vollständiges Profil auf der Website/App * erhöhte Anzahl von Nutzern, die der Coach unterstützen kann * unbegrenzte Anzahl von Coaching-Sitzungen pro Monat * erweiterte Messaging-Funktionen für die Zusammenarbeit mit Nutzern * Video-Chat-Tools für die Durchführung von virtuellen Sitzungen * Analyse-Tools für die Verfolgung von Fortschritten der Nutzer und den Erfolg der Coaching-Sitzungen Premium Plan: Kosten: 50 €/Monat Funktionen: * Alle Funktionen des Premium Plans 1 * plus zusätzliche Funktionen wie personalisierte Ernährungs- und Trainingspläne für die Nutzer * eine 24/7-Chat-Hotline für den Coach und spezielle Rabatte für zusätzliche Services oder Tools * die von Partnern des Unternehmens bereitgestellt werden. Diese drei Pläne bieten Coaches unterschiedliche Optionen, um ihre Kundenbasis zu erweitern und ihre Coaching-Services auf verschiedene Weise anzupassen. Gleichzeitig ermöglichen sie Nutzern, einen Coach zu finden, der ihren spezifischen Bedürfnissen und ihrem Budget entspricht. ---- * wie kann ich mich regetriren * wie nahme ich konkat auf * Bezahlmetodenmit Stripe * wie sicher sind meine Daten * wiederufsrecht/ Kündigen * wen kann ich dabei erreichen * Lohnt es sich für mich? ---- * Neukundengwinnung * Mehr Reichweit * Übersichtlichkeit (all in one Lösung) * Rund um die Uhr erreichbar * sozalmedia integration **====== OAUTH ======** [[https://nagasudhir.blogspot.com/2023/05/implement-login-with-google-in-python.html]] {{:oauth_authorize_code_flow.png?400:}} ====== AWS SES Mail Repotaion ====== * Runs 24/7 as a background service * Sends 1 email every ~2 hours with ±30 min randomization * Automatically selects random recipients from your pool * Respects your 50 emails/day limit * Automatically resets at midnight * Base interval: **2 hours** * Random offset: **±30 minutes** * Creates realistic, unpredictable sending pattern === How to Deploy === * Stop any existing timers/services `sudo systemctl stop ses-reputation.service` `sudo systemctl disable ses-reputation-*.timer` * Reload systemd configuration `sudo systemctl daemon-reload` * Start the new daemon `sudo systemctl start ses-reputation.service` * Enable to start on boot `sudo systemctl enable ses-reputation.service` * Check status `sudo systemctl status ses-reputation.service` * Watch logs `sudo tail -f /var/log/ses-reputation.log`