Skip to content

Commit 49ec644

Browse files
aequitasmxsasha
authored andcommitted
Use mounted volumes for webserver htpasswd files
- also some small fixes to documentation - and supression of whois warning
1 parent a843047 commit 49ec644

20 files changed

+87
-70
lines changed

Changelog.md

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Change Log
22

3+
## 1.11.x (upcoming)
4+
5+
- MONITORING_AUTH_RAW, is no longer used to configure monitoring authentication. Instead password entries must be entered directly in `/opt/Internet.nl/volumes/webserver/htpasswd/monitoring.htpasswd`. See: [Docker-Metrics](https://github.com/internetstandards/Internet.nl/blob/main/documentation/Docker-metrics.md#monitoring-user/allowlist-management). If you had configured monitoring auth previously you need to move this into the new file.
6+
37
## 1.11.0 (in progress)
48

59
_Compared to the latest 1.10 release._
@@ -11,7 +15,7 @@ All tests were updated to match the
1115
[2025-05 version of the NCSC TLS guidelines](https://www.ncsc.nl/en/transport-layer-security-tls/security-guidelines-for-transport-layer-security-2025-05).
1216
Most significant changes:
1317

14-
- The list of good/sufficient/phase out/insufficient TLS versions, TLS authentication, curves, hashes,
18+
- The list of good/sufficient/phase out/insufficient TLS versions, TLS authentication, curves, hashes,
1519
key exchange algorithms, FFDHE groups, RSA key lengths, and bulk encryption algorithms were updated
1620
to match the new guidelines.
1721
- A test for Extended Master Secret (RFC7627) was added.
@@ -29,13 +33,12 @@ Most significant changes:
2933
including some where servers preferred RSA over ECDHE, or CBC over POLY1305.
3034
- CCM_8 ciphers are now detected when enabled on a server.
3135
- OLD ciphers are no longer detected.
32-
- The cipher order test no longer separates between "the server cipher order preference is wrong"
36+
- The cipher order test no longer separates between "the server cipher order preference is wrong"
3337
and "the server has no preference".
3438

3539
### Significant internal changes
3640

3741
- ...
38-
### Possibly required changes to deployments
3942

4043
...
4144

@@ -107,7 +110,7 @@ The API version is updated to 2.6.0 due to the new CAA fields.
107110
- Fixed handling for [CAA with non-ascii characters](https://github.com/internetstandards/Internet.nl/pull/1788).
108111
- Fixed possible exception in [mail test prechecks](https://github.com/internetstandards/Internet.nl/pull/1787).
109112
- Fixed an [issue with rate limiting](https://github.com/internetstandards/Internet.nl/pull/1792).
110-
- Update [Django to 4.2.22](https://github.com/internetstandards/Internet.nl/pull/1795) to fix
113+
- Update [Django to 4.2.22](https://github.com/internetstandards/Internet.nl/pull/1795) to fix
111114
[CVE-2025-48432](https://www.djangoproject.com/weblog/2025/jun/04/security-releases/).
112115

113116
## 1.10.0
@@ -128,7 +131,7 @@ _Compared to the latest 1.9 release._
128131

129132
### Significant internal changes
130133

131-
- The test code no longer interfaces with libunbound, but
134+
- The test code no longer interfaces with libunbound, but
132135
[uses dnspython as a stub resolver](https://github.com/internetstandards/Internet.nl/pull/1578).
133136
- Periodic tests [are no longer enabled by default](https://github.com/internetstandards/Internet.nl/pull/1628).
134137
- UWSGI [cheaper](https://uwsgi-docs.readthedocs.io/en/latest/Cheaper.html) options are used to reduce idle processes and reduce memory consumption.
@@ -159,7 +162,7 @@ docker network rm internetnl-prod_public-internet
159162
## 1.9.3
160163

161164
- Updated the [expired PGP key](https://github.com/internetstandards/Internet.nl_content/pull/57).
162-
165+
163166
## 1.9.2
164167

165168
- Fixed an issue where static files incorrectly required authentication (#1676)
@@ -214,7 +217,7 @@ jobs to generate the same report over and over.
214217

215218
1.8.7 mainly contains various important fixes to support batch deployment.
216219

217-
* Updated sectxt to use a patched version of PGPy with a fix for a
220+
* Updated sectxt to use a patched version of PGPy with a fix for a
218221
[catastrophic regex backtracking issue](https://github.com/SecurityInnovation/PGPy/pull/467)
219222
* Updated nassl to fix memory leak in OCSP check.
220223
* Connection test zones are now re-signed every week instead of every month.
@@ -301,7 +304,7 @@ This release has API version 2.4.0:
301304

302305
## 1.7.1
303306

304-
- Fixed the new [display of TLS versions](https://github.com/internetstandards/Internet.nl/issues/944) for mail tests.
307+
- Fixed the new [display of TLS versions](https://github.com/internetstandards/Internet.nl/issues/944) for mail tests.
305308
- Fixed a [language mix-up](https://github.com/internetstandards/Internet.nl/issues/941) in the security.txt labels.
306309
- Fixed an [issue with the connection test and CSP form-action](https://github.com/internetstandards/Internet.nl/issues/945)
307310

@@ -411,7 +414,7 @@ Bugfixes
411414
- Fix some minor typos and broken link [(#574)] [(#575)]
412415
- Add a missing ' in the frame-ancestors explanation [(#578)]
413416
- An empty part of Content Security Policy gives an error [(#583)]
414-
- Recursion error when stripping nonces in IPv4 and IPv6 comparison [(#587)]
417+
- Recursion error when stripping nonces in IPv4 and IPv6 comparison [(#587)]
415418
- Remove certificate from the certificate chain in the shipped cert chain file [(#614)]
416419

417420
Dependencies
@@ -718,19 +721,19 @@ Initial public release.
718721
--- Brief description for next version ---
719722

720723
New
721-
-
724+
-
722725

723726
Changes
724-
-
727+
-
725728

726729
Bug Fixes
727730
-
728731

729732
Dependencies
730-
-
733+
-
731734

732735
Migrations
733-
-
736+
-
734737

735738
Settings
736-
-
739+
-

docker/batch-test.env

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,6 @@ IPV4_IP_TEST_TARGET_MAIL_PUBLIC=172.16.43.52
3838
IPV6_IP_TEST_TARGET_PUBLIC=fd00:43:1::51
3939
IPV6_IP_TEST_TARGET_MAIL_PUBLIC=fd00:43:1::52
4040

41-
# use easy test/test user/passwords for authenticated endpoints
42-
MONITORING_AUTH_RAW='test:$apr1$PfpYZVWM$tLUKMXt91KJV6I.CF3TOt1,test_raw:$apr1$6YuDyduL$706z.FPTe5c09R767N3W90'
43-
4441
LETSENCRYPT_STAGING=1
4542
LETSENCRYPT_EMAIL=letsencrypt@example.com
4643

docker/compose.development.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ services:
2626
# auto rebuild/reload when config files change
2727
- path: ./webserver/
2828
action: rebuild
29+
volumes:
30+
# mount monitoring credentials for testing/development
31+
- ./webserver/dev.htpasswd:/etc/nginx/htpasswd/monitoring.htpasswd:ro
2932

3033
app:
3134
develop:

docker/compose.integration-tests.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,9 @@ services:
192192
public-internet:
193193
ipv6_address: $IPV6_IP_PUBLIC
194194
ipv4_address: $IPV4_WEBSERVER_IP_PUBLIC
195+
volumes:
196+
# mount monitoring credentials for testing/development
197+
- ./webserver/dev.htpasswd:/etc/nginx/htpasswd/monitoring.htpasswd:ro
195198

196199
unbound:
197200
networks:

docker/compose.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ services:
3131
environment:
3232
- INTERNETNL_DOMAINNAME
3333
- IPV6_TEST_ADDR
34-
- MONITORING_AUTH_RAW
3534
- AUTH_ALL_URLS
3635
- ALLOW_LIST
3736
- ROUTINATOR_ALLOW_LIST
@@ -56,7 +55,11 @@ services:
5655
volumes:
5756
# persist certbot configuration between restarts
5857
- certbot-config:/etc/letsencrypt
59-
- htpasswd-files:/etc/nginx/htpasswd/external
58+
# include configured password for http basic auth (if enabled)
59+
- $INTERNETNL_INSTALL_BASE/volumes/webserver/htpasswd:/etc/nginx/htpasswd
60+
# mount old static password configuration for migration
61+
- htpasswd-files:/etc/nginx/htpasswd-old
62+
# share logs with logs exporter
6063
- nginx-logs-exporter:/var/log/nginx/prometheus-nginxlog-exporter/
6164

6265
healthcheck:

docker/defaults.env

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,6 @@ ALLOW_LIST=
9292
# comma separated of IP(v6) addresses/subnets that are allowed to access the /routinator endpoint (used for multi instance deployements
9393
ROUTINATOR_ALLOW_LIST=
9494

95-
# comma separated user:htpasswd_encrypted pairs for /grafana and /prometheus, and side wide
96-
# password must already be encrypted
97-
# please not that the value needs to be enclosed by single quotes to prevent interpolation of the dollar signs
98-
# eg: MONITORING_AUTH_RAW='test1:$apr1$wGM8gxBe$DxGwifTGWZJ7nftK7LzFt/,user2:$apr1$BoZzsbb/$2NgfYCfF9lxmGrfSqsZKc/'
99-
MONITORING_AUTH_RAW=
100-
10195
# Django debug mode, on test run without debug, same as production
10296
DEBUG=False
10397

docker/deploy.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ cp -v /dist/docker/* docker
1111
# put $RELEASE into the compose.sh file
1212
envsubst '$RELEASE' < docker/compose-dist.sh > docker/compose.sh
1313
chmod a+x docker/compose.sh
14+
chmod a+x docker/user_manage.sh
1415

1516
# set release version in local.env config
1617
echo "RELEASE='$RELEASE' # deploy $(date)" >> docker/local.env

docker/develop.env

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@ COMPOSE_PROJECT_NAME=internetnl-develop
1111
# enable for testing batch api
1212
ENABLE_BATCH=True
1313

14-
# use easy test/test user/passwords for authenticated endpoints
15-
MONITORING_AUTH='test:$apr1$PfpYZVWM$tLUKMXt91KJV6I.CF3TOt1'
16-
1714
LETSENCRYPT_STAGING=1
1815
LETSENCRYPT_EMAIL=letsencrypt@example.com
1916

docker/test.env

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@ IPV4_IP_TEST_TARGET_MAIL_PUBLIC=172.16.43.52
3737
IPV6_IP_TEST_TARGET_PUBLIC=fd00:43:1::51
3838
IPV6_IP_TEST_TARGET_MAIL_PUBLIC=fd00:43:1::52
3939

40-
# use easy test/test user/passwords for authenticated endpoints
41-
MONITORING_AUTH_RAW='test:$apr1$PfpYZVWM$tLUKMXt91KJV6I.CF3TOt1,test_raw:$apr1$6YuDyduL$706z.FPTe5c09R767N3W90'
42-
4340
LETSENCRYPT_STAGING=1
4441
LETSENCRYPT_EMAIL=letsencrypt@example.com
4542

docker/user_manage.sh

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
#!/usr/bin/env sh
2+
23
# Small wrapper around user mgmt script shipped in webserver image
34
# For both convenience, and to have a suitable command to put in sudo
4-
/usr/bin/docker compose --env-file=docker/defaults.env --env-file=docker/host.env --env-file=docker/local.env exec -ti webserver /user_manage_inner.sh "$1" "$2"
5+
6+
set -e # fail on error
7+
8+
# determine install base (parent of directory containing this file)
9+
INTERNETNL_INSTALL_BASE=$(dirname "$(dirname "$(readlink -f "$0")")")
10+
11+
"$INTERNETNL_INSTALL_BASE/docker/compose.sh" exec -ti webserver /user_manage_inner.sh "$1" "$2"

0 commit comments

Comments
 (0)