9-course Dutch e-learning platform fused onto atlasacademy.nl via Caddy reverse proxy. Odoo 19 Community as course engine (website_slides), static HTML for marketing front. Single Odoo account system. - static/: 8 marketing pages (index, pricing, coaching, leerpad, over, shop, bisl, esf) - backend/odoo_relay.py: lead relay Flask service (POST /academy-lead → Odoo CRM) - caddy/academy.caddyfile: full Caddy config with Odoo proxy + auth rewrites - docs/: ARCHITECTURE, USERFLOW, COURSES, DEPLOYMENT, SECURITY, ODOO Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
68 lines
2.7 KiB
Caddyfile
68 lines
2.7 KiB
Caddyfile
# Caddy configuration snippet — atlasacademy.nl
|
|
# Full config lives on atlas-01 at /etc/caddy/Caddyfile
|
|
# Reload: ssh atlas-01 "caddy reload --config /etc/caddy/Caddyfile"
|
|
|
|
atlasacademy.nl, www.atlasacademy.nl {
|
|
root * /var/www/atlasacademy.nl
|
|
encode gzip
|
|
|
|
# Odoo eLearning — proxy course engine + auth paths to Odoo
|
|
# CRITICAL: X-Forwarded-Host required for Odoo multi-website routing (proxy_mode=True)
|
|
@odoo_elearning path /slides /slides/* /web/assets/* /web/image/* /web/static/* \
|
|
/website_slides/* /website/static/* /web/session/* \
|
|
/web/dataset/call_kw* /web/webclient/locale* \
|
|
/web/login* /web/signup* /web/reset_password*
|
|
route @odoo_elearning {
|
|
reverse_proxy 100.93.16.81:8069 {
|
|
header_up Host {host}
|
|
header_up X-Forwarded-Host {host}
|
|
header_up X-Forwarded-Proto https
|
|
header_up X-Real-IP {remote_host}
|
|
}
|
|
}
|
|
|
|
# Identity = Odoo (static auth retired)
|
|
redir /login /web/login?redirect=%2Fslides 302
|
|
redir /login/ /web/login?redirect=%2Fslides 302
|
|
redir /login.html /web/login?redirect=%2Fslides 302
|
|
redir /register /web/signup?redirect=%2Fslides 302
|
|
redir /register/ /web/signup?redirect=%2Fslides 302
|
|
redir /register.html /web/signup?redirect=%2Fslides 302
|
|
|
|
# Catalog cutover — old static URLs → Odoo eLearning
|
|
redir /cursussen /slides 302
|
|
redir /cursussen/ /slides 302
|
|
redir /cursussen.html /slides 302
|
|
redir /cursussen/sales.html /slides/sales-vanaf-nul-2 302
|
|
redir /cursussen/netwerken.html /slides/netwerken-relaties-3 302
|
|
redir /cursussen/strategie.html /slides/strategisch-denken-4 302
|
|
redir /cursussen/ai.html /slides/alles-automatiseren-met-ai-5 302
|
|
redir /cursussen/it-basis.html /slides/it-basis-manier-van-denken-6 302
|
|
redir /cursussen/business.html /slides/business-juridisch-7 302
|
|
redir /cursussen/marketing.html /slides/marketing-funnels-8 302
|
|
redir /cursussen/startup.html /slides/startup-groei-9 302
|
|
|
|
# ESF tracker — personal ITMG log, keep out of search engines
|
|
@esf_priv path /esf /esf.html
|
|
header @esf_priv X-Robots-Tag "noindex, nofollow"
|
|
|
|
# Clean URL rewrites for static pages
|
|
@bisl path /bisl /bisl/
|
|
rewrite @bisl /bisl.html
|
|
@esf path /esf /esf/
|
|
rewrite @esf /esf.html
|
|
|
|
# Lead relay (Odoo CRM + email fallback)
|
|
route /academy-lead {
|
|
reverse_proxy 127.0.0.1:7793
|
|
}
|
|
|
|
file_server
|
|
|
|
header {
|
|
X-Frame-Options DENY
|
|
X-Content-Type-Options nosniff
|
|
Referrer-Policy strict-origin-when-cross-origin
|
|
Strict-Transport-Security max-age=31536000
|
|
}
|
|
}
|