|
2 | 2 | # https://caddyserver.com/docs/caddyfile |
3 | 3 |
|
4 | 4 | { |
5 | | - # Global options |
| 5 | + # Global options |
6 | 6 |
|
7 | | - # Monitoring |
8 | | - admin :2019 |
9 | | - metrics { |
10 | | - per_host |
11 | | - } |
| 7 | + # Monitoring |
| 8 | + admin :2019 |
| 9 | + metrics { |
| 10 | + per_host |
| 11 | + } |
| 12 | +} |
| 13 | + |
| 14 | +(logging) { |
| 15 | + log { |
| 16 | + output file /data/logs/{args[0]}.log { |
| 17 | + roll_size 10mb |
| 18 | + roll_keep 5 |
| 19 | + roll_local_time |
| 20 | + } |
| 21 | + format console |
| 22 | + level INFO |
| 23 | + } |
12 | 24 | } |
13 | 25 |
|
14 | 26 | # Global Imports |
15 | 27 | (all) { |
16 | | - handle_errors { |
17 | | - respond "{err.status_code} {err.status_text}" |
| 28 | + # Error handling for Caddy-generated errors |
| 29 | + handle_errors { |
| 30 | + root * /opt/caddy-error-pages |
| 31 | + rewrite * /error.html |
| 32 | + templates |
| 33 | + file_server |
18 | 34 | } |
19 | | - # handle_errors { |
20 | | - # rewrite * /404.html |
21 | | - # file_server { |
22 | | - # status 404 |
23 | | - # } |
24 | | - # } |
25 | 35 | } |
26 | 36 |
|
27 | 37 | # Default options for internal facing sites |
28 | 38 | (home) { |
29 | | - import all |
30 | | - tls internal |
| 39 | + import all |
| 40 | + tls internal |
31 | 41 | } |
32 | 42 |
|
33 | 43 | grafana.home { |
34 | | - import home |
35 | | - reverse_proxy http://{$IP_GRAFANA}:3000 |
| 44 | + import home |
| 45 | + import logging grafana.home |
| 46 | + reverse_proxy http://{$IP_GRAFANA}:3000 |
36 | 47 | } |
37 | 48 |
|
38 | 49 | uptime.home { |
39 | | - import home |
40 | | - reverse_proxy http://{$IP_UPTIME_KUMA}:3001 |
| 50 | + import home |
| 51 | + import logging uptime.home |
| 52 | + reverse_proxy http://{$IP_UPTIME_KUMA}:3001 |
41 | 53 | } |
42 | 54 |
|
43 | 55 | # Default options for external facing sites |
44 | 56 | (external) { |
45 | | - import all |
| 57 | + import all |
46 | 58 |
|
47 | | - tls { |
| 59 | + tls { |
48 | 60 | dns cloudflare {env.CLOUDFLARE_API_TOKEN} |
49 | 61 | } |
50 | 62 |
|
51 | | - header { |
52 | | - Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" |
53 | | - X-Xss-Protection "1; mode=block" |
54 | | - X-Content-Type-Options "nosniff" |
55 | | - X-Frame-Options "DENY" |
56 | | - Content-Security-Policy "upgrade-insecure-requests" |
57 | | - Referrer-Policy "strict-origin-when-cross-origin" |
58 | | - Cache-Control "public, max-age=15, must-revalidate" |
59 | | - Permissions-Policy "accelerometer=(), ambient-light-sensor=(), autoplay=(self), camera=(), encrypted-media=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(*), speaker-selection=(), usb=(), xr-spatial-tracking=()" |
60 | | - [defer] |
61 | | - } |
62 | | - file_server |
| 63 | + header { |
| 64 | + Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" |
| 65 | + X-Xss-Protection "1; mode=block" |
| 66 | + X-Content-Type-Options "nosniff" |
| 67 | + X-Frame-Options "DENY" |
| 68 | + Content-Security-Policy "upgrade-insecure-requests" |
| 69 | + Referrer-Policy "strict-origin-when-cross-origin" |
| 70 | + Cache-Control "public, max-age=15, must-revalidate" |
| 71 | + Permissions-Policy "accelerometer=(), ambient-light-sensor=(), autoplay=(self), camera=(), encrypted-media=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(*), speaker-selection=(), usb=(), xr-spatial-tracking=()" |
| 72 | + [defer] |
| 73 | + } |
| 74 | + file_server |
63 | 75 | } |
64 | 76 |
|
65 | 77 | (geeksbsmrt) { |
66 | | - import external |
| 78 | + import external |
67 | 79 | } |
68 | 80 |
|
69 | 81 | geeksbsmrt.com { |
70 | | - import geeksbsmrt |
71 | | - |
| 82 | + import geeksbsmrt |
| 83 | + import logging geeksbsmrt.com |
72 | 84 | root * /srv/geeksbsmrt.com |
73 | 85 | } |
74 | 86 |
|
75 | 87 | analytics.geeksbsmrt.com { |
76 | 88 | import geeksbsmrt |
77 | | - |
| 89 | + import logging analytics.geeksbsmrt.com |
78 | 90 | reverse_proxy http://{$IP_UMAMI_APP}:3000 |
79 | 91 | } |
80 | 92 |
|
81 | 93 | *.geeksbsmrt.com { |
82 | | - import geeksbsmrt |
| 94 | + import geeksbsmrt |
| 95 | + import logging wildcard.geeksbsmrt.com |
83 | 96 | } |
84 | 97 |
|
85 | 98 | (smrtgeekdevs) { |
86 | | - import external |
| 99 | + import external |
87 | 100 | } |
88 | 101 |
|
89 | 102 | smrtgeekdevs.com { |
90 | | - #root * /var/www/smrtgeekdevs |
| 103 | + import smrtgeekdevs # Inherit `external` config here |
| 104 | + import logging smrtgeekdevs.com |
| 105 | + #root * /var/www/smrtgeekdevs |
91 | 106 | } |
92 | 107 |
|
93 | 108 | pihole.smrtgeekdevs.com { |
94 | | - import smrtgeekdevs |
95 | | - |
96 | | - redir / /admin{uri} |
97 | | - reverse_proxy pihole |
| 109 | + import smrtgeekdevs |
| 110 | + import logging pihole.smrtgeekdevs.com |
| 111 | + redir / /admin{uri} 308 |
| 112 | + reverse_proxy http://pihole |
98 | 113 | } |
99 | 114 |
|
100 | 115 | *.smrtgeekdevs.com { |
101 | | - import smrtgeekdevs |
| 116 | + import smrtgeekdevs |
| 117 | + import logging wildcard.smrtgeekdevs.com |
102 | 118 | } |
0 commit comments