Skip to content

Commit dc9caeb

Browse files
renovate[bot]Zoey2936
authored andcommitted
alpine&dep updates/changing must-staple&acme server now also effect renewals/change default mime types to download
Signed-off-by: Zoey <[email protected]>
1 parent 9428805 commit dc9caeb

File tree

22 files changed

+195
-85
lines changed

22 files changed

+195
-85
lines changed

.github/workflows/docker-latest.yml

+9
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ jobs:
2323
registry: ghcr.io
2424
username: ${{ steps.un.outputs.un }}
2525
password: ${{ github.token }}
26+
- name: Login to forgejo
27+
uses: docker/login-action@v3
28+
with:
29+
registry: forgejo.zvcdn.de
30+
username: ${{ secrets.FORGEJO_USERNAME }}
31+
password: ${{ secrets.FORGEJO_PASSWORD }}
2632
- name: Push develop to latest
2733
run: |
2834
docker buildx imagetools create --tag ${{ steps.un.outputs.un }}/nginx-proxy-manager:latest ${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.ref_name }}
@@ -32,7 +38,10 @@ jobs:
3238
docker buildx imagetools create --tag ${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.run_number }} ${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.ref_name }}
3339
docker buildx imagetools create --tag ghcr.io/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:latest ghcr.io/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.ref_name }}
3440
docker buildx imagetools create --tag ghcr.io/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.run_number }} ghcr.io/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.ref_name }}
41+
# docker buildx imagetools create --tag forgejo.zvcdn.de/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:latest forgejo.zvcdn.de/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.ref_name }}
42+
# docker buildx imagetools create --tag forgejo.zvcdn.de/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.run_number }} forgejo.zvcdn.de/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.ref_name }}
3543
- name: Show Nginx version
3644
run: |
3745
docker run --rm --entrypoint nginx ${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:latest -V
3846
docker run --rm --entrypoint nginx ghcr.io/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:latest -V
47+
# docker run --rm --entrypoint nginx forgejo.zvcdn.de/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:latest -V

.github/workflows/docker.yml

+8
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ jobs:
5353
registry: ghcr.io
5454
username: ${{ steps.un.outputs.un }}
5555
password: ${{ github.token }}
56+
- name: Login to forgejo
57+
uses: docker/login-action@v3
58+
with:
59+
registry: forgejo.zvcdn.de
60+
username: ${{ secrets.FORGEJO_USERNAME }}
61+
password: ${{ secrets.FORGEJO_PASSWORD }}
5662
- name: version
5763
run: |
5864
version="$(cat .version)+$(git rev-parse --short HEAD)"
@@ -71,11 +77,13 @@ jobs:
7177
tags: |
7278
${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.ref_name }}
7379
ghcr.io/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.ref_name }}
80+
# forgejo.zvcdn.de/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.ref_name }}
7481
- name: show version
7582
if: ${{ github.event_name != 'pull_request' }}
7683
run: |
7784
docker run --rm --entrypoint nginx ${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.ref_name }} -V
7885
docker run --rm --entrypoint nginx ghcr.io/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.ref_name }} -V
86+
# docker run --rm --entrypoint nginx forgejo.zvcdn.de/${{ steps.un.outputs.un }}/${{ steps.rn.outputs.rn }}:${{ github.ref_name }} -V
7987
- name: Set PR-Number (PR)
8088
if: ${{ github.event_name == 'pull_request' }}
8189
id: pr

Caddy.Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM alpine:3.20.3
1+
FROM alpine:3.21.0
22
RUN apk add --no-cache ca-certificates tzdata
33
COPY --from=caddy:2.8.4 /usr/bin/caddy /usr/bin/caddy
44
COPY Caddyfile /etc/caddy/Caddyfile

Dockerfile

