Skip to content

v2.12.4 #4605

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 73 commits into from
Jul 1, 2025
Merged

v2.12.4 #4605

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
2cee211
add First Domains plugin
hatharry Nov 13, 2024
cfcf78a
Set bearer auth security component
Sander0542 Feb 5, 2025
14d7c35
Fix whitespaces
Sander0542 Feb 5, 2025
a6af5ec
Remove certificate as required from proxy host
Sander0542 Feb 5, 2025
8a15571
Add certificate fields to boolFields
Sander0542 Feb 5, 2025
df48b83
Update order to match others
Sander0542 Feb 5, 2025
b09147e
Update frontend copyright year to 2025
mordyovits Feb 7, 2025
79d28f0
Merge pull request #4346 from Sander0542/feature/security-schemes-com…
jc21 Feb 7, 2025
03fd292
use latest certbot-dns-cpanel version
pustekuchen91 Feb 9, 2025
d147ccd
Fixed error in sqlite installation compose file
wisewtf Feb 14, 2025
312e2ab
[fix]Stream List error code 500
ZeroDeng01 Feb 21, 2025
1c47fc2
feat: Add IP_RANGES_FETCH_ENABLED environment variable
cg-zhou Feb 26, 2025
a394b25
fix eslint error
cg-zhou Feb 26, 2025
bf9d9bd
Fix DomainOffensive certbot plugin
chindocaine Feb 28, 2025
078baa2
Update certbot-dns-plugins.json
henmohr Mar 3, 2025
341ac65
Updates Active24 plugin to API v2
foxtrotcz Mar 9, 2025
18830f8
Update the Gandi plugin.
amateescu Mar 13, 2025
5e66d67
Adds test for dashboard endpoints
jc21 Mar 24, 2025
f5879df
Update certbot-dns-plugins.json
godsgood33 Apr 10, 2025
0cab720
fix: optimize certbot ownership script to reduce container startup time
addievo Apr 20, 2025
d9cdb3d
add Baidu as DNS provider
chenghaopeng May 11, 2025
55dadb2
Merge pull request #1 from chenghaopeng/dns-baidu
chenghaopeng May 11, 2025
76be31c
Update certbot-dns-plugins.json with dns-ddns plugin
astamminger May 8, 2025
4fe3055
Added nic.ru dns provider
vzagorovskiy May 19, 2025
4fb9354
Merge pull request #4547 from vzagorovskiy/develop
jc21 May 21, 2025
98d118c
Merge pull request #4540 from hatharry/develop
jc21 May 21, 2025
7f8adc7
Merge pull request #4538 from astamminger/add_dns_ddnss_plugin
jc21 May 21, 2025
34a46bd
Merge pull request #4534 from chenghaopeng/develop
jc21 May 21, 2025
100a488
Merge pull request #4481 from godsgood33/patch-1
jc21 May 21, 2025
6d6d83c
Merge pull request #4435 from amateescu/update-gandi-plugin
jc21 May 21, 2025
3d8079a
Merge pull request #4426 from foxtrotcz/develop
jc21 May 21, 2025
6f53997
Merge pull request #4411 from henmohr/develop
jc21 May 21, 2025
f327c1e
Merge pull request #4406 from chindocaine/fix_domainoffensive_certbot
jc21 May 21, 2025
34267e0
Update strato dns plugin from 0.2.1 to 0.2.2
MinhPho May 23, 2025
0291cfc
Added spaceship DNS provider
gustavfroding May 23, 2025
09ba400
fix(modal): make textarea font actually monospace
1ukastesar May 26, 2025
b6afc19
Added selectel v2 DNS provider
spions May 28, 2025
77061a7
Update certbot-dns-plugins.json
tom-kst Jun 11, 2025
f11dc5d
Update certbot-dns-plugins.json
tom-kst Jun 11, 2025
7580e65
Bump brace-expansion from 1.1.11 to 1.1.12 in /test
dependabot[bot] Jun 11, 2025
ef69be2
Fix Incorrect Api status codes
h33n0k Jun 12, 2025
b873499
Bump pbkdf2 from 3.1.1 to 3.1.3 in /frontend
dependabot[bot] Jun 24, 2025
30dfa9e
added CDMon DNS provider
aitor422 Jun 25, 2025
40f22d3
Merge pull request #4574 from tom-kst/develop
jc21 Jun 29, 2025
95ee5ca
Merge pull request #4553 from gustavfroding/develop
jc21 Jun 29, 2025
8a69c65
Merge pull request #4551 from MinhPho/feature/update-strato-dns-plugin
jc21 Jun 29, 2025
cc4ee69
Merge pull request #4597 from aitor422/develop
jc21 Jun 29, 2025
c99143f
Merge pull request #4596 from NginxProxyManager/dependabot/npm_and_ya…
jc21 Jun 30, 2025
64f00e8
Merge pull request #4577 from h33n0k/develop
jc21 Jun 30, 2025
7d2369b
Merge pull request #4576 from NginxProxyManager/dependabot/npm_and_ya…
jc21 Jun 30, 2025
60a25ff
Merge pull request #4560 from spions/patch-1
jc21 Jun 30, 2025
a573450
Bump axios from 1.7.7 to 1.10.0 in /test
dependabot[bot] Jun 30, 2025
9a96fbb
Bump vite from 5.4.14 to 5.4.19 in /docs
dependabot[bot] Jun 30, 2025
d0ec8e8
Bump elliptic from 6.6.0 to 6.6.1 in /frontend
dependabot[bot] Jun 30, 2025
ec81f24
Add cypress test to list streams
jc21 Jun 30, 2025
97dbbdd
Fix incorrect swagger for streams list
jc21 Jun 30, 2025
a87283b
Merge pull request #4603 from NginxProxyManager/dependabot/npm_and_ya…
jc21 Jun 30, 2025
af5d3ec
Merge pull request #4602 from NginxProxyManager/dependabot/npm_and_ya…
jc21 Jun 30, 2025
4c23f22
Merge pull request #4601 from NginxProxyManager/dependabot/npm_and_ya…
jc21 Jun 30, 2025
cbb1fe4
Merge pull request #4381 from ZeroDeng01/ZeroDeng01-patch-1
jc21 Jun 30, 2025
6f04543
Merge pull request #4368 from wisewtf/patch-1
jc21 Jun 30, 2025
23fd1fe
Merge branch 'develop' into update-cpanel-certbot-plugin
jc21 Jun 30, 2025
ccd69c8
Update certbot-dns-plugins.json
jc21 Jun 30, 2025
9758c12
Bump brace-expansion from 1.1.11 to 1.1.12 in /backend
dependabot[bot] Jun 30, 2025
0792fc0
Remove unnecessary Promise.resolve() calls
cg-zhou Jun 30, 2025
7047750
Merge pull request #4358 from pustekuchen91/update-cpanel-certbot-plugin
jc21 Jun 30, 2025
ff3116a
Merge pull request #4604 from NginxProxyManager/dependabot/npm_and_ya…
jc21 Jun 30, 2025
d98f4b4
Merge pull request #4398 from cg-zhou/feature/add-ip-ranges-env-var
jc21 Jun 30, 2025
27e3f73
Merge pull request #4353 from mordyovits/patch-1
jc21 Jun 30, 2025
94f6756
Merge pull request #4557 from 1ukastesar/patch-1
jc21 Jun 30, 2025
0ee4d04
Merge pull request #4491 from addievo/fix-certbot-startup-time
jc21 Jun 30, 2025
c58f3f3
Bump version
jc21 Jun 30, 2025
953faea
Merge branch 'master' into develop
jc21 Jun 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.12.3
2.12.4
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<p align="center">
<img src="https://nginxproxymanager.com/github.png">
<br><br>
<img src="https://img.shields.io/badge/version-2.12.3-green.svg?style=for-the-badge">
<img src="https://img.shields.io/badge/version-2.12.4-green.svg?style=for-the-badge">
<a href="https://hub.docker.com/repository/docker/jc21/nginx-proxy-manager">
<img src="https://img.shields.io/docker/stars/jc21/nginx-proxy-manager.svg?style=for-the-badge">
</a>
Expand Down
13 changes: 12 additions & 1 deletion backend/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
const schema = require('./schema');
const logger = require('./logger').global;

