108 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
915172c0c5 fix: move proxy-port properties to proxy plugin and fix CI failures
- Move proxy-port and proxy-ssl-port properties from ports plugin to
  proxy plugin where they conceptually belong
- Generalize proxy:set to handle any property (matching ps:set pattern)
  instead of only handling the type property
- Fix apps:set --global flag parsing (pflag treats --global as a flag,
  not an argument — must be defined explicitly like ps:set does)
- Add missing property-functions source to scheduler-docker-local
  shell scripts (scheduler-enter, scheduler-run, scheduler-deploy,
  check-deploy, bin/scheduler-deploy-process-container)
- Update nginx-vhosts property references from ports to proxy plugin
- Update tests to use proxy:set for proxy-port properties
2026-04-25 17:19:42 -04:00
Jose Diaz-Gonzalez
1308e21947 feat: migrate environment variables to plugin properties
Standardize how environment variables are migrated to properties during
install triggers and migrate all remaining DOKKU_* config vars to their
appropriate plugin properties.

Adds a reusable MigrateConfigToProperties() function in the common
package with Transform callback and ListProperty support, plus a
migrate-config-to-property subcommand for the prop binary so shell
plugins can use the same code path.

Migrated variables and their new property owners:
- DOKKU_APP_PROXY_TYPE/DOKKU_PROXY_TYPE → proxy type
- DOKKU_DISABLE_PROXY → proxy disabled
- DOKKU_PROXY_PORT → ports proxy-port
- DOKKU_PROXY_SSL_PORT → ports proxy-ssl-port
- DOKKU_APP_RESTORE → ps restore
- DOKKU_SKIP_DEPLOY → ps skip-deploy
- DOKKU_START_CMD → ps start-cmd
- DOKKU_DOCKERFILE_START_CMD → ps dockerfile-start-cmd
- DOKKU_DISABLE_APP_AUTOCREATION → apps disable-autocreation
- DOKKU_APP_SHELL → scheduler shell
- DOKKU_SKIP_CLEANUP → builder skip-cleanup
- DOKKU_CHECKS_DISABLED → checks disabled
- DOKKU_CHECKS_SKIPPED → checks skipped
- DOKKU_CHECKS_WAIT → checks wait
- DOKKU_CHECKS_TIMEOUT → checks timeout
- DOKKU_CHECKS_ATTEMPTS → checks attempts
- DOKKU_DEFAULT_CHECKS_WAIT → checks default-wait
- DOKKU_SKIP_ALL_CHECKS → checks disabled (legacy)
- DOKKU_SKIP_DEFAULT_CHECKS → checks skipped (legacy)

Also refactors existing bespoke migration loops in scheduler, ports, ps,
builder, and nginx-vhosts plugins to use the standardized utility.

Removes DOKKU_PARALLEL_ARGUMENTS from documentation (unused in core).
Deprecates fn-migrate-config-to-property bash function.

closes #1558
2026-04-25 05:11:07 -04:00
Jose Diaz-Gonzalez
a4a229df3a fix: do not start nginx if there are no apps with nginx as a proxy
Also start it by default in the case where there are no apps at all, as that likely means this is a first-time installation.
2025-11-22 22:06:28 -05:00
Grzesiek W
9cfa4acf57 Remove server_tokens directive from main nginx config if present (commented or uncommented) 2025-09-13 20:16:30 +02:00
Jose Diaz-Gonzalez
ac56a5ffdd fix: check if nginx is running before reloading during an app deletion
The purpose of the reload is to remove nginx from being loaded. If nginx isn't running, then by definition the config is not loaded.

Closes #6832
2024-09-23 21:25:23 -04:00
Jose Diaz-Gonzalez
5493ca5978 fix: force sv usage in docker container to avoid cases where systemd is used instead
On newer Ubuntu Noble, cron (among other things) has a transitory dependency on systemd, forcing our systemd/runit detection to fail. This change allows overriding the detected init on Ubuntu systems, ensuring we always do the right thing when interacting with init.
2024-09-21 17:20:19 -04:00
Jose Diaz-Gonzalez
db3cfe441c fix: handle case where systemctl isn't in /usr/bin
In most cases, it should be there, but it appears that system upgrades from Ubuntu 16.04 sometimes do not have usr-merge setup. As such, we need to fallback to the /bin/systemctl path if it exists.
2024-03-06 02:02:13 -05:00
Jose Diaz-Gonzalez
6f82879a43 Merge pull request #6390 from renweibo/master
Prefer systemctl over sv when both exist while restarting nginx
2024-02-11 20:20:39 -05:00
Jose Diaz-Gonzalez
d4b445985b refactor: consolidate property fetching for nginx plugin into golang codebase
Also update the documentation to include docs for all properties.
2024-02-06 00:42:48 -05:00
renweibo
ff2d60003d fix problem when sv and systemctl exists at the same time in ubuntu, core command related dokku nginx plugin will fail.
This will happend when an ubuntu server upgrade from early version.
2023-12-22 23:08:10 +08:00
Jose Diaz-Gonzalez
c44d779695 fix: detect and use systemd on Debian systems
Debian Bookworm completely removes invoke-rc.d, thus breaking interactions with nginx.