+25-26
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# syntax=docker/dockerfile:labs
2-
FROM --platform="$BUILDPLATFORM" alpine:3.20.3 AS frontend
3-
COPY frontend /app
4-
COPY global/certbot-dns-plugins.json /app/certbot-dns-plugins.json
2+
FROM --platform="$BUILDPLATFORM" alpine:3.21.0 AS frontend
3+
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
54
ARG NODE_ENV=production \
65
NODE_OPTIONS=--openssl-legacy-provider
6+
COPY frontend /app
7+
COPY global/certbot-dns-plugins.json /app/certbot-dns-plugins.json
78
WORKDIR /app/frontend
89
RUN apk upgrade --no-cache -a && \
910
apk add --no-cache ca-certificates nodejs yarn git python3 py3-pip build-base file && \
@@ -18,12 +19,12 @@ COPY darkmode.css /app/dist/css/darkmode.css
1819
COPY security.txt /app/dist/.well-known/security.txt
1920

2021

21-
FROM --platform="$BUILDPLATFORM" alpine:3.20.3 AS build-backend
22+
FROM --platform="$BUILDPLATFORM" alpine:3.21.0 AS build-backend
2223
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
23-
COPY backend /app
24-
COPY global/certbot-dns-plugins.json /app/certbot-dns-plugins.json
2524
ARG NODE_ENV=production \
2625
TARGETARCH
26+
COPY backend /app
27+
COPY global/certbot-dns-plugins.json /app/certbot-dns-plugins.json
2728
WORKDIR /app
2829
RUN apk upgrade --no-cache -a && \
2930
apk add --no-cache ca-certificates nodejs yarn file && \
@@ -37,15 +38,15 @@ RUN apk upgrade --no-cache -a && \
3738
fi && \
3839
yarn cache clean --all && \
3940
clean-modules --yes
40-
FROM alpine:3.20.3 AS strip-backend
41+
FROM alpine:3.21.0 AS strip-backend
4142
COPY --from=build-backend /app /app
4243
RUN apk upgrade --no-cache -a && \
4344
apk add --no-cache ca-certificates binutils file && \
4445
find /app/node_modules -name "*.node" -type f -exec strip -s {} \; && \
4546
find /app/node_modules -name "*.node" -type f -exec file {} \;
4647

4748

48-
FROM --platform="$BUILDPLATFORM" alpine:3.20.3 AS crowdsec
49+
FROM --platform="$BUILDPLATFORM" alpine:3.21.0 AS crowdsec
4950
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
5051
ARG CSNB_VER=v1.0.8
5152
WORKDIR /src
@@ -71,27 +72,16 @@ RUN apk upgrade --no-cache -a && \
7172
sed -i "s|APPSEC_PROCESS_TIMEOUT=.*|APPSEC_PROCESS_TIMEOUT=10000|g" /src/crowdsec-nginx-bouncer/lua-mod/config_example.conf
7273

7374

74-
FROM zoeyvid/nginx-quic:356-python
75+
FROM zoeyvid/nginx-quic:368-python
7576
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
77+
ARG CRS_VER=v4.9.0
78+
COPY rootfs /
79+
COPY --from=strip-backend /app /app
7680

