Compare commits

...

261 Commits

Author SHA1 Message Date
LinuxServer-CI
9b25ea0099
Bot Updating Package Versions 2026-01-09 21:41:08 +00:00
LinuxServer-CI
eb337d72cb
Bot Updating Package Versions 2026-01-04 21:13:00 +00:00
LinuxServer-CI
4eaf850b64
Bot Updating Templated Files 2026-01-04 21:10:10 +00:00
Adam
e3964e4b6d
Merge pull request #47 from linuxserver/3.23 2026-01-04 21:08:25 +00:00
LinuxServer-CI
4f30796c5c
Bot Updating Package Versions 2026-01-02 21:35:26 +00:00
thespad
8ac2e21838
Rebase to 3.23 2025-12-28 22:01:22 +00:00
LinuxServer-CI
4659e0090b
Bot Updating Package Versions 2025-12-26 21:38:00 +00:00
LinuxServer-CI
854afccafc
Bot Updating Package Versions 2025-12-19 21:38:24 +00:00
LinuxServer-CI
4bb4ad52d3
Bot Updating Package Versions 2025-12-12 21:37:25 +00:00
LinuxServer-CI
c3de785282
Bot Updating Package Versions 2025-11-28 21:35:16 +00:00
LinuxServer-CI
84115e1a40
Bot Updating Package Versions 2025-11-21 21:37:49 +00:00
LinuxServer-CI
98ced01b70
Bot Updating Templated Files 2025-11-21 21:34:35 +00:00
LinuxServer-CI
d3b89281e2
Bot Updating Package Versions 2025-11-14 21:36:18 +00:00
LinuxServer-CI
58f8835c03
Bot Updating Package Versions 2025-10-24 21:36:32 +00:00
LinuxServer-CI
65ed762857
Bot Updating Templated Files 2025-10-24 21:33:44 +00:00
LinuxServer-CI
6755d5d983
Bot Updating Package Versions 2025-10-17 21:33:52 +00:00
LinuxServer-CI
1364bb70ea
Bot Updating Package Versions 2025-10-10 21:33:56 +00:00
LinuxServer-CI
acec2facee
Bot Updating Package Versions 2025-10-08 04:50:37 +00:00
LinuxServer-CI
59074fd8f5
Bot Updating Package Versions 2025-10-03 21:35:06 +00:00
LinuxServer-CI
48f3306612
Bot Updating Package Versions 2025-09-26 21:34:33 +00:00
LinuxServer-CI
0cdb3767ff
Bot Updating Package Versions 2025-09-19 21:34:25 +00:00
LinuxServer-CI
5ceb767175
Bot Updating Templated Files 2025-08-23 12:50:21 +00:00
Adam
0b1cf5b6c2
Merge pull request #46 from linuxserver/sync-config 2025-08-23 13:48:21 +01:00
thespad
baf96c9469
Sync default config with upstream to support mTLS 2025-08-23 10:34:08 +01:00
LinuxServer-CI
20932b1b9d
Bot Updating Package Versions 2025-08-22 21:38:32 +00:00
LinuxServer-CI
b525490c17
Bot Updating Package Versions 2025-08-15 21:36:37 +00:00
LinuxServer-CI
2a3d7e50ed
Bot Updating Package Versions 2025-08-08 21:39:31 +00:00
LinuxServer-CI
d4fb12cc0c
Bot Updating Package Versions 2025-08-01 21:41:04 +00:00
LinuxServer-CI
ac2d0458ad
Bot Updating Package Versions 2025-07-25 21:41:15 +00:00
thespad
9ee6f0be97
Fix error line 2025-07-15 10:25:30 +01:00
Adam
37d0a6ba18
Merge pull request #44 from linuxserver/php-conf 2025-07-15 09:37:20 +01:00
LinuxServer-CI
22ee426242
Bot Updating Package Versions 2025-07-11 21:39:38 +00:00
thespad
87834f7f36
Fix php conf 2025-07-11 13:26:49 +01:00
LinuxServer-CI
e83b0fc4aa
Bot Updating Package Versions 2025-07-05 19:39:06 +00:00
LinuxServer-CI
b89a64e067
Bot Updating Templated Files 2025-07-05 19:34:21 +00:00
Adam
a2cf3f8f88
Merge pull request #43 from linuxserver/3.22 2025-07-05 20:30:24 +01:00
thespad
74d4861bf5
Rebase to 3.22 2025-07-05 16:00:46 +01:00
LinuxServer-CI
2727f2593a
Bot Updating Templated Files 2025-07-04 21:39:00 +00:00
LinuxServer-CI
b9dd92ea41
Bot Updating Templated Files 2025-07-04 21:37:16 +00:00
LinuxServer-CI
f43cec1294
Bot Updating Templated Files 2025-06-13 21:38:49 +00:00
LinuxServer-CI
ae94d56468
Bot Updating Package Versions 2025-05-16 21:37:51 +00:00
LinuxServer-CI
ed5be3e92c
Bot Updating Templated Files 2025-05-16 21:35:13 +00:00
LinuxServer-CI
ab7bdd7a3b
Bot Updating Package Versions 2025-04-18 21:35:23 +00:00
LinuxServer-CI
214794a5d3
Bot Updating Package Versions 2025-04-11 21:34:50 +00:00
LinuxServer-CI
2f8e8d1f95
Bot Updating Package Versions 2025-04-04 21:36:06 +00:00
LinuxServer-CI
1fbf2bb844
Bot Updating Package Versions 2025-03-28 21:35:46 +00:00
LinuxServer-CI
72599daf03
Bot Updating Package Versions 2025-03-21 21:34:32 +00:00
LinuxServer-CI
22b0bc15a2
Bot Updating Package Versions 2025-03-14 21:36:32 +00:00
LinuxServer-CI
58cd756865
Bot Updating Package Versions 2025-02-28 21:34:20 +00:00
LinuxServer-CI
38b8983324
Bot Updating Package Versions 2025-02-21 21:33:11 +00:00
LinuxServer-CI
c32cbd3fb2
Bot Updating Package Versions 2025-02-14 21:35:12 +00:00
LinuxServer-CI
24e293bfda
Bot Updating Templated Files 2025-02-14 21:32:32 +00:00
LinuxServer-CI
375c9c7258
Bot Updating Templated Files 2025-01-31 21:34:11 +00:00
LinuxServer-CI
cdfdf4631d
Bot Updating Templated Files 2025-01-31 21:32:33 +00:00
LinuxServer-CI
52c57a5320
Bot Updating Package Versions 2025-01-22 18:05:26 +00:00
quietsy
165bac22bc
Merge pull request #42 from linuxserver/add-project-categories
Add categories to readme-vars.yml
2025-01-22 19:55:58 +02:00
quietsy
540cf458e1 Add categories to readme-vars.yml 2025-01-22 17:12:36 +02:00
LinuxServer-CI
e3d04c99b8
Bot Updating Package Versions 2025-01-21 20:48:50 +00:00
LinuxServer-CI
113b7f1c60
Bot Updating Package Versions 2025-01-17 21:33:20 +00:00
LinuxServer-CI
08223dccb6
Bot Updating Package Versions 2025-01-06 16:30:59 +00:00
thespad
1c45555328
Fix RO/Nonroot typo 2025-01-06 16:28:05 +00:00
LinuxServer-CI
f1305d5910
Bot Updating Package Versions 2025-01-03 21:34:02 +00:00
LinuxServer-CI
2804850cac
Bot Updating Package Versions 2024-12-20 16:22:43 +00:00
LinuxServer-CI
d4084fc5eb
Bot Updating Templated Files 2024-12-20 16:18:20 +00:00
Adam
00c74772c6
Merge pull request #41 from linuxserver/3.21 2024-12-20 16:16:38 +00:00
thespad
c931d11c35
Rebase to 3.21 2024-12-20 15:55:06 +00:00
LinuxServer-CI
807349cc65
Bot Updating Package Versions 2024-12-13 21:35:30 +00:00
LinuxServer-CI
6600779a3e
Bot Updating Templated Files 2024-12-06 21:38:32 +00:00
LinuxServer-CI
355cd40e41
Bot Updating Templated Files 2024-12-06 21:36:54 +00:00
LinuxServer-CI
958d41ac94
Bot Updating Templated Files 2024-12-06 21:35:13 +00:00
Adam
be807d5845
Merge pull request #40 from linuxserver/base64 2024-11-26 16:48:10 +00:00
thespad
fcf6b03640
Consistent comparison brackets 2024-11-26 15:58:03 +00:00
thespad
127ec18710
Support BASE64 config input to match official image 2024-11-26 15:57:16 +00:00
LinuxServer-CI
a229bb5357
Bot Updating Package Versions 2024-11-22 21:34:31 +00:00
LinuxServer-CI
b0de0b2b1c
Bot Updating Templated Files 2024-11-15 21:37:11 +00:00
LinuxServer-CI
f974e22614
Bot Updating Templated Files 2024-11-15 21:35:16 +00:00
LinuxServer-CI
2bce842a16
Bot Updating Package Versions 2024-10-25 21:36:25 +00:00
LinuxServer-CI
cc4ca73e4d
Bot Updating Templated Files 2024-10-04 21:32:40 +00:00
LinuxServer-CI
0baa594dd4
Bot Updating Package Versions 2024-09-27 21:41:05 +00:00
LinuxServer-CI
fcf25c4eda
Bot Updating Templated Files 2024-09-27 21:38:09 +00:00
LinuxServer-CI
00a294fa5f
Bot Updating Templated Files 2024-09-27 21:36:39 +00:00
LinuxServer-CI
e12b27aeff
Bot Updating Templated Files 2024-09-27 21:34:40 +00:00
LinuxServer-CI
044352c1c7
Bot Updating Package Versions 2024-09-20 21:34:03 +00:00
LinuxServer-CI
d74501408c
Bot Updating Package Versions 2024-09-13 21:33:02 +00:00
LinuxServer-CI
890018025c
Bot Updating Package Versions 2024-09-06 21:35:04 +00:00
LinuxServer-CI
d1250e0c73
Bot Updating Package Versions 2024-08-23 21:37:15 +00:00
LinuxServer-CI
6f40e6b986
Bot Updating Templated Files 2024-08-23 21:35:15 +00:00
LinuxServer-CI
d2aa3b5800 Bot Updating Templated Files 2024-08-23 21:33:21 +00:00
LinuxServer-CI
cca2eba90f Bot Updating Package Versions 2024-08-16 21:33:26 +00:00
Adam
fa76d93549
Merge pull request #37 from linuxserver/migrations-x 2024-08-13 16:21:40 +01:00
thespad
0b7530a022
Make migrations executable 2024-08-13 15:16:17 +01:00
LinuxServer-CI
d002d3f49b Bot Updating Package Versions 2024-08-09 21:35:03 +00:00
LinuxServer-CI
6f2318ca60 Bot Updating Package Versions 2024-08-02 21:33:13 +00:00
driz
3339da0ed8
Merge pull request #36 from linuxserver/ipv6-listen
separate ipv6 listen in default site-conf
2024-08-01 08:51:42 -04:00
LinuxServer-CI
af18e9e0d0 Bot Updating Package Versions 2024-07-26 21:33:05 +00:00
LinuxServer-CI
c02d95646f Bot Updating Package Versions 2024-07-19 21:32:55 +00:00
Eric Nemchik
502b26ae15
separate ipv6 listen in default site-conf 2024-07-16 20:32:23 -05:00
LinuxServer-CI
da7e4e0729 Bot Updating Package Versions 2024-07-12 21:37:03 +00:00
LinuxServer-CI
0cf6c63aba Bot Updating Templated Files 2024-07-12 21:34:54 +00:00
LinuxServer-CI
ba8b1a03c2 Bot Updating Templated Files 2024-07-12 21:32:55 +00:00
LinuxServer-CI
8524d75039 Bot Updating Package Versions 2024-07-05 21:33:13 +00:00
LinuxServer-CI
826226d218 Bot Updating Package Versions 2024-06-28 21:33:15 +00:00
LinuxServer-CI
aa2abf8525 Bot Updating Package Versions 2024-06-14 21:33:37 +00:00
LinuxServer-CI
8d9695bb82 Bot Updating Package Versions 2024-06-07 21:33:23 +00:00
LinuxServer-CI
df7024aae2 Bot Updating Package Versions 2024-05-31 21:32:59 +00:00
LinuxServer-CI
8c1436aff9 Bot Updating Package Versions 2024-05-29 13:54:59 +00:00
LinuxServer-CI
573c246fb9 Bot Updating Templated Files 2024-05-29 13:51:12 +00:00
Adam
4aa47b8ec9
Merge pull request #35 from linuxserver/http2-readme
Update http2 config
2024-05-29 14:49:52 +01:00
thespad
40e51f828f
Use wildcard listener 2024-05-29 13:59:02 +01:00
thespad
aff611c862
Update http2 wording 2024-05-28 20:11:35 +01:00
thespad
dc1c33b20c
Update http2 config 2024-05-28 19:50:24 +01:00
LinuxServer-CI
3a9c5990fa Bot Updating Package Versions 2024-05-24 19:23:23 +00:00
Adam
2268507361
Merge pull request #34 from linuxserver/3.20
Rebase to 3.20
2024-05-24 20:20:55 +01:00
thespad
2de875542b
Rebase to 3.20 2024-05-24 14:51:43 +01:00
LinuxServer-CI
46ea1ca29f Bot Updating Package Versions 2024-05-17 21:33:46 +00:00
LinuxServer-CI
531ad5379e Bot Updating Package Versions 2024-05-10 21:36:12 +00:00
LinuxServer-CI
494bb620fd Bot Updating Templated Files 2024-05-10 21:33:54 +00:00
LinuxServer-CI
abbde6f355 Bot Updating Package Versions 2024-05-03 21:36:16 +00:00
LinuxServer-CI
d68d163e4f Bot Updating Templated Files 2024-05-03 21:32:34 +00:00
LinuxServer-CI
b118b52efa Bot Updating Package Versions 2024-04-26 21:34:47 +00:00
LinuxServer-CI
55fa1f6f7d Bot Updating Package Versions 2024-04-19 21:35:10 +00:00
LinuxServer-CI
093c195510 Bot Updating Package Versions 2024-04-12 21:34:49 +00:00
LinuxServer-CI
fb8599efca Bot Updating Package Versions 2024-04-05 21:33:47 +00:00
LinuxServer-CI
270997b98f Bot Updating Package Versions 2024-03-29 21:33:21 +00:00
LinuxServer-CI
4d30058c1a Bot Updating Package Versions 2024-03-22 21:35:03 +00:00
LinuxServer-CI
74411a912e Bot Updating Package Versions 2024-03-15 21:35:10 +00:00
LinuxServer-CI
96c5def5ed Bot Updating Templated Files 2024-03-15 21:32:52 +00:00
LinuxServer-CI
818593078c Bot Updating Package Versions 2024-03-01 21:33:31 +00:00
LinuxServer-CI
1cbc8d9fb3 Bot Updating Package Versions 2024-02-23 21:36:59 +00:00
LinuxServer-CI
95a7863866 Bot Updating Templated Files 2024-02-23 21:34:37 +00:00
LinuxServer-CI
76716dd428 Bot Updating Templated Files 2024-02-23 21:33:00 +00:00
LinuxServer-CI
b2eac5ca57 Bot Updating Package Versions 2024-02-16 21:34:55 +00:00
LinuxServer-CI
e843a70183 Bot Updating Package Versions 2024-02-09 21:34:30 +00:00
LinuxServer-CI
4cb7a7700f Bot Updating Package Versions 2024-02-02 21:34:33 +00:00
LinuxServer-CI
e9926c30ee Bot Updating Package Versions 2024-01-19 21:33:20 +00:00
LinuxServer-CI
089d38e545 Bot Updating Package Versions 2024-01-12 21:39:50 +00:00
LinuxServer-CI
1cbaea0ae6 Bot Updating Templated Files 2024-01-12 21:37:21 +00:00
LinuxServer-CI
2c7d9f6208 Bot Updating Templated Files 2024-01-12 21:33:13 +00:00
LinuxServer-CI
5cd0a15f0f Bot Updating Package Versions 2024-01-05 21:34:04 +00:00
LinuxServer-CI
f865f33b59 Bot Updating Package Versions 2023-12-28 18:39:52 +00:00
LinuxServer-CI
8c48a54f0a Bot Updating Templated Files 2023-12-28 18:37:38 +00:00
Eric Nemchik
6bfd9342a4
Merge pull request #32 from linuxserver/3.19
Rebase to Alpine 3.19 with php 8.3
2023-12-28 12:35:06 -06:00
Eric Nemchik
f62ee0a18e
Merge branch 'main' into 3.19 2023-12-28 12:34:59 -06:00
LinuxServer-CI
a6367d0a19 Bot Updating Templated Files 2023-12-27 13:34:13 +00:00
Eric Nemchik
5efe25cee0
Merge pull request #33 from linuxserver/nginx-cleanup
Cleanup default site conf
2023-12-27 07:31:56 -06:00
Eric Nemchik
bd026ff1a9
Cleanup default site conf
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-25 14:20:47 -06:00
Eric Nemchik
e730103ed8
Readme adjustment
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-23 16:15:02 -06:00
LinuxServer-CI
a0f0416c35 Bot Updating Package Versions 2023-12-22 21:34:16 +00:00
Eric Nemchik
80caf4a51a
Rebase to Alpine 3.19 with php 8.3
Signed-off-by: GitHub <noreply@github.com>
2023-12-21 20:20:29 +00:00
LinuxServer-CI
eb7a410eba Bot Updating Package Versions 2023-12-15 21:34:29 +00:00
LinuxServer-CI
0ace5e68f1 Bot Updating Package Versions 2023-12-08 21:33:51 +00:00
LinuxServer-CI
ce049f41c7 Bot Updating Package Versions 2023-12-01 21:34:13 +00:00
Eric Nemchik
4b81ec575f
Merge pull request #31 from linuxserver/quiet-migration
only run migration if conf exists
2023-11-28 13:52:10 -06:00
Eric Nemchik
ca685c3da2
only run migration if conf exists
redirect stderr to /dev/null

Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-11-25 10:43:11 -06:00
LinuxServer-CI
6fd7e5403e Bot Updating Package Versions 2023-11-24 21:33:20 +00:00
LinuxServer-CI
a0a65f42d7 Bot Updating Package Versions 2023-11-17 21:36:30 +00:00
LinuxServer-CI
8fea50fc4b Bot Updating Templated Files 2023-11-17 21:32:44 +00:00
LinuxServer-CI
d7f795a691 Bot Updating Package Versions 2023-11-10 21:36:58 +00:00
LinuxServer-CI
2451a16ab9 Bot Updating Package Versions 2023-11-03 21:33:17 +00:00
LinuxServer-CI
068bc8dc34 Bot Updating Package Versions 2023-10-27 21:34:38 +00:00
LinuxServer-CI
4cb66aafb8 Bot Updating Package Versions 2023-10-20 21:34:36 +00:00
LinuxServer-CI
1ae95a9685 Bot Updating Package Versions 2023-10-13 21:36:10 +00:00
LinuxServer-CI
16d36478d5 Bot Updating Templated Files 2023-10-13 21:32:50 +00:00
LinuxServer-CI
2edc1f5923 Bot Updating Package Versions 2023-10-06 21:38:25 +00:00
LinuxServer-CI
e0a7b153f4 Bot Updating Templated Files 2023-10-06 21:35:08 +00:00
LinuxServer-CI
bcdca485da Bot Updating Templated Files 2023-10-06 21:32:44 +00:00
LinuxServer-CI
eef8412f99 Bot Updating Package Versions 2023-09-29 21:35:00 +00:00
LinuxServer-CI
8565262b69 Bot Updating Package Versions 2023-09-22 21:33:23 +00:00
LinuxServer-CI
0269708fb3 Bot Updating Package Versions 2023-09-15 21:33:25 +00:00
LinuxServer-CI
987ec83d9e Bot Updating Package Versions 2023-09-08 21:33:35 +00:00
driz
54eb354315
Merge pull request #30 from linuxserver/themes
Add support for custom themes
2023-09-06 06:59:00 -05:00
TheSpad
932d42308c
Add support for custom themes 2023-09-06 10:16:38 +01:00
LinuxServer-CI
bc55d96f8e Bot Updating Package Versions 2023-09-01 21:33:29 +00:00
LinuxServer-CI
613470f106 Bot Updating Package Versions 2023-08-18 21:36:41 +00:00
LinuxServer-CI
c100ae61db Bot Updating Package Versions 2023-08-11 21:34:34 +00:00
LinuxServer-CI
286f11f0ee Bot Updating Package Versions 2023-08-04 21:33:12 +00:00
LinuxServer-CI
3a712e8d5d Bot Updating Package Versions 2023-07-28 21:34:12 +00:00
LinuxServer-CI
6054d7156b Bot Updating Package Versions 2023-07-21 21:33:22 +00:00
LinuxServer-CI
c59ef6c3b0 Bot Updating Package Versions 2023-07-14 21:35:50 +00:00
LinuxServer-CI
3a0ab523ba Bot Updating Package Versions 2023-07-07 21:34:45 +00:00
LinuxServer-CI
e583b1929b Bot Updating Templated Files 2023-07-07 21:32:46 +00:00
LinuxServer-CI
2c75b48c18 Bot Updating Package Versions 2023-06-30 21:33:09 +00:00
LinuxServer-CI
d4119dc43f Bot Updating Package Versions 2023-06-23 21:35:20 +00:00
LinuxServer-CI
1465e5d105 Bot Updating Package Versions 2023-06-16 21:34:03 +00:00
LinuxServer-CI
b005775aea Bot Updating Package Versions 2023-06-09 21:33:11 +00:00
LinuxServer-CI
d2cb7710a8 Bot Updating Package Versions 2023-06-02 21:33:01 +00:00
LinuxServer-CI
fc6b8582df Bot Updating Package Versions 2023-05-30 14:12:55 +00:00
Eric Nemchik
aaff705785
Merge pull request #28 from linuxserver/3.18
Rebase to Alpine 3.18, deprecate armhf
2023-05-30 09:10:47 -05:00
Eric Nemchik
3d3d69bd9a
Merge remote-tracking branch 'origin/main' into 3.18
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-05-29 17:21:16 -05:00
Eric Nemchik
94086749b1
Rebase to Alpine 3.18, deprecate armhf 2023-05-27 16:55:40 -05:00
LinuxServer-CI
77e4e78783 Bot Updating Package Versions 2023-05-26 21:36:25 +00:00
LinuxServer-CI
c0bc384cf5 Bot Updating Templated Files 2023-05-26 21:34:01 +00:00
LinuxServer-CI
7b86e62052 Bot Updating Package Versions 2023-05-19 21:32:51 +00:00
LinuxServer-CI
e1cb791c1e Bot Updating Package Versions 2023-05-12 21:33:45 +00:00
LinuxServer-CI
f93fa07550 Bot Updating Package Versions 2023-04-28 21:34:48 +00:00
LinuxServer-CI
c8e20a710e Bot Updating Templated Files 2023-04-28 21:33:00 +00:00
LinuxServer-CI
baa53919cf Bot Updating Templated Files 2023-04-28 21:32:07 +00:00
LinuxServer-CI
d577d7f4fb Bot Updating Package Versions 2023-04-21 21:32:40 +00:00
LinuxServer-CI
9a9aad7833 Bot Updating Package Versions 2023-04-15 17:27:14 +02:00
Eric Nemchik
ba6eb79fc1
Merge pull request #27 from linuxserver/move-ssl-include
Move ssl.conf include to default.conf
2023-04-15 10:24:41 -05:00
LinuxServer-CI
5b01b8cca5 Bot Updating Package Versions 2023-04-14 23:33:23 +02:00
Eric Nemchik
ff78ce6dd3 Move ssl.conf include to default.conf 2023-04-13 11:06:00 -05:00
LinuxServer-CI
d3b5f6092d Bot Updating Package Versions 2023-04-07 23:33:13 +02:00
LinuxServer-CI
467953150d Bot Updating Templated Files 2023-04-03 11:15:57 -05:00
LinuxServer-CI
49eb2ceae4 Bot Updating Templated Files 2023-04-03 11:14:23 -05:00
LinuxServer-CI
4bb5d6e382 Bot Updating Templated Files 2023-04-03 11:12:41 -05:00
Adam
6f3a92d360
Merge pull request #26 from linuxserver/main-sigcheck 2023-04-03 17:11:15 +01:00
TheSpad
59f2f119cc
Fix gpg signature check logic 2023-04-03 16:41:15 +01:00
LinuxServer-CI
189761c5f6 Bot Updating Package Versions 2023-03-30 15:28:41 +02:00
LinuxServer-CI
f9ca6db04f Bot Updating Package Versions 2023-03-23 14:28:33 +01:00
LinuxServer-CI
ae056242a8 Bot Updating Package Versions 2023-03-09 14:35:03 +01:00
LinuxServer-CI
7620687b8c Bot Updating Package Versions 2023-03-02 07:35:18 -06:00
LinuxServer-CI
bc23c8e6a4 Bot Updating Templated Files 2023-03-02 14:32:57 +01:00
LinuxServer-CI
b821162a96 Bot Updating Package Versions 2023-02-23 14:33:40 +01:00
LinuxServer-CI
7497bd5873 Bot Updating Package Versions 2023-02-16 14:36:27 +01:00
LinuxServer-CI
930845caf3 Bot Updating Templated Files 2023-02-16 07:34:26 -06:00
LinuxServer-CI
354fdb669f Bot Updating Templated Files 2023-02-16 07:33:03 -06:00
LinuxServer-CI
475dd9c80f Bot Updating Package Versions 2023-02-09 07:33:04 -06:00
LinuxServer-CI
ba379405f1 Bot Updating Package Versions 2023-02-08 04:02:37 +01:00
LinuxServer-CI
e2a0b15b13 Bot Updating Package Versions 2023-02-02 07:30:15 -06:00
LinuxServer-CI
729b39b547 Bot Updating Package Versions 2023-01-23 11:06:01 -06:00
Eric Nemchik
fd730c1384
Merge pull request #25 from linuxserver/3.17
Rebase to alpine 3.17 with php8.1
2023-01-23 11:03:37 -06:00
Eric Nemchik
9510b9b3ef Rebase to alpine 3.17 with php8.1 2023-01-22 15:04:10 -06:00
LinuxServer-CI
670900e4a0 Bot Updating Package Versions 2023-01-19 07:27:17 -06:00
Eric Nemchik
326576ba90
Merge pull request #24 from linuxserver/format
Format shell scripts
2023-01-15 10:46:28 -06:00
Eric Nemchik
6cffb0c447 Format shell scripts 2023-01-15 09:49:10 -06:00
LinuxServer-CI
2dca492b1a Bot Updating Package Versions 2023-01-12 07:34:09 -06:00
LinuxServer-CI
4e91532ee8 Bot Updating Package Versions 2022-12-29 14:22:22 +01:00
LinuxServer-CI
0f0a1d3e32 Bot Updating Package Versions 2022-12-22 14:24:26 +01:00
LinuxServer-CI
c3e2effd9a Bot Updating Package Versions 2022-12-01 14:41:16 +01:00
LinuxServer-CI
fed22e1e82 Bot Updating Templated Files 2022-12-01 14:39:17 +01:00
LinuxServer-CI
d9f5a665ab Bot Updating Templated Files 2022-12-01 14:38:01 +01:00
LinuxServer-CI
1674a43489 Bot Updating Templated Files 2022-12-01 14:36:46 +01:00
LinuxServer-CI
cd1fb1271e Bot Updating Package Versions 2022-11-22 11:39:45 -06:00
Adam
e140204376
Merge pull request #23 from linuxserver/s6v3 2022-11-22 17:37:36 +00:00
TheSpad
d5cea1fcbb
Revert CI delay 2022-11-22 16:21:55 +00:00
TheSpad
cfbf822462
Only chown the bits of /app we need to 2022-11-22 16:21:16 +00:00
TheSpad
2bd479595a
Increase CI delay 2022-11-22 15:49:13 +00:00
TheSpad
1ff394c50d
Trailing newline 2022-11-18 16:52:28 +00:00
TheSpad
381034c9b8
Rebase to 3.16, migrate to s6v3 2022-11-18 16:51:16 +00:00
LinuxServer-CI
58db3d330c Bot Updating Templated Files 2022-11-17 07:38:03 -06:00
LinuxServer-CI
74656a7cbe Bot Updating Package Versions 2022-11-10 14:54:08 +01:00
LinuxServer-CI
d088842d1e Bot Updating Package Versions 2022-11-03 14:48:46 +01:00
LinuxServer-CI
c5e68b4c3b Bot Updating Package Versions 2022-10-27 15:52:41 +02:00
LinuxServer-CI
b130bb4589 Bot Updating Package Versions 2022-10-20 09:04:25 -05:00
LinuxServer-CI
905865a643 Bot Updating Package Versions 2022-10-13 09:01:30 -05:00
Eric Nemchik
44b6da2558
Merge pull request #22 from linuxserver/fix-date
Update default.conf.sample
2022-10-07 12:40:51 -05:00
Eric Nemchik
681f78402f
Update default.conf.sample 2022-10-06 14:44:07 -05:00
Eric Nemchik
0d25faacf5
Merge pull request #21 from linuxserver/default_server
Add default_server
2022-10-05 05:34:39 -05:00
Eric Nemchik
b19a1d58d1 Add default_server 2022-10-04 16:16:13 -05:00
LinuxServer-CI
1dcb02254c Bot Updating Package Versions 2022-09-22 08:55:36 -05:00
LinuxServer-CI
7ca7d66aef Bot Updating Templated Files 2022-09-22 08:53:28 -05:00
LinuxServer-CI
0292b8ace1 Bot Updating Package Versions 2022-09-15 15:54:50 +02:00
LinuxServer-CI
9b43239317 Bot Updating Package Versions 2022-09-01 15:40:26 +02:00
LinuxServer-CI
7308d67418 Bot Updating Package Versions 2022-08-25 04:37:11 -05:00
Adam
2ee9c6cd84
Merge pull request #20 from linuxserver/more-improvements 2022-08-25 10:34:42 +01:00
TheSpad
4ceb393db0
Improve asset caching 2022-08-25 10:19:23 +01:00
TheSpad
1de4306043
Improve caching and timeouts 2022-08-24 23:51:03 +01:00
TheSpad
d189243e7a
Remove setup directory 2022-08-24 23:42:12 +01:00
TheSpad
ed1b669ef7
Add php8-pecl-uploadprogress 2022-08-24 23:07:20 +01:00
TheSpad
80ba6409ca
Add comment link to source file 2022-08-24 23:05:58 +01:00
35 changed files with 1710 additions and 979 deletions

