crm.icon-experts.de zeigt auf das neue CRM
This commit is contained in:
@@ -1,43 +1,47 @@
|
||||
# ICON CRM - Apache Vhost
|
||||
# Ablage: /etc/apache2/sites-available/icrm.icon-experts.de.conf
|
||||
# Aktivieren: a2ensite icrm.icon-experts.de && systemctl reload apache2
|
||||
#
|
||||
# Reihenfolge beim Aufsetzen:
|
||||
# 1. DNS A-Record icrm.icon-experts.de -> 31.70.144.60
|
||||
# 2. Diese Datei aktivieren (HTTP-Teil), Apache neu laden
|
||||
# 3. certbot --apache -d icrm.icon-experts.de (legt den :443-Block selbst an)
|
||||
|
||||
<VirtualHost *:80>
|
||||
ServerName icrm.icon-experts.de
|
||||
DocumentRoot /var/www/icon_CRM/dist
|
||||
|
||||
<Directory /var/www/icon_CRM/dist>
|
||||
Options -Indexes +FollowSymLinks
|
||||
AllowOverride None
|
||||
Require all granted
|
||||
# Single Page Application: alle unbekannten Pfade auf index.html
|
||||
FallbackResource /index.html
|
||||
</Directory>
|
||||
|
||||
# Die mit Hash benannten Build-Dateien aendern sich nie - die darf der
|
||||
# Browser dauerhaft behalten. index.html dagegen nie, sonst sieht ein
|
||||
# Benutzer nach dem Rollout weiter die alte Anwendung.
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
<FilesMatch "\.(js|css|woff2|png|jpg|svg|ico)$">
|
||||
ExpiresDefault "access plus 1 year"
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
<FilesMatch "index\.html$">
|
||||
Header set Cache-Control "no-cache, must-revalidate"
|
||||
</FilesMatch>
|
||||
|
||||
# Die API laeuft lokal auf 127.0.0.1:5007 und ist von aussen
|
||||
# ausschliesslich hierueber erreichbar.
|
||||
ProxyPreserveHost On
|
||||
ProxyPass /api http://127.0.0.1:5007/api
|
||||
ProxyPassReverse /api http://127.0.0.1:5007/api
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/icon_crm_error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/icon_crm_access.log combined
|
||||
</VirtualHost>
|
||||
# ICON CRM - Apache Vhost
|
||||
# Ablage: /etc/apache2/sites-available/icrm.icon-experts.de.conf
|
||||
# Aktivieren: a2ensite icrm.icon-experts.de && systemctl reload apache2
|
||||
#
|
||||
# Reihenfolge beim Aufsetzen:
|
||||
# 1. DNS A-Record icrm.icon-experts.de -> 31.70.144.60
|
||||
# 2. Diese Datei aktivieren (HTTP-Teil), Apache neu laden
|
||||
# 3. certbot --apache -d icrm.icon-experts.de -d crm.icon-experts.de
|
||||
# (legt den :443-Block selbst an und deckt beide Namen ab)
|
||||
|
||||
<VirtualHost *:80>
|
||||
ServerName icrm.icon-experts.de
|
||||
# Der alte Name des CRM. Er zeigt seit dem 14.09.2026 auf dieselbe
|
||||
# Anwendung - Lesezeichen und verschickte Links laufen weiter.
|
||||
ServerAlias crm.icon-experts.de
|
||||
DocumentRoot /var/www/icon_CRM/dist
|
||||
|
||||
<Directory /var/www/icon_CRM/dist>
|
||||
Options -Indexes +FollowSymLinks
|
||||
AllowOverride None
|
||||
Require all granted
|
||||
# Single Page Application: alle unbekannten Pfade auf index.html
|
||||
FallbackResource /index.html
|
||||
</Directory>
|
||||
|
||||
# Die mit Hash benannten Build-Dateien aendern sich nie - die darf der
|
||||
# Browser dauerhaft behalten. index.html dagegen nie, sonst sieht ein
|
||||
# Benutzer nach dem Rollout weiter die alte Anwendung.
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
<FilesMatch "\.(js|css|woff2|png|jpg|svg|ico)$">
|
||||
ExpiresDefault "access plus 1 year"
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
<FilesMatch "index\.html$">
|
||||
Header set Cache-Control "no-cache, must-revalidate"
|
||||
</FilesMatch>
|
||||
|
||||
# Die API laeuft lokal auf 127.0.0.1:5007 und ist von aussen
|
||||
# ausschliesslich hierueber erreichbar.
|
||||
ProxyPreserveHost On
|
||||
ProxyPass /api http://127.0.0.1:5007/api
|
||||
ProxyPassReverse /api http://127.0.0.1:5007/api
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/icon_crm_error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/icon_crm_access.log combined
|
||||
</VirtualHost>
|
||||
|
||||
@@ -22,7 +22,7 @@ samt Passwort-Hashes eingeschlossen.
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
U(("Browser")) -->|"HTTPS"| A["Apache :443<br/>icrm.icon-experts.de"]
|
||||
U(("Browser")) -->|"HTTPS"| A["Apache :443<br/>icrm + crm.icon-experts.de"]
|
||||
A -->|"/"| D["dist/<br/>SPA, FallbackResource"]
|
||||
A -->|"/api"| E["Express :5007"]
|
||||
E --> C[("icon_CRM")]
|
||||
@@ -117,7 +117,7 @@ Spracherkennung auf seinem eigenen Gerät ein, mit seinem eigenen Download.
|
||||
| --- | --- |
|
||||
| 5007 | ICON CRM Backend (nur `127.0.0.1`) |
|
||||
| 3101 | Vite-Dev-Server (nur lokal beim Entwickeln) |
|
||||
| 80/443 | Apache: `icrm.icon-experts.de`, `icon-experts.de`, `www.icon-experts.de` |
|
||||
| 80/443 | Apache: `icrm.icon-experts.de` (+ Alias `crm.icon-experts.de`), `icon-experts.de`, `www.icon-experts.de` |
|
||||
|
||||
## Was wo liegt
|
||||
|
||||
|
||||
@@ -98,6 +98,27 @@ mariadb-dump --single-transaction icon_CRM | gzip > icon_CRM-$(date +%F).sql.gz
|
||||
tar czf uploads-$(date +%F).tar.gz -C /var/www/icon_CRM uploads
|
||||
```
|
||||
|
||||
## Der alte Name crm.icon-experts.de
|
||||
|
||||
Das erste ICON CRM lief unter **crm.icon-experts.de** auf `212.227.135.41`
|
||||
(`/var/www/ICON`, Supabase als Datenbank). Seit dem 14.09.2026 zeigt der Name
|
||||
auf diesen Server und wird vom Vhost `icrm.icon-experts.de` als `ServerAlias`
|
||||
mitbedient – dasselbe Zertifikat deckt beide Namen ab. Verschickte Links und
|
||||
Lesezeichen laufen damit weiter, es gibt keinen zweiten Stand zu pflegen.
|
||||
|
||||
Der alte Aufbau ist zurückgebaut: Vhosts (`icon`, `icon-le-ssl`) abgeschaltet,
|
||||
`/var/www/ICON` gelöscht, das dortige Zertifikat für `crm.icon-experts.de`
|
||||
entfernt (sonst hätte die Erneuerung ab sofort täglich Fehler gemeldet).
|
||||
|
||||
Gesichert ist er als `icon-crm-alt-2026-09-14.zip` – Quellcode, Build, `.env`
|
||||
und beide Vhost-Dateien, ohne `node_modules`. Die Datei liegt **auf beiden
|
||||
Servern** unter `/root/backups/`, Prüfsumme
|
||||
`252f7fa3226c2df7c4020a0234c3095c`.
|
||||
|
||||
> Die Supabase-Instanz `icondb.perinco.de` läuft weiter. Sie war die Datenbank
|
||||
> des alten CRM und ist die Quelle der Migration (`server/src/migrate.js`) –
|
||||
> abzuschalten wäre eine eigene Entscheidung, nicht Teil dieses Rückbaus.
|
||||
|
||||
## Störungssuche
|
||||
|
||||
| Symptom | Erster Griff |
|
||||
|
||||
Reference in New Issue
Block a user