Closes #6020
2023-07-11 20:34:50 -04:00
Jose Diaz-Gonzalez
a8bc8044e4 feat: switch to systemctl for interacting with the nginx init process 2022-11-29 01:38:36 -05:00
Jose Diaz-Gonzalez
5fed0c45ac refactor: use the properties system instead of the data dir for tracking whether a proxy should be stopped or started 2022-11-29 01:38:36 -05:00
Jose Diaz-Gonzalez
1d85095ec8 feat: allow dokku user to enable/disable nginx service 2022-11-29 01:38:36 -05:00
Jose Diaz-Gonzalez
1a14731f46 chore: silence the warning message when there are no dokku apps on install 2022-11-28 02:20:54 -05:00
Jose Diaz-Gonzalez
ff9005dd0e feat: migrate existing installs to new monorepo setup for nginx.conf.sigil file 2022-11-23 20:26:16 -05:00
Jose Diaz-Gonzalez
bcbe343cf7 refactor: move env var migration to it's own function 2022-11-23 19:33:13 -05:00
Jose Diaz-Gonzalez
98feb988fa feat: implement nginx:start and nginx:stop commands 2022-08-10 04:23:05 -04:00
Jose Diaz-Gonzalez
70fc35c317 chore: drop unsupported operating systems
We will no longer support CentOS, Fedora, and Opensuse as installation targets. These are not actively maintained by anyone with commit rights and occasionally cause issues for users as they are not tested during the release process.

Rather than have subpar support for an untested operating system, we're removing support for them completely. Users of these operating systems should take a look migration to the docker-based installation method, which will always be tested and supported by the project.

Additionally, drop support for Debian 9 as it is now EOL.
2022-08-07 18:36:30 -04:00
Jose Diaz-Gonzalez
268c318bc5 fix: ensure we do not filter apps for certain commands and triggers
Some things must pull *all* apps vs filtered apps (mostly things that write out config files or install triggers). Using an unflitered list is best.

Also, we default to filtering, which should be what most usage needs.
2022-05-15 15:47:13 -04:00
Jose Diaz-Gonzalez
2e1df2578c fix: set correct permissions on sudoers files
RHEL validates 0600, while Debian systems expect 0440.
2022-02-27 19:10:33 -05:00
Jose Diaz-Gonzalez
57858c1788 fix: ensure installations treat raspbian as similar to debian buster as possible 2021-10-28 02:41:10 -04:00
David Bazile
2577233ff0 Add nascent support for Fedora 2021-06-07 10:18:32 -04:00
Jose Diaz-Gonzalez
0931d655f7 fix: use correct syntax... 2020-05-06 13:09:26 -04:00
Jose Diaz-Gonzalez
d3263a45c3 feat: allow users to customize the source of the dokku.conf nginx template
Closes #3674
2020-05-06 01:38:43 -04:00
Ben Wheatley
05513ad75a Fix missing 502 error page
In dokku/dokku#3602 a new error page for the 502 status code was
introduced.

However, this error page is not currently being used, and results in a
404 error being served instead, because nginx is trying to load a
non-existent file:

```
open() "/var/lib/dokku/data/nginx-vhosts/dokku-errors/502-error.html" failed (2: No such file or directory)
```

Fix this by copying the `502-error.html` file into the `dokku-errors`
directory upon installation.
2020-04-26 15:08:37 +01:00
Jose Diaz-Gonzalez
e19b52442b fix: remove deprecated egrep calls from codebase 2020-02-17 05:59:52 -05:00
Jose Diaz-Gonzalez
7357579af2 refactor: standardize trigger code 2020-02-10 02:40:59 -05:00
Jose Diaz-Gonzalez
73e7ff7b18 feat: Enable HSTS by default
This enables the HSTS header by default when an SSL certificate is in use. HSTS options can also be managed via the nginx:set command, which also exposes the ability to disable HSTS for your application.
2020-02-06 11:08:13 -05:00
Jose Diaz-Gonzalez
6e3fddb544 feat: add proper openresty support
This change allows supporting the openresty package as installed on Ubuntu 18.04 from the official openresty package repository, while also returning general nginx support.

