Skip to content
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

v2.11.0 #3466

Merged
merged 99 commits into from
Jan 19, 2024
Merged

v2.11.0 #3466

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
4c59400
added support for dns.he.net certbot plugin #2153
benhubert May 16, 2023
6f8db95
Added force renewal + --dns-duckdns-no-txt-restore
devedse Aug 24, 2023
5af834e
mix/max ports
AngusC222 Sep 9, 2023
4b9c02c
Add robots noindex meta tag to prevent indexing
OpenSourceSimon Sep 10, 2023
62e4edd
Update certbot-dns-plugins.js
zhzy0077 Sep 13, 2023
881d705
Add description for Strato 2FA and International Site Support
FlixMa Sep 24, 2023
6b565e6
Change perms on logrotated logs to npm user
FibreTTP Sep 27, 2023
4867db0
Remove explicit user and group - add su directive for default user (n…
FibreTTP Sep 27, 2023
f426e64
Add warning comment about changing the default user name and group name
FibreTTP Sep 27, 2023
0f3b76f
Merge pull request #3219 from FibreTTP/logrotate-perms
jc21 Oct 3, 2023
44e9f37
Merge pull request #3212 from FlixMa/develop
jc21 Oct 3, 2023
410c348
Merge pull request #3194 from zhzy0077/patch-1
jc21 Oct 3, 2023
853c48d
Merge pull request #3190 from OpenSourceSimon/patch-1
jc21 Oct 3, 2023
0f7be79
Merge pull request #3188 from AngusC222/develop
jc21 Oct 3, 2023
3197de4
Merge pull request #3155 from devedse/develop
jc21 Oct 3, 2023
e4ba22f
Removed /etc/letsencrypt from explicit volumes
iBobik Oct 15, 2023
53dbe25
Fix CI compose project name not allowing dots
jc21 Oct 17, 2023
2d9f04e
Bump @babel/traverse from 7.11.0 to 7.23.2 in /frontend
dependabot[bot] Oct 17, 2023
f41b106
Bump browserify-sign from 4.2.1 to 4.2.2 in /frontend
dependabot[bot] Oct 27, 2023
2df4620
Bump browserify-sign from 4.2.1 to 4.2.2 in /docs
dependabot[bot] Oct 27, 2023
134902d
Add a default-site-description string
xiaoxinpro Oct 29, 2023
940d06c
Replace the 'default-site' variable 'description' with the 'i18n' con…
xiaoxinpro Oct 29, 2023
e241819
min/max ports added
AngusC222 Nov 8, 2023
edb81ec
Fix CI branch names being incorrectly replaced
jc21 Nov 8, 2023
b608d33
Merge pull request #3312 from AngusC222/develop
jc21 Nov 8, 2023
9052502
Merge pull request #3293 from xiaoxinpro/develop
jc21 Nov 8, 2023
3666364
Merge pull request #3290 from NginxProxyManager/dependabot/npm_and_ya…
jc21 Nov 22, 2023
4e0768d
Merge pull request #3289 from NginxProxyManager/dependabot/npm_and_ya…
jc21 Nov 22, 2023
e08a4d4
Update mariadb example to auto upgrade from latest image
jc21 Nov 27, 2023
289e438
only add hsts header with https.
DarioViva42 Dec 2, 2023
33dbffb
Improve container startup time
timob Dec 2, 2023
3ad2188
chore: upddate Proxmox Scripts link
ej52 Dec 4, 2023
ccf9cce
Fixed issue where the HTTP2 support was always enabled in nginx confi…
jlesage Dec 9, 2023
1ab3575
fix: increasing maxOptions (amount of domains) to 30
r3na Dec 12, 2023
5165de4
fix: updating default maxOptions to 30 (proxy)
r3na Dec 12, 2023
3b8cb86
fix: updating default maxOptions to 30 (redirection)
r3na Dec 12, 2023
ca56e04
fix: updating default maxOptions to 30 (dead)
r3na Dec 12, 2023
4704bd6
Merge branch 'develop' into patch-1
r3na Dec 12, 2023
1975e4a
fix: updating maxItems (schema/definitions) to 30
r3na Dec 12, 2023
881a067
update to latest vultr certbot plugin
clord Dec 13, 2023
27bc8c4
use same formatting
clord Dec 13, 2023
388fff8
Fixes for the server reachability test.
jlesage Dec 14, 2023
13d4f98
Update certbot-dns-plugins.js for gandi (deprecation of Apikey in fav…
JeremieA Dec 20, 2023
7d85463
Add support for certbot-dns-plesk
arussell Dec 21, 2023
af475ab
Add documentation on customising logrotate config
Encephala Dec 30, 2023
da55e93
Update year to 2024 in footer
Encephala Jan 3, 2024
c6aab8d
Merge pull request #3427 from Encephala/bump-year
jc21 Jan 8, 2024
7be5485
Merge pull request #3422 from Encephala/logrotate-docs
jc21 Jan 8, 2024
1308ae4
Merge pull request #3408 from arussell/certbot-dns-plesk
jc21 Jan 8, 2024
ea6e975
Merge pull request #3401 from JeremieA/certbot-dns-gandi-1.5.0
jc21 Jan 8, 2024
bc8211a
Merge pull request #3388 from jlesage/reachability-test-fix
jc21 Jan 8, 2024
fa557d8
Merge pull request #3387 from clord/clord/update-vultr
jc21 Jan 8, 2024
5de95a8
Merge pull request #3382 from r3na/patch-1
jc21 Jan 8, 2024
965873a
Merge pull request #3377 from jlesage/http2-support-fix
jc21 Jan 8, 2024
4e27cda
Merge pull request #3263 from NginxProxyManager/dependabot/npm_and_ya…
jc21 Jan 8, 2024
b3564b6
Bump @babel/traverse from 7.11.0 to 7.23.7 in /docs
dependabot[bot] Jan 8, 2024
997e9d4
Merge pull request #2924 from benhubert/2153_add-support-for-dns-hurr…
jc21 Jan 8, 2024
2273eae
Merge pull request #3436 from NginxProxyManager/dependabot/npm_and_ya…
jc21 Jan 8, 2024
082c4e1
Fix typo in logrotate config path
Encephala Jan 8, 2024
b8596ac
Merge pull request #3367 from ej52/develop
jc21 Jan 8, 2024
9c813bc
Merge pull request #3437 from Encephala/fix-logrotate-docs
jc21 Jan 8, 2024
459b7a2
Merge pull request #3361 from timob/improve-container-start
jc21 Jan 8, 2024
09d5e2c
Merge pull request #3360 from DarioViva42/hsts-only-with-https
jc21 Jan 8, 2024
e4ef095
Deploy develop docs in CI, updated readme
jc21 Jan 8, 2024
f7c87f6
Updated CI to run some things in parallel
jc21 Jan 9, 2024
b699f05
Run integration tests in parallel
jc21 Jan 9, 2024
025fc97
Pre-build cypress images before runnings integration tests
jc21 Jan 9, 2024
6aee2bb
Fix race condition with integration network
jc21 Jan 9, 2024
883a272
Bump version
jc21 Jan 9, 2024
c70f65d
upgrade to v2.0.0-rc and implement dark mode
tilalx Dec 18, 2023
8ec0c76
update docs-build and add yarn.lock
tilalx Dec 19, 2023
4c90628
try to set the yarn version in jenkins
tilalx Dec 21, 2023
d1119ec
revert change
tilalx Jan 8, 2024
4028120
Merge pull request #3395 from tilalx/develop
jc21 Jan 9, 2024
a7fe687
Fix permission recursiveness
jc21 Jan 9, 2024
33c8678
Fix jenkinsfile after messy merge
jc21 Jan 9, 2024
30772a4
Fix jenkinsfile after messy merge - again
jc21 Jan 9, 2024
be39253
No need to use berry yarn for docs
jc21 Jan 9, 2024
e696849
Use nginxproxymanager/nginx-full image base
jc21 Jan 9, 2024
96fc6a2
Merge pull request #3444 from NginxProxyManager/bookworm-base
jc21 Jan 10, 2024
d19ebf5
Update the config.js to fix pr/3395
tilalx Jan 10, 2024
58ef9a6
Merge pull request #3445 from tilalx/develop
jc21 Jan 10, 2024
fe4bd9f
Make auto-renew use built-in renew function
stevecrozz Dec 15, 2023
f7d1c49
Run renews sequentially
stevecrozz Jan 2, 2024
9c54d1b
Provide the token model for certificate renewal
stevecrozz Jan 11, 2024
1be87f4
Merge pull request #3392 from stevecrozz/auto-renew-uses-bulitin-renew
jc21 Jan 12, 2024
834fb1a
Add missing args to certbot command, was causing failures in rovokation
jc21 Jan 12, 2024
00264bc
Mount letsencrypt folder in CI
jc21 Jan 14, 2024
9f16dae
Merge pull request #3258 from iBobik/patch-1
jc21 Jan 14, 2024
fe0c046
Add stale github action and set a wide limit
jc21 Jan 15, 2024
8646cb5
Allow stale action to run manually
jc21 Jan 15, 2024
db23c9a
Refactor certbot plugins install
jc21 Jan 18, 2024
cddd6fb
certbot-dns-cloudns update 0.6.0 from PR #3459 by @existful
jc21 Jan 18, 2024
a2e85ce
Use certbot version for godaddy plugin, relates to #3165
jc21 Jan 18, 2024
0472aba
Remove test file
jc21 Jan 18, 2024
c722eb1
Merge branch 'master' into develop
jc21 Jan 18, 2024
10d9760
Refactor certbot plugin install for setup
jc21 Jan 18, 2024
a3630a6
Fix unused var
jc21 Jan 18, 2024
0353051
Prevent installing same plugin over and over
jc21 Jan 18, 2024
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
21 changes: 21 additions & 0 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: 'Close stale issues and PRs'
on:
schedule:
- cron: '30 1 * * *'
workflow_dispatch:

jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
stale-issue-label: 'stale'
stale-pr-label: 'stale'
stale-issue-message: 'Issue is now considered stale. If you want to keep it open, please comment :+1:'
stale-pr-message: 'PR is now considered stale. If you want to keep it open, please comment :+1:'
close-issue-message: 'Issue was closed due to inactivity.'
close-pr-message: 'PR was closed due to inactivity.'
days-before-stale: 182
days-before-close: 365
operations-per-run: 50
2 changes: 1 addition & 1 deletion .version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.10.4
2.11.0
252 changes: 139 additions & 113 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,11 @@ pipeline {
IMAGE = 'nginx-proxy-manager'
BUILD_VERSION = getVersion()
MAJOR_VERSION = '2'
BRANCH_LOWER = "${BRANCH_NAME.toLowerCase().replaceAll('/', '-')}"
BRANCH_LOWER = "${BRANCH_NAME.toLowerCase().replaceAll('\\\\', '-').replaceAll('/', '-').replaceAll('\\.', '-')}"
COMPOSE_PROJECT_NAME = "npm_${BRANCH_LOWER}_${BUILD_NUMBER}"
COMPOSE_FILE = 'docker/docker-compose.ci.yml'
COMPOSE_INTERACTIVE_NO_CLI = 1
BUILDX_NAME = "${COMPOSE_PROJECT_NAME}"
DOCS_BUCKET = 'jc21-npm-site'
DOCS_CDN = 'EN1G6DEWZUTDT'
}
stages {
stage('Environment') {
Expand Down Expand Up @@ -62,103 +60,114 @@ pipeline {
}
}
}
stage('Build and Test') {
steps {
script {
// Frontend and Backend
def shStatusCode = sh(label: 'Checking and Building', returnStatus: true, script: '''
set -e
./scripts/ci/frontend-build > ${WORKSPACE}/tmp-sh-build 2>&1
./scripts/ci/test-and-build > ${WORKSPACE}/tmp-sh-build 2>&1
''')
shOutput = readFile "${env.WORKSPACE}/tmp-sh-build"
if (shStatusCode != 0) {
error "${shOutput}"
stage('Builds') {
parallel {
stage('Project') {
steps {
script {
// Frontend and Backend
def shStatusCode = sh(label: 'Checking and Building', returnStatus: true, script: '''
set -e
./scripts/ci/frontend-build > ${WORKSPACE}/tmp-sh-build 2>&1
./scripts/ci/test-and-build > ${WORKSPACE}/tmp-sh-build 2>&1
''')
shOutput = readFile "${env.WORKSPACE}/tmp-sh-build"
if (shStatusCode != 0) {
error "${shOutput}"
}
}
}
post {
always {
sh 'rm -f ${WORKSPACE}/tmp-sh-build'
}
failure {
npmGithubPrComment("CI Error:\n\n```\n${shOutput}\n```", true)
}
}
}
}
post {
always {
sh 'rm -f ${WORKSPACE}/tmp-sh-build'
}
failure {
npmGithubPrComment("CI Error:\n\n```\n${shOutput}\n```", true)
stage('Docs') {
steps {
dir(path: 'docs') {
sh 'yarn install'
sh 'yarn build'
}
dir(path: 'docs/.vuepress/dist') {
sh 'tar -czf ../../docs.tgz *'
}
archiveArtifacts(artifacts: 'docs/docs.tgz', allowEmptyArchive: false)
}
}
}
}
stage('Integration Tests Sqlite') {
steps {
// Bring up a stack
sh 'docker-compose up -d fullstack-sqlite'
sh './scripts/wait-healthy $(docker-compose ps --all -q fullstack-sqlite) 120'
// Stop and Start it, as this will test it's ability to restart with existing data
sh 'docker-compose stop fullstack-sqlite'
sh 'docker-compose start fullstack-sqlite'
sh './scripts/wait-healthy $(docker-compose ps --all -q fullstack-sqlite) 120'

// Run tests
sh 'rm -rf test/results'
sh 'docker-compose up cypress-sqlite'
// Get results
sh 'docker cp -L "$(docker-compose ps --all -q cypress-sqlite):/test/results" test/'
}
post {
always {
// Dumps to analyze later
sh 'mkdir -p debug'
sh 'docker-compose logs fullstack-sqlite > debug/docker_fullstack_sqlite.log'
sh 'docker-compose logs db > debug/docker_db.log'
// Cypress videos and screenshot artifacts
dir(path: 'test/results') {
archiveArtifacts allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml'
}
junit 'test/results/junit/*'
stage('Cypress') {
steps {
// Creating will also create the network prior to
// using it in parallel stages below and mitigating
// a race condition.
sh 'docker-compose build cypress-sqlite'
sh 'docker-compose build cypress-mysql'
sh 'docker-compose create cypress-sqlite'
sh 'docker-compose create cypress-mysql'
}
}
}
}
stage('Integration Tests Mysql') {
steps {
// Bring up a stack
sh 'docker-compose up -d fullstack-mysql'
sh './scripts/wait-healthy $(docker-compose ps --all -q fullstack-mysql) 120'
stage('Integration Tests') {
parallel {
stage('Sqlite') {
steps {
// Bring up a stack
sh 'docker-compose up -d fullstack-sqlite'
sh './scripts/wait-healthy $(docker-compose ps --all -q fullstack-sqlite) 120'
// Stop and Start it, as this will test it's ability to restart with existing data
sh 'docker-compose stop fullstack-sqlite'
sh 'docker-compose start fullstack-sqlite'
sh './scripts/wait-healthy $(docker-compose ps --all -q fullstack-sqlite) 120'

// Run tests
sh 'rm -rf test/results'
sh 'docker-compose up cypress-mysql'
// Get results
sh 'docker cp -L "$(docker-compose ps --all -q cypress-mysql):/test/results" test/'
}
post {
always {
// Dumps to analyze later
sh 'mkdir -p debug'
sh 'docker-compose logs fullstack-mysql > debug/docker_fullstack_mysql.log'
sh 'docker-compose logs db > debug/docker_db.log'
// Cypress videos and screenshot artifacts
dir(path: 'test/results') {
archiveArtifacts allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml'
}
junit 'test/results/junit/*'
}
}
}
stage('Docs') {
when {
not {
equals expected: 'UNSTABLE', actual: currentBuild.result
}
}
steps {
dir(path: 'docs') {
sh 'yarn install'
sh 'yarn build'
// Run tests
sh 'rm -rf test/results-sqlite'
sh 'docker-compose up cypress-sqlite'
// Get results
sh 'docker cp -L "$(docker-compose ps --all -q cypress-sqlite):/test/results" test/results-sqlite'
}
post {
always {
// Dumps to analyze later
sh 'mkdir -p debug/sqlite'
sh 'docker-compose logs fullstack-sqlite > debug/sqlite/docker_fullstack_sqlite.log'
// Cypress videos and screenshot artifacts
dir(path: 'test/results-sqlite') {
archiveArtifacts allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml'
}
junit 'test/results-sqlite/junit/*'
}
}
}
stage('Mysql') {
steps {
// Bring up a stack
sh 'docker-compose up -d fullstack-mysql'
sh './scripts/wait-healthy $(docker-compose ps --all -q fullstack-mysql) 120'

dir(path: 'docs/.vuepress/dist') {
sh 'tar -czf ../../docs.tgz *'
// Run tests
sh 'rm -rf test/results-mysql'
sh 'docker-compose up cypress-mysql'
// Get results
sh 'docker cp -L "$(docker-compose ps --all -q cypress-mysql):/test/results" test/results-mysql'
}
post {
always {
// Dumps to analyze later
sh 'mkdir -p debug/mysql'
sh 'docker-compose logs fullstack-mysql > debug/mysql/docker_fullstack_mysql.log'
sh 'docker-compose logs db > debug/mysql/docker_db.log'
// Cypress videos and screenshot artifacts
dir(path: 'test/results-mysql') {
archiveArtifacts allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml'
}
junit 'test/results-mysql/junit/*'
}
}
}

archiveArtifacts(artifacts: 'docs/docs.tgz', allowEmptyArchive: false)
}
}
stage('MultiArch Build') {
Expand All @@ -174,31 +183,48 @@ pipeline {
}
}
}
stage('Docs Deploy') {
when {
allOf {
branch 'master'
not {
equals expected: 'UNSTABLE', actual: currentBuild.result
stage('Docs / Comment') {
parallel {
stage('Master Docs') {
when {
allOf {
branch 'master'
not {
equals expected: 'UNSTABLE', actual: currentBuild.result
}
}
}
steps {
npmDocsReleaseMaster()
}
}
}
steps {
npmDocsRelease("$DOCS_BUCKET", "$DOCS_CDN")
}
}
stage('PR Comment') {
when {
allOf {
changeRequest()
not {
equals expected: 'UNSTABLE', actual: currentBuild.result
stage('Develop Docs') {
when {
allOf {
branch 'develop'
not {
equals expected: 'UNSTABLE', actual: currentBuild.result
}
}
}
steps {
npmDocsReleaseDevelop()
}
}
}
steps {
script {
npmGithubPrComment("Docker Image for build ${BUILD_NUMBER} is available on [DockerHub](https://cloud.docker.com/repository/docker/jc21/${IMAGE}) as `jc21/${IMAGE}:github-${BRANCH_LOWER}`\n\n**Note:** ensure you backup your NPM instance before testing this PR image! Especially if this PR contains database changes.", true)
stage('PR Comment') {
when {
allOf {
changeRequest()
not {
equals expected: 'UNSTABLE', actual: currentBuild.result
}
}
}
steps {
script {
npmGithubPrComment("Docker Image for build ${BUILD_NUMBER} is available on [DockerHub](https://cloud.docker.com/repository/docker/jc21/${IMAGE}) as `jc21/${IMAGE}:github-${BRANCH_LOWER}`\n\n**Note:** ensure you backup your NPM instance before testing this PR image! Especially if this PR contains database changes.", true)
}
}
}
}
}
Expand All @@ -214,12 +240,12 @@ pipeline {
sh 'figlet "SUCCESS"'
}
failure {
archiveArtifacts(artifacts: 'debug/**.*', allowEmptyArchive: true)
archiveArtifacts(artifacts: 'debug/**/*.*', allowEmptyArchive: true)
juxtapose event: 'failure'
sh 'figlet "FAILURE"'
}
unstable {
archiveArtifacts(artifacts: 'debug/**.*', allowEmptyArchive: true)
archiveArtifacts(artifacts: 'debug/**/*.*', allowEmptyArchive: true)
juxtapose event: 'unstable'
sh 'figlet "UNSTABLE"'
}
Expand Down
18 changes: 14 additions & 4 deletions 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.10.4-green.svg?style=for-the-badge">
<img src="https://img.shields.io/badge/version-2.11.0-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 Expand Up @@ -98,7 +98,18 @@ Password: changeme
Immediately after logging in with this default user you will be asked to modify your details and change your password.


## Contributors
## Contributing

All are welcome to create pull requests for this project, against the `develop` branch. Official releases are created from the `master` branch.

CI is used in this project. All PR's must pass before being considered. After passing,
docker builds for PR's are available on dockerhub for manual verifications.

Documentation within the `develop` branch is available for preview at
[https://develop.nginxproxymanager.com](https://develop.nginxproxymanager.com)


### Contributors

Special thanks to [all of our contributors](https://github.com/NginxProxyManager/nginx-proxy-manager/graphs/contributors).

Expand All @@ -107,5 +118,4 @@ Special thanks to [all of our contributors](https://github.com/NginxProxyManager

1. [Found a bug?](https://github.com/NginxProxyManager/nginx-proxy-manager/issues)
2. [Discussions](https://github.com/NginxProxyManager/nginx-proxy-manager/discussions)
3. [Development Gitter](https://gitter.im/nginx-proxy-manager/community)
4. [Reddit](https://reddit.com/r/nginxproxymanager)
3. [Reddit](https://reddit.com/r/nginxproxymanager)
Loading
Loading