Compare commits

..

126 Commits

Author SHA1 Message Date
56b7d065b8 get rid of old stuff 2026-04-10 18:31:16 -05:00
96348c17ce remove bayarea 2026-04-09 17:58:08 -05:00
02b721ff51 remove annaville 2026-04-09 10:16:09 -05:00
3a628fe676 api on port 3000 2026-04-03 15:13:24 -05:00
93535750a2 internal name 2026-04-03 14:42:07 -05:00
c949457f4c greenlens_net 2026-04-03 14:37:12 -05:00
5292e2728f caddy_net 2026-04-03 14:35:20 -05:00
8c1770882b host.docker.internal 2026-04-03 13:28:24 -05:00
6837cf4f17 greenlenspro.com 2026-04-03 13:04:38 -05:00
5c61a74e3d Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-04-03 12:49:52 -05:00
ffe6bdd0f4 greenlenspro.com 2026-04-03 12:49:42 -05:00
f391e35221 innungsapp.com 2026-03-08 09:13:24 -05:00
9f88b58f96 innungsapp 2026-03-02 14:38:15 -06:00
9d32e0962e buddelectric.bayarea-cc.com 2026-02-10 09:15:40 -06:00
4d3ca7bb14 switch back 2026-02-03 11:59:17 -06:00
27f929dfbc update for samsung 2026-02-03 11:49:58 -06:00
be0642c389 reduce caching 2026-02-02 17:52:41 -06:00
69af529410 add volume 2026-02-02 13:13:07 -06:00
c4d8e980da host.docker.internal 2026-02-02 13:11:19 -06:00
676e0a91b6 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-02-02 12:18:10 -06:00
d626b19e4a www.bizmatch.net change 2026-02-02 12:17:51 -06:00
8efc6bfcd2 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-28 16:48:21 -06:00
7fcc380b0f english 2026-01-28 16:48:15 -06:00
38e327c847 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-28 16:40:46 -06:00
5e8559ec97 QRCode 2026-01-28 16:40:40 -06:00
2ee5fc8842 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-28 16:06:05 -06:00
9e107cb96c email setup page 2026-01-28 16:05:59 -06:00
0ef8eb0938 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-28 14:59:05 -06:00
05aac691b3 dfgfdg 2026-01-28 14:59:02 -06:00
de57180976 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-28 14:53:29 -06:00
45ae435223 fix 2026-01-28 14:53:22 -06:00
6cd4371829 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-28 14:44:06 -06:00
eec4458604 apple 2026-01-28 14:43:34 -06:00
4e2369f35c Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-28 14:14:30 -06:00
c73b400f52 ruehrgedoens 2026-01-28 14:14:09 -06:00
c6ee22ef12 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 16:47:48 -06:00
4842bd7f03 imap 2026-01-27 16:47:40 -06:00
6f289424e3 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 16:43:30 -06:00
900ae6c257 only pop 2026-01-27 16:43:19 -06:00
8ef9420396 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 16:38:54 -06:00
2dd1dc21b6 fix for wrong closing .. 2026-01-27 16:38:47 -06:00
0794242198 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 16:27:59 -06:00
d926064493 pop 2026-01-27 16:27:54 -06:00
0d6bf386d0 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 16:14:58 -06:00
3ad3ab38c8 <LoginName>{header.X-Anchormailbox}</LoginName> 2026-01-27 16:14:53 -06:00
200567f23c Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 15:48:03 -06:00
ab4958dfa2 dsfdsf 2026-01-27 15:47:42 -06:00
aa75224d03 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 15:20:33 -06:00
4530a2f80e fixed loginname 2026-01-27 14:09:36 -06:00
83ae97e627 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 13:58:05 -06:00
fa2ef2b743 mail.email-srvr.com cert 2026-01-27 13:57:16 -06:00
7f9042e612 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 13:28:32 -06:00
2cfa226361 debug 2026-01-27 13:28:17 -06:00
d37109a696 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 13:18:04 -06:00
4f7dc6f8b4 autodiscover 2026-01-27 13:17:55 -06:00
afdd3d903a Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 13:14:47 -06:00
6c6b4d345f autodiscover 2026-01-27 13:14:39 -06:00
28741de633 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 09:54:31 -06:00
7d1c0b9a6d remove debug 2026-01-27 09:54:29 -06:00
38b425e1d8 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 09:53:58 -06:00
b3d184259e info log 2026-01-27 09:53:54 -06:00
dfddc38c89 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 09:52:08 -06:00
29e35bfad6 email_autodiscover 2026-01-27 09:52:05 -06:00
fe9651409e Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 09:49:29 -06:00
9438eeaa75 container_name: caddy 2026-01-27 09:49:24 -06:00
286619fc62 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 09:48:08 -06:00
969aec9278 import 2026-01-27 09:48:04 -06:00
1bb297f0cf Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 09:43:11 -06:00
5dc09a5651 remove autodiscover 2026-01-27 09:43:07 -06:00
d0af616b8d Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-27 09:38:22 -06:00
7cbbaedd5e autodiscover 2026-01-27 09:38:06 -06:00
9acc06646a Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-25 14:34:56 -06:00
f541ea9248 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-25 14:34:03 -06:00
96fa643095 roundcube 2026-01-25 14:33:44 -06:00
c70f031dff Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-01 09:58:47 -06:00
7e3fac6907 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-01 06:24:03 -06:00
c24049d3fb Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-01 06:18:58 -06:00
f340cc0a43 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2026-01-01 06:11:35 -06:00
9dd22589de Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-12-31 11:37:18 -06:00
4a5222a781 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-12-31 10:56:21 -06:00
f79dde2d1d Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-11-17 15:52:26 -06:00
1b899985a1 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-10-13 15:47:09 -05:00
f0096bc27f Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-10-13 15:22:20 -05:00
39d50b7d3b Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-10-02 18:46:23 -05:00
824fbbe3eb Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-10-02 18:41:24 -05:00
1968faab99 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-10-02 18:35:00 -05:00
3d961d6536 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-10-02 18:29:02 -05:00
5469a01893 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-10-01 21:20:53 -05:00
1bf893f683 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-10-01 17:37:27 -05:00
a2c4ac8685 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-10-01 17:26:09 -05:00
08489162bf Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-10-01 17:20:17 -05:00
92afa46d5d Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-19 17:32:05 -05:00
0f29d06653 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-15 16:43:07 -05:00
a22a30ac3b Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-14 16:38:02 -05:00
9b490a9233 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 15:24:42 -05:00
bf5569522a Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 15:19:01 -05:00
3c84604de8 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 15:16:06 -05:00
38a1a08c2a Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 15:12:46 -05:00
ee26c3dc0a Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 15:10:17 -05:00
6331391f1c Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 15:06:37 -05:00
ee3e5952ac Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 15:02:56 -05:00
541059c0c4 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 14:58:11 -05:00
ac68074178 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 14:53:17 -05:00
ce0b44ac9c Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 14:45:50 -05:00
3553cdcf59 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 14:43:00 -05:00
14f6b30444 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 14:37:19 -05:00
96f3ccbc1a Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 14:36:03 -05:00
669ef1b220 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 14:04:28 -05:00
ee235d5863 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 14:00:19 -05:00
dde2134d87 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 13:58:49 -05:00
57ec03cebe Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 13:35:29 -05:00
082c465985 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 13:14:24 -05:00
8b5b984d22 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 13:12:03 -05:00
212fa09534 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 13:02:54 -05:00
f66016633e Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 12:56:39 -05:00
b10f49a283 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 12:24:18 -05:00
379cc87257 Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 12:18:13 -05:00
ceaf82d5da Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-11 11:59:04 -05:00
dfadc74b2d :Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-09-01 13:55:13 -05:00
7692aef4fc Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-08-28 17:34:11 -05:00
973be97c70 deleted 2025-08-28 17:11:07 -05:00
bd38b9a5f2 home dir 2025-08-28 17:07:36 -05:00
e96631bafd Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-08-28 16:47:25 -05:00
77ec9800aa Merge branch 'master' of git.bizmatch.net:aknuth/docker 2025-08-28 16:43:02 -05:00
4c34709526 merge 2025-08-27 17:56:00 -05:00
b8e3cb6e1f hash 2025-08-27 17:53:54 -05:00
10 changed files with 353 additions and 1956 deletions

