Compare commits

...

638 Commits

Author SHA1 Message Date
LinuxServer-CI
b4b73022db Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2026-02-21 04:42:02 +00:00
LinuxServer-CI
9d5ebb6a7a Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2026-02-14 04:50:10 +00:00
LinuxServer-CI
7ad019e68d Bot Updating Templated Files 2026-02-14 04:45:56 +00:00
LinuxServer-CI
59ef2df680 Bot Updating Templated Files 2026-02-14 04:44:20 +00:00
LinuxServer-CI
db874b2c0f Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2026-02-10 05:08:06 +00:00
LinuxServer-CI
6182a75998 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2026-02-07 04:43:17 +00:00
LinuxServer-CI
145c5d84f6 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2026-02-06 14:17:14 +00:00
LinuxServer-CI
1039f2a04c Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2026-02-03 19:48:04 +00:00
LinuxServer-CI
156e3ac160 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2026-01-31 04:29:28 +00:00
LinuxServer-CI
e649bd71da Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2026-01-26 00:38:36 +00:00
LinuxServer-CI
b54c263769 Bot Updating Templated Files 2026-01-26 00:34:15 +00:00
aptalca
7b11fb9643 Merge pull request #600 from linuxserver/sample-race
reorder init to make sure samples are copied before version checks
2026-01-25 19:32:30 -05:00
LinuxServer-CI
72d187c734 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2026-01-24 04:03:28 +00:00
aptalca
b6752babcd sandwich swag folder creation and sample copying between nginx base's permissions and version checks to make sure samples are there when the check happens 2026-01-23 21:37:09 -05:00
Adam
6f38cebe04 Merge pull request #597 from hadjilucasL/patch-1
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2026-01-18 10:04:48 +00:00
LinuxServer-CI
62b3a02aed Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2026-01-17 03:59:34 +00:00
LinuxServer-CI
2deac3dac6 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2026-01-13 11:05:27 +00:00
LinuxServer-CI
48cbb269cc Bot Updating Templated Files 2026-01-13 11:00:44 +00:00
Adam
8489cde7c0 Merge pull request #596 from CaptivatingCat/hetzner-cloud 2026-01-13 10:59:01 +00:00
CaptivatingCat
a120a68aae Merge branch 'master' into hetzner-cloud 2026-01-11 14:55:29 +01:00
LinuxServer-CI
1674ff4509 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2026-01-10 04:00:48 +00:00
CaptivatingCat
52707530e2 Merge branch 'master' into hetzner-cloud 2026-01-07 23:30:22 +01:00
CaptivatingCat
cbf78b31bb Fix missing quote in readme-vars.yml 2026-01-07 23:29:05 +01:00
Lucas Hadjilucas
2fc01f4e21 Merge branch 'master' into patch-1 2026-01-04 21:36:59 +02:00
LinuxServer-CI
5491278c13 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2026-01-03 03:59:18 +00:00
CaptivatingCat
4a7daa06ad Merge branch 'master' into hetzner-cloud 2025-12-31 22:39:27 +01:00
Lucas Hadjilucas
77dc5ff352 Merge branch 'master' into patch-1 2025-12-27 23:14:14 +02:00
LinuxServer-CI
e834e13141 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-12-27 03:59:05 +00:00
Lucas Hadjilucas
0ab1a76dae Restore symlink paths for letsencrypt keys
To solve #549
2025-12-23 22:46:59 +02:00
CaptivatingCat
8b8b491df3 add support for hetzner-cloud dns validation 2025-12-21 00:55:30 +01:00
LinuxServer-CI
7f080d8564 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-12-20 03:52:51 +00:00
LinuxServer-CI
bb730cbc72 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-12-13 03:53:30 +00:00
LinuxServer-CI
6b609ad159 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-12-10 18:35:07 +00:00
LinuxServer-CI
f7a31bb18e Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-12-06 03:45:58 +00:00
LinuxServer-CI
01a5c0123e Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-12-03 21:23:08 +00:00
LinuxServer-CI
012b4ac68f Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-11-29 03:49:15 +00:00
LinuxServer-CI
8961b7e923 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-11-22 03:43:45 +00:00
LinuxServer-CI
1e3524f927 Bot Updating Templated Files 2025-11-22 03:39:13 +00:00
LinuxServer-CI
a2f969a62e Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-11-15 03:43:31 +00:00
LinuxServer-CI
caaaccb0b3 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-11-08 03:39:30 +00:00
LinuxServer-CI
ae11ca79a0 Bot Updating Templated Files
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-11-05 12:06:21 +00:00
driz
9d7c0d6239 Merge pull request #590 from linuxserver/nemchik-patch-1
Update changelog for Gandi credentials update
2025-11-05 07:04:42 -05:00
Eric Nemchik
eb151ebd19 Update changelog for Gandi credentials update
Updated the changelog to reflect changes in Gandi credentials and Azure DNS propagation.
2025-11-04 21:22:08 -06:00
Eric Nemchik
4076c6b012 Merge pull request #577 from jeanrobertjs/patch-1
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
2025-11-04 21:18:42 -06:00
LinuxServer-CI
8437debed5 Bot Updating Package Versions 2025-11-05 03:16:31 +00:00
Eric Nemchik
0f177af593 Merge branch 'master' into patch-1 2025-11-04 20:43:59 -06:00
Eric Nemchik
23dd0531f1 Merge pull request #562 from neoteq-it/master 2025-11-04 20:41:38 -06:00
LinuxServer-CI
56d0503cb3 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-11-01 03:46:36 +00:00
LinuxServer-CI
9397e9c70f Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-10-25 03:41:22 +00:00
LinuxServer-CI
e87649ffcd Bot Updating Templated Files 2025-10-25 03:37:01 +00:00
LinuxServer-CI
e11a8ded00 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-10-18 03:32:52 +00:00
LinuxServer-CI
576de0400c Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-10-11 03:31:40 +00:00
LinuxServer-CI
ad2d99029a Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-10-07 18:32:33 +00:00
LinuxServer-CI
b8d0c422ab Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-10-04 03:29:29 +00:00
LinuxServer-CI
07c7399089 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-27 03:32:32 +00:00
LinuxServer-CI
2d9590691c Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-20 03:32:41 +00:00
LinuxServer-CI
72e5347c3b Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-13 03:26:16 +00:00
LinuxServer-CI
be7016bcc1 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-06 03:31:28 +00:00
LinuxServer-CI
ccd2464a26 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-02 17:20:15 +00:00
LinuxServer-CI
fb4ba0deb0 Bot Updating Package Versions
Some checks failed
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-08-30 03:33:52 +00:00
LinuxServer-CI
7d8332e624 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-08-23 03:39:14 +00:00
Jean-Robert JS
0e19ad9d0f Merge branch 'master' into patch-1 2025-08-19 12:13:04 +02:00
LinuxServer-CI
d9dbcd0756 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-08-16 03:49:49 +00:00
LinuxServer-CI
8381b03a05 Bot Updating Package Versions
Some checks failed
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-08-09 03:54:46 +00:00
LinuxServer-CI
a1efcf3cd4 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-08-05 19:29:36 +00:00
LinuxServer-CI
834de14952 Bot Updating Package Versions 2025-08-05 19:25:33 +00:00
LinuxServer-CI
8353859972 Bot Updating Package Versions 2025-08-02 04:00:44 +00:00
Jean-Robert JS
f491b59335 Merge branch 'master' into patch-1 2025-07-31 23:30:29 +02:00
LinuxServer-CI
ca399a7fa2 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-07-26 04:01:49 +00:00
Jean-Robert JS
d602e9bccf Update gandi.ini 2025-07-24 10:47:17 +02:00
Jean-Robert JS
284a8c66f9 Reflects the depreciation of the API key in favor of the personal access token (PAT) 2025-07-23 14:03:33 +02:00
LinuxServer-CI
1905b3c920 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-07-22 17:06:33 +00:00
LinuxServer-CI
c9efb531b0 Bot Updating Templated Files 2025-07-22 17:02:00 +00:00
Roxedus
26d05580ef Merge pull request #576 from linuxserver/typo-fix 2025-07-22 18:59:55 +02:00
driz
a2a7292e39 fix typo 2025-07-22 11:43:45 -04:00
LinuxServer-CI
5316c58910 Bot Updating Package Versions 2025-07-20 15:09:08 +00:00
LinuxServer-CI
fa860e1349 Bot Updating Templated Files 2025-07-20 15:04:44 +00:00
LinuxServer-CI
72f60b132b Bot Updating Templated Files 2025-07-20 15:03:11 +00:00
Adam
24cf84fd61 Merge pull request #573 from linuxserver/3.22 2025-07-20 16:01:37 +01:00
LinuxServer-CI
d4ceeb2f67 Bot Updating Package Versions 2025-07-19 03:56:42 +00:00
thespad
1282274a1a Wording 2025-07-18 20:57:53 +01:00
thespad
b05df6cf2a Add UDP buffer note 2025-07-18 20:57:01 +01:00
thespad
b96738cdf2 Add header note in readme 2025-07-18 20:32:49 +01:00
thespad
2d6a54a526 Comment out QUIC listeners and update readme 2025-07-18 20:26:10 +01:00
LinuxServer-CI
bb78c0f50e Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-07-12 03:57:44 +00:00
thespad
56ff1d5e19 Rebase to 3.22 2025-07-09 18:46:39 +01:00
LinuxServer-CI
7f9835b43f Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-07-05 03:53:44 +00:00
LinuxServer-CI
f3ac0dd394 Bot Updating Templated Files 2025-07-05 03:49:27 +00:00
LinuxServer-CI
0168126729 Bot Updating Templated Files 2025-07-05 03:48:01 +00:00
LinuxServer-CI
0e55f7b67e Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-06-28 03:48:42 +00:00
LinuxServer-CI
b52e35e494 Bot Updating Package Versions
Some checks failed
Mark stale issues and pull requests / stale (push) Has been cancelled
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-06-21 03:48:40 +00:00
LinuxServer-CI
ef2a5f2077 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-06-16 17:39:01 +00:00
Adam
0c910b9a7b Merge pull request #570 from jlssmt/add-tinyauth 2025-06-16 18:34:21 +01:00
LinuxServer-CI
9ab0f727d0 Bot Updating Package Versions 2025-06-14 03:47:18 +00:00
LinuxServer-CI
adcdf5d748 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-06-12 20:30:24 +00:00
LinuxServer-CI
7a38630c0b Bot Updating Package Versions 2025-06-12 20:26:05 +00:00
LinuxServer-CI
6b6e7b74b5 Bot Updating Package Versions 2025-06-11 01:48:03 +00:00
LinuxServer-CI
3b6d0484b9 Bot Updating Templated Files 2025-06-11 01:43:55 +00:00
jlssmt
0d952bcee1 add tinyauth 2025-06-08 17:47:30 +02:00
LinuxServer-CI
35deb8f654 Bot Updating Package Versions 2025-06-07 03:47:21 +00:00
LinuxServer-CI
2ec9bacf0c Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-05-31 03:44:37 +00:00
LinuxServer-CI
bcbad63147 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-05-24 03:40:40 +00:00
LinuxServer-CI
962c2322eb Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-05-17 03:43:00 +00:00
LinuxServer-CI
dd8fd8ad05 Bot Updating Templated Files 2025-05-17 03:39:19 +00:00
LinuxServer-CI
b818ae1f58 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-05-10 03:39:03 +00:00
LinuxServer-CI
43466fe490 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-05-08 21:11:05 +00:00
LinuxServer-CI
3781360d72 Bot Updating Templated Files 2025-05-08 21:05:17 +00:00
Eric Nemchik
a01e4aca17 Merge pull request #564 from linuxserver/max-log-backups 2025-05-08 16:03:57 -05:00
Eric Nemchik
b87c9d2886 Update readme-vars.yml 2025-05-05 15:25:41 -05:00
Eric Nemchik
08aa9cc07b Disable Certbot's built in log rotation 2025-05-05 15:24:38 -05:00
LinuxServer-CI
23e05f1f7a Bot Updating Package Versions 2025-05-03 03:40:16 +00:00
LinuxServer-CI
f80d14bf8c Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-04-26 03:36:46 +00:00
Jean Stickelmann
a5f1da0bcf Update run - Azure Supports propagation 2025-04-24 10:27:16 +02:00
LinuxServer-CI
7e7e22753c Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-04-19 03:33:00 +00:00
LinuxServer-CI
9f76c031fe Bot Updating Package Versions 2025-04-12 03:34:26 +00:00
LinuxServer-CI
2b2ccf9e9a Bot Updating Package Versions 2025-04-11 03:24:16 +00:00
Eric Nemchik
54ed99d81a Merge pull request #554 from linuxserver/remove-old-authelia
chore: ⚰️ remove authelia 4.37 and below comments
2025-04-10 22:18:39 -05:00
LinuxServer-CI
a3f72898ff Bot Updating Package Versions 2025-04-08 01:29:27 +00:00
Eric Nemchik
8b8d33a81a Merge branch 'master' into remove-old-authelia 2025-04-05 15:43:54 -05:00
LinuxServer-CI
82ba5dd791 Bot Updating Package Versions 2025-04-05 03:34:00 +00:00
LinuxServer-CI
e7c815c27f Bot Updating Package Versions 2025-03-29 03:32:47 +00:00
Eric Nemchik
563ae7e9c5 chore: authentik/authelia consistency
Signed-off-by: GitHub <noreply@github.com>
2025-03-25 21:30:10 +00:00
Eric Nemchik
8caf2a1841 feat: 💩 proxy pass the full authelia auth request subpath
Signed-off-by: GitHub <noreply@github.com>
2025-03-25 21:28:54 +00:00
Eric Nemchik
15a3bc9d2c chore: ⚰️ remove authelia 4.37 and below comments
Signed-off-by: GitHub <noreply@github.com>
2025-03-25 19:50:00 +00:00
LinuxServer-CI
1567416bfb Bot Updating Package Versions 2025-03-22 03:34:48 +00:00
LinuxServer-CI
f909c85857 Bot Updating Package Versions 2025-03-17 13:53:02 +00:00
LinuxServer-CI
2992a09e32 Bot Updating Package Versions 2025-03-15 03:30:55 +00:00
LinuxServer-CI
5a8b8010ee Bot Updating Package Versions 2025-03-11 17:20:25 +00:00
LinuxServer-CI
586eaa3b4c Bot Updating Package Versions 2025-03-08 03:24:16 +00:00
LinuxServer-CI
2528e2f027 Bot Updating Package Versions 2025-03-01 03:33:12 +00:00
LinuxServer-CI
4632ecb91a Bot Updating Package Versions 2025-02-26 08:57:28 +00:00
Adam
615ccbc589 Merge pull request #548 from linuxserver/invalid-dns-creds 2025-02-26 08:51:57 +00:00
thespad
199d0a6707 Check for broken dns credentials value in cli.ini and remove 2025-02-25 20:24:11 +00:00
LinuxServer-CI
f8171d73ce Bot Updating Package Versions 2025-02-22 03:27:55 +00:00
LinuxServer-CI
503578a870 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-02-15 03:25:45 +00:00
LinuxServer-CI
b4978e40c5 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-02-11 22:21:06 +00:00
LinuxServer-CI
ed765dbdc1 Bot Updating Templated Files 2025-02-11 22:17:30 +00:00
LinuxServer-CI
6fcd946c0a Bot Updating Package Versions 2025-02-08 03:26:43 +00:00
LinuxServer-CI
c1d1a87a0c Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-02-01 03:32:56 +00:00
LinuxServer-CI
990c95b7d9 Bot Updating Templated Files 2025-02-01 03:24:53 +00:00
LinuxServer-CI
d83dc89c84 Bot Updating Templated Files 2025-02-01 03:23:39 +00:00
LinuxServer-CI
7046e938e0 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-01-25 03:21:11 +00:00
LinuxServer-CI
27e2e83f03 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-01-23 07:42:30 +00:00
quietsy
f11dbcea78 Merge pull request #540 from linuxserver/add-project-categories
Add categories to readme-vars.yml
2025-01-23 09:34:40 +02:00
quietsy
07e9ada724 Add categories to readme-vars.yml 2025-01-22 22:44:19 +02:00
Adam
ae72916deb Merge pull request #538 from linuxserver/auto-reload-readme
Update auto reload wording
2025-01-19 19:04:33 +00:00
thespad
06b385d25c Update auto reload wording 2025-01-19 18:30:03 +00:00
thespad
8753119d54 Update wording to fix stupid GH markdown parser 2025-01-19 18:21:28 +00:00
LinuxServer-CI
1f2cc4ade5 Bot Updating Package Versions 2025-01-19 18:13:52 +00:00
LinuxServer-CI
fc0986b0be Bot Updating Templated Files 2025-01-19 18:07:41 +00:00
LinuxServer-CI
564fbd271a Bot Updating Templated Files 2025-01-19 18:05:23 +00:00
Adam
bffc4c9236 Merge pull request #537 from linuxserver/auto-reload 2025-01-19 18:03:54 +00:00
thespad
14cab18c36 Spelling 2025-01-19 17:56:10 +00:00
thespad
c0adf4fd0a Update log message 2025-01-19 17:36:15 +00:00
thespad
2160126f96 Use case-insensitive include just in case (no pun) 2025-01-19 17:34:21 +00:00
thespad
d81e33b63b Anchor to avoid samples 2025-01-19 17:33:22 +00:00
thespad
21b5a79e06 Switch to include, document watchlist functionality 2025-01-19 17:30:11 +00:00
thespad
02ed03a455 Add auto-reload 2025-01-19 17:03:14 +00:00
thespad
515fdf45d8 Skip logrotate.status file in log chmod 2025-01-19 16:52:45 +00:00
LinuxServer-CI
5a5d0ebaec Bot Updating Package Versions 2025-01-18 03:24:35 +00:00
LinuxServer-CI
37deacf13a Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-01-11 03:29:15 +00:00
LinuxServer-CI
16d5763dcc Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-01-10 17:43:18 +00:00
LinuxServer-CI
e12d7e642c Bot Updating Templated Files 2025-01-10 17:33:54 +00:00
driz
0cddb6d6b7 Merge pull request #534 from linuxserver/man-fail2ban
Add working link for fail2ban-client manpage
2025-01-10 12:32:14 -05:00
thespad
ff8cf3bfa5 Add working link for fail2ban-client manpage 2025-01-10 17:16:22 +00:00
LinuxServer-CI
db05a6b72b Bot Updating Package Versions 2025-01-08 01:24:02 +00:00
LinuxServer-CI
410fa0515e Bot Updating Package Versions 2025-01-07 10:29:27 +00:00
Adam
e1ece8ac1c Merge pull request #532 from linuxserver/more-3.21-migrations 2025-01-07 10:25:12 +00:00
thespad
d33df2224b Try and warn about confs looking at /etc for certs 2025-01-07 10:15:49 +00:00
thespad
3b98b3ae65 Simplify 2025-01-07 10:15:27 +00:00
LinuxServer-CI
af6a3a2163 Bot Updating Package Versions 2025-01-06 18:11:57 +00:00
Adam
7a8a360746 Merge pull request #530 from linuxserver/3.21-migrations 2025-01-06 18:05:32 +00:00
thespad
f467b9539b Include space in replacement path 2025-01-06 17:51:07 +00:00
thespad
3aae7b50d9 Migrate existing renewal confs with old paths 2025-01-06 16:54:53 +00:00
LinuxServer-CI
98e22cb66d Bot Updating Package Versions 2025-01-04 03:26:59 +00:00
LinuxServer-CI
0a9c7ff821 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-01-03 16:00:52 +00:00
LinuxServer-CI
6dd89c8232 Bot Updating Templated Files 2025-01-03 15:56:57 +00:00
Adam
d376c95088 Merge pull request #526 from linuxserver/3.21 2025-01-03 15:54:39 +00:00
LinuxServer-CI
9a63c22e77 Bot Updating Package Versions 2025-01-03 15:29:34 +00:00
thespad
29bd5fe1b7 Remove logrotate chmod as the base image handles it 2024-12-31 18:18:47 +00:00
LinuxServer-CI
2e005369f1 Bot Updating Package Versions 2024-12-28 03:23:46 +00:00
LinuxServer-CI
d9a92bd940 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2024-12-21 03:28:51 +00:00
LinuxServer-CI
892cf960a9 Bot Updating Templated Files 2024-12-21 03:24:57 +00:00
LinuxServer-CI
aaa6ae77b5 Bot Updating Templated Files 2024-12-21 03:22:04 +00:00
thespad
c489e2c07f Can't rm if it's an RO filesystem 2024-12-17 21:27:37 +00:00
thespad
7f4aabeef7 Don't need to create that folder 2024-12-17 21:27:26 +00:00
thespad
03f8285212 Remove proxy cache path 2024-12-17 21:27:15 +00:00
thespad
589b80e492 Support disabling f2b 2024-12-17 20:34:13 +00:00
thespad
2dc24f90c7 Use live base image 2024-12-17 20:20:53 +00:00
thespad
e56ade75fb Rebase to 3.21 2024-12-17 20:06:05 +00:00
LinuxServer-CI
584ca6732c Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2024-12-14 03:33:45 +00:00
LinuxServer-CI
4e109fb858 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2024-12-07 03:39:50 +00:00
LinuxServer-CI
4788f2b855 Bot Updating Templated Files 2024-12-07 03:35:51 +00:00
LinuxServer-CI
397106ec30 Bot Updating Templated Files 2024-12-07 03:34:27 +00:00
LinuxServer-CI
ab9d0b8037 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2024-12-01 23:16:13 +00:00
LinuxServer-CI
19e9b1158d Bot Updating Templated Files 2024-12-01 23:12:25 +00:00
LinuxServer-CI
0a87bdaba8 Bot Updating Templated Files 2024-12-01 23:11:04 +00:00
LinuxServer-CI
2f2d7033b1 Bot Updating Templated Files 2024-12-01 23:09:57 +00:00
Adam
cbc7b3de09 Merge pull request #525 from linuxserver/update-readme 2024-12-01 23:07:45 +00:00
thespad
73806b2032 Wrong pairing 2024-12-01 22:49:32 +00:00
thespad
f3c87c3935 Use .net 2024-12-01 22:07:32 +00:00
thespad
20a134924f Add cap description, use example.com/org 2024-12-01 22:04:24 +00:00
LinuxServer-CI
9971d2f50b Bot Updating Package Versions 2024-11-30 03:32:59 +00:00
LinuxServer-CI
4e1f959980 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2024-11-17 17:38:27 +00:00
Adam
f94e685a65 Merge pull request #523 from linuxserver/qnap-init-fix 2024-11-17 17:34:27 +00:00
thespad
bfeeaaaa73 Workaround for qnap systems with chmod errors 2024-11-17 14:16:46 +00:00
Adam
4437f6f8ba Merge pull request #521 from linuxserver/tidy-init 2024-11-16 16:35:20 +00:00
thespad
ed7c58a4c3 Tidy up init process 2024-11-16 15:46:17 +00:00
LinuxServer-CI
ca3830de35 Bot Updating Package Versions 2024-11-16 03:31:57 +00:00
LinuxServer-CI
e932493428 Bot Updating Package Versions 2024-11-14 19:20:37 +00:00
LinuxServer-CI
cd77a9cd2a Bot Updating Templated Files 2024-11-14 19:16:52 +00:00
LinuxServer-CI
7e9db0db80 Bot Updating Templated Files 2024-11-14 19:15:29 +00:00
LinuxServer-CI
ffecc6ee8b Bot Updating Package Versions 2024-11-09 03:26:43 +00:00
LinuxServer-CI
2b18659591 Bot Updating Package Versions 2024-11-07 23:40:09 +00:00
LinuxServer-CI
54e3eeb6e8 Bot Updating Package Versions 2024-11-05 20:24:34 +00:00
LinuxServer-CI
7066b4c1ea Bot Updating Package Versions 2024-11-02 03:25:35 +00:00
LinuxServer-CI
66ea2cbad6 Bot Updating Package Versions 2024-10-26 03:26:25 +00:00
LinuxServer-CI
139a27f1bf Bot Updating Package Versions 2024-10-22 16:20:56 +00:00
LinuxServer-CI
d107e3cbef Bot Updating Templated Files 2024-10-22 16:15:43 +00:00
Eric Nemchik
08e91b3dc3 Merge pull request #483 from panosangel/dynu
Update Dynu code and .ini file
2024-10-22 11:13:55 -05:00
Eric Nemchik
8decebad67 Merge branch 'master' into dynu 2024-10-21 13:50:19 -05:00
Panos Angel
7b828b92e8 Readme vars / Rename 'dynudns' to 'dynu' to match active plugin name 2024-10-21 13:34:35 +03:00
LinuxServer-CI
db6fbc2731 Bot Updating Package Versions 2024-10-19 03:29:06 +00:00
LinuxServer-CI
aaee5b4737 Bot Updating Package Versions 2024-10-18 13:47:28 +00:00
LinuxServer-CI
30165272ef Bot Updating Package Versions 2024-10-12 03:25:28 +00:00
LinuxServer-CI
1c052fdd0d Bot Updating Package Versions 2024-10-05 03:27:36 +00:00
LinuxServer-CI
b569c84976 Bot Updating Templated Files 2024-10-05 03:23:29 +00:00
LinuxServer-CI
c14b42f85d Bot Updating Package Versions 2024-09-28 03:30:10 +00:00
LinuxServer-CI
60b6827133 Bot Updating Templated Files 2024-09-28 03:26:43 +00:00
LinuxServer-CI
cef4d471e1 Bot Updating Templated Files 2024-09-28 03:25:24 +00:00
LinuxServer-CI
eaafc4393b Bot Updating Templated Files 2024-09-28 03:23:56 +00:00
LinuxServer-CI
94c72584a7 Bot Updating Package Versions 2024-09-21 03:21:56 +00:00
LinuxServer-CI
59d1c8a724 Bot Updating Package Versions 2024-09-14 03:24:17 +00:00
LinuxServer-CI
ed0c949267 Bot Updating Package Versions 2024-09-07 03:22:04 +00:00
LinuxServer-CI
5027f6f7b3 Bot Updating Package Versions 2024-09-02 20:56:29 +00:00
aptalca
502d10303c Merge pull request #503 from linuxserver/zerossl-revoke
fix zerossl cert revocation
2024-09-02 16:53:07 -04:00
LinuxServer-CI
05bccb95ab Bot Updating Package Versions 2024-08-31 03:22:26 +00:00
aptalca
00afe35e21 fix zerossl cert revocation 2024-08-30 13:15:22 -04:00
LinuxServer-CI
e1340c6c9e Bot Updating Package Versions 2024-08-24 03:27:44 +00:00
LinuxServer-CI
96998a1002 Bot Updating Templated Files 2024-08-24 03:22:15 +00:00
LinuxServer-CI
4fb557dcda Bot Updating Templated Files 2024-08-24 03:20:37 +00:00
LinuxServer-CI
ea13c5a885 Bot Updating Package Versions 2024-08-17 03:20:39 +00:00
LinuxServer-CI
ee0f1247d9 Bot Updating Package Versions 2024-08-15 04:22:26 +00:00
LinuxServer-CI
a8cf2c5c40 Bot Updating Package Versions 2024-08-10 03:27:12 +00:00
driz
62faebf642 Merge pull request #497 from linuxserver/readme-typo
fix typo
2024-08-07 08:30:01 -04:00
LinuxServer-CI
81e65837ca Bot Updating Package Versions 2024-08-07 12:08:32 +00:00
driz
a08edc14d2 fix typo 2024-08-07 08:06:25 -04:00
LinuxServer-CI
edf1abd83a Bot Updating Templated Files 2024-08-07 12:04:22 +00:00
driz
0357efea87 Merge pull request #491 from marblepebble/master
Fallback to iptables-legacy if iptables doesn't work
2024-08-07 08:01:42 -04:00
LinuxServer-CI
aa103ce997 Bot Updating Package Versions 2024-08-03 03:20:38 +00:00
marblepebble
20bbf040e0 Merge branch 'master' into master 2024-07-30 21:39:57 +01:00
Ainsley Pereira
e4a6e31b6f Add iptables-legacy to Dockerfile.aarch64 too 2024-07-30 21:24:12 +01:00
LinuxServer-CI
5b096a8a66 Bot Updating Package Versions 2024-07-27 03:22:59 +00:00
LinuxServer-CI
eb6dba6cbe Bot Updating Package Versions 2024-07-19 22:27:05 +00:00
LinuxServer-CI
afd6c9d827 Bot Updating Package Versions 2024-07-19 21:42:49 +00:00
Eric Nemchik
daa84f28b4 Merge pull request #492 from linuxserver/3.20
Rebase to 3.20
2024-07-19 16:36:39 -05:00
Eric Nemchik
cd931076e4 remove google-domains certbot plugin
Signed-off-by: GitHub <noreply@github.com>
2024-07-17 17:18:24 +00:00
Eric Nemchik
f5ce44887f keep ipv6 listen separate
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-07-16 19:48:55 -05:00
Eric Nemchik
875a17dfc7 Rebase to 3.20
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-07-14 09:57:01 -05:00
LinuxServer-CI
210134745d Bot Updating Package Versions 2024-07-13 03:24:57 +00:00
LinuxServer-CI
9d469c2957 Bot Updating Templated Files 2024-07-13 03:20:42 +00:00
LinuxServer-CI
37e64ebdac Bot Updating Templated Files 2024-07-13 03:19:19 +00:00
LinuxServer-CI
47fc525094 Bot Updating Package Versions 2024-07-06 03:24:36 +00:00
Ainsley Pereira
625b11d21c Add iptables-legacy and fall back to it if the normal iptables command doesn't work. Fixes #476 2024-07-01 17:28:48 +01:00
LinuxServer-CI
77accb3762 Bot Updating Package Versions 2024-06-29 03:24:09 +00:00
LinuxServer-CI
7dcce8b346 Bot Updating Package Versions 2024-06-22 03:22:28 +00:00
LinuxServer-CI
03286fc238 Bot Updating Package Versions 2024-06-15 03:20:18 +00:00
LinuxServer-CI
7391dc1bcf Bot Updating Package Versions 2024-06-08 03:20:15 +00:00
LinuxServer-CI
a7ea6a955b Bot Updating Package Versions 2024-06-06 03:23:13 +00:00
LinuxServer-CI
e149638808 Bot Updating Package Versions 2024-06-01 03:22:21 +00:00
LinuxServer-CI
41cb7cb104 Bot Updating Package Versions 2024-05-25 03:27:08 +00:00
LinuxServer-CI
1499cbe7de Bot Updating Templated Files 2024-05-25 03:23:50 +00:00
LinuxServer-CI
5a7d49ec43 Bot Updating Templated Files 2024-05-25 03:21:31 +00:00
Panos Angel
05b586d6df dns-conf / Rename example dynu-credentials.ini to dynu.ini 2024-05-23 23:05:05 +03:00
Panos Angel
d6d1432ff8 README / Change DNSPLUGIN option from 'dynudns' to 'dynu' 2024-05-23 23:04:19 +03:00
LinuxServer-CI
efc2f55f48 Bot Updating Package Versions 2024-05-18 03:20:19 +00:00
LinuxServer-CI
95c13d0082 Bot Updating Package Versions 2024-05-11 03:22:43 +00:00
LinuxServer-CI
e05fc4b1e3 Bot Updating Templated Files 2024-05-11 03:18:51 +00:00
LinuxServer-CI
099e0e75a4 Bot Updating Package Versions 2024-05-04 03:23:10 +00:00
LinuxServer-CI
fc1675f3a1 Bot Updating Templated Files 2024-05-04 03:19:21 +00:00
LinuxServer-CI
dc1bc6d5b3 Bot Updating Package Versions 2024-04-27 03:19:53 +00:00
LinuxServer-CI
db6f61bd27 Bot Updating Package Versions 2024-04-20 03:19:29 +00:00
LinuxServer-CI
67f864c7b9 Bot Updating Package Versions 2024-04-18 22:03:11 +00:00
aptalca
3f885d0415 Merge pull request #472 from linuxserver/find
fix find for gnu
2024-04-18 17:59:23 -04:00
aptalca
280c4bde4b fix find for gnu 2024-04-18 15:53:44 -04:00
LinuxServer-CI
59e7865464 Bot Updating Package Versions 2024-04-13 03:15:36 +00:00
LinuxServer-CI
5c58fa9383 Bot Updating Package Versions 2024-04-06 03:20:55 +00:00
LinuxServer-CI
ae19b93cc7 Bot Updating Package Versions 2024-04-04 01:06:33 +00:00
LinuxServer-CI
5dee340726 Bot Updating Package Versions 2024-03-30 03:21:19 +00:00
aptalca
3109ff8d9c Merge pull request #468 from linuxserver/keyperm
fix perms on generated priv-fullchain-bundle.pem
2024-03-23 11:42:50 -04:00
aptalca
4239dc22d4 fix perms on generated priv-fullchain-bundle.pem 2024-03-23 11:10:04 -04:00
LinuxServer-CI
44c6bd721b Bot Updating Package Versions 2024-03-23 12:36:24 +00:00
LinuxServer-CI
d4a6be8fad Bot Updating Templated Files 2024-03-23 12:32:28 +00:00
Adam
a66b478d1d Merge pull request #463 from linuxserver/restore-dynudns
Restore dynudns plugin
2024-03-23 12:29:52 +00:00
LinuxServer-CI
9efac76e25 Bot Updating Package Versions 2024-03-23 03:19:27 +00:00
TheSpad
23c6384f2c Merge branch 'master' into restore-dynudns 2024-03-19 22:49:45 +00:00
aptalca
13ede8ea87 Merge pull request #467 from linuxserver/authelia-auth-endpoints
another authelia auth endpoint adjustment
2024-03-17 16:24:55 -04:00
Eric Nemchik
a9391d07ee another authelia auth endpoint adjustment
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-03-16 12:34:59 -05:00
LinuxServer-CI
a00d272297 Bot Updating Package Versions 2024-03-16 03:18:58 +00:00
LinuxServer-CI
0207bd8f30 Bot Updating Templated Files 2024-03-15 18:26:27 +00:00
Eric Nemchik
3fd209d686 Merge pull request #466 from linuxserver/nemchik-patch-1
Update readme-vars.yml
2024-03-15 13:23:06 -05:00
Eric Nemchik
87ced3fd3e Update readme-vars.yml 2024-03-15 13:08:37 -05:00
Eric Nemchik
3e342b0529 Update readme-vars.yml 2024-03-15 13:07:59 -05:00
LinuxServer-CI
c9504bb55f Bot Updating Package Versions 2024-03-15 15:55:24 +00:00
LinuxServer-CI
2573149089 Bot Updating Templated Files 2024-03-15 15:50:23 +00:00
Eric Nemchik
9b3f418afd Merge pull request #465 from linuxserver/authelia-4.38-alt
support for authelia 4.38+
2024-03-15 10:48:40 -05:00
Eric Nemchik
c63b437e1f Update comments
Signed-off-by: GitHub <noreply@github.com>
2024-03-15 14:41:19 +00:00
Eric Nemchik
f14c6a7a3a support for authelia 4.38+
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-03-14 21:57:51 -05:00
TheSpad
4b4c103df4 Restore dynudns plugin 2024-03-11 11:12:28 +00:00
LinuxServer-CI
26203c8c40 Bot Updating Package Versions 2024-03-09 03:21:46 +00:00
LinuxServer-CI
259850fcc5 Bot Updating Templated Files 2024-03-06 17:43:29 +00:00
Eric Nemchik
c6474f07ea Cleanup default site conf (#442)
* Cleanup default site conf

Signed-off-by: Eric Nemchik <eric@nemchik.com>

* update date

---------

Signed-off-by: Eric Nemchik <eric@nemchik.com>
Co-authored-by: aptalca <541623+aptalca@users.noreply.github.com>
2024-03-06 12:41:52 -05:00
LinuxServer-CI
b6a196b93a Bot Updating Package Versions 2024-03-06 16:22:38 +00:00
aptalca
3967276f06 Merge pull request #459 from linuxserver/stream
remove stream.conf
2024-03-06 11:18:47 -05:00
aptalca
4853736c4e add comment 2024-03-06 09:44:39 -05:00
aptalca
a8d03c5280 Merge pull request #460 from linuxserver/package-install
Run package installer as part of SWAG init to prevent init fail due to missing dns plugin
2024-03-05 08:31:23 -05:00
aptalca
907dfc8c03 Revert "Update root/etc/s6-overlay/s6-rc.d/init-certbot-config/run"
This reverts commit bf21a51e10.
2024-03-04 20:19:53 -05:00
aptalca
bf21a51e10 Update root/etc/s6-overlay/s6-rc.d/init-certbot-config/run
Co-authored-by: Eric Nemchik <eric@nemchik.com>
2024-03-04 19:33:01 -05:00
aptalca
32f72ac0b4 make it pretty, grep certbot-dns 2024-03-04 18:33:13 -05:00
aptalca
970fa75e87 run scripts direct 2024-03-04 18:23:04 -05:00
aptalca
137ad9f52e Run package installer as part of SWAG init to prevent init fail due to missing dns plugin 2024-03-04 18:10:49 -05:00
aptalca
5d0ec79ac5 remove stream.conf 2024-03-04 17:56:25 -05:00
LinuxServer-CI
3145477f72 Bot Updating Package Versions 2024-03-04 22:52:37 +00:00
aptalca
58b9470c52 Merge pull request #458 from linuxserver/edgerepo
package moved to community repo
2024-03-04 17:47:44 -05:00
aptalca
68f5cf8d9e package moved to community repo 2024-03-04 17:11:41 -05:00
LinuxServer-CI
e8d452f4ce Bot Updating Package Versions 2024-02-24 03:25:25 +00:00
LinuxServer-CI
4abd6c9890 Bot Updating Templated Files 2024-02-24 03:21:49 +00:00
LinuxServer-CI
c335faabdc Bot Updating Templated Files 2024-02-24 03:18:57 +00:00
LinuxServer-CI
204dd90f9d Bot Updating Package Versions 2024-02-17 03:20:23 +00:00
LinuxServer-CI
92bfbc19cd Bot Updating Package Versions 2024-02-10 03:18:04 +00:00
LinuxServer-CI
cb3c74a6ee Bot Updating Package Versions 2024-02-08 21:18:13 +00:00
LinuxServer-CI
b7f40863fe Bot Updating Package Versions 2024-02-03 03:21:47 +00:00
LinuxServer-CI
ec6fca9418 Bot Updating Package Versions 2024-01-27 18:57:53 +00:00
Eric Nemchik
25a2832056 Merge pull request #441 from linuxserver/3.19
Rebase to Alpine 3.19 with php 8.3, add root periodic crontabs for logrotate
2024-01-27 12:52:12 -06:00
LinuxServer-CI
3eabd75388 Bot Updating Package Versions 2024-01-27 03:17:21 +00:00
Eric Nemchik
6ed17c1d52 Merge branch 'master' into 3.19 2024-01-23 20:27:06 -06:00
LinuxServer-CI
e568785908 Bot Updating Package Versions 2024-01-20 03:20:49 +00:00
LinuxServer-CI
bcee5182e6 Bot Updating Package Versions 2024-01-13 03:22:08 +00:00
LinuxServer-CI
514cf42606 Bot Updating Templated Files 2024-01-13 03:17:41 +00:00
LinuxServer-CI
270a0d57c9 Bot Updating Package Versions 2024-01-09 20:00:59 +00:00
LinuxServer-CI
6f51d8be26 Bot Updating Templated Files 2024-01-09 19:54:13 +00:00
LinuxServer-CI
d915d516cd Bot Updating Templated Files 2024-01-09 19:47:00 +00:00
Eric Nemchik
ffb03a03f5 Merge pull request #425 from Peglah/dns_glesys
Add GleSYS DNS plugin
2024-01-09 13:43:24 -06:00
Eric Nemchik
9693b5884f Merge branch 'master' into dns_glesys 2024-01-09 13:28:15 -06:00
LinuxServer-CI
87ca95c8c2 Bot Updating Package Versions 2024-01-06 03:21:45 +00:00
Peglah
1a376a6975 rebased 2024-01-01 09:49:44 +01:00
Peglah
8e74593f2c Rebase, Add GleSYS DNS plugin 2024-01-01 09:40:00 +01:00
LinuxServer-CI
00d1bce24d Bot Updating Package Versions 2024-01-01 09:39:14 +01:00
LinuxServer-CI
be853fcb4b Bot Updating Package Versions 2024-01-01 09:39:14 +01:00
LinuxServer-CI
2fb6c1f51f Bot Updating Package Versions 2024-01-01 09:39:14 +01:00
LinuxServer-CI
9339d287d2 Bot Updating Package Versions 2024-01-01 09:39:14 +01:00
LinuxServer-CI
6b62a27bf0 Bot Updating Templated Files 2024-01-01 09:39:14 +01:00
Eric Nemchik
c50ca83ef9 Deprecate certbot-dns-dynu
Signed-off-by: GitHub <noreply@github.com>
2024-01-01 09:39:10 +01:00
LinuxServer-CI
bd94a67024 Bot Updating Package Versions 2024-01-01 09:38:33 +01:00
LinuxServer-CI
11e060174b Bot Updating Package Versions 2024-01-01 09:38:33 +01:00
driz
5f8a531a93 Update nginx-deny.conf 2024-01-01 09:38:33 +01:00
LinuxServer-CI
d2f843c4d1 Bot Updating Package Versions 2024-01-01 09:38:33 +01:00
LinuxServer-CI
ad6bb30bfc Bot Updating Package Versions 2024-01-01 09:38:33 +01:00
LinuxServer-CI
11991aa0b3 Bot Updating Package Versions 2024-01-01 09:38:33 +01:00
LinuxServer-CI
c76e664965 Bot Updating Templated Files 2024-01-01 09:38:33 +01:00
Eric Nemchik
ccbd19fe62 Update readme-vars.yml 2024-01-01 09:38:29 +01:00
LinuxServer-CI
2573b79bad Bot Updating Package Versions 2024-01-01 09:37:47 +01:00
LinuxServer-CI
0e5ba91588 Bot Updating Templated Files 2024-01-01 09:37:47 +01:00
Eric Nemchik
4f92460b29 Run certbot as root to allow fix http validation
Fixes regression from https://github.com/linuxserver/docker-swag/pull/399

Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:37:39 +01:00
Eric Nemchik
ad1884e5b4 Fix index.php being downloaded on 404
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:36:59 +01:00
LinuxServer-CI
70bea0a816 Bot Updating Package Versions 2024-01-01 09:23:16 +01:00
Eric Nemchik
85e44eb399 fix chown for group
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
Eric Nemchik
4d3f30b67c Move crontabs to etc
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
Eric Nemchik
9da97969f8 Crontabs folder created in base
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
Eric Nemchik
2cd84ad12b cron in base
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
Eric Nemchik
757ef31216 set owner of certbot folders to abc
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
Eric Nemchik
767aad2286 Fix perms
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
Eric Nemchik
4cb18bc106 standard cron
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
LinuxServer-CI
b1cf98d214 Bot Updating Package Versions 2024-01-01 09:23:16 +01:00
LinuxServer-CI
48dfde26c7 Bot Updating Templated Files 2024-01-01 09:23:16 +01:00
LinuxServer-CI
320404d358 Bot Updating Package Versions 2024-01-01 09:23:16 +01:00
aptalca
52ae487bea install mcrypt from community repo on alpine edge 2024-01-01 09:23:16 +01:00
LinuxServer-CI
65f62d14a6 Bot Updating Package Versions 2024-01-01 09:23:16 +01:00
LinuxServer-CI
accd20cc7a Bot Updating Package Versions 2023-12-30 03:18:23 +00:00
Eric Nemchik
24b3540da5 Fix php83-pecl-mcrypt
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-23 16:18:56 -06:00
Eric Nemchik
bc31b51afb Rebase to Alpine 3.19 with php 8.3, add root periodic crontabs for logrotate
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-23 16:12:03 -06:00
LinuxServer-CI
bf6ab14281 Bot Updating Package Versions 2023-12-23 03:17:49 +00:00
LinuxServer-CI
7c5d1d886c Bot Updating Package Versions 2023-12-16 03:18:17 +00:00
LinuxServer-CI
5b77a54620 Bot Updating Package Versions 2023-12-12 13:36:29 +00:00
LinuxServer-CI
3b1478667b Bot Updating Templated Files 2023-12-12 13:33:00 +00:00
Eric Nemchik
0ddf8a270b Merge pull request #439 from linuxserver/deprecate-dynu-plugin
Deprecate certbot-dns-dynu
2023-12-12 07:31:30 -06:00
Eric Nemchik
dabbaa3b14 Deprecate certbot-dns-dynu
Signed-off-by: GitHub <noreply@github.com>
2023-12-11 22:17:57 +00:00
LinuxServer-CI
bdd5e047ee Bot Updating Package Versions 2023-12-09 03:20:23 +00:00
LinuxServer-CI
78689b02e2 Bot Updating Package Versions 2023-12-07 13:54:35 +00:00
driz
6c1c4cd00a Update nginx-deny.conf 2023-12-07 08:50:27 -05:00
LinuxServer-CI
31cef5050f Bot Updating Package Versions 2023-12-06 01:09:14 +00:00
LinuxServer-CI
52e8f7223e Bot Updating Package Versions 2023-12-02 03:18:16 +00:00
LinuxServer-CI
1abab5cb6d Bot Updating Package Versions 2023-11-30 23:41:43 +00:00
LinuxServer-CI
0061faef15 Bot Updating Templated Files 2023-11-30 23:38:22 +00:00
Eric Nemchik
6e64bcbd7e Merge pull request #432 from linuxserver/php-404
Fix index.php being downloaded on 404
2023-11-30 17:36:52 -06:00
Eric Nemchik
b9dd1b7c5a Update readme-vars.yml 2023-11-30 17:33:07 -06:00
Eric Nemchik
e9bceab763 Merge branch 'master' into php-404 2023-11-30 17:29:03 -06:00
LinuxServer-CI
eba3c341fa Bot Updating Package Versions 2023-11-28 19:55:58 +00:00
LinuxServer-CI
5fc5825afd Bot Updating Templated Files 2023-11-28 19:50:37 +00:00
Eric Nemchik
de18e4ef24 Merge pull request #431 from linuxserver/root-certbot
Run certbot as root to allow fix http validation
2023-11-28 13:49:03 -06:00
Eric Nemchik
fbe212b67c Fix index.php being downloaded on 404
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-11-27 18:27:05 -06:00
LinuxServer-CI
2ca6807b64 Bot Updating Package Versions 2023-11-25 03:18:43 +00:00
Eric Nemchik
e3560414dc Run certbot as root to allow fix http validation
Fixes regression from https://github.com/linuxserver/docker-swag/pull/399

Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-11-23 07:50:53 -06:00
Eric Nemchik
2f4162578f Merge pull request #399 from linuxserver/standard-cron
standard cron
2023-11-18 19:11:17 -06:00
LinuxServer-CI
2697b74a8c Bot Updating Package Versions 2023-11-18 03:21:34 +00:00
LinuxServer-CI
bd685533a2 Bot Updating Templated Files 2023-11-18 03:17:25 +00:00
LinuxServer-CI
287b952aea Bot Updating Package Versions 2023-11-13 22:20:05 +00:00
aptalca
576b81ab91 Merge pull request #428 from linuxserver/mcrypt
install mcrypt from community repo on alpine edge
2023-11-13 17:16:22 -05:00
aptalca
8b0df1fcbb install mcrypt from community repo on alpine edge 2023-11-13 16:58:13 -05:00
LinuxServer-CI
efdfa45f37 Bot Updating Package Versions 2023-11-11 03:21:56 +00:00
Peglah
278b57fb47 Add GleSYS DNS plugin 2023-11-08 12:42:43 +01:00
Eric Nemchik
82e85d22c1 Merge branch 'master' into standard-cron 2023-11-04 18:37:38 -05:00
Eric Nemchik
8b49f2b0d4 fix chown for group
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-11-04 18:36:31 -05:00
LinuxServer-CI
10d0877547 Bot Updating Package Versions 2023-11-04 03:17:44 +00:00
Eric Nemchik
8fdb472564 Merge branch 'master' into standard-cron 2023-11-01 17:48:15 -05:00
LinuxServer-CI
f6d0e3089a Bot Updating Package Versions 2023-11-01 15:18:10 +00:00
LinuxServer-CI
5ceac2e2ec Bot Updating Package Versions 2023-10-28 03:17:26 +00:00
LinuxServer-CI
5b6498b1a9 Bot Updating Package Versions 2023-10-25 16:20:53 +00:00
LinuxServer-CI
118a76530e Bot Updating Package Versions 2023-10-24 00:07:06 +00:00
LinuxServer-CI
0499547b96 Bot Updating Package Versions 2023-10-21 03:17:27 +00:00
LinuxServer-CI
9cf01a0085 Bot Updating Package Versions 2023-10-20 01:05:07 +00:00
LinuxServer-CI
2b5a2785d6 Bot Updating Package Versions 2023-10-14 03:18:59 +00:00
LinuxServer-CI
202db184b3 Bot Updating Package Versions 2023-10-10 16:23:56 +00:00
LinuxServer-CI
3ed39caf43 Bot Updating Package Versions 2023-10-07 03:22:54 +00:00
LinuxServer-CI
9353e4e8a5 Bot Updating Templated Files 2023-10-07 03:19:04 +00:00
LinuxServer-CI
39e3159f39 Bot Updating Templated Files 2023-10-07 03:16:45 +00:00
Roxedus
9ba44dccee Merge pull request #415 from linuxserver/2.7-fix 2023-10-04 01:33:49 +02:00
Roxedus
49f6fb2b6e Update detection 2023-10-04 00:33:00 +02:00
LinuxServer-CI
693c24173b Bot Updating Package Versions 2023-10-03 20:17:30 +00:00
LinuxServer-CI
8a90cf85d8 Bot Updating Package Versions 2023-10-01 16:32:35 +00:00
LinuxServer-CI
fd958fe6b3 Bot Updating Templated Files 2023-10-01 16:29:08 +00:00
Eric Nemchik
eb8f12b5de Merge pull request #412 from Platzii/directadmin-fix
Fix "unrecognized arguments" issue in DirectAdmin DNS plugin
2023-10-01 11:27:34 -05:00
Simon Lepla
dae223ca0f Fix "unrecognized arguments" issue in DirectAdmin DNS plugin 2023-10-01 12:07:41 +02:00
LinuxServer-CI
14226ce700 Bot Updating Package Versions 2023-09-30 03:22:11 +00:00
LinuxServer-CI
b64bb62303 Bot Updating Package Versions 2023-09-23 03:18:35 +00:00
LinuxServer-CI
f478a200e8 Bot Updating Package Versions 2023-09-19 19:17:39 +00:00
LinuxServer-CI
40200982d1 Bot Updating Package Versions 2023-09-19 19:12:05 +00:00
Adam
3476f8b6f6 Merge pull request #406 from linuxserver/namecheap 2023-09-19 20:08:26 +01:00
LinuxServer-CI
3e9dc80ed4 Bot Updating Package Versions 2023-09-16 03:17:06 +00:00
LinuxServer-CI
4486d528d1 Bot Updating Package Versions 2023-09-09 03:19:54 +00:00
LinuxServer-CI
e0032ecfd4 Bot Updating Package Versions 2023-09-02 03:16:49 +00:00
Eric Nemchik
b1c1262a2c Add Namecheap DNS plugin
Signed-off-by: GitHub <noreply@github.com>
2023-08-28 14:38:34 +00:00
LinuxServer-CI
3b49643c78 Bot Updating Package Versions 2023-08-26 03:18:54 +00:00
Eric Nemchik
23728cba0b Move crontabs to etc
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-08-19 10:17:40 -05:00
Eric Nemchik
7e1db9c562 Crontabs folder created in base
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-08-19 08:42:48 -05:00
Eric Nemchik
919b8ac152 cron in base
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-08-18 23:38:31 -05:00
LinuxServer-CI
0f9d247ba4 Bot Updating Package Versions 2023-08-19 03:17:05 +00:00
LinuxServer-CI
cab0b86b65 Bot Updating Package Versions 2023-08-12 19:50:39 +00:00
Eric Nemchik
4d3875d37e Merge pull request #403 from linuxserver/freedns
Freedns
2023-08-12 14:45:40 -05:00
Eric Nemchik
badea52047 Add FreeDNS plugin
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-08-12 13:55:53 -05:00
Eric Nemchik
97baf76a10 Get available DNS Authenticator plugins from CLI
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-08-12 13:47:44 -05:00
LinuxServer-CI
6ed02e1e00 Bot Updating Package Versions 2023-08-12 03:18:10 +00:00
LinuxServer-CI
a6778ab7c7 Bot Updating Package Versions 2023-08-07 14:06:58 +00:00
LinuxServer-CI
95c791acfc Bot Updating Templated Files 2023-08-07 14:01:37 +00:00
Eric Nemchik
42ccafc064 Merge pull request #390 from ejach/certbot-dns-bunny
Added certbot-dns-bunny to allow Bunny dns verification
2023-08-07 09:00:03 -05:00
Eric Nemchik
6b7cdb26f1 Update readme-vars.yml 2023-08-07 08:46:20 -05:00
Evan J
e19a030eff Merge branch 'master' into certbot-dns-bunny 2023-08-07 09:08:36 -04:00
LinuxServer-CI
4d4cb0ca74 Bot Updating Package Versions 2023-08-05 03:18:48 +00:00
Eric Nemchik
0b738d9ee0 set owner of certbot folders to abc
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-07-31 15:13:43 -05:00
Eric Nemchik
269e9cdd3f Fix perms
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-07-30 09:50:18 -05:00
Eric Nemchik
17387674b8 standard cron
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-07-30 01:17:57 -05:00
Evan J
9554582962 Merge branch 'master' into certbot-dns-bunny 2023-07-29 08:00:04 -04:00
LinuxServer-CI
42ebe4a584 Bot Updating Package Versions 2023-07-29 00:21:48 +00:00
Eric Nemchik
b9f5763ee5 Merge pull request #398 from linuxserver/fix-ini-value-remove
Fix removing ini values
2023-07-28 19:17:06 -05:00
Eric Nemchik
2b0bf5869c Fix removing ini values
- missing -i flag
- use word boundary instead of space

Signed-off-by: GitHub <noreply@github.com>
2023-07-28 18:59:20 +00:00
Evan J
b46830f214 Merge branch 'master' into certbot-dns-bunny 2023-07-28 13:13:29 -04:00
LinuxServer-CI
66a8694772 Bot Updating Package Versions 2023-07-28 11:52:17 +00:00
LinuxServer-CI
33568e1bd3 Bot Updating Templated Files 2023-07-28 11:48:32 +00:00
Eric Nemchik
0004cd1ce8 Merge pull request #376 from gilesp/master
Adds certbot-dns-dreamhost to allow dreamhost dns verification
2023-07-28 06:46:11 -05:00
Giles Paterson
8dbd50ac06 Updates changelog date 2023-07-28 10:40:14 +01:00
Eric Nemchik
cae42496e2 Merge branch 'master' into certbot-dns-bunny 2023-07-27 09:44:46 -05:00
Eric Nemchik
2f8c5b4487 Merge branch 'master' into master 2023-07-27 09:32:01 -05:00
LinuxServer-CI
9f75c7a713 Bot Updating Package Versions 2023-07-27 14:24:01 +00:00
Eric Nemchik
262c1013aa Merge pull request #339 from linuxserver/certbot-revamp-config-file
Use config file with certbot
2023-07-27 09:20:30 -05:00
Eric Nemchik
54e4cfa047 Merge branch 'master' into certbot-revamp-config-file 2023-07-27 08:05:58 -05:00
LinuxServer-CI
97ba6a7de9 Bot Updating Package Versions 2023-07-22 03:17:29 +00:00
LinuxServer-CI
f11a753445 Bot Updating Package Versions 2023-07-15 03:33:59 +00:00
Eric Nemchik
ee6153c817 Merge branch 'master' into certbot-revamp-config-file 2023-07-10 18:45:22 -05:00
LinuxServer-CI
93424877a9 Bot Updating Package Versions 2023-07-08 03:32:56 +00:00
Evan J
eaf8b3648b Merge branch 'master' into certbot-dns-bunny 2023-07-03 14:32:18 +00:00
LinuxServer-CI
b754cedda2 Bot Updating Templated Files 2023-07-01 15:08:48 +00:00
Eric Nemchik
0d05560652 Merge pull request #393 from linuxserver/typo
Update readme-vars.yml
2023-07-01 10:06:35 -05:00
Eric Nemchik
7f9b637353 Update readme-vars.yml
Fix typo
2023-07-01 09:52:38 -05:00
LinuxServer-CI
675d67bbd4 Bot Updating Package Versions 2023-07-01 03:37:47 +00:00
LinuxServer-CI
402d513115 Bot Updating Templated Files 2023-07-01 03:33:10 +00:00
Evan J
fac669ea43 Added certbot-dns-bunny 2023-06-25 20:31:19 +01:00
LinuxServer-CI
3aab75dc8b Bot Updating Package Versions 2023-06-24 03:32:04 +00:00
LinuxServer-CI
b2e8d8c8ab Bot Updating Package Versions 2023-06-17 03:18:40 +00:00
Giles Paterson
973abbefbb Merge branch 'linuxserver:master' into master 2023-06-16 10:09:14 +01:00
LinuxServer-CI
dede63fdcf Bot Updating Package Versions 2023-06-10 03:19:40 +00:00
LinuxServer-CI
bee6793d45 Bot Updating Package Versions 2023-06-09 14:21:26 +00:00
Eric Nemchik
29e9daa606 Merge pull request #381 from linuxserver/suppress-not-replacing
Suppress cp: not replacing
2023-06-09 09:17:40 -05:00
LinuxServer-CI
57c0d1f81e Bot Updating Package Versions 2023-06-07 12:44:02 +00:00
Eric Nemchik
416bef8a2e Merge pull request #383 from linuxserver/php-auth
Add auth comments for php location
2023-06-07 07:39:45 -05:00
Eric Nemchik
500d5606e4 Update default.conf.sample date 2023-06-05 13:41:08 -05:00
Eric Nemchik
500fd0c634 Add auth comments for php location 2023-06-05 13:37:01 -05:00
LinuxServer-CI
adf38bcd2b Bot Updating Package Versions 2023-06-03 03:17:12 +00:00
Eric Nemchik
5255b117f9 Suppress cp: not replacing
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-06-01 19:09:13 -05:00
Eric Nemchik
d7a8d6cc6a Merge branch 'master' into certbot-revamp-config-file 2023-05-31 11:33:45 -05:00
Giles Paterson
d67459e852 Merge branch 'linuxserver:master' into master 2023-05-31 12:10:41 +01:00
Giles Paterson
0ddb5be5f5 adds dreamhost dns plugin 2023-05-31 12:08:48 +01:00
LinuxServer-CI
60f6fafc53 Bot Updating Package Versions 2023-05-31 04:10:29 +00:00
Eric Nemchik
d5c530af49 Merge pull request #375 from linuxserver/fail2ban-plex-regex
Remove broken fail2ban plex regex
2023-05-30 23:06:49 -05:00
Eric Nemchik
be215d62aa Remove broken fail2ban plex regex
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-05-30 21:38:25 -05:00
LinuxServer-CI
db54dfaf71 Bot Updating Package Versions 2023-05-30 14:17:31 +00:00
Eric Nemchik
0d70436ddb Merge pull request #372 from linuxserver/3.18
Rebase to Alpine 3.18, deprecate armhf
2023-05-30 09:12:36 -05:00
Eric Nemchik
49d848b639 Remove mailparse
Does not exist for php82 in alpine 3.18

Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-05-29 18:16:41 -05:00
Eric Nemchik
2df15e7b96 Merge remote-tracking branch 'origin/master' into 3.18
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-05-29 17:14:36 -05:00
Eric Nemchik
7a6c539527 Rebase to Alpine 3.18, deprecate armhf 2023-05-27 16:57:54 -05:00
LinuxServer-CI
230ad93b35 Bot Updating Package Versions 2023-05-27 03:20:24 +00:00
LinuxServer-CI
cc3e0b590e Bot Updating Templated Files 2023-05-27 03:16:34 +00:00
LinuxServer-CI
f9a5348035 Bot Updating Package Versions 2023-05-20 03:17:47 +00:00
LinuxServer-CI
ba685e7fd0 Bot Updating Package Versions 2023-05-18 14:13:47 +00:00
LinuxServer-CI
97782cdbed Bot Updating Package Versions 2023-05-17 15:54:17 +00:00
LinuxServer-CI
38bbfb2d01 Bot Updating Package Versions 2023-05-13 03:19:42 +00:00
LinuxServer-CI
5b492be3d7 Bot Updating Package Versions 2023-05-11 18:48:13 +00:00
Eric Nemchik
9d695718f0 Merge branch 'master' into certbot-revamp-config-file 2023-05-11 13:45:38 -05:00
Eric Nemchik
74069d4742 Merge pull request #366 from linuxserver/auth-updates
Simplify auth configs and fix Set-Cookie header bug
2023-05-11 13:44:19 -05:00
LinuxServer-CI
c77eca9ec3 Bot Updating Package Versions 2023-05-09 21:16:20 +00:00
Eric Nemchik
5b4a34c0e3 Merge branch 'master' into auth-updates 2023-05-07 09:20:27 -05:00
Eric Nemchik
908571dea8 Merge branch 'master' into certbot-revamp-config-file 2023-05-07 09:17:28 -05:00
LinuxServer-CI
10d1bf7b96 Bot Updating Package Versions 2023-05-06 03:20:14 +00:00
LinuxServer-CI
24f3353692 Bot Updating Package Versions 2023-04-29 03:20:15 +00:00
LinuxServer-CI
dee14d718b Bot Updating Templated Files 2023-04-29 03:17:04 +00:00
LinuxServer-CI
5438dbf13c Bot Updating Templated Files 2023-04-29 03:16:05 +00:00
Eric Nemchik
77b9dc3348 Unsimplify 2023-04-27 20:53:07 +00:00
Eric Nemchik
a2e3c8b9fb Backwards compatibility and additional cookie handling tweaks 2023-04-27 20:31:05 +00:00
Eric Nemchik
d8f252dd73 Adjust auth confs to fix cookie header conflict 2023-04-27 18:53:51 +00:00
Eric Nemchik
9cdedad1c8 Simplify auth configs and include updates for Authelia 4.38 2023-04-24 19:06:25 +00:00
Eric Nemchik
d7e2455e7a Merge remote-tracking branch 'origin/master' into certbot-revamp-config-file 2023-04-23 08:02:46 -05:00
LinuxServer-CI
2f740e60a8 Bot Updating Package Versions 2023-04-22 03:17:40 +00:00
LinuxServer-CI
cfb3fae7cf Bot Updating Package Versions 2023-04-21 18:28:44 +00:00
LinuxServer-CI
9357986f27 Bot Updating Package Versions 2023-04-18 16:17:59 +02:00
LinuxServer-CI
eb0bcf14dd Bot Updating Package Versions 2023-04-16 19:01:11 -05:00
LinuxServer-CI
97e2720b9c Bot Updating Package Versions 2023-04-16 23:53:59 +00:00
Eric Nemchik
7550f946ff Merge pull request #364 from linuxserver/move-ssl-include
ssl.conf include and authelia authorization changes
2023-04-16 18:50:00 -05:00
LinuxServer-CI
80705ccf19 Bot Updating Package Versions 2023-04-14 22:19:09 -05:00
Eric Nemchik
7a831681c5 Remove Authorization headers in authelia
Sort proxy_set_header in authelia and authentik
2023-04-13 11:26:13 -05:00
Eric Nemchik
43a7239fbf Move ssl.conf include to default.conf 2023-04-13 11:06:12 -05:00
LinuxServer-CI
73938cb4a1 Bot Updating Package Versions 2023-04-07 22:18:34 -05:00
LinuxServer-CI
1d6a30144b Bot Updating Package Versions 2023-04-05 01:17:36 +02:00
Eric Nemchik
2e59ae36c1 Merge pull request #359 from linuxserver/route53-propagation
route53 no longer supports propagation
2023-04-04 18:13:24 -05:00
Eric Nemchik
e72e9f6ed0 route53 no longer supports propagation
Released in certbot 2.5.0 df85c25da8/certbot/CHANGELOG.md (changed)
2023-04-04 13:20:40 -05:00
LinuxServer-CI
91d449259f Bot Updating Package Versions 2023-04-04 12:02:24 -05:00
LinuxServer-CI
dd17b24158 Bot Updating Templated Files 2023-04-04 11:58:17 -05:00
LinuxServer-CI
17f70e4a31 Bot Updating Templated Files 2023-04-04 11:56:38 -05:00
LinuxServer-CI
6619c4e0cd Bot Updating Templated Files 2023-04-04 11:54:58 -05:00
LinuxServer-CI
a06bea000c Bot Updating Package Versions 2023-03-29 17:04:14 -05:00
driz
62401a38e7 Merge pull request #357 from linuxserver/silence-allowipv6-warning
Silence allowipv6 warning
2023-03-29 18:00:01 -04:00
driz
acef819cc1 Update Dockerfile.armhf 2023-03-29 09:27:12 -04:00
driz
74828b1e8d Update Dockerfile.aarch64 2023-03-29 09:26:49 -04:00
driz
7e1758fde0 Update Dockerfile 2023-03-29 09:26:30 -04:00
driz
e2731a1227 Update Dockerfile.armhf 2023-03-29 08:58:30 -04:00
driz
0a919148ff Update Dockerfile.aarch64 2023-03-29 08:58:11 -04:00
driz
6fcd80b175 Update Dockerfile 2023-03-29 08:57:41 -04:00
LinuxServer-CI
c9359819b6 Bot Updating Package Versions 2023-03-28 21:38:56 -05:00
Eric Nemchik
ce32306873 Merge pull request #356 from linuxserver/naming-issue
Update authentik-server.conf.sample
2023-03-28 21:35:04 -05:00
driz
9ce4ec598d Update authelia-server.conf.sample 2023-03-28 20:34:10 -04:00
driz
9488a4fa1d Update authelia-location.conf.sample 2023-03-28 20:33:53 -04:00
driz
3105c07c72 Update authentik-location.conf.sample 2023-03-28 20:33:32 -04:00
driz
286e74c027 Update authentik-server.conf.sample 2023-03-28 20:32:47 -04:00
driz
b909214614 Update authentik-server.conf.sample 2023-03-28 15:29:10 -04:00
LinuxServer-CI
70c66c5495 Bot Updating Package Versions 2023-03-25 18:02:53 +01:00
Eric Nemchik
430308342f Merge pull request #354 from linuxserver/hook
Fix renewal post hook
2023-03-25 11:58:50 -05:00
Eric Nemchik
97222fbb25 Fix renewal post hook 2023-03-25 11:32:25 -05:00
LinuxServer-CI
b00bf6caf2 Bot Updating Package Versions 2023-03-23 00:17:30 -05:00
LinuxServer-CI
7dac282621 Bot Updating Package Versions 2023-03-16 06:18:36 +01:00
LinuxServer-CI
0c1936f8ec Bot Updating Package Versions 2023-03-10 17:29:40 -06:00
Eric Nemchik
e5bb6e4a9d Merge pull request #348 from linuxserver/cleanup-csr-keys
Cleanup unused csr and keys folders
2023-03-10 15:55:11 -06:00
Eric Nemchik
951fafd0b9 Merge remote-tracking branch 'origin/master' into cleanup-csr-keys 2023-03-10 21:41:22 +00:00
Eric Nemchik
ebd233860e Merge remote-tracking branch 'origin/master' into certbot-revamp-config-file 2023-03-10 15:10:35 +00:00
LinuxServer-CI
8a1793ac6b Bot Updating Package Versions 2023-03-09 15:09:49 -06:00
driz
6ac90997ca Merge pull request #349 from linuxserver/google-domains
Add Google Domains
2023-03-09 16:04:13 -05:00
Roxedus
94d9ec6ef1 Add Google Domains 2023-03-09 21:41:56 +01:00
LinuxServer-CI
8ca0f24782 Bot Updating Package Versions 2023-03-08 23:19:11 -06:00
Eric Nemchik
4899670c70 Cleanup unused csr and keys folders 2023-03-07 19:02:03 -06:00
LinuxServer-CI
b7fba5e404 Bot Updating Package Versions 2023-03-07 16:57:40 -06:00
LinuxServer-CI
605b7b8ad7 Bot Updating Package Versions 2023-03-03 01:11:00 +01:00
Eric Nemchik
3a70f75402 Merge pull request #346 from linuxserver/crontab-perms
Format cron init and set permissions
2023-03-02 18:02:24 -06:00
Eric Nemchik
28df27df1f Update readme 2023-03-02 19:33:10 +00:00
Eric Nemchik
dd96c54279 Format cron init and set permissions 2023-03-02 13:21:27 -06:00
Eric Nemchik
1f42ec3bd5 set permissions on crontabs 2023-03-02 09:58:07 -06:00
Eric Nemchik
f5c2f5a154 Merge pull request #344 from bdunkerley/Update-Route-53-Default-Credentials
Comment Default Configs
2023-03-01 23:54:33 -06:00
LinuxServer-CI
637d304123 Bot Updating Package Versions 2023-03-02 06:21:42 +01:00
LinuxServer-CI
9bc38ff91c Bot Updating Templated Files 2023-03-01 23:17:37 -06:00
bdunkerley
07a02d4641 Comment Default Configs 2023-02-26 02:17:20 -08:00
LinuxServer-CI
635990d3ff Bot Updating Package Versions 2023-02-22 15:26:43 +01:00
Eric Nemchik
d85216d876 Merge pull request #340 from jlssmt/patch-1
Update netcup.ini
2023-02-22 09:22:57 -05:00
jlssmt
03f58b3f2c Update netcup.ini
netcup needs a very high PROPAGATION time. it costs me some time to fix.
2023-02-21 00:45:20 +01:00
Eric Nemchik
5fb909d7dc Use existing EAB values for revoke
Attempt to revoke by name if cert path does not exist
2023-02-18 21:20:45 -06:00
Eric Nemchik
fd6d8764a2 Fix spelling 2023-02-18 19:40:43 -06:00
Eric Nemchik
ab7c85e4de Don't match whole line in cli.ini search for agree-tos 2023-02-18 19:35:33 -06:00
Eric Nemchik
d60847483d ensure config files exist and has at least one value set
set_ini_value does not work on empty files
2023-02-18 19:08:28 -06:00
Eric Nemchik
53bb2e284f Add descriptive comments to set_ini_value 2023-02-18 18:42:59 -06:00
Eric Nemchik
43e50ffb03 Rewrite domain handling
Use jq instead of python for ZeroSSL vars
2023-02-18 18:28:03 -06:00
Eric Nemchik
18019fb216 Adjust REV_ACMESERVER handling 2023-02-18 17:26:34 -06:00
Eric Nemchik
d57dffef82 Use config file with certbot 2023-02-18 10:05:06 -06:00
LinuxServer-CI
823c4e8ff6 Bot Updating Package Versions 2023-02-16 06:19:14 +01:00
LinuxServer-CI
b7ad54dbfb Bot Updating Package Versions 2023-02-14 23:57:11 +01:00
LinuxServer-CI
11edbd85e3 Bot Updating Package Versions 2023-02-12 20:39:10 +01:00
LinuxServer-CI
7d12260681 Bot Updating Templated Files 2023-02-12 20:35:46 +01:00
LinuxServer-CI
a4b9e77d08 Bot Updating Templated Files 2023-02-12 13:34:28 -06:00
LinuxServer-CI
b5b950b1a9 Bot Updating Package Versions 2023-02-10 17:34:10 +01:00
Eric Nemchik
83bc8a3bd7 Merge pull request #331 from linuxserver/driz-tik
Add Authentik configs, update Authelia configs
2023-02-10 10:28:22 -06:00
Eric Nemchik
b095dd7d50 Merge branch 'master' into driz-tik 2023-02-09 18:37:35 -06:00
Eric Nemchik
fbb28ff5f7 Merge pull request #332 from linuxserver/nemchik-tik
Unify auth config approach
2023-02-09 18:34:10 -06:00
Eric Nemchik
0cc47e6922 Additional config comments and consolidation 2023-02-09 18:32:49 -06:00
Eric Nemchik
3f9c403fd6 Merge remote-tracking branch 'origin/authelia-subdomain' into nemchik-tik 2023-02-09 18:32:11 -06:00
Eric Nemchik
79f6dd4cb1 Prevent auth_request on auth subfolder
adjust dates and comments
2023-02-09 18:19:50 -06:00
Eric Nemchik
5683a3f232 Update default.conf.sample 2023-02-09 15:52:57 -06:00
Eric Nemchik
f9f9b677d9 Update default.conf.sample 2023-02-09 15:52:20 -06:00
LinuxServer-CI
d838ef6d13 Bot Updating Package Versions 2023-02-09 07:18:54 -06:00
LinuxServer-CI
67e2691258 Bot Updating Templated Files 2023-02-09 07:15:26 -06:00
Eric Nemchik
1a81ab0ef2 Merge pull request #334 from linuxserver/porkbun
Add porkbun support back in
2023-02-09 07:14:01 -06:00
LinuxServer-CI
cc2380b2b6 Bot Updating Package Versions 2023-02-09 06:18:41 +01:00
Eric Nemchik
ed104eb203 Update authentik-server.conf.sample 2023-02-08 13:25:36 -06:00
Eric Nemchik
3bab8b6b77 Update proxy.conf.sample 2023-02-08 13:24:03 -06:00
Eric Nemchik
0b038edb4a Update authentik-server.conf.sample 2023-02-08 09:26:46 -06:00
Eric Nemchik
c7eba518d6 Add porkbun support back in 2023-02-06 18:26:07 -06:00
Eric Nemchik
9e7ef6154d Remove authelia site-conf
A proxy-conf is already included
2023-02-05 17:14:34 -06:00
Eric Nemchik
cba7e6703c Keep subfolder backend signin option 2023-02-05 16:59:48 -06:00
Eric Nemchik
b73f17181a Remove proxy.conf from authentik location 2023-02-05 16:56:36 -06:00
Eric Nemchik
01c28da51e Adjustments to bring it closer to authentik docs 2023-02-05 16:50:45 -06:00
Eric Nemchik
0d92109b68 Unify auth config approach 2023-02-05 16:45:56 -06:00
Eric Nemchik
3ef896e611 overwrite header from proxy.conf to not include $server_port 2023-02-05 14:14:29 -06:00
Eric Nemchik
e057a7ce0d Unify auth config approach 2023-02-05 12:05:18 -06:00
Eric Nemchik
db4e661126 Update authelia-location.conf.sample 2023-02-03 09:14:53 -06:00
driz
c137a66726 Update root/defaults/nginx/authentik-server.conf
Co-authored-by: Eric Nemchik <eric@nemchik.com>
2023-02-02 10:33:15 -05:00
driz
7be5f1caec Update authentik-location.conf 2023-02-02 10:32:51 -05:00
Eric Nemchik
777fa62481 Add new headers 2023-02-01 19:35:23 -06:00
driz
a95a0f639a Update authentik-location.conf 2023-02-01 17:17:59 -05:00
driz
c686dfee47 Update authentik-server.conf 2023-02-01 17:17:42 -05:00
driz
a91fe2b269 Update README.md 2023-02-01 17:13:20 -05:00
driz
a184bb33ca Update readme-vars.yml 2023-02-01 17:12:36 -05:00
driz
38e1845e73 Add files via upload 2023-02-01 17:09:59 -05:00
Eric Nemchik
5e47b02496 Update Authelia configs and include site-confs sample for Authelia 2023-02-01 11:50:56 -06:00
Eric Nemchik
f6438c4a66 Merge pull request #328 from linuxserver/abc-cron
Add abc crontab
2023-01-25 20:09:20 -06:00
Eric Nemchik
72cb34675c Add abc crontab 2023-01-25 19:42:05 -06:00
90 changed files with 2246 additions and 1416 deletions

2
.editorconfig Executable file → Normal file
View File

@@ -15,6 +15,6 @@ trim_trailing_whitespace = false
indent_style = space
indent_size = 2
[{**.sh,root/etc/cont-init.d/**,root/etc/services.d/**}]
[{**.sh,root/etc/s6-overlay/s6-rc.d/**,root/etc/cont-init.d/**,root/etc/services.d/**}]
indent_style = space
indent_size = 4

View File

@@ -6,7 +6,7 @@
* Read, and fill the Pull Request template
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://discord.gg/YWrKVTn)
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://linuxserver.io/discord)
## Common files
@@ -105,10 +105,10 @@ docker build \
-t linuxserver/swag:latest .
```
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
```bash
docker run --rm --privileged multiarch/qemu-user-static:register --reset
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.

0
.github/FUNDING.yml vendored Executable file → Normal file
View File

2
.github/ISSUE_TEMPLATE/config.yml vendored Executable file → Normal file
View File

@@ -1,7 +1,7 @@
blank_issues_enabled: false
contact_links:
- name: Discord chat support
url: https://discord.gg/YWrKVTn
url: https://linuxserver.io/discord
about: Realtime support / chat with the community and the team.
- name: Discourse discussion forum

5
.github/ISSUE_TEMPLATE/issue.bug.yml vendored Executable file → Normal file
View File

@@ -53,7 +53,6 @@ body:
options:
- x86-64
- arm64
- armhf
validations:
required: true
- type: textarea
@@ -68,10 +67,10 @@ body:
- type: textarea
attributes:
description: |
Provide a full docker log, output of "docker logs linuxserver.io"
Provide a full docker log, output of "docker logs swag"
label: Container logs
placeholder: |
Output of `docker logs linuxserver.io`
Output of `docker logs swag`
render: bash
validations:
required: true

0
.github/ISSUE_TEMPLATE/issue.feature.yml vendored Executable file → Normal file
View File

View File

@@ -1,12 +0,0 @@
name: Comment on invalid interaction
on:
issues:
types:
- labeled
jobs:
add-comment-on-invalid:
if: github.event.label.name == 'invalid'
permissions:
issues: write
uses: linuxserver/github-workflows/.github/workflows/invalid-interaction-helper.yml@v1
secrets: inherit

View File

@@ -0,0 +1,19 @@
name: Issue & PR Tracker
on:
issues:
types: [opened,reopened,labeled,unlabeled,closed]
pull_request_target:
types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled,closed]
pull_request_review:
types: [submitted,edited,dismissed]
permissions:
contents: read
jobs:
manage-project:
permissions:
issues: write
uses: linuxserver/github-workflows/.github/workflows/issue-pr-tracker.yml@v1
secrets: inherit

16
.github/workflows/call_issues_cron.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: '35 15 * * *'
workflow_dispatch:
permissions:
contents: read
jobs:
stale:
permissions:
issues: write
pull-requests: write
uses: linuxserver/github-workflows/.github/workflows/issues-cron.yml@v1
secrets: inherit

View File

@@ -3,24 +3,42 @@ name: External Trigger Main
on:
workflow_dispatch:
permissions:
contents: read
jobs:
external-trigger-master:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.1.0
- uses: actions/checkout@v4.1.1
- name: External Trigger
if: github.ref == 'refs/heads/master'
env:
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
run: |
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_SWAG_MASTER }}" ]; then
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_SWAG_MASTER is set; skipping trigger. ****"
printf "# External trigger for docker-swag\n\n" >> $GITHUB_STEP_SUMMARY
if grep -q "^swag_master_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`swag_master_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
elif grep -q "^swag_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`swag_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
fi
echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_SWAG_MASTER\". ****"
echo "**** Retrieving external version ****"
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> External trigger running off of master branch. To disable this trigger, add \`swag_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
EXT_RELEASE=$(curl -sL "https://pypi.python.org/pypi/certbot/json" |jq -r '. | .info.version')
echo "Type is \`pip_version\`" >> $GITHUB_STEP_SUMMARY
if grep -q "^swag_master_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` matches current external release; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
fi
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "**** Can't retrieve external version, exiting ****"
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="Can't retrieve external version for swag branch master"
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-swag/actions/runs/${{ github.run_id }}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
@@ -28,24 +46,43 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1
fi
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "**** External version: ${EXT_RELEASE} ****"
echo "**** Retrieving last pushed version ****"
EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
image="linuxserver/swag"
tag="latest"
token=$(curl -sX GET \
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fswag%3Apull" \
| jq -r '.token')
multidigest=$(curl -s \
multidigest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.index.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}")
if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# If there's a layer element it's a single-arch manifest so just get that digest
digest=$(jq -r '.config.digest' <<< "${multidigest}")
else
# Otherwise it's multi-arch or has manifest annotations
if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# Check for manifest annotations and delete if found
multidigest=$(jq 'del(.manifests[] | select(.annotations))' <<< "${multidigest}")
fi
if [[ $(jq '.manifests | length' <<< "${multidigest}") -gt 1 ]]; then
# If there's still more than one digest, it's multi-arch
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
else
# Otherwise it's single arch
multidigest=$(jq -r ".manifests[].digest?" <<< "${multidigest}")
fi
if digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}" \
| jq -r 'first(.manifests[].digest)')
digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
| jq -r '.config.digest')
"https://ghcr.io/v2/${image}/manifests/${multidigest}"); then
digest=$(jq -r '.config.digest' <<< "${digest}");
fi
fi
image_info=$(curl -sL \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/blobs/${digest}")
@@ -57,40 +94,54 @@ jobs:
IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}')
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
if [ -z "${IMAGE_VERSION}" ]; then
echo "**** Can't retrieve last pushed version, exiting ****"
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="Can't retrieve last pushed version for swag tag latest"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1
fi
echo "**** Last pushed version: ${IMAGE_VERSION} ****"
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then
echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
exit 0
else
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/master/buildWithParameters?PACKAGE_CHECK=false \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
echo "**** Sleeping 10 seconds until job starts ****"
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****"
echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****"
TRIGGER_REASON="A version change was detected for swag tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
if [[ "${artifacts_found}" == "false" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="New version ${EXT_RELEASE} for swag tag latest is detected, however not all artifacts are uploaded to upstream release yet. Will try again later."
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
else
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
if [[ "${artifacts_found}" == "true" ]]; then
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
fi
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/master/buildWithParameters?PACKAGE_CHECK=false \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****"
TRIGGER_REASON="A version change was detected for swag tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi
fi

View File

@@ -2,42 +2,47 @@ name: External Trigger Scheduler
on:
schedule:
- cron: '50 * * * *'
- cron: '2 * * * *'
workflow_dispatch:
permissions:
contents: read
jobs:
external-trigger-scheduler:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.1.0
- uses: actions/checkout@v4.1.1
with:
fetch-depth: '0'
- name: External Trigger Scheduler
run: |
echo "**** Branches found: ****"
git for-each-ref --format='%(refname:short)' refs/remotes
echo "**** Pulling the yq docker image ****"
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
printf "# External trigger scheduler for docker-swag\n\n" >> $GITHUB_STEP_SUMMARY
printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY
for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes)
do
br=$(echo "$br" | sed 's|origin/||g')
echo "**** Evaluating branch ${br} ****"
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-swag/${br}/jenkins-vars.yml \
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch)
if [ "$br" == "$ls_branch" ]; then
echo "**** Branch ${br} appears to be live; checking workflow. ****"
if [[ "${br}" == "HEAD" ]]; then
printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY
continue
fi
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-swag/${br}/jenkins-vars.yml)
ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch')
ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type')
if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then
echo "Branch appears to be live and trigger is not os; checking workflow." >> $GITHUB_STEP_SUMMARY
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-swag/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****."
echo "Triggering external trigger workflow for branch." >> $GITHUB_STEP_SUMMARY
curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \
-H "Accept: application/vnd.github.v3+json" \
-d "{\"ref\":\"refs/heads/${br}\"}" \
https://api.github.com/repos/linuxserver/docker-swag/actions/workflows/external_trigger.yml/dispatches
else
echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Skipping branch due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi
else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
echo "Skipping branch due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY
fi
done

View File

@@ -2,12 +2,18 @@ name: Greetings
on: [pull_request_target, issues]
permissions:
contents: read
jobs:
greeting:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1
with:
issue-message: 'Thanks for opening your first issue here! Be sure to follow the [bug](https://github.com/linuxserver/docker-swag/blob/master/.github/ISSUE_TEMPLATE/issue.bug.yml) or [feature](https://github.com/linuxserver/docker-swag/blob/master/.github/ISSUE_TEMPLATE/issue.feature.yml) issue templates!'
issue-message: 'Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-swag/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!'
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,38 +0,0 @@
name: Package Trigger Main
on:
workflow_dispatch:
jobs:
package-trigger-master:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.1.0
- name: Package Trigger
if: github.ref == 'refs/heads/master'
run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_SWAG_MASTER }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_SWAG_MASTER is set; skipping trigger. ****"
exit 0
fi
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
exit 0
fi
echo "**** Package trigger running off of master branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_SWAG_MASTER\". ****"
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/master/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
echo "**** Sleeping 10 seconds until job starts ****"
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****"
echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"

View File

@@ -2,49 +2,102 @@ name: Package Trigger Scheduler
on:
schedule:
- cron: '03 5 * * 4'
- cron: '1 3 * * 6'
workflow_dispatch:
permissions:
contents: read
jobs:
package-trigger-scheduler:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.1.0
- uses: actions/checkout@v4.1.1
with:
fetch-depth: '0'
- name: Package Trigger Scheduler
env:
SKIP_PACKAGE_TRIGGER: ${{ vars.SKIP_PACKAGE_TRIGGER }}
run: |
echo "**** Branches found: ****"
git for-each-ref --format='%(refname:short)' refs/remotes
echo "**** Pulling the yq docker image ****"
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
printf "# Package trigger scheduler for docker-swag\n\n" >> $GITHUB_STEP_SUMMARY
printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY
for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes)
do
br=$(echo "$br" | sed 's|origin/||g')
echo "**** Evaluating branch ${br} ****"
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-swag/${br}/jenkins-vars.yml \
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch)
if [ "${br}" == "${ls_branch}" ]; then
echo "**** Branch ${br} appears to be live; checking workflow. ****"
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-swag/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then
echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****"
triggered_branches="${triggered_branches}${br} "
curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \
-H "Accept: application/vnd.github.v3+json" \
-d "{\"ref\":\"refs/heads/${br}\"}" \
https://api.github.com/repos/linuxserver/docker-swag/actions/workflows/package_trigger.yml/dispatches
sleep 30
if [[ "${br}" == "HEAD" ]]; then
printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY
continue
fi
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-swag/${br}/jenkins-vars.yml)
if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-swag/${br}/Jenkinsfile >/dev/null 2>&1; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> No Jenkinsfile found. Branch is either deprecated or is an early dev branch." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-swag/${br}/readme-vars.yml)
if [[ $(yq -r '.project_deprecation_status' <<< "${README_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Branch appears to be deprecated; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif grep -q "^swag_${br}" <<< "${SKIP_PACKAGE_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`swag_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/${br}/lastBuild/api/json | jq -r '.building' 2>/dev/null) == "true" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
else
echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Triggering package trigger for branch ${br}" >> $GITHUB_STEP_SUMMARY
printf "> To disable, add \`swag_%s\` into the Github organizational variable \`SKIP_PACKAGE_TRIGGER\`.\n\n" "${br}" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} "
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/${br}/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
if [[ -z "${response}" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Jenkins build could not be triggered. Skipping branch."
continue
fi
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
if ! curl -ifX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Unable to change the Jenkins job description."
fi
sleep 20
fi
else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY
fi
done
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
echo "**** Notifying Discord ****"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Package Check Build(s) Triggered for swag** \n**Branch(es):** '"${triggered_branches}"' \n**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-swag/activity/"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
if [[ -n "${triggered_branches}" ]] || [[ -n "${skipped_branches}" ]]; then
if [[ -n "${triggered_branches}" ]]; then
NOTIFY_BRANCHES="**Triggered:** ${triggered_branches} \n"
NOTIFY_BUILD_URL="**Build URL:** https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-swag/activity/ \n"
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
fi
if [[ -n "${skipped_branches}" ]]; then
NOTIFY_BRANCHES="${NOTIFY_BRANCHES}**Skipped:** ${skipped_branches} \n"
fi
echo "**** Notifying Discord ****"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Package Check Build(s) for swag** \n'"${NOTIFY_BRANCHES}"''"${NOTIFY_BUILD_URL}"'"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi

12
.github/workflows/permissions.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
name: Permission check
on:
pull_request_target:
paths:
- '**/run'
- '**/finish'
- '**/check'
- 'root/migrations/*'
jobs:
permission_check:
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1

View File

@@ -1,23 +0,0 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: "30 1 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v6.0.1
with:
stale-issue-message: "This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-pr-message: "This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'
days-before-stale: 30
days-before-close: 365
exempt-issue-labels: 'awaiting-approval,work-in-progress'
exempt-pr-labels: 'awaiting-approval,work-in-progress'
repo-token: ${{ secrets.GITHUB_TOKEN }}

1
.gitignore vendored
View File

@@ -1 +1,2 @@
.idea
.jenkins-external

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.17
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.22
# set version label
ARG BUILD_DATE
@@ -10,8 +10,10 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
LABEL maintainer="nemchik"
# environment settings
ENV DHLEVEL=2048 ONLY_SUBDOMAINS=false AWS_CONFIG_FILE=/config/dns-conf/route53.ini
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
ENV DHLEVEL=2048 \
ONLY_SUBDOMAINS=false \
AWS_CONFIG_FILE=/config/dns-conf/route53.ini \
S6_BEHAVIOUR_IF_STAGE2_FAILS=2
RUN \
echo "**** install build packages ****" && \
@@ -24,9 +26,11 @@ RUN \
openssl-dev \
python3-dev && \
echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \
apk add --no-cache \
fail2ban \
gnupg \
inotify-tools \
iptables-legacy \
memcached \
nginx-mod-http-brotli \
nginx-mod-http-dav-ext \
@@ -45,59 +49,51 @@ RUN \
nginx-mod-stream \
nginx-mod-stream-geoip2 \
nginx-vim \
php81-bcmath \
php81-bz2 \
php81-ctype \
php81-curl \
php81-dom \
php81-exif \
php81-ftp \
php81-gd \
php81-gmp \
php81-iconv \
php81-imap \
php81-intl \
php81-ldap \
php81-mysqli \
php81-mysqlnd \
php81-opcache \
php81-pdo_mysql \
php81-pdo_odbc \
php81-pdo_pgsql \
php81-pdo_sqlite \
php81-pear \
php81-pecl-apcu \
php81-pecl-mailparse \
php81-pecl-memcached \
php81-pecl-redis \
php81-pgsql \
php81-phar \
php81-posix \
php81-soap \
php81-sockets \
php81-sodium \
php81-sqlite3 \
php81-tokenizer \
php81-xmlreader \
php81-xsl \
php81-zip \
php84-bcmath \
php84-bz2 \
php84-dom \
php84-exif \
php84-ftp \
php84-gd \
php84-gmp \
php84-imap \
php84-intl \
php84-ldap \
php84-mysqli \
php84-mysqlnd \
php84-opcache \
php84-pdo_mysql \
php84-pdo_odbc \
php84-pdo_pgsql \
php84-pdo_sqlite \
php84-pear \
php84-pecl-apcu \
php84-pecl-memcached \
php84-pecl-redis \
php84-pgsql \
php84-posix \
php84-soap \
php84-sockets \
php84-sodium \
php84-sqlite3 \
php84-tokenizer \
php84-xmlreader \
php84-xsl \
whois && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
php81-pecl-mcrypt \
php81-pecl-xmlrpc && \
echo "**** install certbot plugins ****" && \
if [ -z ${CERTBOT_VERSION+x} ]; then \
CERTBOT_VERSION=$(curl -sL https://pypi.python.org/pypi/certbot/json |jq -r '. | .info.version'); \
fi && \
python3 -m ensurepip && \
pip3 install -U --no-cache-dir \
python3 -m venv /lsiopy && \
pip install -U --no-cache-dir \
pip \
wheel && \
pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \
pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.22/ \
certbot==${CERTBOT_VERSION} \
certbot-dns-acmedns \
certbot-dns-aliyun \
certbot-dns-azure \
certbot-dns-bunny \
certbot-dns-cloudflare \
certbot-dns-cpanel \
certbot-dns-desec \
@@ -108,23 +104,29 @@ RUN \
certbot-dns-dnspod \
certbot-dns-do \
certbot-dns-domeneshop \
certbot-dns-dreamhost \
certbot-dns-duckdns \
certbot-dns-dynu \
certbot-dns-dynudns \
certbot-dns-freedns \
certbot-dns-gehirn \
certbot-dns-glesys \
certbot-dns-godaddy \
certbot-dns-google \
certbot-dns-he \
certbot-dns-hetzner \
certbot-dns-hetzner-cloud \
certbot-dns-infomaniak \
certbot-dns-inwx \
certbot-dns-ionos \
certbot-dns-linode \
certbot-dns-loopia \
certbot-dns-luadns \
certbot-dns-namecheap \
certbot-dns-netcup \
certbot-dns-njalla \
certbot-dns-nsone \
certbot-dns-ovh \
certbot-dns-porkbun \
certbot-dns-rfc2136 \
certbot-dns-route53 \
certbot-dns-sakuracloud \
@@ -145,11 +147,13 @@ RUN \
sed -i \
's|#ssl_trusted_certificate /config/keys/cert.crt;|ssl_trusted_certificate /config/keys/cert.crt;|' \
/defaults/nginx/ssl.conf.sample && \
echo "**** remove stream.conf ****" && \
rm -f /etc/nginx/conf.d/stream.conf && \
echo "**** correct ip6tables legacy issue ****" && \
rm \
/sbin/ip6tables && \
rm \
/usr/sbin/ip6tables && \
ln -s \
/sbin/ip6tables-nft /sbin/ip6tables && \
/usr/sbin/ip6tables-nft /usr/sbin/ip6tables && \
echo "**** remove unnecessary fail2ban filters ****" && \
rm \
/etc/fail2ban/jail.d/alpine-ssh.conf && \
@@ -157,6 +161,8 @@ RUN \
mkdir -p /defaults/fail2ban && \
mv /etc/fail2ban/action.d /defaults/fail2ban/ && \
mv /etc/fail2ban/filter.d /defaults/fail2ban/ && \
echo "**** define allowipv6 to silence warning ****" && \
sed -i 's/#allowipv6 = auto/allowipv6 = auto/g' /etc/fail2ban/fail2ban.conf && \
echo "**** copy proxy confs to /defaults ****" && \
mkdir -p \
/defaults/nginx/proxy-confs && \
@@ -166,6 +172,7 @@ RUN \
tar xf \
/tmp/proxy-confs.tar.gz -C \
/defaults/nginx/proxy-confs --strip-components=1 --exclude=linux*/.editorconfig --exclude=linux*/.gitattributes --exclude=linux*/.github --exclude=linux*/.gitignore --exclude=linux*/LICENSE && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.17
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.22
# set version label
ARG BUILD_DATE
@@ -10,8 +10,10 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
LABEL maintainer="nemchik"
# environment settings
ENV DHLEVEL=2048 ONLY_SUBDOMAINS=false AWS_CONFIG_FILE=/config/dns-conf/route53.ini
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
ENV DHLEVEL=2048 \
ONLY_SUBDOMAINS=false \
AWS_CONFIG_FILE=/config/dns-conf/route53.ini \
S6_BEHAVIOUR_IF_STAGE2_FAILS=2
RUN \
echo "**** install build packages ****" && \
@@ -24,9 +26,11 @@ RUN \
openssl-dev \
python3-dev && \
echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \
apk add --no-cache \
fail2ban \
gnupg \
inotify-tools \
iptables-legacy \
memcached \
nginx-mod-http-brotli \
nginx-mod-http-dav-ext \
@@ -45,59 +49,51 @@ RUN \
nginx-mod-stream \
nginx-mod-stream-geoip2 \
nginx-vim \
php81-bcmath \
php81-bz2 \
php81-ctype \
php81-curl \
php81-dom \
php81-exif \
php81-ftp \
php81-gd \
php81-gmp \
php81-iconv \
php81-imap \
php81-intl \
php81-ldap \
php81-mysqli \
php81-mysqlnd \
php81-opcache \
php81-pdo_mysql \
php81-pdo_odbc \
php81-pdo_pgsql \
php81-pdo_sqlite \
php81-pear \
php81-pecl-apcu \
php81-pecl-mailparse \
php81-pecl-memcached \
php81-pecl-redis \
php81-pgsql \
php81-phar \
php81-posix \
php81-soap \
php81-sockets \
php81-sodium \
php81-sqlite3 \
php81-tokenizer \
php81-xmlreader \
php81-xsl \
php81-zip \
php84-bcmath \
php84-bz2 \
php84-dom \
php84-exif \
php84-ftp \
php84-gd \
php84-gmp \
php84-imap \
php84-intl \
php84-ldap \
php84-mysqli \
php84-mysqlnd \
php84-opcache \
php84-pdo_mysql \
php84-pdo_odbc \
php84-pdo_pgsql \
php84-pdo_sqlite \
php84-pear \
php84-pecl-apcu \
php84-pecl-memcached \
php84-pecl-redis \
php84-pgsql \
php84-posix \
php84-soap \
php84-sockets \
php84-sodium \
php84-sqlite3 \
php84-tokenizer \
php84-xmlreader \
php84-xsl \
whois && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
php81-pecl-mcrypt \
php81-pecl-xmlrpc && \
echo "**** install certbot plugins ****" && \
if [ -z ${CERTBOT_VERSION+x} ]; then \
CERTBOT_VERSION=$(curl -sL https://pypi.python.org/pypi/certbot/json |jq -r '. | .info.version'); \
fi && \
python3 -m ensurepip && \
pip3 install -U --no-cache-dir \
python3 -m venv /lsiopy && \
pip install -U --no-cache-dir \
pip \
wheel && \
pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \
pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.22/ \
certbot==${CERTBOT_VERSION} \
certbot-dns-acmedns \
certbot-dns-aliyun \
certbot-dns-azure \
certbot-dns-bunny \
certbot-dns-cloudflare \
certbot-dns-cpanel \
certbot-dns-desec \
@@ -108,23 +104,29 @@ RUN \
certbot-dns-dnspod \
certbot-dns-do \
certbot-dns-domeneshop \
certbot-dns-dreamhost \
certbot-dns-duckdns \
certbot-dns-dynu \
certbot-dns-dynudns \
certbot-dns-freedns \
certbot-dns-gehirn \
certbot-dns-glesys \
certbot-dns-godaddy \
certbot-dns-google \
certbot-dns-he \
certbot-dns-hetzner \
certbot-dns-hetzner-cloud \
certbot-dns-infomaniak \
certbot-dns-inwx \
certbot-dns-ionos \
certbot-dns-linode \
certbot-dns-loopia \
certbot-dns-luadns \
certbot-dns-namecheap \
certbot-dns-netcup \
certbot-dns-njalla \
certbot-dns-nsone \
certbot-dns-ovh \
certbot-dns-porkbun \
certbot-dns-rfc2136 \
certbot-dns-route53 \
certbot-dns-sakuracloud \
@@ -145,11 +147,13 @@ RUN \
sed -i \
's|#ssl_trusted_certificate /config/keys/cert.crt;|ssl_trusted_certificate /config/keys/cert.crt;|' \
/defaults/nginx/ssl.conf.sample && \
echo "**** remove stream.conf ****" && \
rm -f /etc/nginx/conf.d/stream.conf && \
echo "**** correct ip6tables legacy issue ****" && \
rm \
/sbin/ip6tables && \
rm \
/usr/sbin/ip6tables && \
ln -s \
/sbin/ip6tables-nft /sbin/ip6tables && \
/usr/sbin/ip6tables-nft /usr/sbin/ip6tables && \
echo "**** remove unnecessary fail2ban filters ****" && \
rm \
/etc/fail2ban/jail.d/alpine-ssh.conf && \
@@ -157,6 +161,8 @@ RUN \
mkdir -p /defaults/fail2ban && \
mv /etc/fail2ban/action.d /defaults/fail2ban/ && \
mv /etc/fail2ban/filter.d /defaults/fail2ban/ && \
echo "**** define allowipv6 to silence warning ****" && \
sed -i 's/#allowipv6 = auto/allowipv6 = auto/g' /etc/fail2ban/fail2ban.conf && \
echo "**** copy proxy confs to /defaults ****" && \
mkdir -p \
/defaults/nginx/proxy-confs && \
@@ -166,6 +172,7 @@ RUN \
tar xf \
/tmp/proxy-confs.tar.gz -C \
/defaults/nginx/proxy-confs --strip-components=1 --exclude=linux*/.editorconfig --exclude=linux*/.gitattributes --exclude=linux*/.github --exclude=linux*/.gitignore --exclude=linux*/LICENSE && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \

View File

@@ -1,182 +0,0 @@
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm32v7-3.17
# set version label
ARG BUILD_DATE
ARG VERSION
ARG CERTBOT_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="nemchik"
# environment settings
ENV DHLEVEL=2048 ONLY_SUBDOMAINS=false AWS_CONFIG_FILE=/config/dns-conf/route53.ini
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
build-base \
cargo \
libffi-dev \
libxml2-dev \
libxslt-dev \
openssl-dev \
python3-dev && \
echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \
fail2ban \
gnupg \
memcached \
nginx-mod-http-brotli \
nginx-mod-http-dav-ext \
nginx-mod-http-echo \
nginx-mod-http-fancyindex \
nginx-mod-http-geoip2 \
nginx-mod-http-headers-more \
nginx-mod-http-image-filter \
nginx-mod-http-perl \
nginx-mod-http-redis2 \
nginx-mod-http-set-misc \
nginx-mod-http-upload-progress \
nginx-mod-http-xslt-filter \
nginx-mod-mail \
nginx-mod-rtmp \
nginx-mod-stream \
nginx-mod-stream-geoip2 \
nginx-vim \
php81-bcmath \
php81-bz2 \
php81-ctype \
php81-curl \
php81-dom \
php81-exif \
php81-ftp \
php81-gd \
php81-gmp \
php81-iconv \
php81-imap \
php81-intl \
php81-ldap \
php81-mysqli \
php81-mysqlnd \
php81-opcache \
php81-pdo_mysql \
php81-pdo_odbc \
php81-pdo_pgsql \
php81-pdo_sqlite \
php81-pear \
php81-pecl-apcu \
php81-pecl-mailparse \
php81-pecl-memcached \
php81-pecl-redis \
php81-pgsql \
php81-phar \
php81-posix \
php81-soap \
php81-sockets \
php81-sodium \
php81-sqlite3 \
php81-tokenizer \
php81-xmlreader \
php81-xsl \
php81-zip \
whois && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
php81-pecl-mcrypt \
php81-pecl-xmlrpc && \
echo "**** install certbot plugins ****" && \
if [ -z ${CERTBOT_VERSION+x} ]; then \
CERTBOT_VERSION=$(curl -sL https://pypi.python.org/pypi/certbot/json |jq -r '. | .info.version'); \
fi && \
python3 -m ensurepip && \
pip3 install -U --no-cache-dir \
pip \
wheel && \
pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \
certbot==${CERTBOT_VERSION} \
certbot-dns-acmedns \
certbot-dns-aliyun \
certbot-dns-azure \
certbot-dns-cloudflare \
certbot-dns-cpanel \
certbot-dns-desec \
certbot-dns-digitalocean \
certbot-dns-directadmin \
certbot-dns-dnsimple \
certbot-dns-dnsmadeeasy \
certbot-dns-dnspod \
certbot-dns-do \
certbot-dns-domeneshop \
certbot-dns-duckdns \
certbot-dns-dynu \
certbot-dns-gehirn \
certbot-dns-godaddy \
certbot-dns-google \
certbot-dns-he \
certbot-dns-hetzner \
certbot-dns-infomaniak \
certbot-dns-inwx \
certbot-dns-ionos \
certbot-dns-linode \
certbot-dns-loopia \
certbot-dns-luadns \
certbot-dns-netcup \
certbot-dns-njalla \
certbot-dns-nsone \
certbot-dns-ovh \
certbot-dns-rfc2136 \
certbot-dns-route53 \
certbot-dns-sakuracloud \
certbot-dns-standalone \
certbot-dns-transip \
certbot-dns-vultr \
certbot-plugin-gandi \
cryptography \
future \
requests && \
echo "**** enable OCSP stapling from base ****" && \
sed -i \
's|#ssl_stapling on;|ssl_stapling on;|' \
/defaults/nginx/ssl.conf.sample && \
sed -i \
's|#ssl_stapling_verify on;|ssl_stapling_verify on;|' \
/defaults/nginx/ssl.conf.sample && \
sed -i \
's|#ssl_trusted_certificate /config/keys/cert.crt;|ssl_trusted_certificate /config/keys/cert.crt;|' \
/defaults/nginx/ssl.conf.sample && \
echo "**** correct ip6tables legacy issue ****" && \
rm \
/sbin/ip6tables && \
ln -s \
/sbin/ip6tables-nft /sbin/ip6tables && \
echo "**** remove unnecessary fail2ban filters ****" && \
rm \
/etc/fail2ban/jail.d/alpine-ssh.conf && \
echo "**** copy fail2ban default action and filter to /defaults ****" && \
mkdir -p /defaults/fail2ban && \
mv /etc/fail2ban/action.d /defaults/fail2ban/ && \
mv /etc/fail2ban/filter.d /defaults/fail2ban/ && \
echo "**** copy proxy confs to /defaults ****" && \
mkdir -p \
/defaults/nginx/proxy-confs && \
curl -o \
/tmp/proxy-confs.tar.gz -L \
"https://github.com/linuxserver/reverse-proxy-confs/tarball/master" && \
tar xf \
/tmp/proxy-confs.tar.gz -C \
/defaults/nginx/proxy-confs --strip-components=1 --exclude=linux*/.editorconfig --exclude=linux*/.gitattributes --exclude=linux*/.github --exclude=linux*/.gitignore --exclude=linux*/LICENSE && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
rm -rf \
/tmp/* \
$HOME/.cache \
$HOME/.cargo
# copy local files
COPY root/ /
# ports and volumes
EXPOSE 80 443
VOLUME /config

1013
Jenkinsfile vendored

File diff suppressed because it is too large Load Diff

0
LICENSE Executable file → Normal file
View File

271
README.md Executable file → Normal file
View File

@@ -1,12 +1,10 @@
<!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read the https://github.com/linuxserver/docker-swag/blob/master/.github/CONTRIBUTING.md -->
<!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read https://github.com/linuxserver/docker-swag/blob/master/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://discord.gg/YWrKVTn "realtime support / chat with the community and the team.")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://linuxserver.io/discord "realtime support / chat with the community and the team.")
[![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.")
[![Fleet](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Fleet)](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
[![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.")
[![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
@@ -21,15 +19,14 @@ The [LinuxServer.io](https://linuxserver.io) team brings you another container r
Find us at:
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
* [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum.
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
* [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
# [linuxserver/swag](https://github.com/linuxserver/docker-swag)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fswag?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fswag)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fswag?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh)
[![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-swag.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-swag)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-swag.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-swag/releases)
[![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-swag/packages)
@@ -38,7 +35,6 @@ Find us at:
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/swag.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/swag)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/swag.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/swag)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-swag%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/master/)
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fswag%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/swag/latest/index.html)
SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.
@@ -46,7 +42,7 @@ SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relatio
## Supported Architectures
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `lscr.io/linuxserver/swag:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
@@ -56,7 +52,6 @@ The architectures supported by this image are:
| :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> |
| armhf| ✅ | arm32v7-\<version tag\> |
## Application Setup
@@ -68,13 +63,28 @@ The architectures supported by this image are:
* For `dns` validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under `/config/dns-conf`
* Cloudflare provides free accounts for managing dns and is very easy to use with this image. Make sure that it is set up for "dns only" instead of "dns + proxy"
* Google dns plugin is meant to be used with "Google Cloud DNS", a paid enterprise product, and not for "Google Domains DNS"
* DuckDNS only supoprts two types of DNS validated certificates (not both at the same time):
* DuckDNS only supports two types of DNS validated certificates (not both at the same time):
1. Certs that only cover your main subdomain (ie. `yoursubdomain.duckdns.org`, leave the `SUBDOMAINS` variable empty)
2. Certs that cover sub-subdomains of your main subdomain (ie. `*.yoursubdomain.duckdns.org`, set the `SUBDOMAINS` variable to `wildcard`)
* `--cap-add=NET_ADMIN` is required for fail2ban to modify iptables
* After setup, navigate to `https://yourdomain.url` to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at `/config/nginx/site-confs/default.conf`).
* After setup, navigate to `https://example.com` to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at `/config/nginx/site-confs/default.conf`).
* Certs are checked nightly and if expiration is within 30 days, renewal is attempted. If your cert is about to expire in less than 30 days, check the logs under `/config/log/letsencrypt` to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances.
### Certbot Plugins
SWAG includes many Certbot plugins out of the box, but not all plugins can be included.
If you need a plugin that is not included, the quickest way to have the plugin available is to use our [Universal Package Install Docker Mod](https://github.com/linuxserver/docker-mods/tree/universal-package-install).
Set the following environment variables on your container:
```yaml
DOCKER_MODS=linuxserver/mods:universal-package-install
INSTALL_PIP_PACKAGES=certbot-dns-<plugin>
```
Set the required credentials (usually found in the plugin documentation) in `/config/dns-conf/<plugin>.ini`.
It is recommended to attempt obtaining a certificate with `STAGING=true` first to make sure the plugin is working as expected.
### Security and password protection
* The container detects changes to url and subdomains, revokes existing certs and generates new ones during start.
@@ -116,7 +126,7 @@ This will *ask* Google et al not to index and list your site. Be careful with th
* You can check which jails are active via `docker exec -it swag fail2ban-client status`
* You can check the status of a specific jail via `docker exec -it swag fail2ban-client status <jail name>`
* You can unban an IP via `docker exec -it swag fail2ban-client set <jail name> unbanip <IP>`
* A list of commands can be found here: <https://www.fail2ban.org/wiki/index.php/Commands>
* A list of commands for fail2ban-client can be found [here](https://manpages.ubuntu.com/manpages/noble/man1/fail2ban-client.1.html)
### Updating configs
@@ -132,19 +142,40 @@ This will *ask* Google et al not to index and list your site. Be careful with th
* Proxy sample files WILL be updated, however your renamed (enabled) proxy files will not.
* You can check the new sample and adjust your active config as needed.
### QUIC support
This image supports QUIC (also known as HTTP/3) but it must be explicitly enabled in each proxy conf, and the default conf, because if the listener is enabled and you don't expose 443/UDP, it can break connections with some browsers.
To enable QUIC, expose 443/UDP to your clients, then uncomment both QUIC listeners in all of your active proxy confs, as well as the default conf, and restart the container.
You should also uncomment the `Alt-Svc` header in your `ssl.conf` so that browsers are aware that you offer QUIC connectivity.
It is [recommended](https://quic-go.net/docs/quic/optimizations/#udp-buffer-sizes) to increase the UDP send/recieve buffer **on the host** by setting the `net.core.rmem_max` and `net.core.wmem_max` sysctls. Suggested values are 4-16Mb (4194304-16777216 bytes). For persistence between reboots use `/etc/sysctl.d/`.
### Migration from the old `linuxserver/letsencrypt` image
Please follow the instructions [on this blog post](https://www.linuxserver.io/blog/2020-08-21-introducing-swag#migrate).
## Read-Only Operation
This image can be run with a read-only container filesystem. For details please [read the docs](https://docs.linuxserver.io/misc/read-only/).
### Caveats
* `/tmp` must be mounted to tmpfs
* fail2ban will not be available
## Usage
Here are some example snippets to help you get started creating a container.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
>[!NOTE]
>Unless a parameter is flagged as 'optional', it is *mandatory* and a value must be provided.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
```yaml
---
version: "2.1"
services:
swag:
image: lscr.io/linuxserver/swag:latest
@@ -154,8 +185,8 @@ services:
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- URL=yourdomain.url
- TZ=Etc/UTC
- URL=example.com
- VALIDATION=http
- SUBDOMAINS=www, #optional
- CERTPROVIDER= #optional
@@ -165,11 +196,15 @@ services:
- ONLY_SUBDOMAINS=false #optional
- EXTRA_DOMAINS= #optional
- STAGING=false #optional
- DISABLE_F2B= #optional
- SWAG_AUTORELOAD= #optional
- SWAG_AUTORELOAD_WATCHLIST= #optional
volumes:
- /path/to/appdata/config:/config
- /path/to/swag/config:/config
ports:
- 443:443
- 80:80 #optional
- 443:443/udp #optional
restart: unless-stopped
```
@@ -181,8 +216,8 @@ docker run -d \
--cap-add=NET_ADMIN \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/London \
-e URL=yourdomain.url \
-e TZ=Etc/UTC \
-e URL=example.com \
-e VALIDATION=http \
-e SUBDOMAINS=www, `#optional` \
-e CERTPROVIDER= `#optional` \
@@ -192,35 +227,45 @@ docker run -d \
-e ONLY_SUBDOMAINS=false `#optional` \
-e EXTRA_DOMAINS= `#optional` \
-e STAGING=false `#optional` \
-e DISABLE_F2B= `#optional` \
-e SWAG_AUTORELOAD= `#optional` \
-e SWAG_AUTORELOAD_WATCHLIST= `#optional` \
-p 443:443 \
-p 80:80 `#optional` \
-v /path/to/appdata/config:/config \
-p 443:443/udp `#optional` \
-v /path/to/swag/config:/config \
--restart unless-stopped \
lscr.io/linuxserver/swag:latest
```
## Parameters
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
| Parameter | Function |
| :----: | --- |
| `-p 443` | Https port |
| `-p 80` | Http port (required for http validation and http -> https redirect) |
| `-p 443:443` | HTTPS port |
| `-p 80` | HTTP port (required for HTTP validation and HTTP -> HTTPS redirect) |
| `-p 443/udp` | QUIC (HTTP/3) port. Must be enabled in the default and proxy confs. |
| `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=Europe/London` | Specify a timezone to use EG Europe/London. |
| `-e URL=yourdomain.url` | Top url you have control over (`customdomain.com` if you own it, or `customsubdomain.ddnsprovider.com` if dynamic dns). |
| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
| `-e URL=example.com` | Top url you have control over (e.g. `example.com` if you own it, or `customsubdomain.example.com` if dynamic dns). |
| `-e VALIDATION=http` | Certbot validation method to use, options are `http` or `dns` (`dns` method also requires `DNSPLUGIN` variable set). |
| `-e SUBDOMAINS=www,` | Subdomains you'd like the cert to cover (comma separated, no spaces) ie. `www,ftp,cloud`. For a wildcard cert, set this *exactly* to `wildcard` (wildcard cert is available via `dns` validation only) |
| `-e CERTPROVIDER=` | Optionally define the cert provider. Set to `zerossl` for ZeroSSL certs (requires existing [ZeroSSL account](https://app.zerossl.com/signup) and the e-mail address entered in `EMAIL` env var). Otherwise defaults to Let's Encrypt. |
| `-e DNSPLUGIN=cloudflare` | Required if `VALIDATION` is set to `dns`. Options are `acmedns`, `aliyun`, `azure`, `cloudflare`, `cpanel`, `desec`, `digitalocean`, `directadmin`, `dnsimple`, `dnsmadeeasy`, `dnspod`, `do`, `domeneshop`, `duckdns`, `dynu`, `gandi`, `gehirn`, `godaddy`, `google`, `he`, `hetzner`, `infomaniak`, `inwx`, `ionos`, `linode`, `loopia`, `luadns`, `netcup`, `njalla`, `nsone`, `ovh`, `porkbun`, `rfc2136`, `route53`, `sakuracloud`, `standalone`, `transip`, and `vultr`. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under `/config/dns-conf`. |
| `-e DNSPLUGIN=cloudflare` | Required if `VALIDATION` is set to `dns`. Options are `acmedns`, `aliyun`, `azure`, `bunny`, `cloudflare`, `cpanel`, `desec`, `digitalocean`, `directadmin`, `dnsimple`, `dnsmadeeasy`, `dnspod`, `do`, `domeneshop`, `dreamhost`, `duckdns`, `dynu`, `freedns`, `gandi`, `gehirn`, `glesys`, `godaddy`, `google`, `he`, `hetzner`, `hetzner-cloud`, `infomaniak`, `inwx`, `ionos`, `linode`, `loopia`, `luadns`, `namecheap`, `netcup`, `njalla`, `nsone`, `ovh`, `porkbun`, `rfc2136`, `route53`, `sakuracloud`, `standalone`, `transip`, and `vultr`. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under `/config/dns-conf`. |
| `-e PROPAGATION=` | Optionally override (in seconds) the default propagation time for the dns plugins. |
| `-e EMAIL=` | Optional e-mail address used for cert expiration notifications (Required for ZeroSSL). |
| `-e ONLY_SUBDOMAINS=false` | If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to `true` |
| `-e EXTRA_DOMAINS=` | Additional fully qualified domain names (comma separated, no spaces) ie. `extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org` |
| `-e EXTRA_DOMAINS=` | Additional fully qualified domain names (comma separated, no spaces) ie. `example.net,subdomain.example.net,*.example.org` |
| `-e STAGING=false` | Set to `true` to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes. |
| `-v /config` | All the config files including the webroot reside here. |
| `-e DISABLE_F2B=` | Set to `true` to disable the Fail2ban service in the container, if you're already running it elsewhere or using a different IPS. |
| `-e SWAG_AUTORELOAD=` | Set to `true` to enable automatic reloading of confs on change without stopping/restarting nginx. Your filesystem must support inotify. This functionality was previously offered [via mod](https://github.com/linuxserver/docker-mods/tree/swag-auto-reload). |
| `-e SWAG_AUTORELOAD_WATCHLIST=` | A [pipe](https://en.wikipedia.org/wiki/Vertical_bar)-separated list of additional folders for auto reload to watch in addition to `/config/nginx` |
| `-v /config` | Persistent config files |
| `--read-only=true` | Run container with a read-only filesystem. Please [read the docs](https://docs.linuxserver.io/misc/read-only/). |
| `--cap-add=NET_ADMIN` | Required for fail2Ban to be able to modify iptables rules. |
### Portainer notice
@@ -233,10 +278,10 @@ You can set any environment variable from a file by using a special prepend `FIL
As an example:
```bash
-e FILE__PASSWORD=/run/secrets/mysecretpassword
-e FILE__MYVAR=/run/secrets/mysecretvariable
```
Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file.
Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.
## Umask for running applications
@@ -245,15 +290,20 @@ Keep in mind umask is not chmod it subtracts from permissions based on it's valu
## User / Group Identifiers
When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below:
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below:
```bash
$ id username
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
id your_user
```
Example output:
```text
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
```
## Docker Mods
@@ -264,53 +314,101 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Support Info
* Shell access whilst the container is running: `docker exec -it swag /bin/bash`
* To monitor the logs of the container in realtime: `docker logs -f swag`
* container version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' swag`
* image version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/swag:latest`
* Shell access whilst the container is running:
```bash
docker exec -it swag /bin/bash
```
* To monitor the logs of the container in realtime:
```bash
docker logs -f swag
```
* Container version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' swag
```
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/swag:latest
```
## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers:
### Via Docker Compose
* Update all images: `docker-compose pull`
* or update a single image: `docker-compose pull swag`
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d swag`
* You can also remove the old dangling images: `docker image prune`
* Update images:
* All images:
```bash
docker-compose pull
```
* Single image:
```bash
docker-compose pull swag
```
* Update containers:
* All containers:
```bash
docker-compose up -d
```
* Single container:
```bash
docker-compose up -d swag
```
* You can also remove the old dangling images:
```bash
docker image prune
```
### Via Docker Run
* Update the image: `docker pull lscr.io/linuxserver/swag:latest`
* Stop the running container: `docker stop swag`
* Delete the container: `docker rm swag`
* Update the image:
```bash
docker pull lscr.io/linuxserver/swag:latest
```
* Stop the running container:
```bash
docker stop swag
```
* Delete the container:
```bash
docker rm swag
```
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* You can also remove the old dangling images: `docker image prune`
* You can also remove the old dangling images:
### Via Watchtower auto-updater (only use if you don't remember the original parameters)
* Pull the latest image at its tag and replace it with the same env variables in one run:
```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once swag
```
* You can also remove the old dangling images: `docker image prune`
**Note:** We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
```bash
docker image prune
```
### Image Update Notifications - Diun (Docker Image Update Notifier)
* We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
>[!TIP]
>We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
## Building locally
@@ -325,16 +423,51 @@ docker build \
-t lscr.io/linuxserver/swag:latest .
```
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
```bash
docker run --rm --privileged multiarch/qemu-user-static:register --reset
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
## Versions
* **23.01.26:** - Reorder init to fix proxy conf version checks.
* **21.12.25:** - Add support for hetzner-cloud dns validation.
* **04.11.25:** - Switch default Gandi credentials from API Key to Token, allow DNS propagation time for Azure DNS plugin.
* **18.07.25:** - Rebase to Alpine 3.22 with PHP 8.4. Add QUIC support. Drop PHP bindings for mcrypt as it is no longer maintained.
* **05.05.25:** - Disable Certbot's built in log rotation.
* **19.01.25:** - Add [Auto Reload](https://github.com/linuxserver/docker-mods/tree/swag-auto-reload) functionality to SWAG.
* **17.12.24:** - Rebase to Alpine 3.21.
* **21.10.24:** - Fix naming issue with Dynu plugin. If you are using Dynu, please make sure your credentials are set in /config/dns-conf/dynu.ini and your DNSPLUGIN variable is set to dynu (not dynudns).
* **30.08.24:** - Fix zerossl cert revocation.
* **24.07.14:** - Rebase to Alpine 3.20. Remove deprecated Google Domains certbot plugin. Existing users should update their nginx confs to avoid http2 deprecation warnings.
* **01.07.24:** - Fall back to iptables-legacy if iptables doesn't work.
* **23.03.24:** - Fix perms on the generated `priv-fullchain-bundle.pem`.
* **14.03.24:** - [Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) authelia-location.conf, authelia-server.conf - Update Authelia conf samples with support for 4.38.
* **11.03.24:** - Restore support for DynuDNS using `certbot-dns-dynudns`.
* **06.03.24:** - [Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) site-confs/default.conf - Cleanup default site conf.
* **04.03.24:** - Remove `stream.conf` inside the container to allow users to include their own block in `nginx.conf`.
* **23.01.24:** - Rebase to Alpine 3.19 with php 8.3, add root periodic crontabs for logrotate.
* **01.01.24:** - Add GleSYS DNS plugin.
* **11.12.23:** - Deprecate certbot-dns-dynu to resolve dependency conflicts with other plugins.
* **30.11.23:** - [Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) site-confs/default.conf - Fix index.php being downloaded on 404.
* **23.11.23:** - Run certbot as root to allow fix http validation.
* **01.10.23:** - Fix "unrecognized arguments" issue in DirectAdmin DNS plugin.
* **28.08.23:** - Add Namecheap DNS plugin.
* **12.08.23:** - Add FreeDNS plugin. Detect certbot DNS authenticators using CLI.
* **07.08.23:** - Add Bunny DNS Configuration.
* **27.07.23:** - Added support for dreamhost validation.
* **25.05.23:** - Rebase to Alpine 3.18, deprecate armhf.
* **27.04.23:** - [Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) authelia-location.conf, authelia-server.conf, authentik-location.conf, authentik-server.conf - Simplify auth configs and fix Set-Cookie header bug.
* **13.04.23:** - [Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf, authelia-location.conf, authentik-location.conf, and site-confs/default.conf - Move ssl.conf include to default.conf. Remove Authorization headers in authelia. Sort proxy_set_header in authelia and authentik.
* **25.03.23:** - Fix renewal post hook.
* **10.03.23:** - Cleanup unused csr and keys folders. See [certbot 2.3.0 release notes](https://github.com/certbot/certbot/releases/tag/v2.3.0).
* **09.03.23:** - Add Google Domains DNS support, `google-domains`.
* **02.03.23:** - Set permissions on crontabs during init.
* **09.02.23:** - [Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) proxy.conf, authelia-location.conf and authelia-server.conf - Add Authentik configs, update Authelia configs.
* **06.02.23:** - Add porkbun support back in.
* **21.01.23:** - Unpin certbot version (allow certbot 2.x). !!BREAKING CHANGE!! We are temporarily removing the certbot porkbun plugin until a new version is released that is compatible with certbot 2.x.
* **20.01.23:** - Rebase to alpine 3.17 with php8.1.
* **16.01.23:** - Remove nchan module because it keeps causing crashes.

View File

@@ -17,12 +17,12 @@ repo_vars:
- PR_DOCKERHUB_IMAGE = 'lspipepr/swag'
- DIST_IMAGE = 'alpine'
- MULTIARCH='true'
- CI='true'
- CI='false'
- CI_WEB='false'
- CI_PORT='80'
- CI_SSL='false'
- CI_DELAY='30'
- CI_DOCKERENV='TEST_RUN=1'
- CI_DOCKERENV=''
- CI_AUTH=''
- CI_WEBPATH=''
sponsor_links:

View File

@@ -1,204 +1,369 @@
alpine-baselayout-3.4.0-r0
alpine-baselayout-data-3.4.0-r0
alpine-keys-2.4-r1
alpine-release-3.17.1-r0
aom-libs-3.5.0-r0
apache2-utils-2.4.55-r0
apk-tools-2.12.10-r1
apr-1.7.0-r2
apr-util-1.6.1-r14
argon2-libs-20190702-r2
bash-5.2.15-r0
brotli-libs-1.0.9-r9
busybox-1.35.0-r29
busybox-binsh-1.35.0-r29
c-client-2007f-r14
ca-certificates-20220614-r4
ca-certificates-bundle-20220614-r4
coreutils-9.1-r0
curl-7.87.0-r1
fail2ban-1.0.2-r0
fontconfig-2.14.1-r0
freetype-2.12.1-r0
gdbm-1.23-r0
git-2.38.3-r1
git-perl-2.38.3-r1
gmp-6.2.1-r2
gnupg-2.2.40-r0
gnupg-dirmngr-2.2.40-r0
gnupg-gpgconf-2.2.40-r0
gnupg-utils-2.2.40-r0
gnupg-wks-client-2.2.40-r0
gnutls-3.7.8-r2
gpg-2.2.40-r0
gpg-agent-2.2.40-r0
gpg-wks-server-2.2.40-r0
gpgsm-2.2.40-r0
gpgv-2.2.40-r0
icu-data-en-72.1-r1
icu-libs-72.1-r1
ip6tables-1.8.8-r2
iptables-1.8.8-r2
jq-1.6-r2
libacl-2.3.1-r1
libassuan-2.5.5-r1
libattr-2.5.1-r2
libavif-0.11.1-r0
libbsd-0.11.7-r0
libbz2-1.0.8-r4
libc-utils-0.7.2-r3
libcrypto3-3.0.7-r2
libcurl-7.87.0-r1
libdav1d-1.0.0-r2
libedit-20221030.3.1-r0
libevent-2.1.12-r5
libexpat-2.5.0-r0
libffi-3.4.4-r0
libgcc-12.2.1_git20220924-r4
libgcrypt-1.10.1-r0
libgd-2.3.3-r3
libgpg-error-1.46-r1
libice-1.0.10-r1
libidn-1.41-r0
libintl-0.21.1-r1
libjpeg-turbo-2.1.4-r0
libksba-1.6.3-r0
libldap-2.6.3-r6
libmaxminddb-libs-1.7.1-r0
libmcrypt-2.5.8-r10
libmd-1.0.4-r0
libmemcached-libs-1.0.18-r5
libmnl-1.0.5-r0
libnftnl-1.2.4-r0
libpng-1.6.38-r0
libpq-15.1-r0
libproc-3.3.17-r2
libsasl-2.1.28-r3
libseccomp-2.5.4-r0
libsm-1.2.3-r1
libsodium-1.0.18-r2
libssl3-3.0.7-r2
libstdc++-12.2.1_git20220924-r4
libtasn1-4.19.0-r0
libunistring-1.1-r0
libuuid-2.38.1-r1
libwebp-1.2.4-r1
libx11-1.8.3-r1
libxau-1.0.10-r0
libxcb-1.15-r0
libxdmcp-1.1.4-r0
libxext-1.3.5-r0
libxml2-2.10.3-r1
libxpm-3.5.15-r0
libxslt-1.1.37-r0
libxt-1.2.1-r0
libzip-1.9.2-r2
linux-pam-1.5.2-r1
logrotate-3.20.1-r3
lz4-libs-1.9.4-r1
memcached-1.6.17-r0
mpdecimal-2.5.1-r1
musl-1.2.3-r4
musl-utils-1.2.3-r4
nano-7.0-r0
ncurses-libs-6.3_p20221119-r0
ncurses-terminfo-base-6.3_p20221119-r0
nettle-3.8.1-r0
nghttp2-libs-1.51.0-r0
nginx-1.22.1-r0
nginx-mod-devel-kit-1.22.1-r0
nginx-mod-http-brotli-1.22.1-r0
nginx-mod-http-dav-ext-1.22.1-r0
nginx-mod-http-echo-1.22.1-r0
nginx-mod-http-fancyindex-1.22.1-r0
nginx-mod-http-geoip2-1.22.1-r0
nginx-mod-http-headers-more-1.22.1-r0
nginx-mod-http-image-filter-1.22.1-r0
nginx-mod-http-perl-1.22.1-r0
nginx-mod-http-redis2-1.22.1-r0
nginx-mod-http-set-misc-1.22.1-r0
nginx-mod-http-upload-progress-1.22.1-r0
nginx-mod-http-xslt-filter-1.22.1-r0
nginx-mod-mail-1.22.1-r0
nginx-mod-rtmp-1.22.1-r0
nginx-mod-stream-1.22.1-r0
nginx-mod-stream-geoip2-1.22.1-r0
nginx-vim-1.22.1-r0
npth-1.6-r2
oniguruma-6.9.8-r0
openssl-3.0.7-r2
p11-kit-0.24.1-r1
pcre-8.45-r2
pcre2-10.42-r0
perl-5.36.0-r0
perl-error-0.17029-r1
perl-git-2.38.3-r1
php81-8.1.14-r0
php81-bcmath-8.1.14-r0
php81-bz2-8.1.14-r0
php81-common-8.1.14-r0
php81-ctype-8.1.14-r0
php81-curl-8.1.14-r0
php81-dom-8.1.14-r0
php81-exif-8.1.14-r0
php81-fileinfo-8.1.14-r0
php81-fpm-8.1.14-r0
php81-ftp-8.1.14-r0
php81-gd-8.1.14-r0
php81-gmp-8.1.14-r0
php81-iconv-8.1.14-r0
php81-imap-8.1.14-r0
php81-intl-8.1.14-r0
php81-ldap-8.1.14-r0
php81-mbstring-8.1.14-r0
php81-mysqli-8.1.14-r0
php81-mysqlnd-8.1.14-r0
php81-opcache-8.1.14-r0
php81-openssl-8.1.14-r0
php81-pdo-8.1.14-r0
php81-pdo_mysql-8.1.14-r0
php81-pdo_odbc-8.1.14-r0
php81-pdo_pgsql-8.1.14-r0
php81-pdo_sqlite-8.1.14-r0
php81-pear-8.1.14-r0
php81-pecl-apcu-5.1.22-r0
php81-pecl-igbinary-3.2.12-r0
php81-pecl-mailparse-3.1.4-r0
php81-pecl-mcrypt-1.0.4-r0
php81-pecl-memcached-3.2.0-r0
php81-pecl-redis-5.3.7-r0
php81-pecl-xmlrpc-1.0.0_rc3-r0
php81-pgsql-8.1.14-r0
php81-phar-8.1.14-r0
php81-posix-8.1.14-r0
php81-session-8.1.14-r0
php81-simplexml-8.1.14-r0
php81-soap-8.1.14-r0
php81-sockets-8.1.14-r0
php81-sodium-8.1.14-r0
php81-sqlite3-8.1.14-r0
php81-tokenizer-8.1.14-r0
php81-xml-8.1.14-r0
php81-xmlreader-8.1.14-r0
php81-xmlwriter-8.1.14-r0
php81-xsl-8.1.14-r0
php81-zip-8.1.14-r0
pinentry-1.2.1-r0
popt-1.19-r0
procps-3.3.17-r2
python3-3.10.9-r1
readline-8.2.0-r0
scanelf-1.3.5-r1
shadow-4.13-r0
skalibs-2.12.0.1-r0
sqlite-libs-3.40.1-r0
ssl_client-1.35.0-r29
tiff-4.4.0-r1
tzdata-2022f-r1
unixodbc-2.3.11-r0
utmps-libs-0.1.2.0-r1
whois-5.5.14-r0
xz-5.2.9-r0
xz-libs-5.2.9-r0
zlib-1.2.13-r0
zstd-libs-1.5.2-r9
NAME VERSION TYPE
Simple Launcher 1.1.0.14 binary (+5 duplicates)
acl-libs 2.3.2-r1 apk
acme 5.3.1 python
alpine-baselayout 3.7.0-r0 apk
alpine-baselayout-data 3.7.0-r0 apk
alpine-keys 2.5-r0 apk
alpine-release 3.22.3-r0 apk
aom-libs 3.12.1-r0 apk
apache2-utils 2.4.66-r0 apk
apk-tools 2.14.9-r3 apk
apr 1.7.5-r0 apk
apr-util 1.6.3-r1 apk
argon2-libs 20190702-r5 apk
attrs 25.4.0 python
autocommand 2.2.2 python
azure-common 1.1.28 python
azure-core 1.38.2 python
azure-identity 1.25.2 python
azure-mgmt-core 1.6.0 python
azure-mgmt-dns 9.0.0 python
backports-tarfile 1.2.0 python
bash 5.2.37-r0 apk
beautifulsoup4 4.14.3 python
boto3 1.42.54 python
botocore 1.42.54 python
brotli-libs 1.1.0-r2 apk
bs4 0.0.2 python
busybox 1.37.0-r20 apk
busybox-binsh 1.37.0-r20 apk
c-ares 1.34.6-r0 apk
c-client 2007f-r15 apk
ca-certificates 20250911-r0 apk
ca-certificates-bundle 20250911-r0 apk
catatonit 0.2.1-r0 apk
certbot 5.3.1 python
certbot-dns-acmedns 0.1.0 python
certbot-dns-aliyun 2.0.0 python
certbot-dns-azure 1.5.0 python
certbot-dns-bunny 3.0.0 python
certbot-dns-cloudflare 5.3.1 python
certbot-dns-cpanel 0.4.0 python
certbot-dns-desec 1.3.2 python
certbot-dns-digitalocean 5.3.1 python
certbot-dns-directadmin 1.0.15 python
certbot-dns-dnsimple 5.3.1 python
certbot-dns-dnsmadeeasy 5.3.1 python
certbot-dns-dnspod 0.1.0 python
certbot-dns-do 0.31.0 python
certbot-dns-domeneshop 0.2.9 python
certbot-dns-dreamhost 1.0 python
certbot-dns-duckdns 1.8.0 python
certbot-dns-dynudns 0.0.6 python
certbot-dns-freedns 0.2.0 python
certbot-dns-gehirn 5.3.1 python
certbot-dns-glesys 2.1.0 python
certbot-dns-godaddy 2.8.0 python
certbot-dns-google 5.3.1 python
certbot-dns-he 1.0.0 python
certbot-dns-hetzner 3.0.0 python
certbot-dns-hetzner-cloud 1.0.5 python
certbot-dns-infomaniak 0.2.4 python
certbot-dns-inwx 3.0.3 python
certbot-dns-ionos 2024.11.9 python
certbot-dns-linode 5.3.1 python
certbot-dns-loopia 1.0.1 python
certbot-dns-luadns 5.3.1 python
certbot-dns-namecheap 1.0.0 python
certbot-dns-netcup 2.0.0 python
certbot-dns-njalla 2.0.2 python
certbot-dns-nsone 5.3.1 python
certbot-dns-ovh 5.3.1 python
certbot-dns-porkbun 0.11.0 python
certbot-dns-rfc2136 5.3.1 python
certbot-dns-route53 5.3.1 python
certbot-dns-sakuracloud 5.3.1 python
certbot-dns-standalone 1.2.1 python
certbot-dns-transip 0.5.2 python
certbot-dns-vultr 1.1.0 python
certbot-plugin-gandi 1.5.0 python
certifi 2026.1.4 python
cffi 2.0.0 python
charset-normalizer 3.4.4 python
cli UNKNOWN binary
cli-32 UNKNOWN binary
cli-64 UNKNOWN binary
cli-arm64 UNKNOWN binary
cloudflare 2.19.4 python
composer 2.9.5 binary
configargparse 1.7.1 python
configobj 5.0.9 python
coreutils 9.7-r1 apk
coreutils-env 9.7-r1 apk
coreutils-fmt 9.7-r1 apk
coreutils-sha512sum 9.7-r1 apk
cryptography 46.0.5 python
curl 8.14.1-r2 apk
distro 1.9.0 python
dns-lexicon 3.23.2 python
dns-lexicon-coop 3.24.2 python
dnslib 0.9.26 python
dnspython 2.8.0 python
domeneshop 0.4.4 python
fail2ban 1.1.0 python
fail2ban 1.1.0-r3 apk
fail2ban-pyc 1.1.0-r3 apk
filelock 3.24.3 python
findutils 4.10.0-r0 apk
fontconfig 2.15.0-r3 apk
freetype 2.13.3-r0 apk
future 1.0.0 python
gdbm 1.24-r0 apk
git 2.49.1-r0 apk
git-init-template 2.49.1-r0 apk
git-perl 2.49.1-r0 apk
gmp 6.3.0-r3 apk
gnupg 2.4.9-r0 apk
gnupg-dirmngr 2.4.9-r0 apk
gnupg-gpgconf 2.4.9-r0 apk
gnupg-keyboxd 2.4.9-r0 apk
gnupg-utils 2.4.9-r0 apk
gnupg-wks-client 2.4.9-r0 apk
gnutls 3.8.8-r0 apk
google-api-core 2.30.0 python
google-api-python-client 2.190.0 python
google-auth 2.48.0 python
google-auth-httplib2 0.3.0 python
googleapis-common-protos 1.72.0 python
gpg 2.4.9-r0 apk
gpg-agent 2.4.9-r0 apk
gpg-wks-server 2.4.9-r0 apk
gpgsm 2.4.9-r0 apk
gpgv 2.4.9-r0 apk
gui UNKNOWN binary
gui-32 UNKNOWN binary
gui-64 UNKNOWN binary
gui-arm64 UNKNOWN binary
hcloud 2.16.0 python
httplib2 0.31.2 python
icu-data-en 76.1-r1 apk
icu-libs 76.1-r1 apk
idna 3.11 python
importlib-metadata 8.7.1 python
inotify-tools 4.23.9.0-r0 apk
inotify-tools-libs 4.23.9.0-r0 apk
inwx-domrobot 3.2.0 python
iptables 1.8.11-r1 apk
iptables-legacy 1.8.11-r1 apk
isodate 0.7.2 python
jaraco-context 6.1.0 python
jaraco-functools 4.4.0 python
jaraco-text 4.0.0 python
jinja2 3.1.6 python
jmespath 1.1.0 python
josepy 2.2.0 python
jq 1.8.1-r0 apk
jsonlines 4.0.0 python
jsonpickle 4.1.1 python
libapk2 2.14.9-r3 apk
libassuan 2.5.7-r0 apk
libattr 2.5.2-r2 apk
libavif 1.3.0-r0 apk
libbsd 0.12.2-r0 apk
libbz2 1.0.8-r6 apk
libcrypto3 3.5.5-r0 apk
libcurl 8.14.1-r2 apk
libdav1d 1.5.1-r0 apk
libedit 20250104.3.1-r1 apk
libevent 2.1.12-r8 apk
libexpat 2.7.4-r0 apk
libffi 3.4.8-r0 apk
libgcc 14.2.0-r6 apk
libgcrypt 1.10.3-r1 apk
libgd 2.3.3-r10 apk
libgpg-error 1.55-r0 apk
libice 1.1.2-r0 apk
libidn2 2.3.7-r0 apk
libintl 0.24.1-r0 apk
libip4tc 1.8.11-r1 apk
libip6tc 1.8.11-r1 apk
libjpeg-turbo 3.1.0-r0 apk
libksba 1.6.7-r0 apk
libldap 2.6.8-r0 apk
libmaxminddb-libs 1.9.1-r0 apk
libmd 1.1.0-r0 apk
libmemcached-libs 1.1.4-r1 apk
libmnl 1.0.5-r2 apk
libncursesw 6.5_p20250503-r0 apk
libnftnl 1.2.9-r0 apk
libpanelw 6.5_p20250503-r0 apk
libpng 1.6.54-r0 apk
libpq 17.8-r0 apk
libproc2 4.0.4-r3 apk
libpsl 0.21.5-r3 apk
libsasl 2.1.28-r8 apk
libseccomp 2.6.0-r0 apk
libsharpyuv 1.5.0-r0 apk
libsm 1.2.5-r0 apk
libsodium 1.0.20-r1 apk
libssl3 3.5.5-r0 apk
libstdc++ 14.2.0-r6 apk
libtasn1 4.21.0-r0 apk
libunistring 1.3-r0 apk
libuuid 2.41-r9 apk
libwebp 1.5.0-r0 apk
libx11 1.8.11-r0 apk
libxau 1.0.12-r0 apk
libxcb 1.17.0-r0 apk
libxdmcp 1.1.5-r1 apk
libxext 1.3.6-r2 apk
libxml2 2.13.9-r0 apk
libxpm 3.5.17-r0 apk
libxslt 1.1.43-r3 apk
libxt 1.3.1-r0 apk
libxtables 1.8.11-r1 apk
libyuv 0.0.1887.20251502-r1 apk
libzip 1.11.4-r0 apk
linux-pam 1.7.0-r4 apk
logrotate 3.21.0-r1 apk
loopialib 0.2.0 python
lxml 6.0.2 python
lz4-libs 1.10.0-r0 apk
markupsafe 3.0.3 python
memcached 1.6.32-r0 apk
mock 5.2.0 python
more-itertools 10.8.0 python
mpdecimal 4.0.1-r0 apk
msal 1.34.0 python
msal-extensions 1.3.1 python
musl 1.2.5-r10 apk
musl-utils 1.2.5-r10 apk
nano 8.4-r0 apk
ncurses-terminfo-base 6.5_p20250503-r0 apk
netcat-openbsd 1.229.1-r0 apk
nettle 3.10.1-r0 apk
nghttp2-libs 1.65.0-r0 apk
nginx 1.28.2-r0 apk
nginx-mod-devel-kit 1.28.2-r0 apk
nginx-mod-http-brotli 1.28.2-r0 apk
nginx-mod-http-dav-ext 1.28.2-r0 apk
nginx-mod-http-echo 1.28.2-r0 apk
nginx-mod-http-fancyindex 1.28.2-r0 apk
nginx-mod-http-geoip2 1.28.2-r0 apk
nginx-mod-http-headers-more 1.28.2-r0 apk
nginx-mod-http-image-filter 1.28.2-r0 apk
nginx-mod-http-perl 1.28.2-r0 apk
nginx-mod-http-redis2 1.28.2-r0 apk
nginx-mod-http-set-misc 1.28.2-r0 apk
nginx-mod-http-upload-progress 1.28.2-r0 apk
nginx-mod-http-xslt-filter 1.28.2-r0 apk
nginx-mod-mail 1.28.2-r0 apk
nginx-mod-rtmp 1.28.2-r0 apk
nginx-mod-stream 1.28.2-r0 apk
nginx-mod-stream-geoip2 1.28.2-r0 apk
nginx-vim 1.28.2-r0 apk
npth 1.8-r0 apk
oniguruma 6.9.10-r0 apk
openssl 3.5.5-r0 apk
p11-kit 0.25.5-r2 apk
packaging 26.0 python (+1 duplicate)
parsedatetime 2.6 python
pcre2 10.46-r0 apk
perl 5.40.3-r0 apk
perl-error 0.17030-r0 apk
perl-git 2.49.1-r0 apk
php84 8.4.16-r0 apk
php84-bcmath 8.4.16-r0 apk
php84-bz2 8.4.16-r0 apk
php84-common 8.4.16-r0 apk
php84-ctype 8.4.16-r0 apk
php84-curl 8.4.16-r0 apk
php84-dom 8.4.16-r0 apk
php84-exif 8.4.16-r0 apk
php84-fileinfo 8.4.16-r0 apk
php84-fpm 8.4.16-r0 apk
php84-ftp 8.4.16-r0 apk
php84-gd 8.4.16-r0 apk
php84-gmp 8.4.16-r0 apk
php84-iconv 8.4.16-r0 apk
php84-intl 8.4.16-r0 apk
php84-ldap 8.4.16-r0 apk
php84-mbstring 8.4.16-r0 apk
php84-mysqli 8.4.16-r0 apk
php84-mysqlnd 8.4.16-r0 apk
php84-opcache 8.4.16-r0 apk
php84-openssl 8.4.16-r0 apk
php84-pdo 8.4.16-r0 apk
php84-pdo_mysql 8.4.16-r0 apk
php84-pdo_odbc 8.4.16-r0 apk
php84-pdo_pgsql 8.4.16-r0 apk
php84-pdo_sqlite 8.4.16-r0 apk
php84-pear 8.4.16-r0 apk
php84-pecl-apcu 5.1.27-r0 apk
php84-pecl-igbinary 3.2.16-r1 apk
php84-pecl-imap 1.0.3-r0 apk
php84-pecl-memcached 3.3.0-r0 apk
php84-pecl-msgpack 3.0.0-r0 apk
php84-pecl-redis 6.3.0-r0 apk
php84-pgsql 8.4.16-r0 apk
php84-phar 8.4.16-r0 apk
php84-posix 8.4.16-r0 apk
php84-session 8.4.16-r0 apk
php84-simplexml 8.4.16-r0 apk
php84-soap 8.4.16-r0 apk
php84-sockets 8.4.16-r0 apk
php84-sodium 8.4.16-r0 apk
php84-sqlite3 8.4.16-r0 apk
php84-tokenizer 8.4.16-r0 apk
php84-xml 8.4.16-r0 apk
php84-xmlreader 8.4.16-r0 apk
php84-xmlwriter 8.4.16-r0 apk
php84-xsl 8.4.16-r0 apk
php84-zip 8.4.16-r0 apk
pinentry 1.3.1-r0 apk
pip 26.0.1 python
pkb-client 2.2.0 python
platformdirs 4.4.0 python
popt 1.19-r4 apk
procps-ng 4.0.4-r3 apk
proto-plus 1.27.1 python
protobuf 6.33.5 python
pyacmedns 0.4 python
pyasn1 0.6.2 python
pyasn1-modules 0.4.2 python
pyc 3.12.12-r0 apk
pycparser 3.0 python
pyjwt 2.11.0 python
pynamecheap 0.0.3 python
pyopenssl 25.3.0 python
pyotp 2.9.0 python
pyparsing 3.3.2 python
pyrfc3339 2.1.0 python
python-dateutil 2.9.0.post0 python
python-digitalocean 1.17.0 python
python-transip 0.6.0 python
python3 3.12.12-r0 apk
python3-pyc 3.12.12-r0 apk
python3-pycache-pyc0 3.12.12-r0 apk
pyyaml 6.0.3 python
readline 8.2.13-r1 apk
requests 2.32.5 python
requests-file 3.0.1 python
requests-mock 1.12.1 python
rsa 4.9.1 python
s3transfer 0.16.0 python
scanelf 1.3.8-r1 apk
setuptools 82.0.0 python
shadow 4.17.3-r0 apk
six 1.17.0 python
skalibs-libs 2.14.4.0-r0 apk
soupsieve 2.8.3 python
sqlite-libs 3.49.2-r1 apk
ssl_client 1.37.0-r20 apk
tiff 4.7.1-r0 apk
tldextract 5.3.1 python
tomli 2.4.0 python
typing-extensions 4.15.0 python
tzdata 2025c-r0 apk
unixodbc 2.3.12-r0 apk
uritemplate 4.2.0 python
urllib3 2.6.3 python
utmps-libs 0.1.3.1-r0 apk
wheel 0.46.3 python (+1 duplicate)
whois 5.6.3-r0 apk
xz-libs 5.8.1-r0 apk
zipp 3.23.0 python
zlib 1.3.1-r2 apk
zope-interface 8.2 python
zstd-libs 1.5.7-r0 apk

328
readme-vars.yml Executable file → Normal file
View File

@@ -6,73 +6,49 @@ project_url: "https://linuxserver.io"
project_logo: "https://github.com/linuxserver/docker-templates/raw/master/linuxserver.io/img/swag.gif"
project_blurb: "SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention."
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_blurb_optional_extras_enabled: false
project_blurb_optional_extras: []
project_categories: "Reverse Proxy"
# supported architectures
available_architectures:
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
- { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
# development version
development_versions: false
development_versions_items:
- { tag: "latest", desc: "Stable releases" }
- {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
# container parameters
common_param_env_vars_enabled: true #PGID, PUID, etc, you can set it to 'optional'
common_param_env_vars_enabled: true
param_container_name: "{{ project_name }}"
param_usage_include_net: false #you can set it to 'optional'
param_net: "host"
param_net_desc: "Shares host networking with container."
param_usage_include_env: true
param_env_vars:
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London." }
- { env_var: "URL", env_value: "yourdomain.url", desc: "Top url you have control over (`customdomain.com` if you own it, or `customsubdomain.ddnsprovider.com` if dynamic dns)." }
- { env_var: "VALIDATION", env_value: "http", desc: "Certbot validation method to use, options are `http` or `dns` (`dns` method also requires `DNSPLUGIN` variable set)." }
- {env_var: "URL", env_value: "example.com", desc: "Top url you have control over (e.g. `example.com` if you own it, or `customsubdomain.example.com` if dynamic dns)."}
- {env_var: "VALIDATION", env_value: "http", desc: "Certbot validation method to use, options are `http` or `dns` (`dns` method also requires `DNSPLUGIN` variable set).", env_options: ["http", "dns"]}
param_usage_include_vols: true
param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/appdata/config", desc: "All the config files including the webroot reside here." }
- {vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/config", desc: "Persistent config files"}
param_usage_include_ports: true
param_ports:
- { external_port: "443", internal_port: "443", port_desc: "Https port" }
param_device_map: false
param_devices:
- { device_path: "/dev/dri", device_host_path: "/dev/dri", desc: "For hardware transcoding" }
- {external_port: "443", internal_port: "443", port_desc: "HTTPS port"}
cap_add_param: true
cap_add_param_vars:
- { cap_add_var: "NET_ADMIN" }
- {cap_add_var: "NET_ADMIN", desc: "Required for fail2Ban to be able to modify iptables rules."}
# optional container parameters
opt_param_usage_include_env: true
opt_param_env_vars:
- { env_var: "SUBDOMAINS", env_value: "www,", desc: "Subdomains you'd like the cert to cover (comma separated, no spaces) ie. `www,ftp,cloud`. For a wildcard cert, set this *exactly* to `wildcard` (wildcard cert is available via `dns` validation only)" }
- { env_var: "CERTPROVIDER", env_value: "", desc: "Optionally define the cert provider. Set to `zerossl` for ZeroSSL certs (requires existing [ZeroSSL account](https://app.zerossl.com/signup) and the e-mail address entered in `EMAIL` env var). Otherwise defaults to Let's Encrypt." }
- { env_var: "DNSPLUGIN", env_value: "cloudflare", desc: "Required if `VALIDATION` is set to `dns`. Options are `acmedns`, `aliyun`, `azure`, `cloudflare`, `cpanel`, `desec`, `digitalocean`, `directadmin`, `dnsimple`, `dnsmadeeasy`, `dnspod`, `do`, `domeneshop`, `duckdns`, `dynu`, `gandi`, `gehirn`, `godaddy`, `google`, `he`, `hetzner`, `infomaniak`, `inwx`, `ionos`, `linode`, `loopia`, `luadns`, `netcup`, `njalla`, `nsone`, `ovh`, `porkbun`, `rfc2136`, `route53`, `sakuracloud`, `standalone`, `transip`, and `vultr`. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under `/config/dns-conf`." }
- { env_var: "PROPAGATION", env_value: "", desc: "Optionally override (in seconds) the default propagation time for the dns plugins." }
- { env_var: "EMAIL", env_value: "", desc: "Optional e-mail address used for cert expiration notifications (Required for ZeroSSL)." }
- { env_var: "ONLY_SUBDOMAINS", env_value: "false", desc: "If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to `true`" }
- { env_var: "EXTRA_DOMAINS", env_value: "", desc: "Additional fully qualified domain names (comma separated, no spaces) ie. `extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org`" }
- { env_var: "STAGING", env_value: "false", desc: "Set to `true` to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes." }
opt_param_usage_include_vols: false
opt_param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/appdata/config", desc: "Configuration files." }
- {env_var: "SUBDOMAINS", env_value: "www,", desc: "Subdomains you'd like the cert to cover (comma separated, no spaces) ie. `www,ftp,cloud`. For a wildcard cert, set this *exactly* to `wildcard` (wildcard cert is available via `dns` validation only)"}
- {env_var: "CERTPROVIDER", env_value: "", desc: "Optionally define the cert provider. Set to `zerossl` for ZeroSSL certs (requires existing [ZeroSSL account](https://app.zerossl.com/signup) and the e-mail address entered in `EMAIL` env var). Otherwise defaults to Let's Encrypt."}
- {env_var: "DNSPLUGIN", env_value: "cloudflare", desc: "Required if `VALIDATION` is set to `dns`. Options are `acmedns`, `aliyun`, `azure`, `bunny`, `cloudflare`, `cpanel`, `desec`, `digitalocean`, `directadmin`, `dnsimple`, `dnsmadeeasy`, `dnspod`, `do`, `domeneshop`, `dreamhost`, `duckdns`, `dynu`, `freedns`, `gandi`, `gehirn`, `glesys`, `godaddy`, `google`, `he`, `hetzner`, `hetzner-cloud`, `infomaniak`, `inwx`, `ionos`, `linode`, `loopia`, `luadns`, `namecheap`, `netcup`, `njalla`, `nsone`, `ovh`, `porkbun`, `rfc2136`, `route53`, `sakuracloud`, `standalone`, `transip`, and `vultr`. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under `/config/dns-conf`."}
- {env_var: "PROPAGATION", env_value: "", desc: "Optionally override (in seconds) the default propagation time for the dns plugins."}
- {env_var: "EMAIL", env_value: "", desc: "Optional e-mail address used for cert expiration notifications (Required for ZeroSSL)."}
- {env_var: "ONLY_SUBDOMAINS", env_value: "false", desc: "If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to `true`"}
- {env_var: "EXTRA_DOMAINS", env_value: "", desc: "Additional fully qualified domain names (comma separated, no spaces) ie. `example.net,subdomain.example.net,*.example.org`"}
- {env_var: "STAGING", env_value: "false", desc: "Set to `true` to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes."}
- {env_var: "DISABLE_F2B", env_value: "", desc: "Set to `true` to disable the Fail2ban service in the container, if you're already running it elsewhere or using a different IPS."}
- {env_var: "SWAG_AUTORELOAD", env_value: "", desc: "Set to `true` to enable automatic reloading of confs on change without stopping/restarting nginx. Your filesystem must support inotify. This functionality was previously offered [via mod](https://github.com/linuxserver/docker-mods/tree/swag-auto-reload)."}
- {env_var: "SWAG_AUTORELOAD_WATCHLIST", env_value: "", desc: "A [pipe](https://en.wikipedia.org/wiki/Vertical_bar)-separated list of additional folders for auto reload to watch in addition to `/config/nginx`"}
opt_param_usage_include_ports: true
opt_param_ports:
- { external_port: "80", internal_port: "80", port_desc: "Http port (required for http validation and http -> https redirect)" }
opt_param_device_map: false
opt_param_devices:
- { device_path: "/dev/dri", device_host_path: "/dev/dri", desc: "For hardware transcoding" }
opt_cap_add_param: false
opt_cap_add_param_vars:
- { cap_add_var: "NET_ADMIN" }
optional_block_1: false
optional_block_1_items: ""
- {external_port: "80", internal_port: "80", port_desc: "HTTP port (required for HTTP validation and HTTP -> HTTPS redirect)"}
- {external_port: "443", internal_port: "443/udp", port_desc: "QUIC (HTTP/3) port. Must be enabled in the default and proxy confs."}
readonly_supported: true
readonly_message: |
* `/tmp` must be mounted to tmpfs
* fail2ban will not be available
# application setup block
app_setup_block_enabled: true
app_setup_block: |
@@ -84,13 +60,28 @@ app_setup_block: |
* For `dns` validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under `/config/dns-conf`
* Cloudflare provides free accounts for managing dns and is very easy to use with this image. Make sure that it is set up for "dns only" instead of "dns + proxy"
* Google dns plugin is meant to be used with "Google Cloud DNS", a paid enterprise product, and not for "Google Domains DNS"
* DuckDNS only supoprts two types of DNS validated certificates (not both at the same time):
* DuckDNS only supports two types of DNS validated certificates (not both at the same time):
1. Certs that only cover your main subdomain (ie. `yoursubdomain.duckdns.org`, leave the `SUBDOMAINS` variable empty)
2. Certs that cover sub-subdomains of your main subdomain (ie. `*.yoursubdomain.duckdns.org`, set the `SUBDOMAINS` variable to `wildcard`)
* `--cap-add=NET_ADMIN` is required for fail2ban to modify iptables
* After setup, navigate to `https://yourdomain.url` to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at `/config/nginx/site-confs/default.conf`).
* After setup, navigate to `https://example.com` to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at `/config/nginx/site-confs/default.conf`).
* Certs are checked nightly and if expiration is within 30 days, renewal is attempted. If your cert is about to expire in less than 30 days, check the logs under `/config/log/letsencrypt` to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances.
### Certbot Plugins
SWAG includes many Certbot plugins out of the box, but not all plugins can be included.
If you need a plugin that is not included, the quickest way to have the plugin available is to use our [Universal Package Install Docker Mod](https://github.com/linuxserver/docker-mods/tree/universal-package-install).
Set the following environment variables on your container:
```yaml
DOCKER_MODS=linuxserver/mods:universal-package-install
INSTALL_PIP_PACKAGES=certbot-dns-<plugin>
```
Set the required credentials (usually found in the plugin documentation) in `/config/dns-conf/<plugin>.ini`.
It is recommended to attempt obtaining a certificate with `STAGING=true` first to make sure the plugin is working as expected.
### Security and password protection
* The container detects changes to url and subdomains, revokes existing certs and generates new ones during start.
@@ -132,7 +123,7 @@ app_setup_block: |
* You can check which jails are active via `docker exec -it swag fail2ban-client status`
* You can check the status of a specific jail via `docker exec -it swag fail2ban-client status <jail name>`
* You can unban an IP via `docker exec -it swag fail2ban-client set <jail name> unbanip <IP>`
* A list of commands can be found here: <https://www.fail2ban.org/wiki/index.php/Commands>
* A list of commands for fail2ban-client can be found [here](https://manpages.ubuntu.com/manpages/noble/man1/fail2ban-client.1.html)
### Updating configs
@@ -148,69 +139,178 @@ app_setup_block: |
* Proxy sample files WILL be updated, however your renamed (enabled) proxy files will not.
* You can check the new sample and adjust your active config as needed.
### QUIC support
This image supports QUIC (also known as HTTP/3) but it must be explicitly enabled in each proxy conf, and the default conf, because if the listener is enabled and you don't expose 443/UDP, it can break connections with some browsers.
To enable QUIC, expose 443/UDP to your clients, then uncomment both QUIC listeners in all of your active proxy confs, as well as the default conf, and restart the container.
You should also uncomment the `Alt-Svc` header in your `ssl.conf` so that browsers are aware that you offer QUIC connectivity.
It is [recommended](https://quic-go.net/docs/quic/optimizations/#udp-buffer-sizes) to increase the UDP send/recieve buffer **on the host** by setting the `net.core.rmem_max` and `net.core.wmem_max` sysctls. Suggested values are 4-16Mb (4194304-16777216 bytes). For persistence between reboots use `/etc/sysctl.d/`.
### Migration from the old `linuxserver/letsencrypt` image
Please follow the instructions [on this blog post](https://www.linuxserver.io/blog/2020-08-21-introducing-swag#migrate).
# init diagram
init_diagram: |
"swag:latest": {
docker-mods
base {
fix-attr +\nlegacy cont-init
}
docker-mods -> base
legacy-services
custom services
init-services -> legacy-services
init-services -> custom services
custom services -> legacy-services
legacy-services -> ci-service-check
init-migrations -> init-adduser
init-swag-config -> init-certbot-config
init-nginx-end -> init-config
init-os-end -> init-config
init-config -> init-config-end
init-crontab-config -> init-config-end
init-outdated-config -> init-config-end
init-config -> init-crontab-config
init-mods-end -> init-custom-files
init-adduser -> init-device-perms
base -> init-envfile
init-require-url -> init-fail2ban-config
init-os-end -> init-folders
init-php -> init-keygen
base -> init-migrations
init-config-end -> init-mods
init-mods-package-install -> init-mods-end
init-mods -> init-mods-package-install
init-samples -> init-nginx
init-version-checks -> init-nginx-end
init-adduser -> init-os-end
init-device-perms -> init-os-end
init-envfile -> init-os-end
init-renew -> init-outdated-config
init-keygen -> init-permissions
init-certbot-config -> init-permissions-config
init-nginx -> init-php
init-permissions-config -> init-renew
init-config -> init-require-url
init-folders -> init-samples
init-custom-files -> init-services
init-fail2ban-config -> init-swag-config
init-permissions -> init-swag-folders
init-swag-folders -> init-swag-samples
init-permissions -> init-version-checks
init-swag-samples -> init-version-checks
init-services -> svc-cron
svc-cron -> legacy-services
init-services -> svc-fail2ban
svc-fail2ban -> legacy-services
init-services -> svc-nginx
svc-nginx -> legacy-services
init-services -> svc-php-fpm
svc-php-fpm -> legacy-services
init-services -> svc-swag-auto-reload
svc-swag-auto-reload -> legacy-services
}
Base Images: {
"baseimage-alpine-nginx:3.22" <- "baseimage-alpine:3.22"
}
"swag:latest" <- Base Images
# changelog
changelogs:
- { date: "21.01.23:", desc: "Unpin certbot version (allow certbot 2.x). !!BREAKING CHANGE!! We are temporarily removing the certbot porkbun plugin until a new version is released that is compatible with certbot 2.x." }
- { date: "20.01.23:", desc: "Rebase to alpine 3.17 with php8.1." }
- { date: "16.01.23:", desc: "Remove nchan module because it keeps causing crashes." }
- { date: "08.12.22:", desc: "Revamp certbot init."}
- { date: "03.12.22:", desc: "Remove defunct cloudxns plugin."}
- { date: "22.11.22:", desc: "Pin acme to the same version as certbot."}
- { date: "22.11.22:", desc: "Pin certbot to 1.32.0 until plugin compatibility improves."}
- { date: "05.11.22:", desc: "Update acmedns plugin handling."}
- { date: "06.10.22:", desc: "Switch to certbot-dns-duckdns. Update cpanel and gandi dns plugin handling. Minor adjustments to init logic." }
- { date: "05.10.22:", desc: "Use certbot file hooks instead of command line hooks" }
- { date: "04.10.22:", desc: "Add godaddy and porkbun dns plugins." }
- { date: "03.10.22:", desc: "Add default_server back to default site conf's https listen." }
- { date: "22.09.22:", desc: "Added support for DO DNS validation." }
- { date: "22.09.22:", desc: "Added certbot-dns-acmedns for DNS01 validation." }
- { date: "20.08.22:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf - Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base))." }
- { date: "10.08.22:", desc: "Added support for Dynu DNS validation." }
- { date: "18.05.22:", desc: "Added support for Azure DNS validation." }
- { date: "09.04.22:", desc: "Added certbot-dns-loopia for DNS01 validation." }
- { date: "05.04.22:", desc: "Added support for standalone DNS validation." }
- { date: "28.03.22:", desc: "created a logfile for fail2ban nginx-unauthorized in /etc/cont-init.d/50-config" }
- { date: "09.01.22:", desc: "Added a fail2ban jail for nginx unauthorized" }
- { date: "21.12.21:", desc: "Fixed issue with iptables not working as expected" }
- { date: "30.11.21:", desc: "Move maxmind to a [new mod](https://github.com/linuxserver/docker-mods/tree/swag-maxmind)" }
- { date: "22.11.21:", desc: "Added support for Infomaniak DNS for certificate generation." }
- { date: "20.11.21:", desc: "Added support for dnspod validation." }
- { date: "15.11.21:", desc: "Added support for deSEC DNS for wildcard certificate generation." }
- { date: "26.10.21:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) proxy.conf - Mitigate <https://httpoxy.org/> vulnerabilities. Ref: <https://www.nginx.com/blog/mitigating-the-httpoxy-vulnerability-with-nginx#Defeating-the-Attack-using-NGINX-and-NGINX-Plus>" }
- { date: "23.10.21:", desc: "Fix Hurricane Electric (HE) DNS validation." }
- { date: "12.10.21:", desc: "Fix deprecated LE root cert check to fix failures when using `STAGING=true`, and failures in revoking." }
- { date: "06.10.21:", desc: "Added support for Hurricane Electric (HE) DNS validation. Added lxml build deps." }
- { date: "01.10.21:", desc: "Check if the cert uses the old LE root cert, revoke and regenerate if necessary. [Here's more info](https://twitter.com/letsencrypt/status/1443621997288767491) on LE root cert expiration" }
- { date: "19.09.21:", desc: "Add an optional header to opt out of Google FLoC in `ssl.conf`." }
- { date: "17.09.21:", desc: "Mark `SUBDOMAINS` var as optional." }
- { date: "01.08.21:", desc: "Add support for ionos dns validation." }
- { date: "15.07.21:", desc: "Fix libmaxminddb issue due to upstream change." }
- { date: "07.07.21:", desc: "Rebase to alpine 3.14." }
- { date: "24.06.21:", desc: "Update default nginx conf folder." }
- { date: "28.05.21:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) authelia-server.conf - Use `resolver.conf` and patch for `CVE-2021-32637`." }
- { date: "20.05.21:", desc: "Modify resolver.conf generation to detect and ignore ipv6." }
- { date: "14.05.21:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf, ssl.conf, proxy.conf, and the default site-conf - Rework nginx.conf to be inline with alpine upstream and relocate lines from other files. Use linuxserver.io wheel index for pip packages. Switch to using [ffdhe4096](https://ssl-config.mozilla.org/ffdhe4096.txt) for `dhparams.pem` per [RFC7919](https://datatracker.ietf.org/doc/html/rfc7919). Added `worker_processes.conf`, which sets the number of nginx workers, and `resolver.conf`, which sets the dns resolver. Both conf files are auto-generated only on first start and can be user modified later." }
- { date: "21.04.21:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) authelia-server.conf and authelia-location.conf - Add remote name/email headers and pass http method." }
- { date: "12.04.21:", desc: "Add php7-gmp and php7-pecl-mailparse." }
- { date: "12.04.21:", desc: "Add support for vultr dns validation." }
- { date: "14.03.21:", desc: "Add support for directadmin dns validation." }
- { date: "12.02.21:", desc: "Clean up rust/cargo cache, which ballooned the image size in the last couple of builds." }
- { date: "10.02.21:", desc: "Fix aliyun, domeneshop, inwx and transip dns confs for existing users." }
- { date: "09.02.21:", desc: "Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years)." }
- { date: "26.01.21:", desc: "Add support for hetzner dns validation." }
- { date: "20.01.21:", desc: "Add check for ZeroSSL EAB retrieval." }
- { date: "08.01.21:", desc: "Add support for getting certs from [ZeroSSL](https://zerossl.com/) via optional `CERTPROVIDER` env var. Update aliyun, domeneshop, inwx and transip dns plugins with the new plugin names. Hide `donoteditthisfile.conf` because users were editing it despite its name. Suppress harmless error when no proxy confs are enabled." }
- { date: "03.01.21:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) /config/nginx/site-confs/default.conf - Add helper pages to aid troubleshooting" }
- { date: "10.12.20:", desc: "Add support for njalla dns validation" }
- { date: "09.12.20:", desc: "Check for template/conf updates and notify in the log. Add support for gehirn and sakuracloud dns validation." }
- { date: "01.11.20:", desc: "Add support for netcup dns validation" }
- { date: "29.10.20:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) ssl.conf - Add frame-ancestors to Content-Security-Policy." }
- { date: "04.10.20:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf, proxy.conf, and ssl.conf - Minor cleanups and reordering." }
- { date: "20.09.20:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf - Added geoip2 configs. Added MAXMINDDB_LICENSE_KEY variable to readme."}
- { date: "08.09.20:", desc: "Add php7-xsl." }
- { date: "01.09.20:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf, proxy.conf, and various proxy samples - Global websockets across all configs." }
- { date: "03.08.20:", desc: "Initial release." }
- {date: "23.01.26:", desc: "Reorder init to fix proxy conf version checks."}
- {date: "21.12.25:", desc: "Add support for hetzner-cloud dns validation."}
- {date: "04.11.25:", desc: "Switch default Gandi credentials from API Key to Token, allow DNS propagation time for Azure DNS plugin."}
- {date: "18.07.25:", desc: "Rebase to Alpine 3.22 with PHP 8.4. Add QUIC support. Drop PHP bindings for mcrypt as it is no longer maintained."}
- {date: "05.05.25:", desc: "Disable Certbot's built in log rotation."}
- {date: "19.01.25:", desc: "Add [Auto Reload](https://github.com/linuxserver/docker-mods/tree/swag-auto-reload) functionality to SWAG."}
- {date: "17.12.24:", desc: "Rebase to Alpine 3.21."}
- {date: "21.10.24:", desc: "Fix naming issue with Dynu plugin. If you are using Dynu, please make sure your credentials are set in /config/dns-conf/dynu.ini and your DNSPLUGIN variable is set to dynu (not dynudns)."}
- {date: "30.08.24:", desc: "Fix zerossl cert revocation."}
- {date: "24.07.14:", desc: "Rebase to Alpine 3.20. Remove deprecated Google Domains certbot plugin. Existing users should update their nginx confs to avoid http2 deprecation warnings."}
- {date: "01.07.24:", desc: "Fall back to iptables-legacy if iptables doesn't work."}
- {date: "23.03.24:", desc: "Fix perms on the generated `priv-fullchain-bundle.pem`."}
- {date: "14.03.24:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) authelia-location.conf, authelia-server.conf - Update Authelia conf samples with support for 4.38."}
- {date: "11.03.24:", desc: "Restore support for DynuDNS using `certbot-dns-dynudns`."}
- {date: "06.03.24:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) site-confs/default.conf - Cleanup default site conf."}
- {date: "04.03.24:", desc: "Remove `stream.conf` inside the container to allow users to include their own block in `nginx.conf`."}
- {date: "23.01.24:", desc: "Rebase to Alpine 3.19 with php 8.3, add root periodic crontabs for logrotate."}
- {date: "01.01.24:", desc: "Add GleSYS DNS plugin."}
- {date: "11.12.23:", desc: "Deprecate certbot-dns-dynu to resolve dependency conflicts with other plugins."}
- {date: "30.11.23:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) site-confs/default.conf - Fix index.php being downloaded on 404."}
- {date: "23.11.23:", desc: "Run certbot as root to allow fix http validation."}
- {date: "01.10.23:", desc: "Fix \"unrecognized arguments\" issue in DirectAdmin DNS plugin."}
- {date: "28.08.23:", desc: "Add Namecheap DNS plugin."}
- {date: "12.08.23:", desc: "Add FreeDNS plugin. Detect certbot DNS authenticators using CLI."}
- {date: "07.08.23:", desc: "Add Bunny DNS Configuration."}
- {date: "27.07.23:", desc: "Added support for dreamhost validation."}
- {date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf."}
- {date: "27.04.23:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) authelia-location.conf, authelia-server.conf, authentik-location.conf, authentik-server.conf - Simplify auth configs and fix Set-Cookie header bug."}
- {date: "13.04.23:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf, authelia-location.conf, authentik-location.conf, and site-confs/default.conf - Move ssl.conf include to default.conf. Remove Authorization headers in authelia. Sort proxy_set_header in authelia and authentik."}
- {date: "25.03.23:", desc: "Fix renewal post hook."}
- {date: "10.03.23:", desc: "Cleanup unused csr and keys folders. See [certbot 2.3.0 release notes](https://github.com/certbot/certbot/releases/tag/v2.3.0)."}
- {date: "09.03.23:", desc: "Add Google Domains DNS support, `google-domains`."}
- {date: "02.03.23:", desc: "Set permissions on crontabs during init."}
- {date: "09.02.23:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) proxy.conf, authelia-location.conf and authelia-server.conf - Add Authentik configs, update Authelia configs."}
- {date: "06.02.23:", desc: "Add porkbun support back in."}
- {date: "21.01.23:", desc: "Unpin certbot version (allow certbot 2.x). !!BREAKING CHANGE!! We are temporarily removing the certbot porkbun plugin until a new version is released that is compatible with certbot 2.x."}
- {date: "20.01.23:", desc: "Rebase to alpine 3.17 with php8.1."}
- {date: "16.01.23:", desc: "Remove nchan module because it keeps causing crashes."}
- {date: "08.12.22:", desc: "Revamp certbot init."}
- {date: "03.12.22:", desc: "Remove defunct cloudxns plugin."}
- {date: "22.11.22:", desc: "Pin acme to the same version as certbot."}
- {date: "22.11.22:", desc: "Pin certbot to 1.32.0 until plugin compatibility improves."}
- {date: "05.11.22:", desc: "Update acmedns plugin handling."}
- {date: "06.10.22:", desc: "Switch to certbot-dns-duckdns. Update cpanel and gandi dns plugin handling. Minor adjustments to init logic."}
- {date: "05.10.22:", desc: "Use certbot file hooks instead of command line hooks"}
- {date: "04.10.22:", desc: "Add godaddy and porkbun dns plugins."}
- {date: "03.10.22:", desc: "Add default_server back to default site conf's https listen."}
- {date: "22.09.22:", desc: "Added support for DO DNS validation."}
- {date: "22.09.22:", desc: "Added certbot-dns-acmedns for DNS01 validation."}
- {date: "20.08.22:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf - Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base))."}
- {date: "10.08.22:", desc: "Added support for Dynu DNS validation."}
- {date: "18.05.22:", desc: "Added support for Azure DNS validation."}
- {date: "09.04.22:", desc: "Added certbot-dns-loopia for DNS01 validation."}
- {date: "05.04.22:", desc: "Added support for standalone DNS validation."}
- {date: "28.03.22:", desc: "created a logfile for fail2ban nginx-unauthorized in /etc/cont-init.d/50-config"}
- {date: "09.01.22:", desc: "Added a fail2ban jail for nginx unauthorized"}
- {date: "21.12.21:", desc: "Fixed issue with iptables not working as expected"}
- {date: "30.11.21:", desc: "Move maxmind to a [new mod](https://github.com/linuxserver/docker-mods/tree/swag-maxmind)"}
- {date: "22.11.21:", desc: "Added support for Infomaniak DNS for certificate generation."}
- {date: "20.11.21:", desc: "Added support for dnspod validation."}
- {date: "15.11.21:", desc: "Added support for deSEC DNS for wildcard certificate generation."}
- {date: "26.10.21:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) proxy.conf - Mitigate <https://httpoxy.org/> vulnerabilities. Ref: <https://www.nginx.com/blog/mitigating-the-httpoxy-vulnerability-with-nginx#Defeating-the-Attack-using-NGINX-and-NGINX-Plus>"}
- {date: "23.10.21:", desc: "Fix Hurricane Electric (HE) DNS validation."}
- {date: "12.10.21:", desc: "Fix deprecated LE root cert check to fix failures when using `STAGING=true`, and failures in revoking."}
- {date: "06.10.21:", desc: "Added support for Hurricane Electric (HE) DNS validation. Added lxml build deps."}
- {date: "01.10.21:", desc: "Check if the cert uses the old LE root cert, revoke and regenerate if necessary. [Here's more info](https://twitter.com/letsencrypt/status/1443621997288767491) on LE root cert expiration"}
- {date: "19.09.21:", desc: "Add an optional header to opt out of Google FLoC in `ssl.conf`."}
- {date: "17.09.21:", desc: "Mark `SUBDOMAINS` var as optional."}
- {date: "01.08.21:", desc: "Add support for ionos dns validation."}
- {date: "15.07.21:", desc: "Fix libmaxminddb issue due to upstream change."}
- {date: "07.07.21:", desc: "Rebase to alpine 3.14."}
- {date: "24.06.21:", desc: "Update default nginx conf folder."}
- {date: "28.05.21:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) authelia-server.conf - Use `resolver.conf` and patch for `CVE-2021-32637`."}
- {date: "20.05.21:", desc: "Modify resolver.conf generation to detect and ignore ipv6."}
- {date: "14.05.21:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf, ssl.conf, proxy.conf, and the default site-conf - Rework nginx.conf to be inline with alpine upstream and relocate lines from other files. Use linuxserver.io wheel index for pip packages. Switch to using [ffdhe4096](https://ssl-config.mozilla.org/ffdhe4096.txt) for `dhparams.pem` per [RFC7919](https://datatracker.ietf.org/doc/html/rfc7919). Added `worker_processes.conf`, which sets the number of nginx workers, and `resolver.conf`, which sets the dns resolver. Both conf files are auto-generated only on first start and can be user modified later."}
- {date: "21.04.21:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) authelia-server.conf and authelia-location.conf - Add remote name/email headers and pass http method."}
- {date: "12.04.21:", desc: "Add php7-gmp and php7-pecl-mailparse."}
- {date: "12.04.21:", desc: "Add support for vultr dns validation."}
- {date: "14.03.21:", desc: "Add support for directadmin dns validation."}
- {date: "12.02.21:", desc: "Clean up rust/cargo cache, which ballooned the image size in the last couple of builds."}
- {date: "10.02.21:", desc: "Fix aliyun, domeneshop, inwx and transip dns confs for existing users."}
- {date: "09.02.21:", desc: "Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years)."}
- {date: "26.01.21:", desc: "Add support for hetzner dns validation."}
- {date: "20.01.21:", desc: "Add check for ZeroSSL EAB retrieval."}
- {date: "08.01.21:", desc: "Add support for getting certs from [ZeroSSL](https://zerossl.com/) via optional `CERTPROVIDER` env var. Update aliyun, domeneshop, inwx and transip dns plugins with the new plugin names. Hide `donoteditthisfile.conf` because users were editing it despite its name. Suppress harmless error when no proxy confs are enabled."}
- {date: "03.01.21:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) /config/nginx/site-confs/default.conf - Add helper pages to aid troubleshooting"}
- {date: "10.12.20:", desc: "Add support for njalla dns validation"}
- {date: "09.12.20:", desc: "Check for template/conf updates and notify in the log. Add support for gehirn and sakuracloud dns validation."}
- {date: "01.11.20:", desc: "Add support for netcup dns validation"}
- {date: "29.10.20:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) ssl.conf - Add frame-ancestors to Content-Security-Policy."}
- {date: "04.10.20:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf, proxy.conf, and ssl.conf - Minor cleanups and reordering."}
- {date: "20.09.20:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf - Added geoip2 configs. Added MAXMINDDB_LICENSE_KEY variable to readme."}
- {date: "08.09.20:", desc: "Add php7-xsl."}
- {date: "01.09.20:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf, proxy.conf, and various proxy samples - Global websockets across all configs."}
- {date: "03.08.20:", desc: "Initial release."}

2
root/app/le-renew.sh Normal file → Executable file
View File

@@ -6,4 +6,4 @@ echo
echo "<------------------------------------------------->"
echo "cronjob running on $(date)"
echo "Running certbot renew"
certbot renew --non-interactive
certbot renew --non-interactive --config-dir /config/etc/letsencrypt --logs-dir /config/log/letsencrypt --work-dir /tmp/letsencrypt --config /config/etc/letsencrypt/cli.ini

View File

@@ -0,0 +1,2 @@
# Bunny API token used by Certbot
dns_bunny_api_key = a65e8ebd-45ab-44d2-a542-40d4d009e3bf

View File

@@ -0,0 +1,4 @@
# Instructions: https://github.com/goncalo-leal/certbot-dns-dreamhost#usage
# Replace with your values
dns_dreamhost_baseurl = "https://api.dreamhost.com/"
dns_dreamhost_api_key = "<api_key>"

View File

@@ -1,3 +1,3 @@
# Instructions: https://github.com/bikram990/certbot-dns-dynu#configuration
# Replace with your API token from your dynu account.
# Instructions: https://github.com/DustyRah/certbot-dns-dynudns
# Replace with your API token from your dynudns account.
dns_dynu_auth_token = AbCbASsd!@34

View File

@@ -0,0 +1,4 @@
# Instructions: https://github.com/schleuss/certbot_dns_freedns#credentials
# Replace with your values
dns_freedns_username = myremoteuser
dns_freedns_password = verysecureremoteuserpassword

View File

@@ -1,7 +1,6 @@
# Instructions: https://github.com/obynio/certbot-plugin-gandi#usage
# Replace with your value
# live dns v5 api key
dns_gandi_api_key=APIKEY
# Replace with your Gandi Live DNS v5 Personal Access Token
dns_gandi_token=TOKEN
# optional organization id, remove it if not used
#dns_gandi_sharing_id=SHARINGID

View File

@@ -0,0 +1,5 @@
# Instructions: https://github.com/runfalk/certbot-dns-glesys#usage
# GleSYS API credentials used by Certbot
dns_glesys_user = CL00000
dns_glesys_password = apikeygoeshere

View File

@@ -0,0 +1,2 @@
# Hetzner Cloud API Token
dns_hetzner_cloud_api_token = your_api_token_here

View File

@@ -0,0 +1,4 @@
# Instructions: https://github.com/knoxell/certbot-dns-namecheap#credentials
# Namecheap API credentials used by Certbot
dns_namecheap_username=my-username
dns_namecheap_api_key=my-api-key

View File

@@ -1,3 +1,5 @@
# Recommended PROPAGATION value in environment for netcup is 900
dns_netcup_customer_id = 123456
dns_netcup_api_key = 0123456789abcdef0123456789abcdef01234567
dns_netcup_api_password = abcdef0123456789abcdef01234567abcdef0123

View File

@@ -1,5 +1,5 @@
# Instructions: https://github.com/certbot/certbot/blob/master/certbot-dns-route53/certbot_dns_route53/__init__.py#L18
# Replace with your values
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
; aws_access_key_id=AKIAIOSFODNN7EXAMPLE
; aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

View File

@@ -5,4 +5,5 @@ cd /config/keys/letsencrypt || exit 1
openssl pkcs12 -export -out privkey.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem -passout pass:
sleep 1
cat {privkey,fullchain}.pem >priv-fullchain-bundle.pem
chmod 600 priv-fullchain-bundle.pem
chown -R abc:abc /config/etc/letsencrypt

View File

@@ -5,7 +5,7 @@
. /config/.donoteditthisfile.conf
if [[ ! "${ORIGVALIDATION}" = "dns" ]] && [[ ! "${ORIGVALIDATION}" = "duckdns" ]]; then
if pgrep -f "s6-supervise nginx" >/dev/null; then
if pgrep -f "s6-supervise svc-nginx" >/dev/null; then
s6-svc -u /run/service/svc-nginx
fi
else

View File

View File

@@ -12,4 +12,4 @@ datepattern = {^LN-BEG}
# DEV NOTES:
#
# Author: Will L (driz@linuxserver.io)
# Author: notdriz

View File

@@ -3,5 +3,3 @@
[Definition]
failregex = ^<HOST>.*"(GET|POST|HEAD).*" (401) .*$
ignoreregex = .*(?i)plex.*

View File

@@ -1,15 +1,27 @@
## Version 2022/08/20 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authelia-location.conf.sample
## Version 2025/03/25 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authelia-location.conf.sample
# Make sure that your authelia container is in the same user defined bridge network and is named authelia
# Make sure that the authelia configuration.yml has 'path: "authelia"' defined
# Rename /config/nginx/proxy-confs/authelia.subdomain.conf.sample to /config/nginx/proxy-confs/authelia.subdomain.conf
auth_request /authelia/api/verify;
auth_request_set $target_url $scheme://$http_host$request_uri;
auth_request_set $user $upstream_http_remote_user;
## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource
auth_request /authelia/api/authz/auth-request;
## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal
error_page 401 = @authelia_proxy_signin;
## Translate the user information response headers from the auth subrequest into variables
auth_request_set $email $upstream_http_remote_email;
auth_request_set $groups $upstream_http_remote_groups;
auth_request_set $name $upstream_http_remote_name;
auth_request_set $email $upstream_http_remote_email;
proxy_set_header Remote-User $user;
auth_request_set $user $upstream_http_remote_user;
## Inject the user information into the request made to the actual upstream
proxy_set_header Remote-Email $email;
proxy_set_header Remote-Groups $groups;
proxy_set_header Remote-Name $name;
proxy_set_header Remote-Email $email;
error_page 401 =302 https://$http_host/authelia/?rd=$target_url;
proxy_set_header Remote-User $user;
## Translate the Set-Cookie response header from the auth subrequest into a variable
auth_request_set $set_cookie $upstream_http_set_cookie;
## Translate the Location response header from the auth subrequest into a variable
auth_request_set $signin_url $upstream_http_location;

View File

@@ -1,50 +1,38 @@
## Version 2022/09/22 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authelia-server.conf.sample
## Version 2025/03/25 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authelia-server.conf.sample
# Make sure that your authelia container is in the same user defined bridge network and is named authelia
# Rename /config/nginx/proxy-confs/authelia.subdomain.conf.sample to /config/nginx/proxy-confs/authelia.subdomain.conf
# location for authelia auth requests
location = /authelia/api/authz/auth-request {
internal;
location ^~ /authelia {
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_authelia authelia;
proxy_pass http://$upstream_authelia:9091;
proxy_pass http://$upstream_authelia:9091/api/authz/auth-request;
## Include the Set-Cookie header if present
auth_request_set $set_cookie $upstream_http_set_cookie;
add_header Set-Cookie $set_cookie;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
}
location = /authelia/api/verify {
# virtual location for authelia 401 redirects
location @authelia_proxy_signin {
internal;
include /config/nginx/resolver.conf;
set $upstream_authelia authelia;
proxy_pass_request_body off;
proxy_pass http://$upstream_authelia:9091;
proxy_set_header Content-Length "";
## Include the Set-Cookie header if present
auth_request_set $set_cookie $upstream_http_set_cookie;
add_header Set-Cookie $set_cookie;
# Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
## Set the $target_url variable based on the original request
set_escape_uri $target_url $scheme://$http_host$request_uri;
# [REQUIRED] Needed by Authelia to check authorizations of the resource.
# Provide either X-Original-URL and X-Forwarded-Proto or
# X-Forwarded-Proto, X-Forwarded-Host and X-Forwarded-Uri or both.
# Those headers will be used by Authelia to deduce the target url of the user.
# Basic Proxy Config
client_body_buffer_size 128k;
proxy_set_header Host $host;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Method $request_method;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Forwarded-Ssl on;
proxy_redirect http:// $scheme://;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
proxy_buffers 4 32k;
## Translate the Location response header from the auth subrequest into a variable
auth_request_set $signin_url $upstream_http_location;
# Advanced Proxy Config
send_timeout 5m;
proxy_read_timeout 240;
proxy_send_timeout 240;
proxy_connect_timeout 240;
## Redirect to login
return 302 $signin_url;
}

View File

@@ -0,0 +1,26 @@
## Version 2023/04/27 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authentik-location.conf.sample
# Make sure that your authentik container is in the same user defined bridge network and is named authentik-server
# Rename /config/nginx/proxy-confs/authentik.subdomain.conf.sample to /config/nginx/proxy-confs/authentik.subdomain.conf
## Send a subrequest to Authentik to verify if the user is authenticated and has permission to access the resource
auth_request /outpost.goauthentik.io/auth/nginx;
## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal
error_page 401 = @goauthentik_proxy_signin;
## Translate the user information response headers from the auth subrequest into variables
auth_request_set $authentik_email $upstream_http_x_authentik_email;
auth_request_set $authentik_groups $upstream_http_x_authentik_groups;
auth_request_set $authentik_name $upstream_http_x_authentik_name;
auth_request_set $authentik_uid $upstream_http_x_authentik_uid;
auth_request_set $authentik_username $upstream_http_x_authentik_username;
## Inject the user information into the request made to the actual upstream
proxy_set_header X-authentik-email $authentik_email;
proxy_set_header X-authentik-groups $authentik_groups;
proxy_set_header X-authentik-name $authentik_name;
proxy_set_header X-authentik-uid $authentik_uid;
proxy_set_header X-authentik-username $authentik_username;
## Translate the Set-Cookie response header from the auth subrequest into a variable
auth_request_set $set_cookie $upstream_http_set_cookie;

View File

@@ -0,0 +1,48 @@
## Version 2025/03/25 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authentik-server.conf.sample
# Make sure that your authentik container is in the same user defined bridge network and is named authentik-server
# Rename /config/nginx/proxy-confs/authentik.subdomain.conf.sample to /config/nginx/proxy-confs/authentik.subdomain.conf
# location for authentik subfolder requests
location ^~ /outpost.goauthentik.io {
auth_request off; # requests to this subfolder must be accessible without authentication
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_authentik authentik-server;
proxy_pass http://$upstream_authentik:9000;
}
# location for authentik auth requests
location = /outpost.goauthentik.io/auth/nginx {
internal;
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_authentik authentik-server;
proxy_pass http://$upstream_authentik:9000/outpost.goauthentik.io/auth/nginx;
## Include the Set-Cookie header if present
auth_request_set $set_cookie $upstream_http_set_cookie;
add_header Set-Cookie $set_cookie;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
}
# virtual location for authentik 401 redirects
location @goauthentik_proxy_signin {
internal;
## Include the Set-Cookie header if present
auth_request_set $set_cookie $upstream_http_set_cookie;
add_header Set-Cookie $set_cookie;
## Set the $target_url variable based on the original request
set_escape_uri $target_url $scheme://$http_host$request_uri;
## Set the $signin_url variable
set $signin_url https://$http_host/outpost.goauthentik.io/start?rd=$target_url;
## Redirect to login
return 302 $signin_url;
}

View File

@@ -1,4 +1,4 @@
## Version 2022/09/01 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/proxy.conf.sample
## Version 2023/02/09 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/proxy.conf.sample
# Timeout if the real server is dead
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
@@ -25,11 +25,13 @@ proxy_set_header Host $host;
proxy_set_header Proxy "";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Method $request_method;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Original-Method $request_method;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
proxy_set_header X-Real-IP $remote_addr;

View File

@@ -1,4 +1,4 @@
## Version 2022/10/03 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/site-confs/default.conf.sample
## Version 2025/07/18 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/site-confs/default.conf.sample
# redirect all traffic to https
server {
@@ -12,11 +12,15 @@ server {
# main server block
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
listen 443 ssl default_server;
# listen 443 quic reuseport default_server;
listen [::]:443 ssl default_server;
# listen [::]:443 quic reuseport default_server;
server_name _;
include /config/nginx/ssl.conf;
root /config/www;
index index.html index.htm index.php;
@@ -29,6 +33,9 @@ server {
# enable for Authelia (requires authelia-location.conf in the location block)
#include /config/nginx/authelia-server.conf;
# enable for Authentik (requires authentik-location.conf in the location block)
#include /config/nginx/authentik-server.conf;
location / {
# enable for basic auth
#auth_basic "Restricted";
@@ -40,11 +47,28 @@ server {
# enable for Authelia (requires authelia-server.conf in the server block)
#include /config/nginx/authelia-location.conf;
try_files $uri $uri/ /index.html /index.php$is_args$args =404;
# enable for Authentik (requires authentik-server.conf in the server block)
#include /config/nginx/authentik-location.conf;
try_files $uri $uri/ /index.html /index.htm /index.php$is_args$args;
}
location ~ ^(.+\.php)(.*)$ {
# enable the next two lines for http auth
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
# enable for ldap auth (requires ldap-server.conf in the server block)
#include /config/nginx/ldap-location.conf;
# enable for Authelia (requires authelia-server.conf in the server block)
#include /config/nginx/authelia-location.conf;
# enable for Authentik (requires authentik-server.conf in the server block)
#include /config/nginx/authentik-location.conf;
fastcgi_split_path_info ^(.+\.php)(.*)$;
if (!-f $document_root$fastcgi_script_name) { return 404; }
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
@@ -58,5 +82,3 @@ server {
# enable subdomain method reverse proxy confs
include /config/nginx/proxy-confs/*.subdomain.conf;
# enable proxy cache for auth
proxy_cache_path cache/ keys_zone=auth_cache:10m;

View File

@@ -0,0 +1,9 @@
## Version 2025/06/08 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/tinyauth-location.conf.sample
# Make sure that your tinyauth container is in the same user defined bridge network and is named tinyauth
# Rename /config/nginx/proxy-confs/tinyauth.subdomain.conf.sample to /config/nginx/proxy-confs/tinyauth.subdomain.conf
## Send a subrequest to tinyauth to verify if the user is authenticated and has permission to access the resource
auth_request /tinyauth;
## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal
error_page 401 = @tinyauth_login;

View File

@@ -0,0 +1,35 @@
## Version 2025/06/08 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/tinyauth-server.conf.sample
# Make sure that your tinyauth container is in the same user defined bridge network and is named tinyauth
# Rename /config/nginx/proxy-confs/tinyauth.subdomain.conf.sample to /config/nginx/proxy-confs/tinyauth.subdomain.conf
# location for tinyauth auth requests
location /tinyauth {
internal;
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_tinyauth tinyauth;
proxy_pass http://$upstream_tinyauth:3000/api/auth/nginx;
proxy_set_header x-forwarded-proto $scheme;
proxy_set_header x-forwarded-host $http_host;
proxy_set_header x-forwarded-uri $request_uri;
}
# virtual location for tinyauth 401 redirects
location @tinyauth_login {
internal;
## Set the $target_url variable based on the original request
set_escape_uri $target_url $scheme://$http_host$request_uri;
## Set the $signin_url variable
set $domain $host;
if ($host ~* "^[^.]+\.([^.]+\..+)$") {
set $domain $1;
}
set $signin_url https://tinyauth.$domain/login?redirect_uri=$target_url;
## Redirect to login
return 302 $signin_url;
}

View File

@@ -1,9 +1,8 @@
# do daily/weekly/monthly maintenance
# min hour day month weekday command
*/15 * * * * run-parts /etc/periodic/15min
0 * * * * run-parts /etc/periodic/hourly
0 2 * * * run-parts /etc/periodic/daily
0 3 * * 6 run-parts /etc/periodic/weekly
0 5 1 * * run-parts /etc/periodic/monthly
# renew letsencrypt certs
8 2 * * * /app/le-renew.sh >> /config/log/letsencrypt/letsencrypt.log 2>&1
8 2 * * * /app/le-renew.sh >> /config/log/letsencrypt/renewal.log 2>&1

View File

@@ -23,24 +23,57 @@ for i in "${SANED_VARS[@]}"; do
export echo "${i}"="$(echo "${!i}" | tr '[:upper:]' '[:lower:]')"
done
# Check for and install requested DNS plugins
if grep -q "universal-package-install" <<< "${DOCKER_MODS}" && grep -q "certbot-dns" <<< "${INSTALL_PIP_PACKAGES}"; then
echo "**** Installing requested dns plugins ****"
/etc/s6-overlay/s6-rc.d/init-mod-universal-package-install-add-package/run
/etc/s6-overlay/s6-rc.d/init-mods-package-install/run
fi
# check to make sure DNSPLUGIN is selected if dns validation is used
if [[ "${VALIDATION}" = "dns" ]] && [[ ! "${DNSPLUGIN}" =~ ^(acmedns|aliyun|azure|cloudflare|cpanel|desec|digitalocean|directadmin|dnsimple|dnsmadeeasy|dnspod|do|domeneshop|duckdns|dynu|gandi|gehirn|godaddy|google|he|hetzner|infomaniak|inwx|ionos|linode|loopia|luadns|netcup|njalla|nsone|ovh|rfc2136|route53|sakuracloud|standalone|transip|vultr)$ ]]; then
echo "Please set the DNSPLUGIN variable to a valid plugin name. See docker info for more details."
CERTBOT_DNS_AUTHENTICATORS=$(certbot plugins --authenticators 2>/dev/null | sed -e 's/^Entry point: EntryPoint(name='\''cpanel'\''/Entry point: EntryPoint(name='\''dns-cpanel'\''/' -e '/EntryPoint(name='\''dns-/!d' -e 's/^Entry point: EntryPoint(name='\''dns-\([^ ]*\)'\'',/\1/' | sort)
if [[ "${VALIDATION}" = "dns" ]] && ! echo "${CERTBOT_DNS_AUTHENTICATORS}" | grep -q "${DNSPLUGIN}"; then
echo "Please set the DNSPLUGIN variable to one of the following:"
echo "${CERTBOT_DNS_AUTHENTICATORS}"
sleep infinity
fi
# set_ini_value logic:
# - if the name is not found in the file, append the name=value to the end of the file
# - if the name is found in the file, replace the value
# - if the name is found in the file but commented out, uncomment the line and replace the value
# call set_ini_value with parameters: $1=name $2=value $3=file
function set_ini_value() {
name=${1//\//\\/}
value=${2//\//\\/}
sed -i \
-e '/^#\?\(\s*'"${name}"'\s*=\s*\).*/{s//\1'"${value}"'/;:a;n;ba;q}' \
-e '$a'"${name}"'='"${value}" "${3}"
}
# ensure config files exist and has at least one value set (set_ini_value does not work on empty files)
touch /config/etc/letsencrypt/cli.ini
lsiown abc:abc /config/etc/letsencrypt/cli.ini
grep -qF 'agree-tos' /config/etc/letsencrypt/cli.ini || echo 'agree-tos=true' >>/config/etc/letsencrypt/cli.ini
# Check for broken dns credentials value in cli.ini and remove
sed -i '/dns--credentials/d' /config/etc/letsencrypt/cli.ini
# Disable Certbot's built in log rotation
set_ini_value "max-log-backups" "0" /config/etc/letsencrypt/cli.ini
# copy dns default configs
cp -n /defaults/dns-conf/* /config/dns-conf/
cp -n /defaults/dns-conf/* /config/dns-conf/ 2> >(grep -v 'cp: not replacing')
lsiown -R abc:abc /config/dns-conf
# copy default renewal hooks
chmod -R +x /defaults/etc/letsencrypt/renewal-hooks
cp -nR /defaults/etc/letsencrypt/renewal-hooks/* /config/etc/letsencrypt/renewal-hooks/
cp -nR /defaults/etc/letsencrypt/renewal-hooks/* /config/etc/letsencrypt/renewal-hooks/ 2> >(grep -v 'cp: not replacing')
lsiown -R abc:abc /config/etc/letsencrypt/renewal-hooks
# replace nginx service location in renewal hooks
find /config/etc/letsencrypt/renewal-hooks/ -type f -exec sed -i 's|/run/service/nginx|/run/service/svc-nginx|g' {} \;
find /config/etc/letsencrypt/renewal-hooks/ -type f -exec sed -i 's|/var/run/s6/services/nginx|/run/service/svc-nginx|g' {} \;
find /config/etc/letsencrypt/renewal-hooks/ -type f -exec sed -i 's|s6-supervise nginx|s6-supervise svc-nginx|g' {} \;
# create original config file if it doesn't exist, move non-hidden legacy file to hidden
if [[ -f "/config/donoteditthisfile.conf" ]]; then
@@ -140,6 +173,10 @@ else
ln -s ../etc/letsencrypt/live/"${URL}" /config/keys/letsencrypt
fi
# cleanup unused csr and keys folders
rm -rf /config/etc/letsencrypt/csr
rm -rf /config/etc/letsencrypt/keys
# checking for changes in cert variables, revoking certs if necessary
if [[ ! "${URL}" = "${ORIGURL}" ]] ||
[[ ! "${SUBDOMAINS}" = "${ORIGSUBDOMAINS}" ]] ||
@@ -151,22 +188,17 @@ if [[ ! "${URL}" = "${ORIGURL}" ]] ||
[[ ! "${STAGING}" = "${ORIGSTAGING}" ]] ||
[[ ! "${CERTPROVIDER}" = "${ORIGCERTPROVIDER}" ]]; then
echo "Different validation parameters entered than what was used before. Revoking and deleting existing certificate, and an updated one will be created"
if [[ "${ORIGCERTPROVIDER}" = "zerossl" ]] && [[ -n "${ORIGEMAIL}" ]]; then
REV_EAB_CREDS=$(curl -s https://api.zerossl.com/acme/eab-credentials-email --data "email=${ORIGEMAIL}")
REV_ZEROSSL_EAB_KID=$(echo "${REV_EAB_CREDS}" | python3 -c "import sys, json; print(json.load(sys.stdin)['eab_kid'])")
REV_ZEROSSL_EAB_HMAC_KEY=$(echo "${REV_EAB_CREDS}" | python3 -c "import sys, json; print(json.load(sys.stdin)['eab_hmac_key'])")
if [[ -z "${REV_ZEROSSL_EAB_KID}" ]] || [[ -z "${REV_ZEROSSL_EAB_HMAC_KEY}" ]]; then
echo "Unable to retrieve EAB credentials from ZeroSSL. Check the outgoing connections to api.zerossl.com and dns. Sleeping."
sleep infinity
fi
REV_ACMESERVER="https://acme.zerossl.com/v2/DV90 --eab-kid ${REV_ZEROSSL_EAB_KID} --eab-hmac-key ${REV_ZEROSSL_EAB_HMAC_KEY}"
if [[ "${ORIGCERTPROVIDER}" = "zerossl" ]]; then
REV_ACMESERVER=("https://acme.zerossl.com/v2/DV90")
elif [[ "${ORIGSTAGING}" = "true" ]]; then
REV_ACMESERVER="https://acme-staging-v02.api.letsencrypt.org/directory"
REV_ACMESERVER=("https://acme-staging-v02.api.letsencrypt.org/directory")
else
REV_ACMESERVER="https://acme-v02.api.letsencrypt.org/directory"
REV_ACMESERVER=("https://acme-v02.api.letsencrypt.org/directory")
fi
if [[ -f /config/etc/letsencrypt/live/"${ORIGDOMAIN}"/fullchain.pem ]]; then
certbot revoke --non-interactive --cert-path /config/etc/letsencrypt/live/"${ORIGDOMAIN}"/fullchain.pem --server ${REV_ACMESERVER} || true
certbot revoke --config-dir /config/etc/letsencrypt --logs-dir /config/log/letsencrypt --work-dir /tmp/letsencrypt --config /config/etc/letsencrypt/cli.ini --non-interactive --cert-path /config/etc/letsencrypt/live/"${ORIGDOMAIN}"/fullchain.pem --key-path /config/etc/letsencrypt/live/"${ORIGDOMAIN}"/privkey.pem --server "${REV_ACMESERVER[@]}" || true
else
certbot revoke --config-dir /config/etc/letsencrypt --logs-dir /config/log/letsencrypt --work-dir /tmp/letsencrypt --config /config/etc/letsencrypt/cli.ini --non-interactive --cert-name "${ORIGDOMAIN}" --server "${REV_ACMESERVER[@]}" || true
fi
rm -rf /config/etc/letsencrypt/{accounts,archive,live,renewal}
fi
@@ -177,9 +209,11 @@ echo -e "ORIGURL=\"${URL}\" ORIGSUBDOMAINS=\"${SUBDOMAINS}\" ORIGONLY_SUBDOMAINS
# Check if the cert is using the old LE root cert, revoke and regen if necessary
if [[ -f "/config/keys/letsencrypt/chain.pem" ]] && { [[ "${CERTPROVIDER}" == "letsencrypt" ]] || [[ "${CERTPROVIDER}" == "" ]]; } && [[ "${STAGING}" != "true" ]] && ! openssl x509 -in /config/keys/letsencrypt/chain.pem -noout -issuer | grep -q "ISRG Root X"; then
echo "The cert seems to be using the old LE root cert, which is no longer valid. Deleting and revoking."
REV_ACMESERVER="https://acme-v02.api.letsencrypt.org/directory"
REV_ACMESERVER=("https://acme-v02.api.letsencrypt.org/directory")
if [[ -f /config/etc/letsencrypt/live/"${ORIGDOMAIN}"/fullchain.pem ]]; then
certbot revoke --non-interactive --cert-path /config/etc/letsencrypt/live/"${ORIGDOMAIN}"/fullchain.pem --server ${REV_ACMESERVER} || true
certbot revoke --config-dir /config/etc/letsencrypt --logs-dir /config/log/letsencrypt --work-dir /tmp/letsencrypt --config /config/etc/letsencrypt/cli.ini --non-interactive --cert-path /config/etc/letsencrypt/live/"${ORIGDOMAIN}"/fullchain.pem --server "${REV_ACMESERVER[@]}" || true
else
certbot revoke --config-dir /config/etc/letsencrypt --logs-dir /config/log/letsencrypt --work-dir /tmp/letsencrypt --config /config/etc/letsencrypt/cli.ini --non-interactive --cert-name "${ORIGDOMAIN}" --server "${REV_ACMESERVER[@]}" || true
fi
rm -rf /config/etc/letsencrypt/{accounts,archive,live,renewal}
fi
@@ -203,52 +237,51 @@ else
ACMESERVER="https://acme-v02.api.letsencrypt.org/directory"
fi
# figuring out url only vs url & subdomains vs subdomains only
set_ini_value "server" "${ACMESERVER}" /config/etc/letsencrypt/cli.ini
# figuring out domain only vs domain & subdomains vs subdomains only
DOMAINS_ARRAY=()
if [[ -z "${SUBDOMAINS}" ]] || [[ "${ONLY_SUBDOMAINS}" != true ]]; then
DOMAINS_ARRAY+=("${URL}")
fi
if [[ -n "${SUBDOMAINS}" ]]; then
echo "SUBDOMAINS entered, processing"
SUBDOMAINS_ARRAY=()
if [[ "${SUBDOMAINS}" = "wildcard" ]]; then
if [[ "${ONLY_SUBDOMAINS}" = true ]]; then
export URL_REAL="-d *.${URL}"
echo "Wildcard cert for only the subdomains of ${URL} will be requested"
else
export URL_REAL="-d *.${URL} -d ${URL}"
echo "Wildcard cert for ${URL} will be requested"
fi
SUBDOMAINS_ARRAY+=("*.${URL}")
echo "Wildcard cert for ${URL} will be requested"
else
echo "SUBDOMAINS entered, processing"
for job in $(echo "${SUBDOMAINS}" | tr "," " "); do
export SUBDOMAINS_REAL="${SUBDOMAINS_REAL} -d ${job}.${URL}"
SUBDOMAINS_ARRAY+=("${job}.${URL}")
done
if [[ "${ONLY_SUBDOMAINS}" = true ]]; then
URL_REAL="${SUBDOMAINS_REAL}"
echo "Only subdomains, no URL in cert"
else
URL_REAL="-d ${URL}${SUBDOMAINS_REAL}"
fi
echo "Sub-domains processed are: ${SUBDOMAINS_REAL}"
echo "Sub-domains processed are: $(echo "${SUBDOMAINS_ARRAY[*]}" | tr " " ",")"
fi
else
echo "No subdomains defined"
URL_REAL="-d ${URL}"
DOMAINS_ARRAY+=("${SUBDOMAINS_ARRAY[@]}")
fi
# add extra domains
if [[ -n "${EXTRA_DOMAINS}" ]]; then
echo "EXTRA_DOMAINS entered, processing"
EXTRA_DOMAINS_ARRAY=()
for job in $(echo "${EXTRA_DOMAINS}" | tr "," " "); do
export EXTRA_DOMAINS_REAL="${EXTRA_DOMAINS_REAL} -d ${job}"
EXTRA_DOMAINS_ARRAY+=("${job}")
done
echo "Extra domains processed are: ${EXTRA_DOMAINS_REAL}"
URL_REAL="${URL_REAL} ${EXTRA_DOMAINS_REAL}"
echo "Extra domains processed are: $(echo "${EXTRA_DOMAINS_ARRAY[*]}" | tr " " ",")"
DOMAINS_ARRAY+=("${EXTRA_DOMAINS_ARRAY[@]}")
fi
# setting domains in cli.ini
set_ini_value "domains" "$(echo "${DOMAINS_ARRAY[*]}" | tr " " ",")" /config/etc/letsencrypt/cli.ini
# figuring out whether to use e-mail and which
if [[ ${EMAIL} == *@* ]]; then
echo "E-mail address entered: ${EMAIL}"
EMAILPARAM="-m ${EMAIL} --no-eff-email"
set_ini_value "email" "${EMAIL}" /config/etc/letsencrypt/cli.ini
set_ini_value "no-eff-email" "true" /config/etc/letsencrypt/cli.ini
set_ini_value "register-unsafely-without-email" "false" /config/etc/letsencrypt/cli.ini
else
echo "No e-mail address entered or address invalid"
EMAILPARAM="--register-unsafely-without-email"
set_ini_value "register-unsafely-without-email" "true" /config/etc/letsencrypt/cli.ini
fi
# alter extension for error message
@@ -260,37 +293,41 @@ fi
# setting the validation method to use
if [[ "${VALIDATION}" = "dns" ]]; then
AUTHENTICATORPARAM="--authenticator dns-${DNSPLUGIN}"
DNSCREDENTIALSPARAM="--dns-${DNSPLUGIN}-credentials ${DNSCREDENTIALFILE}"
if [[ -n "${PROPAGATION}" ]]; then PROPAGATIONPARAM="--dns-${DNSPLUGIN}-propagation-seconds ${PROPAGATION}"; fi
set_ini_value "preferred-challenges" "dns" /config/etc/letsencrypt/cli.ini
set_ini_value "authenticator" "dns-${DNSPLUGIN}" /config/etc/letsencrypt/cli.ini
set_ini_value "dns-${DNSPLUGIN}-credentials" "${DNSCREDENTIALFILE}" /config/etc/letsencrypt/cli.ini
if [[ -n "${PROPAGATION}" ]]; then set_ini_value "dns-${DNSPLUGIN}-propagation-seconds" "${PROPAGATION}" /config/etc/letsencrypt/cli.ini; fi
# plugins that don't support setting credentials file
if [[ "${DNSPLUGIN}" =~ ^(route53|standalone)$ ]]; then
DNSCREDENTIALSPARAM=""
sed -i "/^dns-${DNSPLUGIN}-credentials\b/d" /config/etc/letsencrypt/cli.ini
fi
# plugins that don't support setting propagation
if [[ "${DNSPLUGIN}" =~ ^(azure|gandi|standalone)$ ]]; then
if [[ "${DNSPLUGIN}" =~ ^(gandi|route53|standalone)$ ]]; then
if [[ -n "${PROPAGATION}" ]]; then echo "${DNSPLUGIN} dns plugin does not support setting propagation time"; fi
PROPAGATIONPARAM=""
sed -i "/^dns-${DNSPLUGIN}-propagation-seconds\b/d" /config/etc/letsencrypt/cli.ini
fi
# plugins that use old parameter naming convention
if [[ "${DNSPLUGIN}" =~ ^(cpanel)$ ]]; then
AUTHENTICATORPARAM="--authenticator ${DNSPLUGIN}"
DNSCREDENTIALSPARAM="--${DNSPLUGIN}-credentials ${DNSCREDENTIALFILE}"
if [[ -n "${PROPAGATION}" ]]; then PROPAGATIONPARAM="--${DNSPLUGIN}-propagation-seconds ${PROPAGATION}"; fi
sed -i "/^dns-${DNSPLUGIN}-credentials\b/d" /config/etc/letsencrypt/cli.ini
sed -i "/^dns-${DNSPLUGIN}-propagation-seconds\b/d" /config/etc/letsencrypt/cli.ini
set_ini_value "authenticator" "${DNSPLUGIN}" /config/etc/letsencrypt/cli.ini
set_ini_value "${DNSPLUGIN}-credentials" "${DNSCREDENTIALFILE}" /config/etc/letsencrypt/cli.ini
if [[ -n "${PROPAGATION}" ]]; then set_ini_value "${DNSPLUGIN}-propagation-seconds" "${PROPAGATION}" /config/etc/letsencrypt/cli.ini; fi
fi
# don't restore txt records when using DuckDNS plugin
if [[ "${DNSPLUGIN}" =~ ^(duckdns)$ ]]; then
AUTHENTICATORPARAM="${AUTHENTICATORPARAM} --dns-${DNSPLUGIN}-no-txt-restore"
set_ini_value "dns-${DNSPLUGIN}-no-txt-restore" "true" /config/etc/letsencrypt/cli.ini
fi
PREFCHAL="${AUTHENTICATORPARAM} ${DNSCREDENTIALSPARAM} ${PROPAGATIONPARAM}"
echo "${VALIDATION} validation via ${DNSPLUGIN} plugin is selected"
elif [[ "${VALIDATION}" = "tls-sni" ]]; then
PREFCHAL="--standalone --preferred-challenges http"
set_ini_value "preferred-challenges" "http" /config/etc/letsencrypt/cli.ini
set_ini_value "authenticator" "standalone" /config/etc/letsencrypt/cli.ini
echo "*****tls-sni validation has been deprecated, attempting http validation instead"
else
PREFCHAL="--standalone --preferred-challenges http"
set_ini_value "preferred-challenges" "http" /config/etc/letsencrypt/cli.ini
set_ini_value "authenticator" "standalone" /config/etc/letsencrypt/cli.ini
echo "http validation is selected"
fi
@@ -299,17 +336,17 @@ if [[ ! -f "/config/keys/letsencrypt/fullchain.pem" ]]; then
if [[ "${CERTPROVIDER}" = "zerossl" ]] && [[ -n "${EMAIL}" ]]; then
echo "Retrieving EAB from ZeroSSL"
EAB_CREDS=$(curl -s https://api.zerossl.com/acme/eab-credentials-email --data "email=${EMAIL}")
ZEROSSL_EAB_KID=$(echo "${EAB_CREDS}" | python3 -c "import sys, json; print(json.load(sys.stdin)['eab_kid'])")
ZEROSSL_EAB_HMAC_KEY=$(echo "${EAB_CREDS}" | python3 -c "import sys, json; print(json.load(sys.stdin)['eab_hmac_key'])")
ZEROSSL_EAB_KID=$(echo "${EAB_CREDS}" | jq .eab_kid)
ZEROSSL_EAB_HMAC_KEY=$(echo "${EAB_CREDS}" | jq .eab_hmac_key)
if [[ -z "${ZEROSSL_EAB_KID}" ]] || [[ -z "${ZEROSSL_EAB_HMAC_KEY}" ]]; then
echo "Unable to retrieve EAB credentials from ZeroSSL. Check the outgoing connections to api.zerossl.com and dns. Sleeping."
sleep infinity
fi
ZEROSSL_EAB="--eab-kid ${ZEROSSL_EAB_KID} --eab-hmac-key ${ZEROSSL_EAB_HMAC_KEY}"
set_ini_value "eab-kid" "${ZEROSSL_EAB_KID}" /config/etc/letsencrypt/cli.ini
set_ini_value "eab-hmac-key" "${ZEROSSL_EAB_HMAC_KEY}" /config/etc/letsencrypt/cli.ini
fi
echo "Generating new certificate"
# shellcheck disable=SC2086
certbot certonly --non-interactive --renew-by-default --server ${ACMESERVER} ${ZEROSSL_EAB} ${PREFCHAL} --rsa-key-size 4096 ${EMAILPARAM} --agree-tos ${URL_REAL}
certbot certonly --config-dir /config/etc/letsencrypt --logs-dir /config/log/letsencrypt --work-dir /tmp/letsencrypt --config /config/etc/letsencrypt/cli.ini --non-interactive --renew-by-default
if [[ ! -d /config/keys/letsencrypt ]]; then
if [[ "${VALIDATION}" = "dns" ]]; then
echo "ERROR: Cert does not exist! Please see the validation error above. Make sure you entered correct credentials into the ${DNSCREDENTIALFILE} file."

View File

@@ -1,17 +0,0 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
# if root crontabs do not exist in config
# copy root crontab from system
if [[ ! -f /config/crontabs/root ]] && crontab -l -u root; then
crontab -l -u root >/config/crontabs/root
fi
# if root crontabs still do not exist in config (were not copied from system)
# copy root crontab from included defaults
if [[ ! -f /config/crontabs/root ]]; then
cp /etc/crontabs/root /config/crontabs/
fi
# import user crontabs
crontab -u root /config/crontabs/root

View File

@@ -1 +0,0 @@
/etc/s6-overlay/s6-rc.d/init-crontabs-config/run

View File

@@ -1,29 +1,40 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
# copy/update the fail2ban config defaults to/in /config
cp -R /defaults/fail2ban/filter.d /config/fail2ban/
cp -R /defaults/fail2ban/action.d /config/fail2ban/
# if jail.local is missing in /config, copy default
if [[ ! -f /config/fail2ban/jail.local ]]; then
cp /defaults/fail2ban/jail.local /config/fail2ban/jail.local
fi
# Replace fail2ban config with user config
if [[ -d /etc/fail2ban/filter.d ]]; then
rm -rf /etc/fail2ban/filter.d
fi
if [[ -d /etc/fail2ban/action.d ]]; then
rm -rf /etc/fail2ban/action.d
fi
cp -R /config/fail2ban/filter.d /etc/fail2ban/
cp -R /config/fail2ban/action.d /etc/fail2ban/
cp /defaults/fail2ban/fail2ban.local /etc/fail2ban/
cp /config/fail2ban/jail.local /etc/fail2ban/jail.local
if [[ -z ${LSIO_READ_ONLY_FS} ]] && [[ -z ${LSIO_NON_ROOT_USER} ]] && [[ "${DISABLE_F2B,,}" != "true" ]]; then
if ! iptables -L &> /dev/null; then
ln -sf /usr/sbin/xtables-legacy-multi /usr/sbin/iptables
ln -sf /usr/sbin/xtables-legacy-multi /usr/sbin/iptables-save
ln -sf /usr/sbin/xtables-legacy-multi /usr/sbin/iptables-restore
ln -sf /usr/sbin/xtables-legacy-multi /usr/sbin/ip6tables
ln -sf /usr/sbin/xtables-legacy-multi /usr/sbin/ip6tables-save
ln -sf /usr/sbin/xtables-legacy-multi /usr/sbin/ip6tables-restore
fi
# logfiles needed by fail2ban
if [[ ! -f /config/log/nginx/error.log ]]; then
touch /config/log/nginx/error.log
fi
if [[ ! -f /config/log/nginx/access.log ]]; then
touch /config/log/nginx/access.log
# copy/update the fail2ban config defaults to/in /config
cp -R /defaults/fail2ban/filter.d /config/fail2ban/
cp -R /defaults/fail2ban/action.d /config/fail2ban/
# if jail.local is missing in /config, copy default
if [[ ! -f /config/fail2ban/jail.local ]]; then
cp /defaults/fail2ban/jail.local /config/fail2ban/jail.local
fi
# Replace fail2ban config with user config
if [[ -d /etc/fail2ban/filter.d ]]; then
rm -rf /etc/fail2ban/filter.d
fi
if [[ -d /etc/fail2ban/action.d ]]; then
rm -rf /etc/fail2ban/action.d
fi
cp -R /config/fail2ban/filter.d /etc/fail2ban/
cp -R /config/fail2ban/action.d /etc/fail2ban/
cp /defaults/fail2ban/fail2ban.local /etc/fail2ban/
cp /config/fail2ban/jail.local /etc/fail2ban/jail.local
# logfiles needed by fail2ban
if [[ ! -f /config/log/nginx/error.log ]]; then
touch /config/log/nginx/error.log
fi
if [[ ! -f /config/log/nginx/access.log ]]; then
touch /config/log/nginx/access.log
fi
fi

View File

@@ -1 +0,0 @@
/etc/s6-overlay/s6-rc.d/init-folders-config/run

View File

@@ -1 +0,0 @@
/etc/s6-overlay/s6-rc.d/init-nginx-config/run

View File

@@ -11,3 +11,9 @@ if [[ -f /config/nginx/ldap.conf ]]; then
Ensure your configs are updated and remove /config/nginx/ldap.conf
If you do not use this config, simply remove it."
fi
if grep -qrle ' /etc/letsencrypt' /config/nginx; then
echo " The following nginx confs are using certificates from the obsolete location
/etc/letsencrypt and should be updated to point to /config/etc/letsencrypt
"
echo -n " " && grep -rle ' /etc/letsencrypt' /config/nginx
fi

View File

@@ -2,8 +2,7 @@
# shellcheck shell=bash
# permissions
find /config/log ! -path '/config/log/logrotate.status' -exec chmod +r {} \+
lsiown -R abc:abc \
/config
chmod -R 0644 /etc/logrotate.d
chmod -R +r /config/log
chmod +x /app/le-renew.sh

View File

@@ -1 +0,0 @@
oneshot

View File

@@ -1 +0,0 @@
/etc/s6-overlay/s6-rc.d/init-samples-config/run

View File

@@ -14,6 +14,22 @@ if [[ ! -f /config/nginx/authelia-server.conf ]]; then
cp /defaults/nginx/authelia-server.conf.sample /config/nginx/authelia-server.conf
fi
# copy authentik config files if they don't exist
if [[ ! -f /config/nginx/authentik-location.conf ]]; then
cp /defaults/nginx/authentik-location.conf.sample /config/nginx/authentik-location.conf
fi
if [[ ! -f /config/nginx/authentik-server.conf ]]; then
cp /defaults/nginx/authentik-server.conf.sample /config/nginx/authentik-server.conf
fi
# copy tinyauth config files if they don't exist
if [[ ! -f /config/nginx/tinyauth-location.conf ]]; then
cp /defaults/nginx/tinyauth-location.conf.sample /config/nginx/tinyauth-location.conf
fi
if [[ ! -f /config/nginx/tinyauth-server.conf ]]; then
cp /defaults/nginx/tinyauth-server.conf.sample /config/nginx/tinyauth-server.conf
fi
# copy old ldap config file to new location
if [[ -f /config/nginx/ldap.conf ]] && [[ ! -f /config/nginx/ldap-server.conf ]]; then
cp /config/nginx/ldap.conf /config/nginx/ldap-server.conf

View File

@@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-swag-config/run

View File

@@ -3,10 +3,10 @@
# make our folders and links
mkdir -p \
/config/{fail2ban,crontabs,dns-conf} \
/config/{fail2ban,dns-conf} \
/config/etc/letsencrypt/renewal-hooks \
/config/log/{fail2ban,letsencrypt,nginx} \
/config/nginx/proxy-confs \
/run/fail2ban
rm -rf /etc/letsencrypt
ln -s /config/etc/letsencrypt /etc/letsencrypt
/run/fail2ban \
/tmp/letsencrypt

View File

@@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-swag-folders/run

View File

@@ -9,5 +9,5 @@ if [[ -d /defaults/nginx/proxy-confs/ ]]; then
-maxdepth 1 \
-name "*.conf.sample" \
-type f \
-exec cp "{}" /config/nginx/proxy-confs/ +
-exec cp "{}" /config/nginx/proxy-confs/ \;
fi

View File

@@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-swag-samples/run

View File

@@ -1,7 +0,0 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
# Echo init finish for test runs
if [[ -n "${TEST_RUN}" ]]; then
echo '[services.d] done.'
fi

View File

@@ -1 +0,0 @@
oneshot

View File

@@ -1 +0,0 @@
/etc/s6-overlay/s6-rc.d/init-test-run/run

View File

@@ -1,5 +1,9 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
exec \
fail2ban-client -x -f start
if [[ -z ${LSIO_READ_ONLY_FS} ]] && [[ -z ${LSIO_NON_ROOT_USER} ]] && [[ "${DISABLE_F2B,,}" != "true" ]]; then
exec \
fail2ban-client -x -f start
else
sleep infinity
fi

View File

@@ -0,0 +1,41 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
if [[ ${SWAG_AUTORELOAD,,} == "true" ]]; then
if [[ -f "/etc/s6-overlay/s6-rc.d/svc-mod-swag-auto-reload/run" ]]; then
echo "ERROR: Legacy SWAG Auto Reload Mod detected, to use the built-in Auto Reload functionality please remove it from your container config."
sleep infinity
else
echo "Auto-reload: Watching the following folders for changes to .conf files:"
echo "/config/nginx"
ACTIVE_WATCH=("/config/nginx")
for i in $(echo "${SWAG_AUTORELOAD_WATCHLIST}" | tr "|" " "); do
if [ -f "${i}" ] || [ -d "${i}" ]; then
echo "${i}"
ACTIVE_WATCH+=("${i}")
fi
done
function wait_for_changes {
inotifywait -rq \
--event modify,move,create,delete \
--includei '\.conf$' \
"${ACTIVE_WATCH[@]}"
}
while wait_for_changes; do
NGINX_CONF=()
if ! grep -q "/config/nginx/nginx.conf" /etc/nginx/nginx.conf; then
NGINX_CONF=("-c" "/config/nginx/nginx.conf")
fi
if /usr/sbin/nginx "${NGINX_CONF[@]}" -t; then
echo "Changes to nginx config detected and the changes are valid, reloading nginx"
/usr/sbin/nginx "${NGINX_CONF[@]}" -s reload
else
echo "Changes to nginx config detected but the changes are not valid, skipping nginx reload. Please fix your config."
fi
done
fi
else
sleep infinity
fi

View File

@@ -0,0 +1 @@
longrun

View File

@@ -0,0 +1,7 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
# Migrate existing renewal confs with old paths from /etc/letsencrypt to /config/etc/letsencrypt
if ls /config/etc/letsencrypt/renewal/*.conf >/dev/null 2>&1; then
sed -i 's| /etc/letsencrypt| /config/etc/letsencrypt|' /config/etc/letsencrypt/renewal/*.conf
fi