77-
COPY rootfs /
78-
COPY --from=zoeyvid/certbot-docker:65 /usr/local /usr/local
79-
COPY --from=zoeyvid/curl-quic:427 /usr/local/bin/curl /usr/local/bin/curl
80-
81-
COPY --from=strip-backend /app /app
82-
COPY --from=frontend /app/dist /html/frontend
83-
84-
COPY --from=crowdsec /src/crowdsec-nginx-bouncer/lua-mod/lib/plugins /usr/local/nginx/lib/lua/plugins
85-
COPY --from=crowdsec /src/crowdsec-nginx-bouncer/lua-mod/lib/crowdsec.lua /usr/local/nginx/lib/lua/crowdsec.lua
86-
COPY --from=crowdsec /src/crowdsec-nginx-bouncer/lua-mod/templates/ban.html /usr/local/nginx/conf/conf.d/include/ban.html
87-
COPY --from=crowdsec /src/crowdsec-nginx-bouncer/lua-mod/templates/captcha.html /usr/local/nginx/conf/conf.d/include/captcha.html
88-
COPY --from=crowdsec /src/crowdsec-nginx-bouncer/lua-mod/config_example.conf /usr/local/nginx/conf/conf.d/include/crowdsec.conf
89-
COPY --from=crowdsec /src/crowdsec-nginx-bouncer/nginx/crowdsec_nginx.conf /usr/local/nginx/conf/conf.d/include/crowdsec_nginx.conf
90-
91-
ARG CRS_VER=v4.8.0
9281
RUN apk upgrade --no-cache -a && \
93-
apk add --no-cache ca-certificates tzdata tini \
94-
bash nano nodejs \
82+
apk add --no-cache ca-certificates tzdata tini curl \
83+
nodejs \
84+
bash nano \
9585
logrotate goaccess fcgi \
9686
lua5.1-lzlib lua5.1-socket \
9787
coreutils grep findutils jq shadow su-exec \
@@ -116,6 +106,15 @@ RUN apk upgrade --no-cache -a && \
116106
ln -s /app/sqlite-vaccum.js /usr/local/bin/sqlite-vaccum.js && \
117107
ln -s /app/index.js /usr/local/bin/index.js
118108

109+
COPY --from=crowdsec /src/crowdsec-nginx-bouncer/nginx/crowdsec_nginx.conf /usr/local/nginx/conf/conf.d/include/crowdsec_nginx.conf
110+
COPY --from=crowdsec /src/crowdsec-nginx-bouncer/lua-mod/config_example.conf /usr/local/nginx/conf/conf.d/include/crowdsec.conf
111+
COPY --from=crowdsec /src/crowdsec-nginx-bouncer/lua-mod/templates/captcha.html /usr/local/nginx/conf/conf.d/include/captcha.html
112+
COPY --from=crowdsec /src/crowdsec-nginx-bouncer/lua-mod/templates/ban.html /usr/local/nginx/conf/conf.d/include/ban.html
113+
COPY --from=crowdsec /src/crowdsec-nginx-bouncer/lua-mod/lib/crowdsec.lua /usr/local/nginx/lib/lua/crowdsec.lua
114+
COPY --from=crowdsec /src/crowdsec-nginx-bouncer/lua-mod/lib/plugins /usr/local/nginx/lib/lua/plugins
115+
COPY --from=frontend /app/dist /html/frontend
116+
COPY --from=zoeyvid/certbot-docker:69 /usr/local /usr/local
117+
119118
LABEL com.centurylinklabs.watchtower.monitor-only="true"
120119
ENV NODE_ENV=production \
121120
NODE_CONFIG_DIR=/data/etc/npm \

backend/internal/certificate.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const internalAuditLog = require('./audit-log');
1616
const internalNginx = require('./nginx');
1717

1818
const certbotCommand = 'certbot';
19-
const certbotArgs = ['--logs-dir', '/tmp/certbot-log', '--work-dir', '/tmp/certbot-work', '--config-dir', '/data/tls/certbot', '--config', '/etc/certbot.ini', '--agree-tos', '--non-interactive', '--no-eff-email', '--register-unsafely-without-email', ...(process.env.ACME_MUST_STAPLE === 'false' ? [] : ['--must-staple']), ...(process.env.ACME_SERVER_TLS_VERIFY === 'false' ? ['--no-verify-ssl'] : [])];
19+
const certbotArgs = ['--logs-dir', '/tmp/certbot-log', '--work-dir', '/tmp/certbot-work', '--config-dir', '/data/tls/certbot', '--config', '/etc/certbot.ini', '--agree-tos', '--non-interactive', '--no-eff-email', '--register-unsafely-without-email', ...(process.env.ACME_SERVER_TLS_VERIFY === 'false' ? ['--no-verify-ssl'] : [])];
2020