2
.editorconfig Executable file → Normal file
View File

@ -15,6 +15,6 @@ trim_trailing_whitespace = false
indent_style = space indent_style = space
indent_size = 2 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_style = space
indent_size = 4 indent_size = 4

View File

@ -6,7 +6,7 @@
* Read, and fill the Pull Request template * 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 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 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 ## Common files
@ -105,10 +105,10 @@ docker build \
-t linuxserver/phpmyadmin:latest . -t linuxserver/phpmyadmin: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 ```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`. Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.

View File

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

View File

@ -1,40 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
---
[linuxserverurl]: https://linuxserver.io
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl]
<!--- If you are new to Docker or this application our issue tracker is **ONLY** used for reporting bugs or requesting features. Please use [our discord server](https://discord.gg/YWrKVTn) for general support. --->
<!--- Provide a general summary of the bug in the Title above -->
------------------------------
## Expected Behavior
<!--- Tell us what should happen -->
## Current Behavior
<!--- Tell us what happens instead of the expected behavior -->
## Steps to Reproduce
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
<!--- reproduce this bug. Include code to reproduce, if relevant -->
1.
2.
3.
4.
## Environment
**OS:**
**CPU architecture:** x86_64/arm32/arm64
**How docker service was installed:**
<!--- ie. from the official docker repo, from the distro repo, nas OS provided, etc. -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
## Command used to create docker container (run/create/compose/screenshot)
<!--- Provide your docker create/run command or compose yaml snippet, or a screenshot of settings if using a gui to create the container -->
## Docker logs
<!--- Provide a full docker log, output of "docker logs phpmyadmin" -->

76
.github/ISSUE_TEMPLATE/issue.bug.yml vendored Normal file
View File

@ -0,0 +1,76 @@
# Based on the issue template
name: Bug report
description: Create a report to help us improve
title: "[BUG] <title>"
labels: [Bug]
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Please search to see if an issue already exists for the bug you encountered.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Current Behavior
description: Tell us what happens instead of the expected behavior.
validations:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: Tell us what should happen.
validations:
required: false
- type: textarea
attributes:
label: Steps To Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. In this environment...
2. With this config...
3. Run '...'
4. See error...
validations:
required: true
- type: textarea
attributes:
label: Environment
description: |
examples:
- **OS**: Ubuntu 20.04
- **How docker service was installed**: distro's packagemanager
value: |
- OS:
- How docker service was installed:
render: markdown
validations:
required: false
- type: dropdown
attributes:
label: CPU architecture
options:
- x86-64
- arm64
validations:
required: true
- type: textarea
attributes:
label: Docker creation
description: |
Command used to create docker container
Provide your docker create/run command or compose yaml snippet, or a screenshot of settings if using a gui to create the container
render: bash
validations:
required: true
- type: textarea
attributes:
description: |
Provide a full docker log, output of "docker logs phpmyadmin"
label: Container logs
placeholder: |
Output of `docker logs phpmyadmin`
render: bash
validations:
required: true

View File

@ -1,25 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
---
[linuxserverurl]: https://linuxserver.io
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl]
<!--- If you are new to Docker or this application our issue tracker is **ONLY** used for reporting bugs or requesting features. Please use [our discord server](https://discord.gg/YWrKVTn) for general support. --->
<!--- If this acts as a feature request please ask yourself if this modification is something the whole userbase will benefit from --->
<!--- If this is a specific change for corner case functionality or plugins please look at making a Docker Mod or local script https://blog.linuxserver.io/2019/09/14/customizing-our-containers/ -->
<!--- Provide a general summary of the request in the Title above -->
------------------------------
## Desired Behavior
<!--- Tell us what should happen -->
## Current Behavior
<!--- Tell us what happens instead of the expected behavior -->
## Alternatives Considered
<!--- Tell us what other options you have tried or considered -->

View File

@ -0,0 +1,31 @@
# Based on the issue template
name: Feature request
description: Suggest an idea for this project
title: "[FEAT] <title>"
labels: [enhancement]
body:
- type: checkboxes
attributes:
label: Is this a new feature request?
description: Please search to see if a feature request already exists.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Wanted change
description: Tell us what you want to happen.
validations:
required: true
- type: textarea
attributes:
label: Reason for change
description: Justify your request, why do you want it, what is the benefit.
validations:
required: true
- type: textarea
attributes:
label: Proposed code change
description: Do you have a potential code change in mind?
validations:
required: false

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: '11 3 * * *'
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: on:
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-main: external-trigger-main:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2.3.3 - uses: actions/checkout@v4.1.1
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'
env:
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
run: | run: |
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_PHPMYADMIN_MAIN }}" ]; then printf "# External trigger for docker-phpmyadmin\n\n" >> $GITHUB_STEP_SUMMARY
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_PHPMYADMIN_MAIN is set; skipping trigger. ****" if grep -q "^phpmyadmin_main_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`phpmyadmin_main_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
elif grep -q "^phpmyadmin_main" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`phpmyadmin_main\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "**** External trigger running off of main branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_PHPMYADMIN_MAIN\". ****" echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving external version ****" echo "> External trigger running off of main branch. To disable this trigger, add \`phpmyadmin_main\` 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://www.phpmyadmin.net/home_page/version.txt' | head -n 1 | cut -d ' ' -f 1) EXT_RELEASE=$(curl -sL 'https://www.phpmyadmin.net/home_page/version.txt' | head -n 1 | cut -d ' ' -f 1)
echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY
if grep -q "^phpmyadmin_main_${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 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 phpmyadmin branch main" FAILURE_REASON="Can't retrieve external version for phpmyadmin branch main"
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-phpmyadmin/actions/runs/${{ github.run_id }}" GHA_TRIGGER_URL="https://github.com/linuxserver/docker-phpmyadmin/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, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
@ -28,65 +46,102 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "**** External version: ${EXT_RELEASE} ****" echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving last pushed version ****" echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
image="linuxserver/phpmyadmin" image="linuxserver/phpmyadmin"
tag="latest" tag="latest"
token=$(curl -sX GET \ token=$(curl -sX GET \
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fphpmyadmin%3Apull" \ "https://ghcr.io/token?scope=repository%3Alinuxserver%2Fphpmyadmin%3Apull" \
| jq -r '.token') | 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.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}" \ "https://ghcr.io/v2/${image}/manifests/${multidigest}"); then
| jq -r 'first(.manifests[].digest)') digest=$(jq -r '.config.digest' <<< "${digest}");
digest=$(curl -s \ fi
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ fi
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
| jq -r '.config.digest')
image_info=$(curl -sL \ image_info=$(curl -sL \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/blobs/${digest}" \ "https://ghcr.io/v2/${image}/blobs/${digest}")
| jq -r '.container_config') if [[ $(echo $image_info | jq -r '.container_config') == "null" ]]; then
image_info=$(echo $image_info | jq -r '.config')
else
image_info=$(echo $image_info | jq -r '.container_config')
fi
IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}') IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}')
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}') IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
if [ -z "${IMAGE_VERSION}" ]; then 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 phpmyadmin tag latest" FAILURE_REASON="Can't retrieve last pushed version for phpmyadmin tag latest"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, 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"}], "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
echo "**** Last pushed version: ${IMAGE_VERSION} ****" echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****" echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-phpmyadmin/job/main/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-phpmyadmin/job/main/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 exit 0
else else
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****" if [[ "${artifacts_found}" == "false" ]]; then
response=$(curl -iX POST \ echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-phpmyadmin/job/main/buildWithParameters?PACKAGE_CHECK=false \ echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") FAILURE_REASON="New version ${EXT_RELEASE} for phpmyadmin tag latest is detected, however not all artifacts are uploaded to upstream release yet. Will try again later."
echo "**** Jenkins job queue url: ${response%$'\r'} ****" curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
echo "**** Sleeping 10 seconds until job starts ****" "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
sleep 10 "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') else
buildurl="${buildurl%$'\r'}" printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
echo "**** Jenkins job build url: ${buildurl} ****" echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****" if [[ "${artifacts_found}" == "true" ]]; then
curl -iX POST \ echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
"${buildurl}submitDescription" \ fi
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \ response=$(curl -iX POST \
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-phpmyadmin/job/main/buildWithParameters?PACKAGE_CHECK=false \
--data-urlencode "Submit=Submit" --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Notifying Discord ****" echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
TRIGGER_REASON="A version change was detected for phpmyadmin tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}" echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, sleep 10
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}], buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} 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 phpmyadmin 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 fi

View File

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

View File

@ -2,12 +2,18 @@ name: Greetings
on: [pull_request_target, issues] on: [pull_request_target, issues]
permissions:
contents: read
jobs: jobs:
greeting: greeting:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/first-interaction@v1 - uses: actions/first-interaction@v1
with: with:
issue-message: 'Thanks for opening your first issue here! Be sure to follow the [bug](https://github.com/linuxserver/docker-phpmyadmin/blob/main/.github/ISSUE_TEMPLATE/issue.bug.md) or [feature](https://github.com/linuxserver/docker-phpmyadmin/blob/main/.github/ISSUE_TEMPLATE/issue.feature.md) 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-phpmyadmin/blob/main/.github/PULL_REQUEST_TEMPLATE.md)!' pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-phpmyadmin/blob/main/.github/PULL_REQUEST_TEMPLATE.md)!'
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -1,38 +0,0 @@
name: Package Trigger Main
on:
workflow_dispatch:
jobs:
package-trigger-main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.3
- name: Package Trigger
if: github.ref == 'refs/heads/main'
run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_PHPMYADMIN_MAIN }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_PHPMYADMIN_MAIN is set; skipping trigger. ****"
exit 0
fi
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-phpmyadmin/job/main/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 main branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_PHPMYADMIN_MAIN\". ****"
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-phpmyadmin/job/main/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: on:
schedule: schedule:
- cron: '01 13 * * 4' - cron: '24 21 * * 5'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
package-trigger-scheduler: package-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2.3.3 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'
- name: Package Trigger Scheduler - name: Package Trigger Scheduler
env:
SKIP_PACKAGE_TRIGGER: ${{ vars.SKIP_PACKAGE_TRIGGER }}
run: | run: |
echo "**** Branches found: ****" printf "# Package trigger scheduler for docker-phpmyadmin\n\n" >> $GITHUB_STEP_SUMMARY
git for-each-ref --format='%(refname:short)' refs/remotes printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY
echo "**** Pulling the yq docker image ****" for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes)
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
br=$(echo "$br" | sed 's|origin/||g') if [[ "${br}" == "HEAD" ]]; then
echo "**** Evaluating branch ${br} ****" printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-phpmyadmin/${br}/jenkins-vars.yml \ continue
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch) fi
if [ "${br}" == "${ls_branch}" ]; then printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
echo "**** Branch ${br} appears to be live; checking workflow. ****" JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-phpmyadmin/${br}/jenkins-vars.yml)
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-phpmyadmin/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-phpmyadmin/${br}/Jenkinsfile >/dev/null 2>&1; then
echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****" echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} " echo "> No Jenkinsfile found. Branch is either deprecated or is an early dev branch." >> $GITHUB_STEP_SUMMARY
curl -iX POST \ skipped_branches="${skipped_branches}${br} "
-H "Authorization: token ${{ secrets.CR_PAT }}" \ elif [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
-H "Accept: application/vnd.github.v3+json" \ echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
-d "{\"ref\":\"refs/heads/${br}\"}" \ README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-phpmyadmin/${br}/readme-vars.yml)
https://api.github.com/repos/linuxserver/docker-phpmyadmin/actions/workflows/package_trigger.yml/dispatches if [[ $(yq -r '.project_deprecation_status' <<< "${README_VARS}") == "true" ]]; then
sleep 30 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 "^phpmyadmin_${br}" <<< "${SKIP_PACKAGE_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`phpmyadmin_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-phpmyadmin/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 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 \`phpmyadmin_%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-phpmyadmin/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 fi
else 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 fi
done done
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****" if [[ -n "${triggered_branches}" ]] || [[ -n "${skipped_branches}" ]]; then
echo "**** Notifying Discord ****" if [[ -n "${triggered_branches}" ]]; then
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, NOTIFY_BRANCHES="**Triggered:** ${triggered_branches} \n"
"description": "**Package Check Build(s) Triggered for phpmyadmin** \n**Branch(es):** '"${triggered_branches}"' \n**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-phpmyadmin/activity/"' \n"}], NOTIFY_BUILD_URL="**Build URL:** https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-phpmyadmin/activity/ \n"
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} 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 phpmyadmin** \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@v3
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 }}

View File

@ -1,50 +1,49 @@
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.15 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.23
# set version label
ARG BUILD_DATE ARG BUILD_DATE
ARG VERSION ARG VERSION
ARG PHPMYADMIN_VERSION ARG PHPMYADMIN_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="TheSpad" LABEL maintainer="thespad"
# environment settings
ARG PHPMYADMIN_RELEASE_GPG_KEY="3D06A59ECE730EB71B511C17CE752F178259BD92" ARG PHPMYADMIN_RELEASE_GPG_KEY="3D06A59ECE730EB71B511C17CE752F178259BD92"
ENV MAX_EXECUTION_TIME 600 ENV MAX_EXECUTION_TIME=600
ENV MEMORY_LIMIT 512M ENV MEMORY_LIMIT=512M
ENV UPLOAD_LIMIT 8192K ENV UPLOAD_LIMIT=8192K
RUN \ RUN \
apk add --no-cache --virtual=build-dependencies \ apk add --no-cache --virtual=build-dependencies \
gpg \ gpg \
gpg-agent \ gpg-agent \
gnupg-dirmngr && \ gnupg-dirmngr && \
apk add -U --upgrade --no-cache \ apk add --no-cache \
curl \ php85-bz2 \
jq \ php85-dom \
php8-gd \ php85-gd \
php8-bz2 \ php85-mysqli \
php8-mysqli \ php85-pecl-uploadprogress \
php8-opcache \ php85-tokenizer && \
php8-iconv \
php8-dom \
php8-tokenizer \
php8-curl \
php8-zip && \
echo "**** configure php-fpm to pass env vars ****" && \ echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php8/php-fpm.d/www.conf && \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php85/php-fpm.d/www.conf && \
grep -qxF 'clear_env = no' /etc/php8/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php8/php-fpm.d/www.conf && \ if ! grep -qxF 'clear_env = no' /etc/php85/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php85/php-fpm.d/www.conf; fi && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php8/php-fpm.conf && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php85/php-fpm.conf && \
echo "**** setup php opcache ****" && \ echo "**** setup php opcache ****" && \
{ \ { \
echo 'opcache.memory_consumption=128'; \ echo 'opcache.memory_consumption=128'; \
echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.interned_strings_buffer=8'; \
echo 'opcache.max_accelerated_files=4000'; \ echo 'opcache.max_accelerated_files=4000'; \
echo 'opcache.revalidate_freq=2'; \ echo 'opcache.revalidate_freq=2'; \
echo 'opcache.fast_shutdown=1'; \ echo 'opcache.fast_shutdown=1'; \
} > /etc/php8/conf.d/opcache-recommended.ini; \ } > /etc/php85/conf.d/opcache-recommended.ini; \
\ \
{ \ { \
echo 'session.cookie_httponly=1'; \ echo 'session.cookie_httponly=1'; \
echo 'session.use_strict_mode=1'; \ echo 'session.use_strict_mode=1'; \
} > /etc/php8/conf.d/session-strict.ini; \ } > /etc/php85/conf.d/session-strict.ini; \
\ \
{ \ { \
echo 'allow_url_fopen=Off'; \ echo 'allow_url_fopen=Off'; \
@ -53,7 +52,7 @@ RUN \
echo 'memory_limit=${MEMORY_LIMIT}'; \ echo 'memory_limit=${MEMORY_LIMIT}'; \
echo 'post_max_size=${UPLOAD_LIMIT}'; \ echo 'post_max_size=${UPLOAD_LIMIT}'; \
echo 'upload_max_filesize=${UPLOAD_LIMIT}'; \ echo 'upload_max_filesize=${UPLOAD_LIMIT}'; \
} > /etc/php8/conf.d/phpmyadmin-misc.ini && \ } > /etc/php85/conf.d/phpmyadmin-misc.ini && \
echo "**** install phpmyadmin ****" && \ echo "**** install phpmyadmin ****" && \
mkdir -p /app/www/public && \ mkdir -p /app/www/public && \
if [ -z ${PHPMYADMIN_VERSION+x} ]; then \ if [ -z ${PHPMYADMIN_VERSION+x} ]; then \
@ -72,18 +71,20 @@ RUN \
|| gpg --batch -q --keyserver keyserver.pgp.com --recv-keys "$PHPMYADMIN_RELEASE_GPG_KEY" \ || gpg --batch -q --keyserver keyserver.pgp.com --recv-keys "$PHPMYADMIN_RELEASE_GPG_KEY" \
|| gpg --batch -q --keyserver keys.openpgp.org --recv-keys "$PHPMYADMIN_RELEASE_GPG_KEY" && \ || gpg --batch -q --keyserver keys.openpgp.org --recv-keys "$PHPMYADMIN_RELEASE_GPG_KEY" && \
if ! gpg --batch -q --verify "/tmp/phpmyadmin.tar.xz.asc" "/tmp/phpmyadmin.tar.xz"; then \ if ! gpg --batch -q --verify "/tmp/phpmyadmin.tar.xz.asc" "/tmp/phpmyadmin.tar.xz"; then \
echo "File signature mismatch" \ echo "File signature mismatch"; \
exit 1; \ exit 1; \
fi && \ fi && \
tar xf \ tar xf \
/tmp/phpmyadmin.tar.xz -C \ /tmp/phpmyadmin.tar.xz -C \
/app/www/public/ --strip-components=1 && \ /app/www/public/ --strip-components=1 && \
sed -i "s@'configFile' =>.*@'configFile' => '/config/phpmyadmin/config.inc.php',@" "/app/www/public/libraries/vendor_config.php" && \ sed -i "s@'configFile' =>.*@'configFile' => '/config/phpmyadmin/config.inc.php',@" "/app/www/public/libraries/vendor_config.php" && \
echo "**** cleanup ****" && \ printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \
apk del --purge \ apk del --purge \
build-dependencies && \ build-dependencies && \
rm -rf \ rm -rf \
/tmp/* /tmp/* \
/app/www/public/setup
COPY root/ / COPY root/ /

View File

@ -1,49 +1,49 @@
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.15 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.23
# set version label
ARG BUILD_DATE ARG BUILD_DATE
ARG VERSION ARG VERSION
ARG PHPMYADMIN_VERSION ARG PHPMYADMIN_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="TheSpad" LABEL maintainer="thespad"
# environment settings
ARG PHPMYADMIN_RELEASE_GPG_KEY="3D06A59ECE730EB71B511C17CE752F178259BD92" ARG PHPMYADMIN_RELEASE_GPG_KEY="3D06A59ECE730EB71B511C17CE752F178259BD92"
ENV MAX_EXECUTION_TIME 600 ENV MAX_EXECUTION_TIME=600
ENV MEMORY_LIMIT 512M ENV MEMORY_LIMIT=512M
ENV UPLOAD_LIMIT 8192K ENV UPLOAD_LIMIT=8192K
RUN \ RUN \
apk add --no-cache --virtual=build-dependencies \ apk add --no-cache --virtual=build-dependencies \
gpg \ gpg \
gpg-agent \ gpg-agent \
gnupg-dirmngr && \ gnupg-dirmngr && \
apk add -U --upgrade --no-cache \ apk add --no-cache \
curl \ php85-bz2 \
jq \ php85-dom \
php8-gd \ php85-gd \
php8-bz2 \ php85-mysqli \
php8-mysqli \ php85-pecl-uploadprogress \
php8-opcache \ php85-tokenizer && \
php8-iconv \
php8-dom \
php8-tokenizer \
php8-curl \
php8-zip && \
echo "**** configure php-fpm to pass env vars ****" && \ echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php8/php-fpm.d/www.conf && \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php85/php-fpm.d/www.conf && \
grep -qxF 'clear_env = no' /etc/php8/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php8/php-fpm.d/www.conf && \ if ! grep -qxF 'clear_env = no' /etc/php85/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php85/php-fpm.d/www.conf; fi && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php8/php-fpm.conf && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php85/php-fpm.conf && \
echo "**** setup php opcache ****" && \ echo "**** setup php opcache ****" && \
{ \ { \
echo 'opcache.memory_consumption=128'; \ echo 'opcache.memory_consumption=128'; \
echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.interned_strings_buffer=8'; \
echo 'opcache.max_accelerated_files=4000'; \ echo 'opcache.max_accelerated_files=4000'; \
echo 'opcache.revalidate_freq=2'; \ echo 'opcache.revalidate_freq=2'; \
echo 'opcache.fast_shutdown=1'; \ echo 'opcache.fast_shutdown=1'; \
} > /etc/php8/conf.d/opcache-recommended.ini; \ } > /etc/php85/conf.d/opcache-recommended.ini; \
\ \
{ \ { \
echo 'session.cookie_httponly=1'; \ echo 'session.cookie_httponly=1'; \
echo 'session.use_strict_mode=1'; \ echo 'session.use_strict_mode=1'; \
} > /etc/php8/conf.d/session-strict.ini; \ } > /etc/php85/conf.d/session-strict.ini; \
\ \
{ \ { \
echo 'allow_url_fopen=Off'; \ echo 'allow_url_fopen=Off'; \
@ -52,7 +52,7 @@ RUN \
echo 'memory_limit=${MEMORY_LIMIT}'; \ echo 'memory_limit=${MEMORY_LIMIT}'; \
echo 'post_max_size=${UPLOAD_LIMIT}'; \ echo 'post_max_size=${UPLOAD_LIMIT}'; \
echo 'upload_max_filesize=${UPLOAD_LIMIT}'; \ echo 'upload_max_filesize=${UPLOAD_LIMIT}'; \
} > /etc/php8/conf.d/phpmyadmin-misc.ini && \ } > /etc/php85/conf.d/phpmyadmin-misc.ini && \
echo "**** install phpmyadmin ****" && \ echo "**** install phpmyadmin ****" && \
mkdir -p /app/www/public && \ mkdir -p /app/www/public && \
if [ -z ${PHPMYADMIN_VERSION+x} ]; then \ if [ -z ${PHPMYADMIN_VERSION+x} ]; then \
@ -71,18 +71,20 @@ RUN \
|| gpg --batch -q --keyserver keyserver.pgp.com --recv-keys "$PHPMYADMIN_RELEASE_GPG_KEY" \ || gpg --batch -q --keyserver keyserver.pgp.com --recv-keys "$PHPMYADMIN_RELEASE_GPG_KEY" \
|| gpg --batch -q --keyserver keys.openpgp.org --recv-keys "$PHPMYADMIN_RELEASE_GPG_KEY" && \ || gpg --batch -q --keyserver keys.openpgp.org --recv-keys "$PHPMYADMIN_RELEASE_GPG_KEY" && \
if ! gpg --batch -q --verify "/tmp/phpmyadmin.tar.xz.asc" "/tmp/phpmyadmin.tar.xz"; then \ if ! gpg --batch -q --verify "/tmp/phpmyadmin.tar.xz.asc" "/tmp/phpmyadmin.tar.xz"; then \
echo "File signature mismatch" \ echo "File signature mismatch"; \
exit 1; \ exit 1; \
fi && \ fi && \
tar xf \ tar xf \
/tmp/phpmyadmin.tar.xz -C \ /tmp/phpmyadmin.tar.xz -C \
/app/www/public/ --strip-components=1 && \ /app/www/public/ --strip-components=1 && \
sed -i "s@'configFile' =>.*@'configFile' => '/config/phpmyadmin/config.inc.php',@" "/app/www/public/libraries/vendor_config.php" && \ sed -i "s@'configFile' =>.*@'configFile' => '/config/phpmyadmin/config.inc.php',@" "/app/www/public/libraries/vendor_config.php" && \
echo "**** cleanup ****" && \ printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \
apk del --purge \ apk del --purge \
build-dependencies && \ build-dependencies && \
rm -rf \ rm -rf \
/tmp/* /tmp/* \
/app/www/public/setup
COPY root/ / COPY root/ /

View File

@ -1,89 +0,0 @@
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm32v7-3.15
ARG BUILD_DATE
ARG VERSION
ARG PHPMYADMIN_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="TheSpad"
ARG PHPMYADMIN_RELEASE_GPG_KEY="3D06A59ECE730EB71B511C17CE752F178259BD92"
ENV MAX_EXECUTION_TIME 600
ENV MEMORY_LIMIT 512M
ENV UPLOAD_LIMIT 8192K
RUN \
apk add --no-cache --virtual=build-dependencies \
gpg \
gpg-agent \
gnupg-dirmngr && \
apk add -U --upgrade --no-cache \
curl \
jq \
php8-gd \
php8-bz2 \
php8-mysqli \
php8-opcache \
php8-iconv \
php8-dom \
php8-tokenizer \
php8-curl \
php8-zip && \
echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php8/php-fpm.d/www.conf && \
grep -qxF 'clear_env = no' /etc/php8/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php8/php-fpm.d/www.conf && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php8/php-fpm.conf && \
echo "**** setup php opcache ****" && \
{ \
echo 'opcache.memory_consumption=128'; \
echo 'opcache.interned_strings_buffer=8'; \
echo 'opcache.max_accelerated_files=4000'; \
echo 'opcache.revalidate_freq=2'; \
echo 'opcache.fast_shutdown=1'; \
} > /etc/php8/conf.d/opcache-recommended.ini; \
\
{ \
echo 'session.cookie_httponly=1'; \
echo 'session.use_strict_mode=1'; \
} > /etc/php8/conf.d/session-strict.ini; \
\
{ \
echo 'allow_url_fopen=Off'; \
echo 'max_execution_time=${MAX_EXECUTION_TIME}'; \
echo 'max_input_vars=10000'; \
echo 'memory_limit=${MEMORY_LIMIT}'; \
echo 'post_max_size=${UPLOAD_LIMIT}'; \
echo 'upload_max_filesize=${UPLOAD_LIMIT}'; \
} > /etc/php8/conf.d/phpmyadmin-misc.ini && \
echo "**** install phpmyadmin ****" && \
mkdir -p /app/www/public && \
if [ -z ${PHPMYADMIN_VERSION+x} ]; then \
PHPMYADMIN_VERSION=$(curl -sL 'https://www.phpmyadmin.net/home_page/version.txt' \
| head -n 1 | cut -d ' ' -f 1); \
fi && \
curl -s -o \
/tmp/phpmyadmin.tar.xz -L \
"https://files.phpmyadmin.net/phpMyAdmin/${PHPMYADMIN_VERSION}/phpMyAdmin-${PHPMYADMIN_VERSION}-all-languages.tar.xz" && \
curl -s -o \
"/tmp/phpmyadmin.tar.xz.asc" -L \
"https://files.phpmyadmin.net/phpMyAdmin/${PHPMYADMIN_VERSION}/phpMyAdmin-${PHPMYADMIN_VERSION}-all-languages.tar.xz.asc" && \
export GNUPGHOME="$(mktemp -d)" && \
gpg --batch -q --keyserver keyserver.ubuntu.com --recv-keys "$PHPMYADMIN_RELEASE_GPG_KEY" \
|| gpg --batch -q --keyserver pgp.mit.edu --recv-keys "$PHPMYADMIN_RELEASE_GPG_KEY" \
|| gpg --batch -q --keyserver keyserver.pgp.com --recv-keys "$PHPMYADMIN_RELEASE_GPG_KEY" \
|| gpg --batch -q --keyserver keys.openpgp.org --recv-keys "$PHPMYADMIN_RELEASE_GPG_KEY" && \
if ! gpg --batch -q --verify "/tmp/phpmyadmin.tar.xz.asc" "/tmp/phpmyadmin.tar.xz"; then \
echo "File signature mismatch" \
exit 1; \
fi && \
tar xf \
/tmp/phpmyadmin.tar.xz -C \
/app/www/public/ --strip-components=1 && \
sed -i "s@'configFile' =>.*@'configFile' => '/config/phpmyadmin/config.inc.php',@" "/app/www/public/libraries/vendor_config.php" && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
rm -rf \
/tmp/*
COPY root/ /
EXPOSE 80 443

1015
Jenkinsfile vendored

File diff suppressed because it is too large Load Diff

201
README.md
View File

@ -1,12 +1,10 @@
<!-- DO NOT EDIT THIS FILE MANUALLY --> <!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read the https://github.com/linuxserver/docker-phpmyadmin/blob/main/.github/CONTRIBUTING.md --> <!-- Please read https://github.com/linuxserver/docker-phpmyadmin/blob/main/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io) [![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!") [![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.") [![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.") [![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") [![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: 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! * [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. * [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. * [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 * [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
# [linuxserver/phpmyadmin](https://github.com/linuxserver/docker-phpmyadmin) # [linuxserver/phpmyadmin](https://github.com/linuxserver/docker-phpmyadmin)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fphpmyadmin?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fphpmyadmin) [![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fphpmyadmin?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-phpmyadmin.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-phpmyadmin) [![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-phpmyadmin.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-phpmyadmin)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-phpmyadmin.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-phpmyadmin/releases) [![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-phpmyadmin.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-phpmyadmin/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-phpmyadmin/packages) [![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-phpmyadmin/packages)
@ -46,7 +43,7 @@ Find us at:
## Supported Architectures ## 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/phpmyadmin:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. Simply pulling `lscr.io/linuxserver/phpmyadmin:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
@ -56,7 +53,6 @@ The architectures supported by this image are:
| :----: | :----: | ---- | | :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> | | x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> | | arm64 | ✅ | arm64v8-\<version tag\> |
| armhf| ✅ | arm32v7-\<version tag\> |
## Application Setup ## Application Setup
@ -66,15 +62,34 @@ We support all of the official [environment variables](https://docs.phpmyadmin.n
For more information check out the [phpmyadmin documentation](https://www.phpmyadmin.net/docs/). For more information check out the [phpmyadmin documentation](https://www.phpmyadmin.net/docs/).
## 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
* Custom themes are not supported
## Non-Root Operation
This image can be run with a non-root user. For details please [read the docs](https://docs.linuxserver.io/misc/non-root/).
### Caveats
* Custom themes are not supported
## Usage ## 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 flaged 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)) ### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
```yaml ```yaml
--- ---
version: "2.1"
services: services:
phpmyadmin: phpmyadmin:
image: lscr.io/linuxserver/phpmyadmin:latest image: lscr.io/linuxserver/phpmyadmin:latest
@ -82,11 +97,11 @@ services:
environment: environment:
- PUID=1000 - PUID=1000
- PGID=1000 - PGID=1000
- TZ=America/New_York - TZ=Etc/UTC
- PMA_ARBITRARY=1 #optional - PMA_ARBITRARY=1 #optional
- PMA_ABSOLUTE_URI=https://phpmyadmin.example.com #optional - PMA_ABSOLUTE_URI=https://phpmyadmin.example.com #optional
volumes: volumes:
- /path/to/appdata/config:/config - /path/to/phpmyadmin/config:/config
ports: ports:
- 80:80 - 80:80
restart: unless-stopped restart: unless-stopped
@ -99,28 +114,30 @@ docker run -d \
--name=phpmyadmin \ --name=phpmyadmin \
-e PUID=1000 \ -e PUID=1000 \
-e PGID=1000 \ -e PGID=1000 \
-e TZ=America/New_York \ -e TZ=Etc/UTC \
-e PMA_ARBITRARY=1 `#optional` \ -e PMA_ARBITRARY=1 `#optional` \
-e PMA_ABSOLUTE_URI=https://phpmyadmin.example.com `#optional` \ -e PMA_ABSOLUTE_URI=https://phpmyadmin.example.com `#optional` \
-p 80:80 \ -p 80:80 \
-v /path/to/appdata/config:/config \ -v /path/to/phpmyadmin/config:/config \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/phpmyadmin:latest lscr.io/linuxserver/phpmyadmin:latest
``` ```
## Parameters ## 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 | | Parameter | Function |
| :----: | --- | | :----: | --- |
| `-p 80` | Port for web frontend | | `-p 80:80` | Port for web frontend |
| `-e PUID=1000` | for UserID - see below for explanation | | `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation | | `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=America/New_York` | Specify a timezone to use EG America/New_York | | `-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 PMA_ARBITRARY=1` | Set to `1` to allow you to connect to any server. Setting to `0` will only allow you to connect to specified hosts (See Application Setup) | | `-e PMA_ARBITRARY=1` | Set to `1` to allow you to connect to any server. Setting to `0` will only allow you to connect to specified hosts (See Application Setup) |
| `-e PMA_ABSOLUTE_URI=https://phpmyadmin.example.com` | Set the URL you will use to access the web frontend | | `-e PMA_ABSOLUTE_URI=https://phpmyadmin.example.com` | Set the URL you will use to access the web frontend |
| `-v /config` | Contains all relevant configuration files. | | `-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/). |
| `--user=1000:1000` | Run container with a non-root user. Please [read the docs](https://docs.linuxserver.io/misc/non-root/). |
## Environment variables from files (Docker secrets) ## Environment variables from files (Docker secrets)
@ -129,10 +146,10 @@ You can set any environment variable from a file by using a special prepend `FIL
As an example: As an example:
```bash ```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 ## Umask for running applications
@ -141,15 +158,20 @@ Keep in mind umask is not chmod it subtracts from permissions based on it's valu
## User / Group Identifiers ## 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. 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 ```bash
$ id username id your_user
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) ```
Example output:
```text
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
``` ```
## Docker Mods ## Docker Mods
@ -160,53 +182,101 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Support Info ## Support Info
* Shell access whilst the container is running: `docker exec -it phpmyadmin /bin/bash` * Shell access whilst the container is running:
* To monitor the logs of the container in realtime: `docker logs -f phpmyadmin`
* container version number ```bash
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' phpmyadmin` docker exec -it phpmyadmin /bin/bash
* image version number ```
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/phpmyadmin:latest`
* To monitor the logs of the container in realtime:
```bash
docker logs -f phpmyadmin
```
* Container version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' phpmyadmin
```
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/phpmyadmin:latest
```
## Updating Info ## 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: Below are the instructions for updating containers:
### Via Docker Compose ### Via Docker Compose
* Update all images: `docker-compose pull` * Update images:
* or update a single image: `docker-compose pull phpmyadmin` * All images:
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d phpmyadmin` ```bash
* You can also remove the old dangling images: `docker image prune` docker-compose pull
```
* Single image:
```bash
docker-compose pull phpmyadmin
```
* Update containers:
* All containers:
```bash
docker-compose up -d
```
* Single container:
```bash
docker-compose up -d phpmyadmin
```
* You can also remove the old dangling images:
```bash
docker image prune
```
### Via Docker Run ### Via Docker Run
* Update the image: `docker pull lscr.io/linuxserver/phpmyadmin:latest` * Update the image:
* Stop the running container: `docker stop phpmyadmin`
* Delete the container: `docker rm phpmyadmin` ```bash
docker pull lscr.io/linuxserver/phpmyadmin:latest
```
* Stop the running container:
```bash
docker stop phpmyadmin
```
* Delete the container:
```bash
docker rm phpmyadmin
```
* 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) * 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) ```bash
docker image prune
* 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 phpmyadmin
```
* 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).
### Image Update Notifications - Diun (Docker Image Update Notifier) ### 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 ## Building locally
@ -221,16 +291,29 @@ docker build \
-t lscr.io/linuxserver/phpmyadmin:latest . -t lscr.io/linuxserver/phpmyadmin: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 ```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`. Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
## Versions ## Versions
* **28.12.25:** - Rebase to Alpine 3.23.
* **23.08.25:** - Add support for mTLS. Existing users will need to delete their config.inc.php and restart the container.
* **05.07.25:** - Rebase to Alpine 3.22.
* **19.12.24:** - Rebase to Alpine 3.21.
* **27.05.24:** - Existing users should update their nginx confs to avoid http2 deprecation warnings.
* **24.05.24:** - Rebase to Alpine 3.20.
* **28.12.23:** - Rebase to Alpine 3.19 with php 8.3.
* **25.12.23:** - Existing users should update: site-confs/default.conf - Cleanup default site conf.
* **06.09.23:** - Add support for custom themes.
* **25.05.23:** - Rebase to Alpine 3.18, deprecate armhf.
* **13.04.23:** - Move ssl.conf include to default.conf.
* **20.01.23:** - Rebase to alpine 3.17 with php8.1.
* **18.11.22:** - Rebasing to Alpine 3.16, migrate to s6v3.
* **20.08.22:** - Rebasing to Alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base)). * **20.08.22:** - Rebasing to Alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base)).
* **23.01.22:** - Pin versions to 5.x.x. * **23.01.22:** - Pin versions to 5.x.x.
* **14.06.21:** - Initial Release. * **14.06.21:** - Initial Release.

View File

@ -24,8 +24,7 @@ repo_vars:
- CI_WEB='true' - CI_WEB='true'
- CI_PORT='80' - CI_PORT='80'
- CI_SSL='false' - CI_SSL='false'
- CI_DELAY='120' - CI_DELAY='60'
- CI_DOCKERENV='TZ=US/Pacific' - CI_DOCKERENV=''
- CI_AUTH='' - CI_AUTH=''
- CI_WEBPATH='' - CI_WEBPATH=''

View File

@ -1,93 +1,174 @@
alpine-baselayout-3.2.0-r18 NAME VERSION TYPE
alpine-keys-2.4-r1 acl-libs 2.3.2-r1 apk
apache2-utils-2.4.54-r0 alpine-baselayout 3.7.1-r8 apk
apk-tools-2.12.7-r3 alpine-baselayout-data 3.7.1-r8 apk
apr-1.7.0-r1 alpine-keys 2.6-r0 apk
apr-util-1.6.1-r11 alpine-release 3.23.2-r0 apk
argon2-libs-20190702-r1 aom-libs 3.13.1-r0 apk
bash-5.1.16-r0 apache2-utils 2.4.66-r0 apk
brotli-libs-1.0.9-r5 apk-tools 3.0.3-r1 apk
busybox-1.34.1-r7 apr 1.7.6-r0 apk
ca-certificates-20220614-r0 apr-util 1.6.3-r2 apk
ca-certificates-bundle-20220614-r0 argon2-libs 20190702-r5 apk
coreutils-9.0-r2 bacon/bacon-qr-code 2.0.8 php-composer
curl-7.80.0-r2 bash 5.3.3-r1 apk
expat-2.4.7-r0 beberlei/assert v3.3.3 php-composer
freetype-2.11.1-r2 brick/math 0.8.17 php-composer
git-2.34.4-r0 brotli-libs 1.2.0-r0 apk
jq-1.6-r1 busybox 1.37.0-r30 apk
libacl-2.2.53-r0 busybox-binsh 1.37.0-r30 apk
libattr-2.5.1-r1 c-ares 1.34.6-r0 apk
libbsd-0.11.3-r1 ca-certificates 20251003-r0 apk
libbz2-1.0.8-r1 ca-certificates-bundle 20251003-r0 apk
libc-utils-0.7.2-r3 catatonit 0.2.1-r0 apk
libcrypto1.1-1.1.1q-r0 code-lts/u2f-php-server v1.2.2 php-composer
libcurl-7.80.0-r2 composer 2.9.3 binary
libedit-20210910.3.1-r0 composer/ca-bundle 1.5.8 php-composer
libice-1.0.10-r0 coreutils 9.8-r1 apk
libintl-0.21-r0 coreutils-env 9.8-r1 apk
libjpeg-turbo-2.1.2-r0 coreutils-fmt 9.8-r1 apk
libmd-1.0.3-r0 coreutils-sha512sum 9.8-r1 apk
libpng-1.6.37-r1 curl 8.17.0-r1 apk
libproc-3.3.17-r0 dasprid/enum 1.0.7 php-composer
libretls-3.3.4-r3 fgrosse/phpasn1 v2.5.0 php-composer
libsm-1.2.3-r0 fig/http-message-util 1.1.5 php-composer
libssl1.1-1.1.1q-r0 findutils 4.10.0-r0 apk
libuuid-2.37.4-r0 freetype 2.14.1-r0 apk
libwebp-1.2.2-r0 git 2.52.0-r0 apk
libx11-1.7.2-r0 git-init-template 2.52.0-r0 apk
libxau-1.0.9-r0 google/recaptcha 1.2.4 php-composer
libxcb-1.14-r2 jq 1.8.1-r0 apk
libxdmcp-1.1.3-r0 league/uri 6.4.0 php-composer
libxext-1.3.4-r0 league/uri-interfaces 2.3.0 php-composer
libxml2-2.9.14-r1 libapk 3.0.3-r1 apk
libxpm-3.5.13-r0 libattr 2.5.2-r2 apk
libxt-1.2.1-r0 libavif 1.3.0-r0 apk
libzip-1.8.0-r1 libbsd 0.12.2-r0 apk
linux-pam-1.5.2-r0 libbz2 1.0.8-r6 apk
logrotate-3.18.1-r3 libcrypto3 3.5.4-r0 apk
musl-1.2.2-r7 libcurl 8.17.0-r1 apk
musl-utils-1.2.2-r7 libdav1d 1.5.2-r0 apk
nano-5.9-r0 libedit 20251016.3.1-r0 apk
ncurses-libs-6.3_p20211120-r1 libexpat 2.7.3-r0 apk
ncurses-terminfo-base-6.3_p20211120-r1 libgcc 15.2.0-r2 apk
nghttp2-libs-1.46.0-r0 libice 1.1.2-r0 apk
nginx-1.20.2-r1 libidn2 2.3.8-r0 apk
oniguruma-6.9.7.1-r0 libintl 0.24.1-r1 apk
openssl-1.1.1q-r0 libjpeg-turbo 3.1.2-r0 apk
pcre-8.45-r1 libmd 1.1.0-r0 apk
pcre2-10.40-r0 libncursesw 6.5_p20251123-r0 apk
php8-8.0.18-r0 libpng 1.6.53-r0 apk
php8-bz2-8.0.18-r0 libproc2 4.0.5-r0 apk
php8-common-8.0.18-r0 libpsl 0.21.5-r3 apk
php8-curl-8.0.18-r0 libsharpyuv 1.6.0-r0 apk
php8-dom-8.0.18-r0 libsm 1.2.6-r0 apk
php8-fileinfo-8.0.18-r0 libssl3 3.5.4-r0 apk
php8-fpm-8.0.18-r0 libstdc++ 15.2.0-r2 apk
php8-gd-8.0.18-r0 libunistring 1.4.1-r0 apk
php8-iconv-8.0.18-r0 libuuid 2.41.2-r0 apk
php8-mbstring-8.0.18-r0 libwebp 1.6.0-r0 apk
php8-mysqli-8.0.18-r0 libx11 1.8.12-r1 apk
php8-mysqlnd-8.0.18-r0 libxau 1.0.12-r0 apk
php8-opcache-8.0.18-r0 libxcb 1.17.0-r1 apk
php8-openssl-8.0.18-r0 libxdmcp 1.1.5-r1 apk
php8-session-8.0.18-r0 libxext 1.3.6-r2 apk
php8-simplexml-8.0.18-r0 libxml2 2.13.9-r0 apk
php8-tokenizer-8.0.18-r0 libxpm 3.5.17-r0 apk
php8-xml-8.0.18-r0 libxt 1.3.1-r0 apk
php8-xmlwriter-8.0.18-r0 libyuv 0.0.1887.20251502-r1 apk
php8-zip-8.0.18-r0 libzip 1.11.4-r1 apk
popt-1.18-r0 linux-pam 1.7.1-r2 apk
procps-3.3.17-r0 logrotate 3.22.0-r0 apk
readline-8.1.1-r0 musl 1.2.5-r21 apk
s6-ipcserver-2.11.0.0-r0 musl-utils 1.2.5-r21 apk
scanelf-1.3.3-r0 nano 8.7-r0 apk
shadow-4.8.1-r1 ncurses-terminfo-base 6.5_p20251123-r0 apk
skalibs-2.11.0.0-r0 netcat-openbsd 1.234.1-r0 apk
ssl_client-1.34.1-r7 nghttp2-libs 1.68.0-r0 apk
tzdata-2022a-r0 nghttp3 1.13.1-r0 apk
utmps-0.1.0.3-r0 nginx 1.28.0-r8 apk
xz-5.2.5-r1 nikic/fast-route v1.3.0 php-composer
xz-libs-5.2.5-r1 oniguruma 6.9.10-r0 apk
zlib-1.2.12-r3 openssl 3.5.4-r0 apk
zstd-libs-1.5.0-r0 paragonie/constant_time_encoding v2.8.2 php-composer
paragonie/random_compat v9.99.100 php-composer
paragonie/sodium_compat v1.23.0 php-composer
pcre2 10.47-r0 apk
php85 8.5.1-r0 apk
php85-bz2 8.5.1-r0 apk
php85-common 8.5.1-r0 apk
php85-ctype 8.5.1-r0 apk
php85-curl 8.5.1-r0 apk
php85-dom 8.5.1-r0 apk
php85-fileinfo 8.5.1-r0 apk
php85-fpm 8.5.1-r0 apk
php85-gd 8.5.1-r0 apk
php85-iconv 8.5.1-r0 apk
php85-mbstring 8.5.1-r0 apk
php85-mysqli 8.5.1-r0 apk
php85-mysqlnd 8.5.1-r0 apk
php85-openssl 8.5.1-r0 apk
php85-pecl-uploadprogress 2.0.2-r1 apk
php85-phar 8.5.1-r0 apk
php85-session 8.5.1-r0 apk
php85-simplexml 8.5.1-r0 apk
php85-tokenizer 8.5.1-r0 apk
php85-xml 8.5.1-r0 apk
php85-xmlwriter 8.5.1-r0 apk
php85-zip 8.5.1-r0 apk
phpmyadmin 5.2.3 npm
phpmyadmin/motranslator 5.4.0 php-composer
phpmyadmin/shapefile 3.0.2 php-composer
phpmyadmin/sql-parser 5.11.1 php-composer
phpmyadmin/twig-i18n-extension 4.1.5 php-composer
popt 1.19-r4 apk
pragmarx/google2fa v9.0.0 php-composer
pragmarx/google2fa-qrcode v2.1.1 php-composer
procps-ng 4.0.5-r0 apk
psr/cache 1.0.1 php-composer
psr/container 1.1.1 php-composer
psr/http-client 1.0.3 php-composer
psr/http-factory 1.1.0 php-composer
psr/http-message 1.1 php-composer
psr/log 1.1.4 php-composer
ralouphie/getallheaders 3.0.3 php-composer
ramsey/collection 1.1.4 php-composer
ramsey/uuid 4.2.3 php-composer
readline 8.3.1-r0 apk
scanelf 1.3.8-r2 apk
shadow 4.18.0-r0 apk
skalibs-libs 2.14.4.0-r0 apk
slim/psr7 1.4.2 php-composer
spomky-labs/base64url v2.0.4 php-composer
spomky-labs/cbor-php v1.1.1 php-composer
ssl_client 1.37.0-r30 apk
symfony/cache v5.4.46 php-composer
symfony/cache-contracts v2.5.4 php-composer
symfony/config v5.4.46 php-composer
symfony/dependency-injection v5.4.48 php-composer
symfony/deprecation-contracts v2.5.4 php-composer
symfony/expression-language v5.4.45 php-composer
symfony/filesystem v5.4.45 php-composer
symfony/polyfill-ctype v1.33.0 php-composer
symfony/polyfill-iconv v1.33.0 php-composer
symfony/polyfill-mbstring v1.33.0 php-composer
symfony/polyfill-php73 v1.33.0 php-composer
symfony/polyfill-php80 v1.33.0 php-composer
symfony/polyfill-php81 v1.33.0 php-composer
symfony/polyfill-php84 v1.33.0 php-composer
symfony/process v5.4.47 php-composer
symfony/service-contracts v2.5.4 php-composer
symfony/var-exporter v5.4.45 php-composer
tecnickcom/tcpdf 6.10.0 php-composer
thecodingmachine/safe v1.3.3.1 php-composer
twig/twig v3.11.3 php-composer
tzdata 2025c-r0 apk
utmps-libs 0.1.3.1-r0 apk
web-auth/cose-lib v3.3.12 php-composer
web-auth/metadata-service v3.3.12 php-composer
web-auth/webauthn-lib v3.3.12 php-composer
webmozart/assert 1.11.0 php-composer
williamdes/mariadb-mysql-kbs v1.3.0 php-composer
xz-libs 5.8.1-r0 apk
zlib 1.3.1-r2 apk
zstd-libs 1.5.7-r2 apk

View File

@ -6,37 +6,34 @@ project_url: "https://github.com/phpmyadmin/phpmyadmin/"
project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/phpmyadmin-logo.png" project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/phpmyadmin-logo.png"
project_blurb: | project_blurb: |
[{{ project_name|capitalize }}]({{ project_url }}) is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. [{{ project_name|capitalize }}]({{ project_url }}) is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB.
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}" project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_categories: "Databases"
# supported architectures # supported architectures
available_architectures: available_architectures:
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
- { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
# container parameters # container parameters
common_param_env_vars_enabled: true common_param_env_vars_enabled: true
param_container_name: "{{ project_name }}" param_container_name: "{{ project_name }}"
param_usage_include_env: false
param_usage_include_env: true
param_env_vars:
- { env_var: "TZ", env_value: "America/New_York", desc: "Specify a timezone to use EG America/New_York"}
opt_param_usage_include_env: true opt_param_usage_include_env: true
opt_param_env_vars: opt_param_env_vars:
- { env_var: "PMA_ARBITRARY", env_value: "1", desc: "Set to `1` to allow you to connect to any server. Setting to `0` will only allow you to connect to specified hosts (See Application Setup)"} - {env_var: "PMA_ARBITRARY", env_value: "1", desc: "Set to `1` to allow you to connect to any server. Setting to `0` will only allow you to connect to specified hosts (See Application Setup)"}
- { env_var: "PMA_ABSOLUTE_URI", env_value: "https://phpmyadmin.example.com", desc: "Set the URL you will use to access the web frontend"} - {env_var: "PMA_ABSOLUTE_URI", env_value: "https://phpmyadmin.example.com", desc: "Set the URL you will use to access the web frontend"}
param_usage_include_ports: true param_usage_include_ports: true
param_ports: param_ports:
- { external_port: "80", internal_port: "80", port_desc: "Port for web frontend" } - {external_port: "80", internal_port: "80", port_desc: "Port for web frontend"}
param_usage_include_vols: true param_usage_include_vols: true
param_volumes: param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/appdata/config", desc: "Contains all relevant configuration files." } - {vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/config", desc: "Persistent config files"}
# application setup block # application setup block
readonly_supported: true
readonly_message: |
* `/tmp` must be mounted to tmpfs
* Custom themes are not supported
nonroot_supported: true
nonroot_message: |
* Custom themes are not supported
app_setup_block_enabled: true app_setup_block_enabled: true
app_setup_block: | app_setup_block: |
This image uses nginx, in contrast to the official images which offer fpm-only or Apache variants. This image uses nginx, in contrast to the official images which offer fpm-only or Apache variants.
@ -44,9 +41,73 @@ app_setup_block: |
We support all of the official [environment variables](https://docs.phpmyadmin.net/en/latest/setup.html#docker-environment-variables) for configuration as well as directly editing the config files. We support all of the official [environment variables](https://docs.phpmyadmin.net/en/latest/setup.html#docker-environment-variables) for configuration as well as directly editing the config files.
For more information check out the [phpmyadmin documentation](https://www.phpmyadmin.net/docs/). For more information check out the [phpmyadmin documentation](https://www.phpmyadmin.net/docs/).
# init diagram
init_diagram: |
"phpmyadmin: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-nginx-end -> init-config
init-os-end -> init-config
init-config -> init-config-end
init-crontab-config -> init-config-end
init-phpmyadmin-config -> init-config-end
init-config -> init-crontab-config
init-mods-end -> init-custom-files
init-adduser -> init-device-perms
base -> init-envfile
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-keygen -> init-permissions
init-nginx -> init-php
init-nginx-end -> init-phpmyadmin-config
init-folders -> init-samples
init-custom-files -> init-services
init-permissions -> init-version-checks
init-services -> svc-cron
svc-cron -> legacy-services
init-services -> svc-nginx
svc-nginx -> legacy-services
init-services -> svc-php-fpm
svc-php-fpm -> legacy-services
}
Base Images: {
"baseimage-alpine-nginx:3.23" <- "baseimage-alpine:3.23"
}
"phpmyadmin:latest" <- Base Images
# changelog # changelog
changelogs: changelogs:
- { date: "20.08.22:", desc: "Rebasing to Alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base))." } - {date: "28.12.25:", desc: "Rebase to Alpine 3.23."}
- { date: "23.01.22:", desc: "Pin versions to 5.x.x." } - {date: "23.08.25:", desc: "Add support for mTLS. Existing users will need to delete their config.inc.php and restart the container."}
- { date: "14.06.21:", desc: "Initial Release." } - {date: "05.07.25:", desc: "Rebase to Alpine 3.22."}
- {date: "19.12.24:", desc: "Rebase to Alpine 3.21."}
- {date: "27.05.24:", desc: "Existing users should update their nginx confs to avoid http2 deprecation warnings."}
- {date: "24.05.24:", desc: "Rebase to Alpine 3.20."}
- {date: "28.12.23:", desc: "Rebase to Alpine 3.19 with php 8.3."}
- {date: "25.12.23:", desc: "Existing users should update: site-confs/default.conf - Cleanup default site conf."}
- {date: "06.09.23:", desc: "Add support for custom themes."}
- {date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf."}
- {date: "13.04.23:", desc: "Move ssl.conf include to default.conf."}
- {date: "20.01.23:", desc: "Rebase to alpine 3.17 with php8.1."}
- {date: "18.11.22:", desc: "Rebasing to Alpine 3.16, migrate to s6v3."}
- {date: "20.08.22:", desc: "Rebasing to Alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base))."}
- {date: "23.01.22:", desc: "Pin versions to 5.x.x."}
- {date: "14.06.21:", desc: "Initial Release."}

View File

@ -1,9 +1,12 @@
<?php <?php
require('/config/phpmyadmin/config.secret.inc.php'); // Sourced from https://github.com/phpmyadmin/docker/blob/master/config.inc.php
require_once '/config/phpmyadmin/config.secret.inc.php';
require_once '/config/phpmyadmin/helpers.php';
/* Ensure we got the environment */ /* Ensure we got the environment */
$vars = array( $vars = [
'PMA_ARBITRARY', 'PMA_ARBITRARY',
'PMA_HOST', 'PMA_HOST',
'PMA_HOSTS', 'PMA_HOSTS',
@ -24,20 +27,45 @@ $vars = array(
'PMA_QUERYHISTORYDB', 'PMA_QUERYHISTORYDB',
'PMA_QUERYHISTORYMAX', 'PMA_QUERYHISTORYMAX',
'MAX_EXECUTION_TIME', 'MAX_EXECUTION_TIME',
'MEMORY_LIMIT' 'MEMORY_LIMIT',
); 'PMA_UPLOADDIR',
'PMA_SAVEDIR',
'PMA_SSL',
'PMA_SSLS',
'PMA_SSL_DIR',
'PMA_SSL_VERIFY',
'PMA_SSL_VERIFIES',
'PMA_SSL_CA',
'PMA_SSL_CAS',
'PMA_SSL_CA_BASE64',
'PMA_SSL_CAS_BASE64',
'PMA_SSL_KEY',
'PMA_SSL_KEYS',
'PMA_SSL_KEY_BASE64',
'PMA_SSL_KEYS_BASE64',
'PMA_SSL_CERT',
'PMA_SSL_CERTS',
'PMA_SSL_CERT_BASE64',
'PMA_SSL_CERTS_BASE64',
];
foreach ($vars as $var) { foreach ($vars as $var) {
$env = getenv($var); $env = getenv($var);
if (!isset($_ENV[$var]) && $env !== false) { if (!isset($_ENV[$var]) && $env !== false) {
$_ENV[$var] = $env; $_ENV[$var] = $env;
} }
} }
if (! defined('PMA_SSL_DIR')) {
define('PMA_SSL_DIR', $_ENV['PMA_SSL_DIR'] ?? '/config/phpmyadmin/ssl');
}
if (isset($_ENV['PMA_QUERYHISTORYDB'])) { if (isset($_ENV['PMA_QUERYHISTORYDB'])) {
$cfg['QueryHistoryDB'] = boolval($_ENV['PMA_QUERYHISTORYDB']); $cfg['QueryHistoryDB'] = (bool) $_ENV['PMA_QUERYHISTORYDB'];
} }
if (isset($_ENV['PMA_QUERYHISTORYMAX'])) { if (isset($_ENV['PMA_QUERYHISTORYMAX'])) {
$cfg['QueryHistoryMax'] = intval($_ENV['PMA_QUERYHISTORYMAX']); $cfg['QueryHistoryMax'] = (int) $_ENV['PMA_QUERYHISTORYMAX'];
} }
/* Arbitrary server connection */ /* Arbitrary server connection */
@ -50,29 +78,84 @@ if (isset($_ENV['PMA_ABSOLUTE_URI'])) {
$cfg['PmaAbsoluteUri'] = trim($_ENV['PMA_ABSOLUTE_URI']); $cfg['PmaAbsoluteUri'] = trim($_ENV['PMA_ABSOLUTE_URI']);
} }
if (isset($_ENV['PMA_SSL_CA_BASE64'])) {
$_ENV['PMA_SSL_CA'] = decodeBase64AndSaveFiles($_ENV['PMA_SSL_CA_BASE64'], 'phpmyadmin-ssl-CA', 'pem', PMA_SSL_DIR);
}
/* Decode and save the SSL key from base64 */
if (isset($_ENV['PMA_SSL_KEY_BASE64'])) {
$_ENV['PMA_SSL_KEY'] = decodeBase64AndSaveFiles($_ENV['PMA_SSL_KEY_BASE64'], 'phpmyadmin-ssl-CERT', 'cert', PMA_SSL_DIR);
}
/* Decode and save the SSL certificate from base64 */
if (isset($_ENV['PMA_SSL_CERT_BASE64'])) {
$_ENV['PMA_SSL_CERT'] = decodeBase64AndSaveFiles($_ENV['PMA_SSL_CERT_BASE64'], 'phpmyadmin-ssl-CERT', 'cert', PMA_SSL_DIR);
}
/* Decode and save multiple SSL CA certificates from base64 */
if (isset($_ENV['PMA_SSL_CAS_BASE64'])) {
$_ENV['PMA_SSL_CAS'] = decodeBase64AndSaveFiles($_ENV['PMA_SSL_CAS_BASE64'], 'phpmyadmin-ssl-CA', 'pem', PMA_SSL_DIR);
}
/* Decode and save multiple SSL keys from base64 */
if (isset($_ENV['PMA_SSL_KEYS_BASE64'])) {
$_ENV['PMA_SSL_KEYS'] = decodeBase64AndSaveFiles($_ENV['PMA_SSL_KEYS_BASE64'], 'phpmyadmin-ssl-CERT', 'cert', PMA_SSL_DIR);
}
/* Decode and save multiple SSL certificates from base64 */
if (isset($_ENV['PMA_SSL_CERTS_BASE64'])) {
$_ENV['PMA_SSL_CERTS'] = decodeBase64AndSaveFiles($_ENV['PMA_SSL_CERTS_BASE64'], 'phpmyadmin-ssl-KEY', 'key', PMA_SSL_DIR);
}
/* Figure out hosts */ /* Figure out hosts */
/* Fallback to default linked */ /* Fallback to default linked */
$hosts = array('db'); $hosts = ['db'];
/* Set by environment */ /* Set by environment */
if (!empty($_ENV['PMA_HOST'])) { if (! empty($_ENV['PMA_HOST'])) {
$hosts = array($_ENV['PMA_HOST']); $hosts = [$_ENV['PMA_HOST']];
$verbose = array($_ENV['PMA_VERBOSE']); $verbose = [$_ENV['PMA_VERBOSE']];
$ports = array($_ENV['PMA_PORT']); $ports = [$_ENV['PMA_PORT']];
} elseif (!empty($_ENV['PMA_HOSTS'])) { $ssls = [$_ENV['PMA_SSL']];
$ssl_verifies = [$_ENV['PMA_SSL_VERIFY']];
$ssl_cas = [$_ENV['PMA_SSL_CA']];
$ssl_keys = [$_ENV['PMA_SSL_KEY']];
$ssl_certs = [$_ENV['PMA_SSL_CERT']];
} elseif (! empty($_ENV['PMA_HOSTS'])) {
$hosts = array_map('trim', explode(',', $_ENV['PMA_HOSTS'])); $hosts = array_map('trim', explode(',', $_ENV['PMA_HOSTS']));
$verbose = array_map('trim', explode(',', $_ENV['PMA_VERBOSES'])); $verbose = array_map('trim', explode(',', $_ENV['PMA_VERBOSES']));
$ports = array_map('trim', explode(',', $_ENV['PMA_PORTS'])); $ports = array_map('trim', explode(',', $_ENV['PMA_PORTS']));
$ssls = array_map('trim', explode(',', $_ENV['PMA_SSLS']));
$ssl_verifies = array_map('trim', explode(',', $_ENV['PMA_SSL_VERIFIES']));
$ssl_cas = array_map('trim', explode(',', $_ENV['PMA_SSL_CAS']));
$ssl_keys = array_map('trim', explode(',', $_ENV['PMA_SSL_KEYS']));
$ssl_certs = array_map('trim', explode(',', $_ENV['PMA_SSL_CERTS']));
} }
if (!empty($_ENV['PMA_SOCKET'])) {
$sockets = array($_ENV['PMA_SOCKET']); if (! empty($_ENV['PMA_SOCKET'])) {
} elseif (!empty($_ENV['PMA_SOCKETS'])) { $sockets = [$_ENV['PMA_SOCKET']];
} elseif (! empty($_ENV['PMA_SOCKETS'])) {
$sockets = explode(',', $_ENV['PMA_SOCKETS']); $sockets = explode(',', $_ENV['PMA_SOCKETS']);
} }
/* Server settings */ /* Server settings */
for ($i = 1; isset($hosts[$i - 1]); $i++) { for ($i = 1; isset($hosts[$i - 1]); $i++) {
if (isset($ssls[$i - 1]) && $ssls[$i - 1] === '1') {
$cfg['Servers'][$i]['ssl'] = $ssls[$i - 1];
}
if (isset($ssl_verifies[$i - 1]) && $ssl_verifies[$i - 1] === '1') {
$cfg['Servers'][$i]['ssl_verify'] = $ssl_verifies[$i - 1];
}
if (isset($ssl_cas[$i - 1])) {
$cfg['Servers'][$i]['ssl_ca'] = $ssl_cas[$i - 1];
}
if (isset($ssl_keys[$i - 1])) {
$cfg['Servers'][$i]['ssl_key'] = $ssl_keys[$i - 1];
}
if (isset($ssl_certs[$i - 1])) {
$cfg['Servers'][$i]['ssl_cert'] = $ssl_certs[$i - 1];
}
$cfg['Servers'][$i]['host'] = $hosts[$i - 1]; $cfg['Servers'][$i]['host'] = $hosts[$i - 1];
if (isset($verbose[$i - 1])) { if (isset($verbose[$i - 1])) {
$cfg['Servers'][$i]['verbose'] = $verbose[$i - 1]; $cfg['Servers'][$i]['verbose'] = $verbose[$i - 1];
@ -124,9 +207,10 @@ for ($i = 1; isset($hosts[$i - 1]); $i++) {
$cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = true; $cfg['Servers'][$i]['AllowNoPassword'] = true;
} }
for ($i = 1; isset($sockets[$i - 1]); $i++) { // Avoid overwriting the last server id $i, use another variable name
$cfg['Servers'][$i]['socket'] = $sockets[$i - 1]; for ($socketHostId = 1; isset($sockets[$socketHostId - 1]); $socketHostId++) {
$cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$socketHostId]['socket'] = $sockets[$socketHostId - 1];
$cfg['Servers'][$socketHostId]['host'] = 'localhost';
} }
/* /*
* Revert back to last configured server to make * Revert back to last configured server to make
@ -135,8 +219,13 @@ for ($i = 1; isset($sockets[$i - 1]); $i++) {
$i--; $i--;
/* Uploads setup */ /* Uploads setup */
$cfg['UploadDir'] = ''; if (isset($_ENV['PMA_UPLOADDIR'])) {
$cfg['SaveDir'] = ''; $cfg['UploadDir'] = $_ENV['PMA_UPLOADDIR'];
}
if (isset($_ENV['PMA_SAVEDIR'])) {
$cfg['SaveDir'] = $_ENV['PMA_SAVEDIR'];
}
if (isset($_ENV['MAX_EXECUTION_TIME'])) { if (isset($_ENV['MAX_EXECUTION_TIME'])) {
$cfg['ExecTimeLimit'] = $_ENV['MAX_EXECUTION_TIME']; $cfg['ExecTimeLimit'] = $_ENV['MAX_EXECUTION_TIME'];
@ -148,5 +237,12 @@ if (isset($_ENV['MEMORY_LIMIT'])) {
/* Include User Defined Settings Hook */ /* Include User Defined Settings Hook */
if (file_exists('/config/phpmyadmin/config.user.inc.php')) { if (file_exists('/config/phpmyadmin/config.user.inc.php')) {
include('/config/phpmyadmin/config.user.inc.php'); include '/config/phpmyadmin/config.user.inc.php';
}
/* Support additional configurations */
if (is_dir('/config/phpmyadmin/conf.d/')) {
foreach (glob('/config/phpmyadmin/conf.d/*.php') as $filename) {
include $filename;
}
} }

53
root/defaults/helpers.php Normal file
View File

@ -0,0 +1,53 @@
<?php
// Sourced from https://github.com/phpmyadmin/docker/blob/master/helpers.php
declare(strict_types=1);
/**
* Helper function to decode and save multiple SSL files from base64.
*
* @param string $base64FilesContents The base64 encoded string containing multiple files separated by commas.
* If no commas are present, the entire string is treated as a single file.
* @param string $prefix The prefix to use for the generated file names.
* @param string $extension The file extension to use for the generated files.
* @param string $storageFolder The folder where to store the generated files.
*
* @return string A comma-separated list of paths to the generated files.
*/
function decodeBase64AndSaveFiles(string $base64FilesContents, string $prefix, string $extension, string $storageFolder): string
{
// Ensure the output directory exists
if (! is_dir($storageFolder)) {
mkdir($storageFolder, 0755, true);
}
// Split the base64 string into an array of files
$base64FilesContents = explode(',', trim($base64FilesContents));
$counter = 1;
$outputFiles = [];
// Process each file
foreach ($base64FilesContents as $base64FileContent) {
$outputFile = $storageFolder . '/' . $prefix . '-' . $counter . '.' . $extension;
$fileContent = base64_decode($base64FileContent, true);
if ($fileContent === false) {
echo 'Failed to decode: ' . $base64FileContent;
exit(1);
}
// Write the decoded file to the output directory
if (file_put_contents($outputFile, $fileContent) === false) {
echo 'Failed to write to ' . $outputFile;
exit(1);
}
// Add the output file path to the list
$outputFiles[] = $outputFile;
$counter++;
}
// Return a comma-separated list of the generated file paths
return implode(',', $outputFiles);
}

View File

@ -1,14 +1,22 @@
## Version 2022/08/20 - Changelog: https://github.com/linuxserver/docker-phpmyadmin/commits/main/root/defaults/nginx/site-confs/default.conf.sample ## Version 2024/07/16 - Changelog: https://github.com/linuxserver/docker-phpmyadmin/commits/main/root/defaults/nginx/site-confs/default.conf.sample
map $sent_http_content_type $expires {
default off;
~js/ max;
~themes/ max;
~doc/ max;
}
server { server {
listen 80 default_server; listen 80 default_server;
listen [::]:80 default_server; listen [::]:80 default_server;
listen 443 ssl default_server;
listen 443 ssl http2; listen [::]:443 ssl default_server;
listen [::]:443 ssl http2;
server_name _; server_name _;
include /config/nginx/ssl.conf;
root /app/www/public; root /app/www/public;
index index.html index.htm index.php; index index.html index.htm index.php;
@ -17,20 +25,23 @@ server {
#auth_basic "Restricted"; #auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd; #auth_basic_user_file /config/nginx/.htpasswd;
try_files $uri $uri/ /index.php$is_args$args; expires $expires;
}
# set expiration of assets to MAX for caching try_files $uri $uri/ /index.html /index.htm /index.php$is_args$args;
location ~* \.(ico|css|js)(\?[0-9]+)?$ {
expires max;
log_not_found off;
} }
location ~ ^(.+\.php)(.*)$ { location ~ ^(.+\.php)(.*)$ {
# enable the next two lines for http auth
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_split_path_info ^(.+\.php)(.*)$;
if (!-f $document_root$fastcgi_script_name) { return 404; }
fastcgi_pass 127.0.0.1:9000; fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php; fastcgi_index index.php;
include /etc/nginx/fastcgi_params; include /etc/nginx/fastcgi_params;
fastcgi_read_timeout 3600;
} }
# deny access to .htaccess/.htpasswd files # deny access to .htaccess/.htpasswd files

View File

@ -1,23 +0,0 @@
#!/usr/bin/with-contenv bash
mkdir -p /config/phpmyadmin
if [ ! -f /config/phpmyadmin/config.secret.inc.php ]; then
cat > /config/phpmyadmin/config.secret.inc.php <<EOT
<?php
\$cfg['blowfish_secret'] = '$(tr -dc 'a-zA-Z0-9~!@#$%^&*_()+}{?></";.,[]=-' < /dev/urandom | fold -w 32 | head -n 1)';
EOT
fi
if [ ! -f /config/phpmyadmin/config.user.inc.php ]; then
touch /config/phpmyadmin/config.user.inc.php
fi
if [ ! -f /config/phpmyadmin/config.inc.php ]; then
cp /defaults/config.inc.php /config/phpmyadmin/config.inc.php
fi
chown -R abc:abc \
/config
find /app -print0 | xargs -P "$(nproc)" -I {} -0 chown abc:abc {}

View File

@ -0,0 +1,51 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
mkdir -p \
/config/phpmyadmin
if [[ ! -f /config/phpmyadmin/config.secret.inc.php ]]; then
cat >/config/phpmyadmin/config.secret.inc.php <<EOT
<?php
\$cfg['blowfish_secret'] = '$(tr -dc 'a-zA-Z0-9~!@#$%^&*_()+}{?></";.,[]=-' </dev/urandom | fold -w 32 | head -n 1)';
EOT
fi
if [[ -n "${PMA_CONFIG_BASE64}" ]]; then
echo "${PMA_CONFIG_BASE64}" | base64 -d > /config/phpmyadmin/config.inc.php
fi
if [[ -n "${PMA_USER_CONFIG_BASE64}" ]]; then
echo "${PMA_USER_CONFIG_BASE64}" | base64 -d > /config/phpmyadmin/config.user.inc.php
fi
if [[ ! -f /config/phpmyadmin/config.user.inc.php ]]; then
touch /config/phpmyadmin/config.user.inc.php
fi
if [[ ! -f /config/phpmyadmin/config.inc.php ]]; then
cp /defaults/config.inc.php /config/phpmyadmin/config.inc.php
fi
if [[ ! -f /config/phpmyadmin/helpers.php ]]; then
cp /defaults/helpers.php /config/phpmyadmin/helpers.php
fi
if [[ -z ${LSIO_READ_ONLY_FS} ]] && [[ -z ${LSIO_NON_ROOT_USER} ]]; then
# Set up themes
if [[ -d "/config/themes" && ! -L "/app/www/public/themes" ]]; then
cp -R /app/www/public/themes/* /config/themes
rm -rf "/app/www/public/themes"
fi
if [[ ! -d "/config/themes" && ! -L "/app/www/public/themes" ]]; then
mv "/app/www/public/themes" /config/themes
fi
if [[ -d "/config/themes" && ! -L "/app/www/public/themes" ]]; then
ln -s "/config/themes" "/app/www/public/themes"
fi
fi
if [[ -z ${LSIO_NON_ROOT_USER} ]]; then
lsiown -R abc:abc \
/config
fi

View File

@ -0,0 +1 @@
oneshot

View File

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

3
root/migrations/02-default-location Normal file → Executable file
View File

@ -1,10 +1,11 @@
#!/usr/bin/with-contenv bash #!/usr/bin/with-contenv bash
# shellcheck shell=bash
DEFAULT_CONF="/config/nginx/site-confs/default.conf" DEFAULT_CONF="/config/nginx/site-confs/default.conf"
OLD_ROOT="root /app/phpmyadmin;" OLD_ROOT="root /app/phpmyadmin;"
NEW_ROOT="root /app/www/public;" NEW_ROOT="root /app/www/public;"
if grep -q "${OLD_ROOT}" "${DEFAULT_CONF}";then if [[ -f "${DEFAULT_CONF}" ]] && grep -q "${OLD_ROOT}" "${DEFAULT_CONF}" 2>/dev/null; then
echo "updating root in ${DEFAULT_CONF}" echo "updating root in ${DEFAULT_CONF}"
sed -i "s|${OLD_ROOT}|${NEW_ROOT}|" "${DEFAULT_CONF}" sed -i "s|${OLD_ROOT}|${NEW_ROOT}|" "${DEFAULT_CONF}"
fi fi