View File

@@ -4,7 +4,7 @@ services:
container_name: bizmatch-app-prod # Neu: Unterscheide Namen container_name: bizmatch-app-prod # Neu: Unterscheide Namen
working_dir: /app working_dir: /app
volumes: volumes:
- ~/git/bizmatch-project-prod/bizmatch-server:/app # Verwende Prod-Checkout - /home/aknuth/git/bizmatch-project-prod/bizmatch-server:/app # Verwende Prod-Checkout
ports: ports:
- "3001:3000" # Neu: Host-Port 3001, Container-Port bleibt 3000 - "3001:3000" # Neu: Host-Port 3001, Container-Port bleibt 3000
env_file: env_file:

File diff suppressed because it is too large Load Diff

View File

@@ -4,21 +4,28 @@
acme_ca https://acme-v02.api.letsencrypt.org/directory acme_ca https://acme-v02.api.letsencrypt.org/directory
debug debug
} }
# Prod: Neue Domains # Prod: Neue Domains
www.bizmatch.net { www.bizmatch.net {
handle /pictures/* { handle /pictures/* {
root * /home/aknuth/git/bizmatch-project/bizmatch-server # Prod-Ordner root * /home/aknuth/git/bizmatch-project/bizmatch-server # Prod-Ordner
file_server file_server
} }
# Statische Dateien (CSS, JS, Bilder) lange cachen, da sich der Name bei Änderungen ändert
header /assets/* Cache-Control "public, max-age=31536000, immutable"
header /*.css Cache-Control "public, max-age=31536000, immutable"
header /*.js Cache-Control "public, max-age=31536000, immutable"
# Die index.html und API-Antworten NIEMALS cachen
header /index.html Cache-Control "no-cache, no-store, must-revalidate"
handle { handle {
root * /home/aknuth/git/bizmatch-project-prod/bizmatch/dist/bizmatch/browser # Neuer Prod-Dist-Ordner reverse_proxy host.docker.internal:4200
try_files {path} {path}/ /index.html
file_server
} }
log { log {
output file /var/log/caddy/access.prod.log # Separate Logs output file /var/log/caddy/access.prod.log # Separate Logs
} }
encode gzip encode gzip zstd
} }
bizmatch.net { bizmatch.net {
redir https://www.bizmatch.net{uri} permanent redir https://www.bizmatch.net{uri} permanent
@@ -36,111 +43,20 @@ www.qrmaster.net {
qrmaster.net { qrmaster.net {
redir https://www.qrmaster.net{uri} permanent redir https://www.qrmaster.net{uri} permanent
} }
bayarea-cc.com { www.innungsapp.com {
# TLS-Direktive entfernen, falls Cloudflare die Verbindung terminiert
# tls {
# dns cloudflare {env.CLOUDFLARE_API_TOKEN}
# }
handle /api {
reverse_proxy host.docker.internal:3001
}
handle {
root * /app
try_files {path} /index.html
file_server
}
log {
output stderr
format console
}
encode gzip
}
www.bayarea-cc.com {
redir https://bayarea-cc.com{uri} permanent
}
fancytextstuff.com {
# wenn du API innerhalb von Next bedienst, weiterleiten an den Next Prozess
handle { handle {
reverse_proxy host.docker.internal:3010 reverse_proxy host.docker.internal:3010
} }
log { log {
output file /var/log/caddy/fancytext.log output file /var/log/caddy/innungsapp.log
format console format console
} }
encode gzip encode gzip
} }
cielectrical.bayarea-cc.com { innungsapp.com {
# wenn du API innerhalb von Next bedienst, weiterleiten an den Next Prozess redir https://www.innungsapp.com{uri} permanent
handle {
reverse_proxy host.docker.internal:3000
}
log {
output file /var/log/caddy/cielectrical.log
format console
}
encode gzip
}
hamptonbrown.bayarea-cc.com {
# wenn du API innerhalb von Next bedienst, weiterleiten an den Next Prozess
handle {
reverse_proxy host.docker.internal:3010
}
log {
output file /var/log/caddy/hamptonbrown.log
format console
}
encode gzip
}
nqsltd.bayarea-cc.com {
# wenn du API innerhalb von Next bedienst, weiterleiten an den Next Prozess
handle {
reverse_proxy host.docker.internal:3020
}
log {
output file /var/log/caddy/nqsltd.log
format console
}
encode gzip
}
gregknoppcpa.bayarea-cc.com {
# wenn du API innerhalb von Next bedienst, weiterleiten an den Next Prozess
handle {
reverse_proxy host.docker.internal:3030
}
log {
output file /var/log/caddy/gregknoppcpa.log
format console
}
encode gzip
} }
iitwelders.bayarea-cc.com {
# wenn du API innerhalb von Next bedienst, weiterleiten an den Next Prozess
handle {
reverse_proxy host.docker.internal:8080
}
log {
output file /var/log/caddy/iitwelders.log
format console
}
encode gzip
}
s3mail.bayarea-cc.com {
# wenn du API innerhalb von Next bedienst, weiterleiten an den Next Prozess
handle {
reverse_proxy host.docker.internal:3060
}
log {
output file /var/log/caddy/s3mail.log
format console
}
encode gzip
}
www.fancytextstuff.com {
redir https://fancytextstuff.com{uri} permanent
}
auth.bizmatch.net { auth.bizmatch.net {
reverse_proxy https://bizmatch-net.firebaseapp.com { reverse_proxy https://bizmatch-net.firebaseapp.com {
header_up Host bizmatch-net.firebaseapp.com header_up Host bizmatch-net.firebaseapp.com
@@ -153,31 +69,6 @@ gitea.bizmatch.net {
reverse_proxy gitea:3500 reverse_proxy gitea:3500
} }
dev.bizmatch.net {
handle /pictures/* {
root * /home/aknuth/git/bizmatch-project/bizmatch-server
file_server
}
handle {
root * /home/aknuth/git/bizmatch-project/bizmatch/dist/bizmatch/browser
try_files {path} {path}/ /index.html
file_server
}
log {
output file /var/log/caddy/access.log {
roll_size 10MB
roll_keep 5
roll_keep_for 48h
}
}
encode gzip
}
api.bizmatch.net { api.bizmatch.net {
reverse_proxy host.docker.internal:3001 { # Neu: Proxy auf Prod-Port 3001 reverse_proxy host.docker.internal:3001 { # Neu: Proxy auf Prod-Port 3001
header_up X-Real-IP {http.request.header.CF-Connecting-IP} header_up X-Real-IP {http.request.header.CF-Connecting-IP}
@@ -186,120 +77,22 @@ api.bizmatch.net {
header_up CF-IPCountry {http.request.header.CF-IPCountry} header_up CF-IPCountry {http.request.header.CF-IPCountry}
} }
} }
mailsync.bizmatch.net {
reverse_proxy host.docker.internal:5000 { greenlenspro.com {
header_up X-Real-IP {http.request.header.CF-Connecting-IP} encode zstd gzip
header_up X-Forwarded-For {http.request.header.CF-Connecting-IP}
header_up X-Forwarded-Proto {http.request.header.X-Forwarded-Proto} @storage path /storage /storage/*
header_up CF-IPCountry {http.request.header.CF-IPCountry} handle @storage {
} uri strip_prefix /storage
reverse_proxy minio:9000
} }
# Roundcube für docker-mailserver @api path /api /api/* /auth /auth/* /v1 /v1/* /health /plants /plants/*
app.email-bayarea.com { handle @api {
reverse_proxy roundcube-new:80 reverse_proxy api:3000
log {
output stderr
format console
} }
encode gzip
}
# Roundcube für docker-mailserver
config.email-bayarea.com {
root * /home/aknuth/git/config-email/frontend/dist
try_files {path} {path}/ /index.html
file_server
log {
output file /var/log/caddy/config-email.log
}
encode gzip
}
# Roundcube für docker-mailserver
api.email-bayarea.com {
reverse_proxy host.docker.internal:3002
log {
output stderr
format console
}
encode gzip
}
# IMAP/SMTP Server für E-Mail-Clients
email-srvr.com {
# Für E-Mail-Client-Konfiguration (Autodiscover)
handle /.well-known/autoconfig/mail/config-v1.1.xml {
header Content-Type "application/xml"
respond `<?xml version="1.0" encoding="UTF-8"?>
<clientConfig version="1.1">
<emailProvider id="email-srvr.com">
<domain>andreasknuth.de</domain>
<displayName>Andreas Knuth Mail</displayName>
<displayShortName>AK Mail</displayShortName>
<incomingServer type="imap">
<hostname>email-srvr.com</hostname>
<port>993</port>
<socketType>SSL</socketType>
<authentication>password-cleartext</authentication>
<username>%EMAILADDRESS%</username>
</incomingServer>
<outgoingServer type="smtp">
<hostname>email-srvr.com</hostname>
<port>587</port>
<socketType>STARTTLS</socketType>
<authentication>password-cleartext</authentication>
<username>%EMAILADDRESS%</username>
</outgoingServer>
</emailProvider>
</clientConfig>`
}
# Fallback für andere Anfragen
handle { handle {
respond "Mail Server Configuration" 200 reverse_proxy landing:3000
}
log {
output stderr
format console
} }
} }
annavillesda.org {
# API requests to backend
handle /api/* {
reverse_proxy host.docker.internal:3070
}
# Frontend static files
handle {
root * /home/aknuth/git/annaville-sda-site/dist
try_files {path} {path}/ /index.html
file_server
}
log {
output file /var/log/caddy/access.prod.log
}
encode gzip
}
www.annavillesda.org {
redir https://annavillesda.org{uri} permanent
}
# -----------------
# just for certificate generation
# -----------------
mail.andreasknuth.de {
reverse_proxy nginx-mailcow:8080
}
web.email-bayarea.com {
reverse_proxy nginx-mailcow:8080
}
mail.email-srvr.com autodiscover.mail.email-srvr.com autoconfig.mail.email-srvr.com {
reverse_proxy nginx-mailcow:8080
}

View File

@@ -1,6 +1,7 @@
services: services:
caddy: caddy:
image: custom-caddy:2.9.1-rr1 image: custom-caddy:2.9.1-rr1
container_name: caddy
build: build:
context: . context: .
dockerfile: Dockerfile.caddy dockerfile: Dockerfile.caddy
@@ -15,8 +16,12 @@ services:
- keycloak - keycloak
- gitea - gitea
- mail_network - mail_network
- greenlens_net
volumes: volumes:
- $PWD/Caddyfile:/etc/caddy/Caddyfile - $PWD/Caddyfile:/etc/caddy/Caddyfile
- $PWD/email_autodiscover:/etc/caddy/email_autodiscover
- $PWD/email.mobileconfig.tpl:/etc/caddy/email.mobileconfig.tpl
- $PWD/email-setup:/var/www/email-setup
- caddy_data:/data - caddy_data:/data
- caddy_config:/config - caddy_config:/config
- /home/aknuth/git/bizmatch-project/bizmatch/dist/bizmatch/browser:/home/aknuth/git/bizmatch-project/bizmatch/dist/bizmatch/browser - /home/aknuth/git/bizmatch-project/bizmatch/dist/bizmatch/browser:/home/aknuth/git/bizmatch-project/bizmatch/dist/bizmatch/browser
@@ -40,6 +45,8 @@ networks:
external: true external: true
mail_network: mail_network:
external: true external: true
greenlens_net:
external: true
volumes: volumes:
caddy_data: caddy_data:

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8" ?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
<Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
<Account>
<AccountType>email</AccountType>
<Action>settings</Action>
<Protocol>
<Type>IMAP</Type>
<Server>mail.email-srvr.com</Server>
<Port>993</Port>
<DomainRequired>off</DomainRequired>
<LoginName></LoginName>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
</Protocol>
<Protocol>
<Type>SMTP</Type>
<Server>mail.email-srvr.com</Server>
<Port>465</Port>
<DomainRequired>off</DomainRequired>
<LoginName></LoginName>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
</Protocol>
</Account>
</Response>
</Autodiscover>

BIN
caddy/email-setup/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,122 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Email Setup</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>
<style>
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; background: #f2f2f7; display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; padding: 20px; box-sizing: border-box; }
.card { background: white; padding: 2.5rem; border-radius: 24px; box-shadow: 0 12px 30px rgba(0,0,0,0.1); width: 100%; max-width: 420px; text-align: center; transition: all 0.3s ease; }
.logo { width: 80px; height: 80px; margin-bottom: 1.5rem; }
h1 { margin: 0 0 1rem 0; color: #1a1a1a; font-size: 1.8rem; }
p { color: #666; line-height: 1.5; margin-bottom: 2rem; }
/* Input Section */
#input-section { transition: opacity 0.3s ease; }
input { width: 100%; padding: 16px; margin-bottom: 16px; border: 2px solid #eee; border-radius: 14px; font-size: 16px; box-sizing: border-box; transition: border-color 0.2s; outline: none; }
input:focus { border-color: #007AFF; }
button { width: 100%; padding: 16px; background: #007AFF; color: white; border: none; border-radius: 14px; font-size: 18px; font-weight: 600; cursor: pointer; transition: background 0.2s, transform 0.1s; }
button:hover { background: #0062cc; }
button:active { transform: scale(0.98); }
/* QR Section (initially hidden) */
#qr-section { display: none; opacity: 0; transition: opacity 0.5s ease; }
#qrcode { margin: 2rem auto; padding: 15px; background: white; border-radius: 16px; box-shadow: 0 4px 12px rgba(0,0,0,0.08); display: inline-block; }
#qrcode img { margin: auto; } /* Centers the generated QR code */
.hint { font-size: 0.9rem; color: #888; margin-top: 1.5rem; }
.hint strong { color: #333; }
.error { color: #d32f2f; background: #fde8e8; padding: 10px; border-radius: 8px; font-size: 0.9rem; display: none; margin-bottom: 16px; }
.back-btn { background: transparent; color: #007AFF; margin-top: 1rem; font-size: 16px; }
.back-btn:hover { background: #f0f8ff; }
</style>
</head>
<body>
<div class="card">
<img src="/logo.png" alt="Logo" class="logo">
<div id="input-section">
<h1>Email Setup</h1>
<p>Enter your email address to automatically configure your iPhone or iPad.</p>
<div id="error-msg" class="error">Please enter a valid email address.</div>
<input type="email" id="email" placeholder="name@company.com" required autocomplete="email">
<button onclick="generateQR()">Generate QR Code</button>
</div>
<div id="qr-section">
<h1>Scan me!</h1>
<p>Open the <strong>Camera app</strong> on your iPhone and point it at this code.</p>
<div id="qrcode"></div>
<p class="hint">
Tap the banner that appears at the top.<br>
Click <strong>"Allow"</strong> and then go to <strong>Settings</strong> to install the profile.
</p>
<button class="back-btn" onclick="resetForm()">Back</button>
</div>
</div>
<script>
const inputSection = document.getElementById('input-section');
const qrSection = document.getElementById('qr-section');
const emailInput = document.getElementById('email');
const errorMsg = document.getElementById('error-msg');
let qrcode = null;
function generateQR() {
const email = emailInput.value.trim();
if (!email || !email.includes('@') || email.split('@')[1].length < 3) {
errorMsg.style.display = 'block';
emailInput.focus();
return;
}
errorMsg.style.display = 'none';
const domain = email.split('@')[1];
// The magic link
const targetUrl = `https://autodiscover.${domain}/apple?email=${email}`;
// Hide input, show QR
inputSection.style.display = 'none';
qrSection.style.display = 'block';
setTimeout(() => qrSection.style.opacity = '1', 50);
// Generate (or update) QR Code
if (qrcode === null) {
qrcode = new QRCode(document.getElementById("qrcode"), {
text: targetUrl,
width: 200,
height: 200,
colorDark : "#000000",
colorLight : "#ffffff",
correctLevel : QRCode.CorrectLevel.H
});
} else {
qrcode.clear();
qrcode.makeCode(targetUrl);
}
}
function resetForm() {
qrSection.style.opacity = '0';
setTimeout(() => {
qrSection.style.display = 'none';
inputSection.style.display = 'block';
emailInput.value = '';
emailInput.focus();
}, 300);
}
emailInput.addEventListener("keypress", function(event) {
if (event.key === "Enter") generateQR();
});
</script>
</body>
</html>

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>EmailAccountDescription</key>
<string>{{.Req.URL.Query.Get "email"}}</string>
<key>EmailAccountName</key>
<string>{{.Req.URL.Query.Get "email"}}</string>
<key>EmailAccountType</key>
<string>EmailTypeIMAP</string>
<key>EmailAddress</key>
<string>{{.Req.URL.Query.Get "email"}}</string>
<key>IncomingMailServerAuthentication</key>
<string>EmailAuthPassword</string>
<key>IncomingMailServerHostName</key>
<string>mail.email-srvr.com</string>
<key>IncomingMailServerPortNumber</key>
<integer>993</integer>
<key>IncomingMailServerUseSSL</key>
<true/>
<key>IncomingMailServerUsername</key>
<string>{{.Req.URL.Query.Get "email"}}</string>
<key>OutgoingMailServerAuthentication</key>
<string>EmailAuthPassword</string>
<key>OutgoingMailServerHostName</key>
<string>mail.email-srvr.com</string>
<key>OutgoingMailServerPortNumber</key>
<integer>465</integer>
<key>OutgoingMailServerUseSSL</key>
<true/>
<key>OutgoingMailServerUsername</key>
<string>{{.Req.URL.Query.Get "email"}}</string>
<key>PayloadDescription</key>
<string>E-Mail Konfiguration für {{.Req.URL.Query.Get "email"}}</string>
<key>PayloadDisplayName</key>
<string>{{.Req.URL.Query.Get "email"}}</string>
<key>PayloadIdentifier</key>
<string>com.email-srvr.profile.{{.Req.URL.Query.Get "email"}}</string>
<key>PayloadType</key>
<string>com.apple.mail.managed</string>
<key>PayloadUUID</key>
<string>{{uuidv4}}</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</array>
<key>PayloadDescription</key>
<string>Automatische E-Mail Einrichtung für {{.Req.URL.Query.Get "email"}}</string>
<key>PayloadDisplayName</key>
<string>E-Mail Einstellungen</string>
<key>PayloadIdentifier</key>
<string>com.email-srvr.profile.root</string>
<key>PayloadOrganization</key>
<string>IT Support</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>{{uuidv4}}</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>

97
caddy/email_autodiscover Normal file
View File

@@ -0,0 +1,97 @@
(email_settings) {
# 1. Autodiscover für Outlook
route /autodiscover/autodiscover.xml {
header Content-Type "application/xml"
# Wir nutzen {header.X-Anchormailbox} um die Email dynamisch einzufügen
respond `<?xml version="1.0" encoding="utf-8"?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
<Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
<Account>
<AccountType>email</AccountType>
<Action>settings</Action>
<Protocol>
<Type>IMAP</Type>
<Server>mail.email-srvr.com</Server>
<Port>993</Port>
<DomainRequired>on</DomainRequired>
<LoginName>{header.X-Anchormailbox}</LoginName>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
</Protocol>
<Protocol>
<Type>POP3</Type>
<Server>mail.email-srvr.com</Server>
<Port>995</Port>
<DomainRequired>on</DomainRequired>
<LoginName>{header.X-Anchormailbox}</LoginName>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
</Protocol>
<Protocol>
<Type>SMTP</Type>
<Server>mail.email-srvr.com</Server>
<Port>465</Port>
<DomainRequired>on</DomainRequired>
<LoginName>{header.X-Anchormailbox}</LoginName>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
</Protocol>
</Account>
</Response>
</Autodiscover>` 200
}
# 2. JSON Autodiscover (Modern Outlook) - bleibt gleich
route /autodiscover/autodiscover.json {
header Content-Type "application/json"
respond `{
"Protocol": "AutodiscoverV1",
"Url": "https://autodiscover.bayarea-cc.com/autodiscover/autodiscover.xml"
}` 200
}
# 3. Thunderbird Autoconfig - bleibt gleich (dort funktioniert %EMAILADDRESS% ja nativ)
route /mail/config-v1.1.xml {
header Content-Type "application/xml"
respond `<?xml version="1.0"?>
<clientConfig version="1.1">
<emailProvider id="email-srvr.com">
<displayName>Rackspace Email</displayName>
<incomingServer type="imap">
<hostname>mail.email-srvr.com</hostname>
<port>993</port>
<socketType>SSL</socketType>
<authentication>password-cleartext</authentication>
<username>%EMAILADDRESS%</username>
</incomingServer>
<outgoingServer type="smtp">
<hostname>mail.email-srvr.com</hostname>
<port>465</port>
<socketType>SSL</socketType>
<authentication>password-cleartext</authentication>
<username>%EMAILADDRESS%</username>
</outgoingServer>
</emailProvider>
</clientConfig>` 200
}
# NEU: Apple MobileConfig Route
# Aufrufbar über: /apple?email=kunde@domain.de
route /apple {
# KORREKTUR: Wir müssen Caddy sagen, dass er diesen MIME-Type bearbeiten soll!
templates {
mime "application/x-apple-aspen-config"
}
# Den richtigen MIME-Type setzen
header Content-Type "application/x-apple-aspen-config; charset=utf-8"
# Pfad zur Datei im Container
root * /etc/caddy
rewrite * /email.mobileconfig.tpl
file_server
}
}

View File

@@ -20,7 +20,7 @@ services:
volumes: volumes:
- gitea-data:/data - gitea-data:/data
#- ./gitea/gitea-ssh:/data/git/.ssh #- ./gitea/gitea-ssh:/data/git/.ssh
- /home/git/.ssh/:/data/git/.ssh #- /home/git/.ssh/:/data/git/.ssh
ports: ports:
- "3500:3500" - "3500:3500"
- "2222:22" - "2222:22"