2121
function omissions() {
2222
return ['is_deleted', 'owner.is_deleted'];
@@ -42,7 +42,7 @@ const internalCertificate = {
4242
logger.info('Renewing TLS certs close to expiry...');
4343

4444
return utils
45-
.execFile(certbotCommand, [...certbotArgs, 'renew', '--quiet', '--no-random-sleep-on-renew'])
45+
.execFile(certbotCommand, [...certbotArgs, 'renew', '--server', process.env.ACME_SERVER, '--quiet', '--no-random-sleep-on-renew'])
4646
.then((result) => {
4747
if (result) {
4848
logger.info('Renew Result: ' + result);
@@ -761,7 +761,7 @@ const internalCertificate = {
761761
requestCertbot: (certificate) => {
762762
logger.info('Requesting Certbot certificates for Cert #' + certificate.id + ': ' + certificate.domain_names.join(', '));
763763

764-
return utils.execFile(certbotCommand, [...certbotArgs, 'certonly', '--cert-name', `npm-${certificate.id}`, '--domains', `${certificate.domain_names.join(',')}`, '--server', `${process.env.ACME_SERVER}`, '--authenticator', 'webroot', '--webroot-path', '/tmp/acme-challenge']).then((result) => {
764+
return utils.execFile(certbotCommand, [...certbotArgs, 'certonly', '--cert-name', `npm-${certificate.id}`, '--domains', certificate.domain_names.join(','), '--server', process.env.ACME_SERVER, '--authenticator', 'webroot', '--webroot-path', '/tmp/acme-challenge']).then((result) => {
765765
logger.success(result);
766766
return result;
767767
});
@@ -787,7 +787,7 @@ const internalCertificate = {
787787
fs.writeFileSync(credentialsLocation, certificate.meta.dns_provider_credentials, { mode: 0o600 });
788788

789789
try {
790-
const result = await utils.execFile(certbotCommand, [...certbotArgs, 'certonly', '--cert-name', `npm-${certificate.id}`, '--domains', `${certificate.domain_names.join(',')}`, '--server', `${process.env.ACME_SERVER}`, '--authenticator', dnsPlugin.full_plugin_name, `--${dnsPlugin.full_plugin_name}-credentials`, credentialsLocation]);
790+
const result = await utils.execFile(certbotCommand, [...certbotArgs, 'certonly', '--cert-name', `npm-${certificate.id}`, '--domains', certificate.domain_names.join(','), '--server', process.env.ACME_SERVER}, '--authenticator', dnsPlugin.full_plugin_name, `--${dnsPlugin.full_plugin_name}-credentials`, credentialsLocation, ...(certificate.meta.propagation_seconds !== undefined ? [`--${dnsPlugin.full_plugin_name}-propagation-seconds`] : []), ...(certificate.meta.propagation_seconds !== undefined ? [certificate.meta.propagation_seconds] : [])]);
791791
logger.info(result);
792792
return result;
793793
} catch (err) {
@@ -850,7 +850,7 @@ const internalCertificate = {
850850
const revokeResult = await utils.execFile(certbotCommand, [...certbotArgs, 'revoke', '--cert-name', `npm-${certificate.id}`, '--no-delete-after-revoke']);
851851
logger.info(revokeResult);
852852

853-
const renewResult = await utils.execFile(certbotCommand, [...certbotArgs, 'renew', '--force-renewal', '--cert-name', `npm-${certificate.id}`, '--no-random-sleep-on-renew']);
853+
const renewResult = await utils.execFile(certbotCommand, [...certbotArgs, 'renew', '--server', process.env.ACME_SERVER, '--force-renewal', '--cert-name', `npm-${certificate.id}`, '--no-random-sleep-on-renew']);
854854
logger.info(renewResult);
855855

856856
return renewResult;
@@ -872,7 +872,7 @@ const internalCertificate = {
872872
const revokeResult = await utils.execFile(certbotCommand, [...certbotArgs, 'revoke', '--cert-name', `npm-${certificate.id}`, '--no-delete-after-revoke']);
873873
logger.info(revokeResult);
874874

875-
const renewResult = await utils.execFile(certbotCommand, [...certbotArgs, 'renew', '--force-renewal', '--cert-name', `npm-${certificate.id}`, '--no-random-sleep-on-renew']);
875+
const renewResult = await utils.execFile(certbotCommand, [...certbotArgs, 'renew', '--server', process.env.ACME_SERVER, '--force-renewal', '--cert-name', `npm-${certificate.id}`, '--no-random-sleep-on-renew']);
876876
logger.info(renewResult);
877877

878878
return renewResult;
@@ -982,18 +982,18 @@ const internalCertificate = {
982982
} else if (result.error) {
983983
logger.info(`HTTP challenge test failed for domain ${domain} because error was returned: ${result.error.msg}`);
984984
return `other:${result.error.msg}`;
985-
} else if (`${result.responsecode}` === '200' && result.htmlresponse === 'Success') {
985+
} else if (result.responsecode === '200' && result.htmlresponse === 'Success') {
986986
// Server exists and has responded with the correct data
987987
return 'ok';
988-
} else if (`${result.responsecode}` === '200') {
988+
} else if (result.responsecode === '200') {
989989
// Server exists but has responded with wrong data
990990
logger.info(`HTTP challenge test failed for domain ${domain} because of invalid returned data:`, result.htmlresponse);
991991
return 'wrong-data';
992-
} else if (`${result.responsecode}` === '404') {
992+
} else if (result.responsecode === '404') {
993993
// Server exists but responded with a 404
994994
logger.info(`HTTP challenge test failed for domain ${domain} because code 404 was returned`);
995995
return '404';
996-
} else if (`${result.responsecode}` === '0' || (typeof result.reason === 'string' && result.reason.toLowerCase() === 'host unavailable')) {
996+
} else if (result.responsecode === '0' || (typeof result.reason === 'string' && result.reason.toLowerCase() === 'host unavailable')) {
997997
// Server does not exist at domain
998998
logger.info(`HTTP challenge test failed for domain ${domain} the host was not found`);
999999
return 'no-host';

backend/package.json

+8-8
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,24 @@
44
"description": "A beautiful interface for creating Nginx endpoints",
55
"main": "index.js",
66
"dependencies": {
7-
"@apidevtools/json-schema-ref-parser": "11.7.2",
7+
"@apidevtools/json-schema-ref-parser": "11.7.3",
88
"apache-md5": "1.1.8",
99
"ajv": "8.17.1",
1010
"archiver": "7.0.1",
1111
"batchflow": "0.4.0",
1212
"bcrypt": "5.1.1",
13-
"better-sqlite3": "11.5.0",
13+
"better-sqlite3": "11.7.0",
1414
"body-parser": "2.0.2",
1515
"compression": "1.7.5",
16-
"express": "4.21.1",
16+
"express": "4.21.2",
1717
"express-fileupload": "1.5.1",
1818
"gravatar": "1.8.2",
1919
"jsonwebtoken": "9.0.2",
2020
"knex": "3.1.0",
2121
"liquidjs": "10.19.0",
2222
"lodash": "4.17.21",
2323
"moment": "2.30.1",
24-
"mysql2": "3.11.4",
24+
"mysql2": "3.11.5",
2525
"node-rsa": "1.1.1",
2626
"objection": "3.1.5",
2727
"path": "0.12.7",
@@ -31,12 +31,12 @@
3131
"license": "MIT",
3232
"devDependencies": {
3333
"@apidevtools/swagger-parser": "10.1.0",
34-
"@eslint/js": "9.15.0",
35-
"eslint": "9.15.0",
34+
"@eslint/js": "9.17.0",
35+
"eslint": "9.17.0",
3636
"eslint-config-prettier": "9.1.0",
3737
"eslint-plugin-prettier": "5.2.1",
38-
"globals": "15.12.0",
39-
"prettier": "3.3.3"
38+
"globals": "15.13.0",
39+
"prettier": "3.4.2"
4040
},
4141
"scripts": {
4242
"validate-schema": "node validate-schema.js"

backend/templates/_listen.conf

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
listen unix:/run/nginx-{{ id }}.sock;
23

34
listen 80;

backend/templates/dead_host.conf

+3-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ include conf.d/include/always.conf;
1515
{%- if use_default_location %}
1616
location / {
1717
include conf.d/include/always.conf;
18-
root /html/dead;
19-
try_files $uri /index.html;
18+
root /html/404deadpage;
19+
error_page 404 /404deadpage.html;
20+
return 404;
2021
}
2122
{%- endif %}
2223

backend/templates/default.conf

+3-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ server {
2626
{%- if value == "404" %}
2727
location / {
2828
include conf.d/include/always.conf;
29-
root /html/dead;
30-
try_files $uri /index.html;
29+
root /html/404deadpage;
30+
error_page 404 /404deadpage.html;
31+
return 404;
3132
}
3233
{%- endif %}
3334

compose.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ services:
1111
environment:
1212
- "TZ=your-timezone" # set timezone, required, set it to one of the values from the "TZ identifier" https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
1313
- "ACME_EMAIL=your-email" # email address which should be used for acme, currently optional, may be required in the future, so I recommend you to enter your email here
14-
# - "ACME_SERVER=https://acme.zerossl.com/v2/DV90" # acme server to use for NEW certificates, default is (currently, may change later) set to: https://acme-v02.api.letsencrypt.org/directory (letsencrypt)
14+
# - "ACME_SERVER=https://dv.acme-v02.api.pki.goog/directory" # acme server to used when requesting/renewing certs using certbot, default is (currently, may change later) set to: https://acme-v02.api.letsencrypt.org/directory (letsencrypt)
1515
# - "ACME_EAB_KID=123456789abcdef" # Key Identifier for External Account Binding for the acme server
1616
# - "ACME_EAB_HMAC_KEY=123456789abcdef" # HMAC key for External Account Binding for the acme server
17-
# - "ACME_MUST_STAPLE=false" # enables must-staple, default true, please only disable it if you get this error MOZILLA_PKIX_ERROR_REQUIRED_TLS_FEATURE_MISSING in Firefox, see https://github.com/ZoeyVid/NPMplus/discussions/1249, after changing this option you need to recreate (not renew) your certs
17+
# - "ACME_MUST_STAPLE=false" # enables must-staple, default true (will change soon, see https://github.com/ZoeyVid/NPMplus/discussions/1285), I recommend you to enable this if your CA supports it
1818
# - "ACME_SERVER_TLS_VERIFY=false" # enables checking if ACME_SERVER has a valid TLS cert, default true
1919
# - "PUID=1000" # set group id, default 0 (root)
2020
# - "PGID=1000" # set user id, default 0 (root), requires PUID

frontend/js/app/nginx/certificates/form.ejs

-2
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@
105105
</div>
106106
107107
<!-- DNS propagation delay -->
108-
<!---
109108
<div class="row">
110109
<div class="col-sm-12 col-md-12">
111110
<div class="form-group mb-0">
@@ -125,7 +124,6 @@
125124
</div>
126125
</div>
127126
</div>
128-
--->
129127
</fieldset>
130128
</div>
131129

frontend/js/app/nginx/dead/form.ejs

-2
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,6 @@
144144
</div>
145145

146146
<!-- DNS propagation delay -->
147-
<!---
148147
<div class="row">
149148
<div class="col-sm-12 col-md-12">
150149
<div class="form-group mb-0">
@@ -164,7 +163,6 @@
164163
</div>
165164
</div>
166165
</div>
167-
--->
168166
</fieldset>
169167
</div>
170168

0 commit comments

Comments
 (0)