Closes #3675
2019-09-16 03:05:35 -04:00
Jose Diaz-Gonzalez
5f80cd3c20 feat: follow updated intermediate recommendations from the Mozilla SSL Config Generator 2019-09-15 22:24:37 -04:00
Alexey Zagarin
180a5e79c9 Improve nginx ciphers compatibility
Closes #3661.
2019-08-23 14:00:10 +07:00
Jose Diaz-Gonzalez
ef5a45c7cb feat: add DOKKU_QUIET_OUTPUT=1 to all config_set/config_unset calls
This makes build output a bit more digestable.
2019-03-13 02:05:18 -04:00
Jose Diaz-Gonzalez
e423676b11 feat: make installs quieter
This removes output from commands that otherwise should be silent - such as when not needing to migrate data.
2019-01-20 20:54:00 -05:00
Jose Diaz-Gonzalez
86795ddacc tests: run mvdan/shfmt on test runs
While I do not agree with _every_ style change, this will force Dokku to have consistent formatting across all shell scripts, which is arguably a Good Thing™.

The command used to reprocess everything is:

```shell
shfmt -l -bn -ci -i 2 -w .
```
2019-01-07 01:25:55 -05:00
Jose Diaz-Gonzalez
0909052816 feat: Pull invalid nginx configuration when the nginx configs fail to validate
- expose an nginx:validate command that can be used to show validation information
- properly reference the invalid nginx config, rather than tell the user that another app's nginx config is invalid when deploying their own app
- allow a user to cleanup bad nginx config files out of band when they are blocking a deploy _without_ requiring knowing where that nginx config is

Note that this may have issues with generated nginx.conf files that depend on other apps or other parts of the nginx config. For now, this is acceptable, though it is something that needs to be field tested.

Closes #3162
2018-12-31 11:57:03 -05:00
Jose Diaz-Gonzalez
a54f672b5c tests: do not generate dhparam for tests
Tests will run much quicker if we don't need to regenerate this file. Note that this file _should not_ be used within installs.
2018-12-29 04:22:28 -05:00
Jose Diaz-Gonzalez
f25f45b67e fix: drop dhparam key size to 2048
4096 takes so long on a very fast machine - 32 core, 64 gb droplet - that most users will begin to believe that it will never complete.
2018-12-27 21:21:06 -05:00
Jose Diaz-Gonzalez
ba8037b4bd feat: switch to move secure ssl ciphers
The cipher list is from from https://cipherli.st/ and will remove a few older browsers:

- Android 5.0
- Android 6.0
- Chrome 49 / XP SP3
- Firefox 31.3.0 ESR / Win 7
- Firefox 47 / Win 7  R
- IE 11 / Win Phone 8.1

I _think_ thats an okay drop - dropping Android kinda hurts, but we're far from the only ones dropping them from being served, and our users are free to override these settings on their own servers.

Closes #3343
2018-12-27 06:22:37 -05:00
Jose Diaz-Gonzalez
92ae1b678a feat: increase RSA bit keys to 4096
Refs #3343
2018-12-27 06:21:50 -05:00
Jose Diaz-Gonzalez
8bc87ee656 feat: always overwrite the dokku.conf file for nginx
This is necessary as sometimes older config is shipped with Dokku, meaning that security directives - amongst others - are not properly updated.

Refs #3342
2018-12-26 23:05:01 -05:00
Jose Diaz-Gonzalez
aa5600271a fix: include missing config/functions source
Closes #3150
2018-04-09 09:37:25 -04:00
Jose Diaz-Gonzalez
f48a6e1834 fix: remove local use in install hook 2018-04-02 00:24:43 -04:00
Alexis Tyler
f054b30086 fix missing function 2018-04-02 00:24:43 -04:00
Alexis Tyler
71bc198cec inline nginx migrate function 2018-04-02 00:24:43 -04:00
Alexis Tyler
4c3a0801f7 fix review and switch DOKKU_NGINX to DOKKU_PROXY in scripts/docs 2018-04-02 00:24:43 -04:00
Alexis Tyler
7095eac052 migrate env for NGINX_* to PROXY_* 2018-04-02 00:24:43 -04:00
Jose Diaz-Gonzalez
2271badaf5 feat: add support for rhel
The centos rpm packages should be installable on centos once this is merged and released. However, Dokku will not maintain an Rhel-specific repository as there is no way for us to feasibly test it.

Closes #3046
2018-02-19 14:31:17 -05:00
Jose Diaz-Gonzalez
70cee2df86 fix: persist users in the dokku group through installations
Closes #2908
2017-12-13 01:24:39 -05:00
Lasse Brandt
84a6c6017d Build a custom dhparam file once for nginx and include it as default 2017-11-14 12:55:52 +01:00