const IP_RANGES_FETCH_ENABLED = process.env.IP_RANGES_FETCH_ENABLED !== 'false';

async function appStart () {
const migrate = require('./migrate');
const setup = require('./setup');
Expand All @@ -13,7 +15,16 @@ async function appStart () {
return migrate.latest()
.then(setup)
.then(schema.getCompiledSchema)
.then(internalIpRanges.fetch)
.then(() => {
if (IP_RANGES_FETCH_ENABLED) {
logger.info('IP Ranges fetch is enabled');
return internalIpRanges.fetch().catch((err) => {
logger.error('IP Ranges fetch failed, continuing anyway:', err.message);
});
} else {
logger.info('IP Ranges fetch is disabled by environment variable');
}
})
.then(() => {
internalCertificate.initTimer();
internalIpRanges.initTimer();
Expand Down
2 changes: 1 addition & 1 deletion backend/internal/stream.js
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ const internalStream = {
.where('is_deleted', 0)
.groupBy('id')
.allowGraph('[owner,certificate]')
.orderByRaw('CAST(incoming_port AS INTEGER) ASC');
.orderBy('incoming_port', 'ASC');

if (access_data.permission_visibility !== 'all') {
query.andWhere('owner_user_id', access.token.getUserId(1));
Expand Down
4 changes: 4 additions & 0 deletions backend/models/dead_host.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@ Model.knex(db);

const boolFields = [
'is_deleted',
'ssl_forced',
'http2_support',
'enabled',
'hsts_enabled',
'hsts_subdomains',
];

class DeadHost extends Model {
Expand Down
2 changes: 1 addition & 1 deletion backend/models/stream.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ const now = require('./now_helper');
Model.knex(db);

const boolFields = [
'enabled',
'is_deleted',
'enabled',
'tcp_forwarding',
'udp_forwarding',
];
Expand Down
6 changes: 3 additions & 3 deletions backend/routes/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ router
return internalUser.setPassword(res.locals.access, payload);
})
.then((result) => {
res.status(201)
res.status(200)
.send(result);
})
.catch(next);
Expand Down Expand Up @@ -212,7 +212,7 @@ router
return internalUser.setPermissions(res.locals.access, payload);
})
.then((result) => {
res.status(201)
res.status(200)
.send(result);
})
.catch(next);
Expand All @@ -238,7 +238,7 @@ router
.post((req, res, next) => {
internalUser.loginAs(res.locals.access, {id: parseInt(req.params.user_id, 10)})
.then((result) => {
res.status(201)
res.status(200)
.send(result);
})
.catch(next);
Expand Down
3 changes: 1 addition & 2 deletions backend/schema/components/proxy-host-object.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@
"enabled",
"locations",
"hsts_enabled",
"hsts_subdomains",
"certificate"
"hsts_subdomains"
],
"additionalProperties": false,
"properties": {
Expand Down
4 changes: 2 additions & 2 deletions backend/schema/components/stream-list.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"type": "array",
"description": "Proxy Hosts list",
"description": "Streams list",
"items": {
"$ref": "./proxy-host-object.json"
"$ref": "./stream-object.json"
}
}
9 changes: 9 additions & 0 deletions backend/schema/swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@
"url": "http://127.0.0.1:81/api"
}
],
"components": {
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT"
}
}
},
"paths": {
"/": {
"get": {
Expand Down
6 changes: 3 additions & 3 deletions backend/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -492,9 +492,9 @@ boxen@^4.2.0:
widest-line "^3.1.0"

brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
version "1.1.12"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843"
integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
Expand Down
1 change: 1 addition & 0 deletions docker/docker-compose.ci.mysql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ services:
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npmpass'
MARIADB_AUTO_UPGRADE: '1'
volumes:
- mysql_vol:/var/lib/mysql
networks:
Expand Down
19 changes: 16 additions & 3 deletions docker/rootfs/etc/s6-overlay/s6-rc.d/prepare/30-ownership.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,19 @@ chown -R "$PUID:$PGID" /etc/nginx/nginx
chown -R "$PUID:$PGID" /etc/nginx/nginx.conf
chown -R "$PUID:$PGID" /etc/nginx/conf.d

# Prevents errors when installing python certbot plugins when non-root
chown "$PUID:$PGID" /opt/certbot /opt/certbot/bin
find /opt/certbot/lib/python*/site-packages -not -user "$PUID" -execdir chown "$PUID:$PGID" {} \+
# Certbot directories - optimized approach
CERT_INIT_FLAG="/opt/certbot/.ownership_initialized"

if [ ! -f "$CERT_INIT_FLAG" ]; then
# Prevents errors when installing python certbot plugins when non-root
chown "$PUID:$PGID" /opt/certbot /opt/certbot/bin

# Handle all site-packages directories efficiently
find /opt/certbot/lib -type d -name "site-packages" | while read -r SITE_PACKAGES_DIR; do
chown -R "$PUID:$PGID" "$SITE_PACKAGES_DIR"
done

# Create a flag file to skip this step on subsequent runs
touch "$CERT_INIT_FLAG"
chown "$PUID:$PGID" "$CERT_INIT_FLAG"
fi
8 changes: 8 additions & 0 deletions docs/src/advanced-config/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,14 @@ The easy fix is to add a Docker environment variable to the Nginx Proxy Manager
DISABLE_IPV6: 'true'
```

## Disabling IP Ranges Fetch

By default, NPM fetches IP ranges from CloudFront and Cloudflare during application startup. In environments with limited internet access or to speed up container startup, this fetch can be disabled:

```yml
environment:
IP_RANGES_FETCH_ENABLED: 'false'
```

## Custom Nginx Configurations

Expand Down
2 changes: 1 addition & 1 deletion docs/src/setup/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ services:
# Add any other Stream port you want to expose
# - '21:21' # FTP

environment:
#environment:
# Uncomment this if you want to change the location of
# the SQLite DB file within the container
# DB_SQLITE_FILE: "/data/database.sqlite"
Expand Down
6 changes: 3 additions & 3 deletions docs/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1065,9 +1065,9 @@ vfile@^6.0.0:
vfile-message "^4.0.0"

vite@^5.4.8:
version "5.4.14"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.14.tgz#ff8255edb02134df180dcfca1916c37a6abe8408"
integrity sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==
version "5.4.19"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.19.tgz#20efd060410044b3ed555049418a5e7d1998f959"
integrity sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==
dependencies:
esbuild "^0.21.3"
postcss "^8.4.43"
Expand Down
2 changes: 1 addition & 1 deletion frontend/js/i18n/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
},
"footer": {
"fork-me": "Fork me on Github",
"copy": "&copy; 2024 <a href=\"{url}\" target=\"_blank\">jc21.com</a>.",
"copy": "&copy; 2025 <a href=\"{url}\" target=\"_blank\">jc21.com</a>.",
"theme": "Theme by <a href=\"{url}\" target=\"_blank\">Tabler</a>"
},
"dashboard": {
Expand Down
1 change: 1 addition & 0 deletions frontend/scss/tabler-extra.scss
Original file line number Diff line number Diff line change
Expand Up @@ -167,4 +167,5 @@ $pink: #f66d9b;

textarea.form-control.text-monospace {
font-size: 12px;
font-family: monospace;
}
Loading
Loading