Compare commits

...

225 Commits

Author SHA1 Message Date
LinuxServer-CI
c8f2ed8321
Bot Updating Package Versions 2026-02-04 07:10:07 +00:00
LinuxServer-CI
5f565c7497
Bot Updating Package Versions 2026-01-28 06:55:35 +00:00
LinuxServer-CI
ba47d58345
Bot Updating Package Versions 2025-12-17 06:50:31 +00:00
LinuxServer-CI
a315aa9248
Bot Updating Package Versions 2025-12-03 06:48:46 +00:00
LinuxServer-CI
5f1db1a2c4
Bot Updating Templated Files 2025-11-19 06:43:44 +00:00
LinuxServer-CI
d3efe2a78a
Bot Updating Templated Files 2025-10-22 06:44:32 +00:00
LinuxServer-CI
47fe64dcce
Bot Updating Package Versions 2025-10-15 06:43:21 +00:00
LinuxServer-CI
58aed2420a
Bot Updating Package Versions 2025-10-08 06:43:14 +00:00
LinuxServer-CI
0774a4ded6
Bot Updating Package Versions 2025-10-01 06:43:07 +00:00
LinuxServer-CI
64a4633883
Bot Updating Package Versions 2025-08-13 06:48:07 +00:00
LinuxServer-CI
1f5b4094e9
Bot Updating Package Versions 2025-07-23 06:50:12 +00:00
LinuxServer-CI
6ab519c429
Bot Updating Package Versions 2025-07-16 06:49:04 +00:00
LinuxServer-CI
b1065b0cca
Bot Updating Templated Files 2025-07-09 06:48:03 +00:00
LinuxServer-CI
f84851797b
Bot Updating Templated Files 2025-07-09 06:46:13 +00:00
LinuxServer-CI
5e522d2c8a
Bot Updating Templated Files 2025-06-11 06:43:16 +00:00
LinuxServer-CI
21ec93ef92
Bot Updating Package Versions 2025-05-21 06:45:03 +00:00
LinuxServer-CI
517cdc9e71
Bot Updating Templated Files 2025-05-21 06:41:35 +00:00
LinuxServer-CI
6c06d48cf7
Bot Updating Package Versions 2025-04-02 06:41:22 +00:00
LinuxServer-CI
60940a3d22
Bot Updating Package Versions 2025-02-26 06:38:02 +00:00
LinuxServer-CI
3fde281ee7
Bot Updating Package Versions 2025-02-19 06:37:09 +00:00
LinuxServer-CI
7659fd80b5
Bot Updating Package Versions 2025-02-12 06:44:02 +00:00
LinuxServer-CI
dcad935931
Bot Updating Templated Files 2025-02-12 06:35:06 +00:00
LinuxServer-CI
a57f2ff4fd
Bot Updating Templated Files 2025-01-29 06:36:39 +00:00
LinuxServer-CI
d70cdb4b54
Bot Updating Templated Files 2025-01-29 06:35:18 +00:00
quietsy
e9e31fadea
Merge pull request #23 from linuxserver/add-project-categories
Add categories to readme-vars.yml
2025-01-22 19:51:49 +02:00
quietsy
e859acd416 Add categories to readme-vars.yml 2025-01-22 16:40:07 +02:00
LinuxServer-CI
3f961fccb3
Bot Updating Package Versions 2025-01-15 06:39:59 +00:00
LinuxServer-CI
c25c129afa
Bot Updating Package Versions 2025-01-08 06:36:31 +00:00
LinuxServer-CI
5f1833948f
Bot Updating Package Versions 2024-12-21 16:51:35 +00:00
LinuxServer-CI
11e65e2615
Bot Updating Package Versions 2024-12-18 06:46:03 +00:00
LinuxServer-CI
68c44c6e19
Bot Updating Templated Files 2024-12-18 06:39:23 +00:00
LinuxServer-CI
6f052bf30b
Bot Updating Templated Files 2024-12-18 06:37:45 +00:00
LinuxServer-CI
8a30b6a655
Bot Updating Package Versions 2024-12-11 06:49:46 +00:00
LinuxServer-CI
6e0d73ab16
Bot Updating Templated Files 2024-12-11 06:46:13 +00:00
LinuxServer-CI
0095f96bc0
Bot Updating Templated Files 2024-12-11 06:44:22 +00:00
LinuxServer-CI
b7bd547926
Bot Updating Templated Files 2024-12-11 06:40:44 +00:00
LinuxServer-CI
63e19fff61
Bot Updating Package Versions 2024-11-27 06:39:07 +00:00
LinuxServer-CI
6256502bce
Bot Updating Package Versions 2024-11-20 06:39:56 +00:00
LinuxServer-CI
28eb4dc7ef
Bot Updating Package Versions 2024-11-13 06:41:31 +00:00
LinuxServer-CI
c4e0e0f1d4
Bot Updating Templated Files 2024-11-13 06:37:47 +00:00
LinuxServer-CI
3852cce4f1
Bot Updating Templated Files 2024-11-13 06:35:28 +00:00
LinuxServer-CI
1d70f20cde
Bot Updating Package Versions 2024-11-06 06:36:58 +00:00
LinuxServer-CI
0982a24df4
Bot Updating Package Versions 2024-10-30 06:43:56 +00:00
LinuxServer-CI
a507b52c68
Bot Updating Package Versions 2024-10-23 06:38:29 +00:00
LinuxServer-CI
27ba74b16d
Bot Updating Package Versions 2024-10-16 06:36:44 +00:00
LinuxServer-CI
b2913f49ae
Bot Updating Package Versions 2024-10-09 06:39:42 +00:00
LinuxServer-CI
6bd7261f7b
Bot Updating Package Versions 2024-10-02 06:42:39 +00:00
LinuxServer-CI
31a1b03df3
Bot Updating Templated Files 2024-10-02 06:38:57 +00:00
LinuxServer-CI
41eced32a0
Bot Updating Templated Files 2024-10-02 06:37:21 +00:00
LinuxServer-CI
de47a1842a
Bot Updating Templated Files 2024-10-02 06:35:41 +00:00
LinuxServer-CI
bb0d407c00
Bot Updating Package Versions 2024-09-25 06:37:53 +00:00
LinuxServer-CI
1b177072cc
Bot Updating Package Versions 2024-09-18 06:36:30 +00:00
LinuxServer-CI
df23b3ecc7
Bot Updating Package Versions 2024-09-11 06:35:39 +00:00
LinuxServer-CI
7049dffc2d
Bot Updating Package Versions 2024-09-04 06:35:23 +00:00
LinuxServer-CI
4f4c18ecfd
Bot Updating Package Versions 2024-08-28 06:36:21 +00:00
LinuxServer-CI
03651bea6e
Bot Updating Package Versions 2024-08-21 06:37:18 +00:00
LinuxServer-CI
617bef66e1
Bot Updating Templated Files 2024-08-21 06:33:49 +00:00
LinuxServer-CI
c6d644ca04 Bot Updating Templated Files 2024-08-21 06:32:29 +00:00
LinuxServer-CI
05fbe1264a Bot Updating Package Versions 2024-08-14 06:33:45 +00:00
LinuxServer-CI
9400894fff Bot Updating Package Versions 2024-08-07 06:35:57 +00:00
LinuxServer-CI
27ef8f371b Bot Updating Package Versions 2024-07-31 06:28:20 +00:00
LinuxServer-CI
25ef6508fe Bot Updating Package Versions 2024-07-17 06:38:36 +00:00
LinuxServer-CI
c85683b77c Bot Updating Templated Files 2024-07-17 06:34:36 +00:00
LinuxServer-CI
d9c36f6d13 Bot Updating Templated Files 2024-07-17 06:33:08 +00:00
LinuxServer-CI
2e0cd8e08a Bot Updating Package Versions 2024-07-10 06:34:22 +00:00
LinuxServer-CI
4b91d2c66e Bot Updating Package Versions 2024-07-03 06:36:42 +00:00
LinuxServer-CI
e0aa0f7800 Bot Updating Package Versions 2024-06-28 17:57:48 +00:00
Roxedus
5df1323c63
Merge pull request #21 from linuxserver/master-3.20 2024-06-28 19:54:41 +02:00
thespad
6bd4c0005a
Rebase to 3.20 2024-06-27 14:35:04 +01:00
LinuxServer-CI
7e87b7a0d5 Bot Updating Package Versions 2024-06-26 06:35:00 +00:00
LinuxServer-CI
f483a4508c Bot Updating Package Versions 2024-06-19 06:32:25 +00:00
LinuxServer-CI
a10a84d79c Bot Updating Package Versions 2024-06-12 06:32:04 +00:00
LinuxServer-CI
64974b307d Bot Updating Package Versions 2024-06-05 06:32:20 +00:00
LinuxServer-CI
627db07a67 Bot Updating Package Versions 2024-05-29 06:31:47 +00:00
LinuxServer-CI
0d63b96c1f Bot Updating Package Versions 2024-05-22 06:35:59 +00:00
LinuxServer-CI
8e1ba2e2be Bot Updating Templated Files 2024-05-22 06:32:32 +00:00
LinuxServer-CI
78058bc288 Bot Updating Templated Files 2024-05-22 06:30:04 +00:00
LinuxServer-CI
7b31cc07be Bot Updating Package Versions 2024-05-15 06:33:59 +00:00
LinuxServer-CI
c212e47445 Bot Updating Templated Files 2024-05-15 06:29:29 +00:00
LinuxServer-CI
d2346f523d Bot Updating Package Versions 2024-05-08 06:26:56 +00:00
LinuxServer-CI
de962ddd6d Bot Updating Package Versions 2024-05-06 01:46:24 +00:00
LinuxServer-CI
5975cb18c2 Bot Updating Templated Files 2024-05-06 01:42:55 +00:00
LinuxServer-CI
fbad4e3ea5 Bot Updating Package Versions 2024-05-05 15:51:30 +00:00
LinuxServer-CI
8b9375ff2b Bot Updating Package Versions 2024-05-01 06:34:14 +00:00
LinuxServer-CI
5e4906fdea Bot Updating Templated Files 2024-05-01 06:29:42 +00:00
LinuxServer-CI
8b35e8f4ef Bot Updating Package Versions 2024-04-24 06:34:15 +00:00
LinuxServer-CI
b29e77c52e Bot Updating Package Versions 2024-04-10 06:29:26 +00:00
LinuxServer-CI
52df11b1dd Bot Updating Package Versions 2024-03-27 06:28:26 +00:00
LinuxServer-CI
1b51e4f7f6 Bot Updating Package Versions 2024-03-20 06:28:59 +00:00
LinuxServer-CI
4ca53eff68 Bot Updating Package Versions 2024-03-13 06:30:22 +00:00
LinuxServer-CI
120f988fc5 Bot Updating Templated Files 2024-03-13 06:26:56 +00:00
LinuxServer-CI
8e2b081ba4 Bot Updating Package Versions 2024-03-06 06:35:08 +00:00
LinuxServer-CI
f02ecec2f9 Bot Updating Templated Files 2024-03-06 06:31:47 +00:00
LinuxServer-CI
b35f0fe2fa Bot Updating Templated Files 2024-03-06 06:28:30 +00:00
LinuxServer-CI
9e74e6b92a Bot Updating Package Versions 2024-02-21 06:27:58 +00:00
LinuxServer-CI
6b72716a1e Bot Updating Package Versions 2024-02-14 06:28:12 +00:00
LinuxServer-CI
298496dd53 Bot Updating Package Versions 2024-02-07 06:28:31 +00:00
LinuxServer-CI
87000e3919 Bot Updating Package Versions 2024-01-31 06:30:00 +00:00
LinuxServer-CI
8dd5d2d04e Bot Updating Package Versions 2024-01-24 06:31:50 +00:00
LinuxServer-CI
c7690a679a Bot Updating Package Versions 2024-01-17 06:30:03 +00:00
LinuxServer-CI
d64694400b Bot Updating Package Versions 2024-01-10 06:33:46 +00:00
LinuxServer-CI
7af2c2736a Bot Updating Templated Files 2024-01-10 06:30:26 +00:00
LinuxServer-CI
aabc1aa623 Bot Updating Templated Files 2024-01-10 06:29:02 +00:00
LinuxServer-CI
7c99692cf4 Bot Updating Package Versions 2024-01-03 06:29:34 +00:00
LinuxServer-CI
6314e4a763 Bot Updating Package Versions 2023-12-27 06:30:36 +00:00
LinuxServer-CI
af2da0152f Bot Updating Package Versions 2023-12-20 06:26:29 +00:00
LinuxServer-CI
0847f6bfae Bot Updating Package Versions 2023-12-15 20:06:19 +00:00
Adam
c7f2b0e14f
Merge pull request #20 from linuxserver/3.19
Rebase to 3.19
2023-12-15 20:00:58 +00:00
LinuxServer-CI
8236d0e6b6 Bot Updating Package Versions 2023-12-13 06:29:41 +00:00
TheSpad
46e43f02b2
Rebase to 3.19 2023-12-12 21:05:25 +00:00
LinuxServer-CI
facae56a91 Bot Updating Package Versions 2023-12-06 06:30:53 +00:00
LinuxServer-CI
f8ee7ef181 Bot Updating Package Versions 2023-11-22 06:33:37 +00:00
LinuxServer-CI
829af0a590 Bot Updating Templated Files 2023-11-22 06:29:06 +00:00
LinuxServer-CI
014ce0d954 Bot Updating Package Versions 2023-11-15 06:29:41 +00:00
LinuxServer-CI
fc82545f46 Bot Updating Package Versions 2023-11-08 06:28:58 +00:00
LinuxServer-CI
350a31ee72 Bot Updating Package Versions 2023-11-01 06:30:23 +00:00
LinuxServer-CI
a7c2b66c8b Bot Updating Package Versions 2023-10-25 06:30:09 +00:00
LinuxServer-CI
81debb7dd7 Bot Updating Package Versions 2023-10-18 06:30:33 +00:00
LinuxServer-CI
0ea04d157e Bot Updating Package Versions 2023-10-11 06:36:50 +00:00
LinuxServer-CI
dcbdac23a1 Bot Updating Templated Files 2023-10-11 06:31:44 +00:00
LinuxServer-CI
2d8d15d2a0 Bot Updating Templated Files 2023-10-11 06:29:08 +00:00
LinuxServer-CI
12af4b815f Bot Updating Package Versions 2023-10-04 06:31:05 +00:00
LinuxServer-CI
af5e9738af Bot Updating Package Versions 2023-09-27 06:29:27 +00:00
LinuxServer-CI
806778b5ab Bot Updating Package Versions 2023-09-20 06:29:09 +00:00
LinuxServer-CI
338d47f0ac Bot Updating Package Versions 2023-09-13 06:28:52 +00:00
LinuxServer-CI
e997fb8ee6 Bot Updating Package Versions 2023-09-06 06:29:45 +00:00
LinuxServer-CI
67b2c8a4ec Bot Updating Package Versions 2023-08-30 06:27:56 +00:00
LinuxServer-CI
f2a0e85136 Bot Updating Package Versions 2023-08-23 06:30:46 +00:00
LinuxServer-CI
4690a4ead2 Bot Updating Package Versions 2023-08-16 06:27:20 +00:00
LinuxServer-CI
927802d292 Bot Updating Package Versions 2023-08-09 06:29:57 +00:00
LinuxServer-CI
7f6b9cc181 Bot Updating Package Versions 2023-08-02 06:27:58 +00:00
LinuxServer-CI
91f2e34fb6 Bot Updating Package Versions 2023-07-26 06:28:50 +00:00
LinuxServer-CI
15075691e9 Bot Updating Package Versions 2023-07-19 06:29:01 +00:00
LinuxServer-CI
89450a0c8a Bot Updating Package Versions 2023-07-12 06:33:10 +00:00
LinuxServer-CI
c92a2ebae8 Bot Updating Package Versions 2023-07-05 06:40:26 +00:00
LinuxServer-CI
ed3a146bd1 Bot Updating Templated Files 2023-07-05 06:37:16 +00:00
LinuxServer-CI
dcece5c291 Bot Updating Templated Files 2023-07-05 06:34:56 +00:00
LinuxServer-CI
1f90b6c083 Bot Updating Templated Files 2023-07-05 06:32:40 +00:00
LinuxServer-CI
8b3c857145 Bot Updating Package Versions 2023-06-28 06:32:09 +00:00
LinuxServer-CI
f01146cd18 Bot Updating Package Versions 2023-06-21 06:30:36 +00:00
LinuxServer-CI
f79289d560 Bot Updating Package Versions 2023-06-14 06:28:12 +00:00
LinuxServer-CI
64d8604b16 Bot Updating Package Versions 2023-06-07 12:37:49 +00:00
LinuxServer-CI
bdab66b6bc Bot Updating Package Versions 2023-05-31 06:29:48 +00:00
LinuxServer-CI
e6c838e80d Bot Updating Package Versions 2023-05-24 06:31:57 +00:00
LinuxServer-CI
73ae1a3e68 Bot Updating Templated Files 2023-05-24 06:27:26 +00:00
LinuxServer-CI
21fb012f42 Bot Updating Package Versions 2023-05-17 06:29:16 +00:00
LinuxServer-CI
8c50dc5d84 Bot Updating Package Versions 2023-05-13 21:56:47 +00:00
Adam
0872cec764
Merge pull request #19 from linuxserver/nonroot-npm 2023-05-13 22:53:04 +01:00
TheSpad
2a0341c71d
Run npm link 2023-05-13 17:26:30 +01:00
TheSpad
22af0e4de2
Run npm install as abc 2023-05-13 16:49:18 +01:00
LinuxServer-CI
8f26438325 Bot Updating Package Versions 2023-05-10 06:28:16 +00:00
LinuxServer-CI
d36cc84a75 Bot Updating Package Versions 2023-05-03 06:27:36 +00:00
LinuxServer-CI
7b13947e21 Bot Updating Package Versions 2023-04-26 06:32:37 +00:00
LinuxServer-CI
df15d90f55 Bot Updating Templated Files 2023-04-26 01:30:08 -05:00
LinuxServer-CI
de7602ac2b Bot Updating Templated Files 2023-04-26 01:28:28 -05:00
LinuxServer-CI
54f2057d06 Bot Updating Package Versions 2023-04-19 01:29:38 -05:00
LinuxServer-CI
417909481d Bot Updating Package Versions 2023-04-12 01:30:53 -05:00
LinuxServer-CI
9aa97ad88d Bot Updating Package Versions 2023-04-05 01:29:10 -05:00
LinuxServer-CI
6709b0a4e1 Bot Updating Package Versions 2023-04-02 03:53:39 -05:00
LinuxServer-CI
4219900980 Bot Updating Templated Files 2023-04-02 10:48:25 +02:00
LinuxServer-CI
df650c494c Bot Updating Templated Files 2023-04-02 10:46:52 +02:00
LinuxServer-CI
4f7d8bcace Bot Updating Templated Files 2023-04-02 03:45:08 -05:00
LinuxServer-CI
39ac51088a Bot Updating Package Versions 2023-03-26 10:46:07 +02:00
LinuxServer-CI
47bfc0d4b4 Bot Updating Package Versions 2023-03-19 03:46:03 -05:00
LinuxServer-CI
7468d3f7ef Bot Updating Package Versions 2023-03-12 03:45:50 -05:00
LinuxServer-CI
68363af2d4 Bot Updating Package Versions 2023-03-05 09:48:24 +01:00
LinuxServer-CI
d3a877df60 Bot Updating Templated Files 2023-03-05 09:44:52 +01:00
LinuxServer-CI
77aafacdaa Bot Updating Package Versions 2023-02-26 02:46:56 -06:00
LinuxServer-CI
146311d4ef Bot Updating Package Versions 2023-02-17 17:09:13 +01:00
Adam
02fdedfbe7
Merge pull request #17 from linuxserver/3.17 2023-02-17 16:06:07 +00:00
TheSpad
c2bd0a4d6b
Use jq to get port 2023-02-14 09:02:36 +00:00
TheSpad
4a1ebd0e4f
Fix line ending 2023-02-13 19:12:27 +00:00
TheSpad
462668af92
Rebase to 3.17 2023-02-13 18:33:14 +00:00
LinuxServer-CI
19201bfd55 Bot Updating Package Versions 2023-02-12 09:50:15 +01:00
LinuxServer-CI
0af96e5ca1 Bot Updating Templated Files 2023-02-12 02:46:08 -06:00
LinuxServer-CI
9d01f6283c Bot Updating Templated Files 2023-02-12 09:44:37 +01:00
LinuxServer-CI
465ecf0c25 Bot Updating Package Versions 2023-01-01 09:46:00 +01:00
LinuxServer-CI
3787f38d8d Bot Updating Templated Files 2022-12-04 02:48:08 -06:00
LinuxServer-CI
cdf76bdf1f Bot Updating Templated Files 2022-12-04 09:46:21 +01:00
LinuxServer-CI
e07a294602 Bot Updating Templated Files 2022-12-04 02:45:01 -06:00
LinuxServer-CI
23e8fb26b1 Bot Updating Package Versions 2022-11-13 02:55:57 -06:00
LinuxServer-CI
360d8aeb52 Bot Updating Templated Files 2022-11-13 02:51:23 -06:00
LinuxServer-CI
7583951345 Bot Updating Package Versions 2022-11-06 02:51:24 -06:00
LinuxServer-CI
703171ede5 Bot Updating Package Versions 2022-10-09 03:58:18 -05:00
LinuxServer-CI
61e9bee3b8 Bot Updating Templated Files 2022-09-18 03:54:53 -05:00
LinuxServer-CI
d839fa187c Bot Updating Package Versions 2022-09-04 03:53:06 -05:00
LinuxServer-CI
6a62d5ff30 Bot Updating Package Versions 2022-08-28 10:52:57 +02:00
LinuxServer-CI
9acad27c79 Bot Updating Package Versions 2022-08-14 10:51:01 +02:00
LinuxServer-CI
1a3e0c208a Bot Updating Package Versions 2022-08-07 03:50:14 -05:00
LinuxServer-CI
04dc49e25c Bot Updating Package Versions 2022-07-24 10:52:04 +02:00
LinuxServer-CI
208e2e0847 Bot Updating Package Versions 2022-07-17 10:50:05 +02:00
LinuxServer-CI
3385daf0bd Bot Updating Package Versions 2022-07-10 03:50:05 -05:00
LinuxServer-CI
e1b8f0a13e Bot Updating Package Versions 2022-07-03 03:49:11 -05:00
LinuxServer-CI
0e42f28712 Bot Updating Package Versions 2022-05-15 10:52:04 +02:00
LinuxServer-CI
c9e771eae0 Bot Updating Templated Files 2022-05-08 10:49:33 +02:00
LinuxServer-CI
9644c29341 Bot Updating Package Versions 2022-05-01 10:55:22 +02:00
LinuxServer-CI
87e946b947 Bot Updating Templated Files 2022-05-01 10:50:47 +02:00
LinuxServer-CI
bc1e120937 Bot Updating Templated Files 2022-05-01 10:49:39 +02:00
LinuxServer-CI
ed4162578f Bot Updating Package Versions 2022-04-17 10:49:40 +02:00
LinuxServer-CI
2de0d7652d Bot Updating Package Versions 2022-04-05 22:58:51 +02:00
Roxedus
dde24a1945
Merge pull request #16 from linuxserver/sync 2022-04-05 22:55:26 +02:00
aptalca
71b20a5df9 move sync folder to /config 2022-04-05 14:33:23 -04:00
LinuxServer-CI
0ef18baa2d Bot Updating Package Versions 2022-04-04 16:09:29 +02:00
aptalca
ffeb0535a0
Merge pull request #15 from linuxserver/ffmpeg
rebase to 3.15, fix ffmpeg download
2022-04-04 10:06:12 -04:00
LinuxServer-CI
6e8400b745 Bot Updating Package Versions 2022-04-03 10:48:38 +02:00
aptalca
a6ae540dc0 rebase to 3.15, fix ffmpeg download 2022-04-02 13:24:44 -04:00
LinuxServer-CI
0c8f3f4071 Bot Updating Package Versions 2022-03-22 12:22:14 -05:00
LinuxServer-CI
960e282a0d Bot Updating Package Versions 2022-03-20 09:47:26 +01:00
LinuxServer-CI
24322b6098 Bot Updating Package Versions 2022-02-13 09:46:57 +01:00
LinuxServer-CI
92a3d811e3 Bot Updating Package Versions 2022-01-30 09:46:27 +01:00
LinuxServer-CI
e2b7e66a03 Bot Updating Package Versions 2022-01-23 09:47:35 +01:00
LinuxServer-CI
d01242d022 Bot Updating Templated Files 2021-12-19 09:50:50 +01:00
LinuxServer-CI
6429069a07 Bot Updating Templated Files 2021-12-19 09:49:29 +01:00
LinuxServer-CI
3fbf70fe43 Bot Updating Package Versions 2021-11-21 09:48:52 +01:00
LinuxServer-CI
631c15a474 Bot Updating Package Versions 2021-10-31 09:48:09 +01:00
LinuxServer-CI
0651afdbfd Bot Updating Package Versions 2021-10-24 10:47:47 +02:00
LinuxServer-CI
9855cf5a8f Bot Updating Package Versions 2021-10-17 10:47:22 +02:00
LinuxServer-CI
d88d8eb2f7 Bot Updating Package Versions 2021-10-10 10:47:05 +02:00
LinuxServer-CI
152056124c Bot Updating Templated Files 2021-10-03 08:50:11 +02:00
LinuxServer-CI
f50f2197f4 Bot Updating Templated Files 2021-10-03 08:49:00 +02:00
LinuxServer-CI
d69157a008 Bot Updating Package Versions 2021-09-28 19:46:28 +02:00
LinuxServer-CI
195a27b516 Bot Updating Package Versions 2021-09-05 10:46:51 +02:00
LinuxServer-CI
e778dbbad1 Bot Updating Package Versions 2021-08-29 10:49:40 +02:00
LinuxServer-CI
369b8fa723 Bot Updating Templated Files 2021-08-29 10:44:50 +02:00
LinuxServer-CI
4104a2ca42 Bot Updating Package Versions 2021-08-12 03:42:52 +02:00
37 changed files with 1855 additions and 785 deletions

View File

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

View File

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

View File

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

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 mstream" -->

76
.github/ISSUE_TEMPLATE/issue.bug.yml vendored Executable 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 mstream"
label: Container logs
placeholder: |
Output of `docker logs mstream`
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 -->

31
.github/ISSUE_TEMPLATE/issue.feature.yml vendored Executable file
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

19
.github/workflows/call_issue_pr_tracker.yml vendored Executable file
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 Executable file
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

12
.github/workflows/permissions.yml vendored Executable 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,4 +1,6 @@
FROM ghcr.io/linuxserver/baseimage-alpine:3.13
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine:3.20
# set version label
ARG BUILD_DATE
@ -10,41 +12,44 @@ LABEL maintainer="chbmb"
ENV HOME="/config"
RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
curl \
git && \
echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \
nodejs \
npm \
openssl && \
apk add --no-cache --upgrade --virtual=build-dependencies \
npm && \
echo "**** install app ****" && \
mkdir -p \
/opt/mstream && \
/app/mstream && \
if [ -z ${MSTREAM_RELEASE+x} ]; then \
MSTREAM_RELEASE=$(curl -sX GET "https://api.github.com/repos/IrosTheBeggar/mStream/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
curl -o \
/tmp/mstream.tar.gz -L \
"https://github.com/IrosTheBeggar/mStream/archive/${MSTREAM_RELEASE}.tar.gz" && \
tar xzf \
/tmp/mstream.tar.gz -C \
/opt/mstream/ --strip-components=1 && \
cd /opt/mstream && \
npm install --only=production && \
/app/mstream/ --strip-components=1 && \
cd /app/mstream && \
chown -R abc:abc ./ && \
su -s /bin/sh abc -c 'HOME=/tmp npm install --omit=dev' && \
npm link && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \
npm cache clean --force && \
rm -rf /app/mstream/save/sync && \
ln -s /config/sync /app/mstream/save/sync && \
apk del --purge \
build-dependencies && \
rm -rf \
/tmp/*
$HOME/.cache \
$HOME/.npm \
/tmp/* \
/tmp/.npm
# add local files
COPY root/ /
# ports and volumes
EXPOSE 3000
VOLUME /config /music
VOLUME /config

View File

@ -1,4 +1,6 @@
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.13
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.20
# set version label
ARG BUILD_DATE
@ -10,41 +12,44 @@ LABEL maintainer="chbmb"
ENV HOME="/config"
RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
curl \
git && \
echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \
nodejs \
npm \
openssl && \
apk add --no-cache --upgrade --virtual=build-dependencies \
npm && \
echo "**** install app ****" && \
mkdir -p \
/opt/mstream && \
/app/mstream && \
if [ -z ${MSTREAM_RELEASE+x} ]; then \
MSTREAM_RELEASE=$(curl -sX GET "https://api.github.com/repos/IrosTheBeggar/mStream/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
curl -o \
/tmp/mstream.tar.gz -L \
"https://github.com/IrosTheBeggar/mStream/archive/${MSTREAM_RELEASE}.tar.gz" && \
tar xf \
tar xzf \
/tmp/mstream.tar.gz -C \
/opt/mstream/ --strip-components=1 && \
cd /opt/mstream && \
npm install --only=production && \
/app/mstream/ --strip-components=1 && \
cd /app/mstream && \
chown -R abc:abc ./ && \
su -s /bin/sh abc -c 'HOME=/tmp npm install --omit=dev' && \
npm link && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \
npm cache clean --force && \
rm -rf /app/mstream/save/sync && \
ln -s /config/sync /app/mstream/save/sync && \
apk del --purge \
build-dependencies && \
rm -rf \
/tmp/*
$HOME/.cache \
$HOME/.npm \
/tmp/* \
/tmp/.npm
# add local files
COPY root/ /
# ports and volumes
EXPOSE 3000
VOLUME /config /music
VOLUME /config

View File

@ -1,50 +0,0 @@
FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.13
# set version label
ARG BUILD_DATE
ARG VERSION
ARG MSTREAM_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="chbmb"
ENV HOME="/config"
RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
curl \
git && \
echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \
nodejs \
npm \
openssl && \
echo "**** install app ****" && \
mkdir -p \
/opt/mstream && \
if [ -z ${MSTREAM_RELEASE+x} ]; then \
MSTREAM_RELEASE=$(curl -sX GET "https://api.github.com/repos/IrosTheBeggar/mStream/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
curl -o \
/tmp/mstream.tar.gz -L \
"https://github.com/IrosTheBeggar/mStream/archive/${MSTREAM_RELEASE}.tar.gz" && \
tar xf \
/tmp/mstream.tar.gz -C \
/opt/mstream/ --strip-components=1 && \
cd /opt/mstream && \
npm install --only=production && \
npm link && \
echo "**** cleanup ****" && \
npm cache clean --force && \
apk del --purge \
build-dependencies && \
rm -rf \
/tmp/*
# add local files
COPY root/ /
# ports and volumes
EXPOSE 3000
VOLUME /config /music

988
Jenkinsfile vendored

File diff suppressed because it is too large Load Diff

189
README.md
View File

@ -1,12 +1,10 @@
<!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read the https://github.com/linuxserver/docker-mstream/blob/master/.github/CONTRIBUTING.md -->
<!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read https://github.com/linuxserver/docker-mstream/blob/master/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://discord.gg/YWrKVTn "realtime support / chat with the community and the team.")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://linuxserver.io/discord "realtime support / chat with the community and the team.")
[![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.")
[![Fleet](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Fleet)](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
[![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.")
[![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
@ -21,18 +19,19 @@ The [LinuxServer.io](https://linuxserver.io) team brings you another container r
Find us at:
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
* [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum.
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
* [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
# [linuxserver/mstream](https://github.com/linuxserver/docker-mstream)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fmstream?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-mstream.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-mstream)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-mstream.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-mstream/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-mstream/packages)
[![GitLab Container Registry](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitLab%20Registry&logo=gitlab)](https://gitlab.com/linuxserver.io/docker-mstream/container_registry)
[![Quay.io](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Quay.io)](https://quay.io/repository/linuxserver.io/mstream)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/mstream.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/mstream)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/mstream.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/mstream)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-mstream%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-mstream/job/master/)
@ -44,17 +43,16 @@ Find us at:
## Supported Architectures
Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. 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 `ghcr.io/linuxserver/mstream` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
Simply pulling `lscr.io/linuxserver/mstream:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
The architectures supported by this image are:
| Architecture | Tag |
| :----: | --- |
| x86-64 | amd64-latest |
| arm64 | arm64v8-latest |
| armhf | arm32v7-latest |
| Architecture | Available | Tag |
| :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> |
## Application Setup
@ -69,23 +67,25 @@ v4's `config.json` is not compatible with v5. Existing `config.json` will be ren
## 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))
```yaml
---
version: "2.1"
services:
mstream:
image: ghcr.io/linuxserver/mstream
image: lscr.io/linuxserver/mstream:latest
container_name: mstream
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- TZ=Etc/UTC
volumes:
- /path/to/data:/config
- /path/to/mstream/data:/config
- /path/to/music:/music
ports:
- 3000:3000
@ -99,24 +99,24 @@ docker run -d \
--name=mstream \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/London \
-e TZ=Etc/UTC \
-p 3000:3000 \
-v /path/to/data:/config \
-v /path/to/mstream/data:/config \
-v /path/to/music:/music \
--restart unless-stopped \
ghcr.io/linuxserver/mstream
lscr.io/linuxserver/mstream:latest
```
## Parameters
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
| Parameter | Function |
| :----: | --- |
| `-p 3000` | The port for the mStream webinterface |
| `-p 3000:3000` | The port for the mStream web interface |
| `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=Europe/London` | Specify a timezone to use e.g. Europe/London |
| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
| `-v /config` | mStream config |
| `-v /music` | Music location |
@ -127,10 +127,10 @@ You can set any environment variable from a file by using a special prepend `FIL
As an example:
```bash
-e FILE__PASSWORD=/run/secrets/mysecretpassword
-e FILE__MYVAR=/run/secrets/mysecretvariable
```
Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file.
Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.
## Umask for running applications
@ -139,15 +139,20 @@ Keep in mind umask is not chmod it subtracts from permissions based on it's valu
## User / Group Identifiers
When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below:
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below:
```bash
$ id username
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
id your_user
```
Example output:
```text
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
```
## Docker Mods
@ -158,53 +163,101 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Support Info
* Shell access whilst the container is running: `docker exec -it mstream /bin/bash`
* To monitor the logs of the container in realtime: `docker logs -f mstream`
* container version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' mstream`
* image version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' ghcr.io/linuxserver/mstream`
* Shell access whilst the container is running:
```bash
docker exec -it mstream /bin/bash
```
* To monitor the logs of the container in realtime:
```bash
docker logs -f mstream
```
* Container version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' mstream
```
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mstream:latest
```
## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers:
### Via Docker Compose
* Update all images: `docker-compose pull`
* or update a single image: `docker-compose pull mstream`
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d mstream`
* You can also remove the old dangling images: `docker image prune`
* Update images:
* All images:
```bash
docker-compose pull
```
* Single image:
```bash
docker-compose pull mstream
```
* Update containers:
* All containers:
```bash
docker-compose up -d
```
* Single container:
```bash
docker-compose up -d mstream
```
* You can also remove the old dangling images:
```bash
docker image prune
```
### Via Docker Run
* Update the image: `docker pull ghcr.io/linuxserver/mstream`
* Stop the running container: `docker stop mstream`
* Delete the container: `docker rm mstream`
* Update the image:
```bash
docker pull lscr.io/linuxserver/mstream:latest
```
* Stop the running container:
```bash
docker stop mstream
```
* Delete the container:
```bash
docker rm mstream
```
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* You can also remove the old dangling images: `docker image prune`
* You can also remove the old dangling images:
### Via Watchtower auto-updater (only use if you don't remember the original parameters)
* Pull the latest image at its tag and replace it with the same env variables in one run:
```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once mstream
```
* You can also remove the old dangling images: `docker image prune`
**Note:** We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
```bash
docker image prune
```
### Image Update Notifications - Diun (Docker Image Update Notifier)
* We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
>[!TIP]
>We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
## Building locally
@ -216,19 +269,25 @@ cd docker-mstream
docker build \
--no-cache \
--pull \
-t ghcr.io/linuxserver/mstream:latest .
-t lscr.io/linuxserver/mstream:latest .
```
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
```bash
docker run --rm --privileged multiarch/qemu-user-static:register --reset
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
## Versions
* **27.06.24:** - Rebase to Alpine 3.20.
* **12.12.23:** - Rebase to Alpine 3.19, move binaries to /app.
* **05.07.23:** - Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)
* **13.02.23:** - Rebase to Alpine 3.17, migrate to s6v3.
* **05.04.22:** - Move `sync` folder to `/config`.
* **02.04.22:** - Rebase to alpine 3.15. Fix ffmpeg download.
* **17.05.21:** - Deprecating the env vars `USER`, `PASSWORD` and `USE_JSON` as mStream v5 requires the use of `config.json`.
* **23.01.21:** - Rebasing to alpine 3.13.
* **01.06.20:** - Rebasing to alpine 3.12.

View File

@ -1,5 +1,5 @@
---
# jenkins variables
# jenkins variables
project_name: docker-mstream
external_type: github_stable
release_type: stable
@ -23,6 +23,6 @@ repo_vars:
- CI_PORT='3000'
- CI_SSL='false'
- CI_DELAY='120'
- CI_DOCKERENV='TZ=US/Pacific'
- CI_AUTH='user:password'
- CI_WEBPATH=''
- CI_DOCKERENV=''
- CI_AUTH=''
- CI_WEBPATH=''

View File

@ -1,41 +1,551 @@
alpine-baselayout-3.2.0-r8
alpine-keys-2.2-r0
apk-tools-2.12.6-r0
bash-5.1.0-r0
brotli-libs-1.0.9-r3
busybox-1.32.1-r6
c-ares-1.17.1-r1
ca-certificates-20191127-r5
ca-certificates-bundle-20191127-r5
coreutils-8.32-r2
libacl-2.2.53-r0
libattr-2.4.48-r0
libc-utils-0.7.2-r3
libcrypto1.1-1.1.1k-r0
libgcc-10.2.1_pre1-r3
libintl-0.20.2-r2
libproc-3.3.16-r0
libssl1.1-1.1.1k-r0
libstdc++-10.2.1_pre1-r3
libtls-standalone-2.9.1-r1
linux-pam-1.5.1-r0
musl-1.2.2-r1
musl-utils-1.2.2-r1
ncurses-libs-6.2_p20210109-r0
ncurses-terminfo-base-6.2_p20210109-r0
nghttp2-libs-1.42.0-r1
nodejs-14.17.4-r0
npm-14.17.4-r0
openssl-1.1.1k-r0
procps-3.3.16-r0
readline-8.1.0-r0
s6-ipcserver-2.10.0.0-r0
scanelf-1.2.8-r0
shadow-4.8.1-r0
skalibs-2.10.0.0-r0
ssl_client-1.32.1-r6
tzdata-2021a-r0
utmps-0.1.0.0-r0
xz-5.2.5-r0
xz-libs-5.2.5-r0
zlib-1.2.11-r3
NAME VERSION TYPE
@babel/runtime 7.26.0 npm
@colors/colors 1.6.0 npm
@dabh/diagnostics 2.0.3 npm
@hapi/hoek 9.3.0 npm
@hapi/topo 5.1.0 npm
@isaacs/cliui 8.0.2 npm
@jimp/bmp 0.22.12 npm
@jimp/core 0.22.12 npm
@jimp/core 1.6.0 npm (+7 duplicates)
@jimp/custom 0.22.12 npm
@jimp/diff 1.6.0 npm
@jimp/file-ops 1.6.0 npm
@jimp/gif 0.22.12 npm
@jimp/jpeg 0.22.12 npm
@jimp/js-bmp 1.6.0 npm
@jimp/js-gif 1.6.0 npm
@jimp/js-jpeg 1.6.0 npm
@jimp/js-png 1.6.0 npm
@jimp/js-tiff 1.6.0 npm
@jimp/plugin-blit 0.22.12 npm
@jimp/plugin-blit 1.6.0 npm
@jimp/plugin-blur 0.22.12 npm
@jimp/plugin-blur 1.6.0 npm
@jimp/plugin-circle 0.22.12 npm
@jimp/plugin-circle 1.6.0 npm
@jimp/plugin-color 0.22.12 npm
@jimp/plugin-color 1.6.0 npm (+1 duplicate)
@jimp/plugin-contain 0.22.12 npm
@jimp/plugin-contain 1.6.0 npm
@jimp/plugin-cover 0.22.12 npm
@jimp/plugin-cover 1.6.0 npm
@jimp/plugin-crop 0.22.12 npm
@jimp/plugin-crop 1.6.0 npm
@jimp/plugin-displace 0.22.12 npm
@jimp/plugin-displace 1.6.0 npm
@jimp/plugin-dither 0.22.12 npm
@jimp/plugin-dither 1.6.0 npm
@jimp/plugin-fisheye 0.22.12 npm
@jimp/plugin-fisheye 1.6.0 npm
@jimp/plugin-flip 0.22.12 npm
@jimp/plugin-flip 1.6.0 npm
@jimp/plugin-gaussian 0.22.12 npm
@jimp/plugin-hash 1.6.0 npm
@jimp/plugin-invert 0.22.12 npm
@jimp/plugin-mask 0.22.12 npm
@jimp/plugin-mask 1.6.0 npm
@jimp/plugin-normalize 0.22.12 npm
@jimp/plugin-print 0.22.12 npm
@jimp/plugin-print 1.6.0 npm
@jimp/plugin-quantize 1.6.0 npm
@jimp/plugin-resize 0.22.12 npm
@jimp/plugin-resize 1.6.0 npm (+2 duplicates)
@jimp/plugin-rotate 0.22.12 npm
@jimp/plugin-rotate 1.6.0 npm
@jimp/plugin-scale 0.22.12 npm
@jimp/plugin-shadow 0.22.12 npm
@jimp/plugin-threshold 0.22.12 npm
@jimp/plugin-threshold 1.6.0 npm
@jimp/plugins 0.22.12 npm
@jimp/png 0.22.12 npm
@jimp/tiff 0.22.12 npm
@jimp/types 0.22.12 npm
@jimp/types 1.6.0 npm (+7 duplicates)
@jimp/utils 0.22.12 npm
@jimp/utils 1.6.0 npm (+7 duplicates)
@pkgjs/parseargs 0.11.0 npm
@sec-ant/readable-stream 0.4.1 npm
@sideway/address 4.1.5 npm
@sideway/formula 3.0.1 npm
@sideway/pinpoint 2.0.0 npm
@tokenizer/token 0.3.0 npm
@types/node 16.9.1 npm
@types/triple-beam 1.3.5 npm
@videojs/vhs-utils 4.1.1 npm
Syncthing 1.15.1 binary
abort-controller 3.0.0 npm
accepts 1.3.8 npm
ada-libs 2.7.8-r0 apk
ajv 6.12.6 npm
alpine-baselayout 3.6.5-r0 apk
alpine-baselayout-data 3.6.5-r0 apk
alpine-keys 2.4-r1 apk
alpine-release 3.20.9-r0 apk
ansi-regex 5.0.1 npm (+3 duplicates)
ansi-regex 6.1.0 npm
ansi-styles 4.3.0 npm
ansi-styles 6.2.1 npm
any-base 1.1.0 npm
apk-tools 2.14.4-r1 apk
archiver 7.0.1 npm
archiver-utils 5.0.2 npm
argparse 2.0.1 npm
array-flatten 1.1.1 npm
asn1 0.2.6 npm
assert-plus 1.0.0 npm
async 0.2.10 npm
async 3.2.6 npm
asynckit 0.4.0 npm
await-to-js 3.0.0 npm
aws-sign2 0.7.0 npm
aws4 1.13.2 npm
axios 1.7.9 npm
b4a 1.6.7 npm
balanced-match 1.0.2 npm
bare-events 2.5.0 npm
base64-js 1.5.1 npm
bash 5.2.26-r0 apk
bcrypt-pbkdf 1.0.2 npm
bmp-js 0.1.0 npm
bmp-ts 1.0.9 npm
body-parser 1.20.3 npm
brace-expansion 2.0.1 npm
brotli-libs 1.1.0-r2 apk
buffer 5.7.1 npm
buffer 6.0.3 npm
buffer-crc32 0.2.13 npm
buffer-crc32 1.0.0 npm
buffer-equal 0.0.1 npm
buffer-equal-constant-time 1.0.1 npm
buffer-from 1.1.2 npm
builder-util-runtime 9.2.10 npm
busboy 1.6.0 npm
busybox 1.36.1-r31 apk
busybox-binsh 1.36.1-r31 apk
bytes 3.1.2 npm
c-ares 1.33.1-r0 apk
ca-certificates 20250911-r0 apk
ca-certificates-bundle 20250911-r0 apk
call-bind-apply-helpers 1.0.1 npm
call-bound 1.0.3 npm
caseless 0.12.0 npm
catatonit 0.2.0-r0 apk
centra 2.7.0 npm
clarg 0.0.4 npm
color 3.2.1 npm
color-convert 1.9.3 npm
color-convert 2.0.1 npm
color-name 1.1.3 npm
color-name 1.1.4 npm
color-string 1.9.1 npm
colorspace 1.1.4 npm
combined-stream 1.0.8 npm
commander 12.1.0 npm
compress-commons 6.0.2 npm
concat-stream 1.6.2 npm
content-disposition 0.5.4 npm
content-type 1.0.5 npm
cookie 0.7.1 npm
cookie 0.7.2 npm
cookie-parser 1.4.7 npm
cookie-signature 1.0.6 npm
core-util-is 1.0.2 npm
coreutils 9.5-r2 apk
coreutils-env 9.5-r2 apk
coreutils-fmt 9.5-r2 apk
coreutils-sha512sum 9.5-r2 apk
crc-32 1.2.2 npm
crc32-stream 6.0.0 npm
cross-spawn 7.0.6 npm
curl 8.14.1-r2 apk
dashdash 1.14.1 npm
debug 2.6.9 npm (+4 duplicates)
debug 4.4.0 npm
delayed-stream 1.0.0 npm
depd 2.0.0 npm
destroy 1.2.0 npm
dom-walk 0.1.2 npm
dunder-proto 1.0.1 npm
eastasianwidth 0.2.0 npm
ecc-jsbn 0.1.2 npm
ecdsa-sig-formatter 1.0.11 npm
ee-first 1.1.1 npm
electron-updater 6.3.9 npm
emoji-regex 8.0.0 npm
emoji-regex 9.2.2 npm (+1 duplicate)
enabled 2.0.0 npm
encodeurl 1.0.2 npm
encodeurl 2.0.0 npm
encoding 0.1.13 npm
es-define-property 1.0.1 npm
es-errors 1.3.0 npm
es-object-atoms 1.0.0 npm
escape-html 1.0.3 npm
escape-string-regexp 4.0.0 npm
etag 1.8.1 npm
event-target-shim 5.0.1 npm
eventemitter3 4.0.7 npm
events 3.3.0 npm
exif-parser 0.1.12 npm
express 4.21.2 npm
extend 3.0.2 npm
extract-zip 1.7.0 npm
extsprintf 1.3.0 npm
fast-deep-equal 3.1.3 npm
fast-fifo 1.3.2 npm
fast-json-stable-stringify 2.1.0 npm
fast-xml-parser 4.5.1 npm
fd-slicer 1.1.0 npm
fecha 4.2.3 npm
ffbinaries 1.1.6 npm
file-stream-rotator 0.6.1 npm
file-type 16.5.4 npm
file-type 19.6.0 npm
finalhandler 1.3.1 npm
findutils 4.9.0-r5 apk
fluent-ffmpeg 2.1.3 npm
fn.name 1.1.0 npm
follow-redirects 1.15.9 npm
foreground-child 3.3.0 npm
forever-agent 0.6.1 npm
form-data 2.3.3 npm
form-data 4.0.1 npm
forwarded 0.2.0 npm
fresh 0.5.2 npm
fs-extra 10.1.0 npm
fs-extra 8.1.0 npm
function-bind 1.1.2 npm
get-intrinsic 1.2.6 npm
get-stream 9.0.1 npm
getpass 0.1.7 npm
gifwrap 0.10.1 npm
github.com/AudriusButkevicius/go-nat-pmp v0.0.0-20160522074932-452c97607362 go-module (+2 duplicates)
github.com/AudriusButkevicius/pfilter v0.0.0-20190627213056-c55ef6137fc6 go-module (+2 duplicates)
github.com/AudriusButkevicius/pfilter v0.0.0-20210218141631-7468b85d810a go-module
github.com/AudriusButkevicius/recli v0.0.5 go-module
github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c go-module
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d go-module
github.com/alecthomas/kong v0.2.12 go-module
github.com/bkaradzic/go-lz4 v0.0.0-20160924222819-7224d8d8f27e go-module (+3 duplicates)
github.com/calmh/xdr v1.1.0 go-module (+3 duplicates)
github.com/ccding/go-stun v0.0.0-20180726100737-be486d185f3d go-module (+2 duplicates)
github.com/ccding/go-stun v0.1.2 go-module
github.com/cheekybits/genny v1.0.0 go-module (+3 duplicates)
github.com/chmduquesne/rollinghash v0.0.0-20180912150627-a60f8e7142b5 go-module (+3 duplicates)
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d go-module
github.com/dchest/siphash v1.2.2 go-module
github.com/flynn-archive/go-shlex v0.0.0-20150515145356-3f9db97f8568 go-module
github.com/go-asn1-ber/asn1-ber v1.5.1 go-module
github.com/go-ldap/ldap/v3 v3.2.4 go-module
github.com/go-ole/go-ole v1.2.4 go-module
github.com/gobwas/glob v0.2.3 go-module (+3 duplicates)
github.com/gogo/protobuf v1.3.0 go-module (+2 duplicates)
github.com/gogo/protobuf v1.3.1 go-module
github.com/golang/protobuf v1.3.2 go-module (+2 duplicates)
github.com/golang/protobuf v1.4.3 go-module
github.com/golang/snappy v0.0.1 go-module (+3 duplicates)
github.com/greatroar/blobloom v0.5.0 go-module
github.com/hashicorp/golang-lru v0.5.1 go-module
github.com/jackpal/gateway v1.0.5 go-module (+2 duplicates)
github.com/jackpal/gateway v1.0.6 go-module
github.com/jackpal/go-nat-pmp v1.0.2 go-module
github.com/julienschmidt/httprouter v1.3.0 go-module
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 go-module (+3 duplicates)
github.com/lucas-clemente/quic-go v0.12.0 go-module (+2 duplicates)
github.com/lucas-clemente/quic-go v0.19.3 go-module
github.com/marten-seemann/qtls v0.3.2 go-module (+2 duplicates)
github.com/marten-seemann/qtls-go1-15 v0.1.1 go-module
github.com/mattn/go-isatty v0.0.12 go-module
github.com/minio/sha256-simd v0.1.0 go-module (+2 duplicates)
github.com/minio/sha256-simd v0.1.1 go-module
github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 go-module
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 go-module (+3 duplicates)
github.com/pkg/errors v0.8.1 go-module (+2 duplicates)
github.com/pkg/errors v0.9.1 go-module
github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563 go-module (+2 duplicates)
github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 go-module
github.com/russross/blackfriday/v2 v2.0.1 go-module
github.com/sasha-s/go-deadlock v0.2.0 go-module (+3 duplicates)
github.com/shirou/gopsutil v0.0.0-20190714054239-47ef3260b6bf go-module (+2 duplicates)
github.com/shirou/gopsutil/v3 v3.20.11 go-module
github.com/shurcooL/sanitized_anchor_name v1.0.0 go-module
github.com/syncthing/notify v0.0.0-20190709140112-69c7a957d3e2 go-module (+2 duplicates)
github.com/syncthing/notify v0.0.0-20210308121556-f45149b04939 go-module
github.com/syncthing/syncthing UNKNOWN go-module (+3 duplicates)
github.com/syndtr/goleveldb v1.0.1-0.20190318030020-c3a204f8e965 go-module (+2 duplicates)
github.com/syndtr/goleveldb v1.0.1-0.20200815071216-d9e9293bd0f7 go-module
github.com/thejerf/suture v3.0.2+incompatible go-module (+2 duplicates)
github.com/thejerf/suture/v4 v4.0.0 go-module
github.com/urfave/cli v1.22.4 go-module
github.com/vitrun/qart v0.0.0-20160531060029-bf64b92db6b0 go-module (+3 duplicates)
glob 10.4.5 npm
global 4.4.0 npm
gmp 6.3.0-r1 apk
golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472 go-module (+2 duplicates)
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 go-module
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 go-module (+2 duplicates)
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 go-module
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd go-module (+2 duplicates)
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 go-module
golang.org/x/text v0.3.2 go-module (+2 duplicates)
golang.org/x/text v0.3.4 go-module
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 go-module (+2 duplicates)
golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e go-module
google.golang.org/protobuf v1.23.0 go-module
gopd 1.2.0 npm
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d go-module (+2 duplicates)
gopkg.in/ldap.v2 v2.5.1 go-module (+2 duplicates)
graceful-fs 4.2.11 npm
har-schema 2.0.0 npm
har-validator 5.1.5 npm
has-symbols 1.1.0 npm
hasown 2.0.2 npm
http-errors 2.0.0 npm
http-proxy 1.18.1 npm
http-signature 1.2.0 npm
iconv-lite 0.4.24 npm (+1 duplicate)
iconv-lite 0.6.3 npm
icu-data-en 74.2-r1 apk
icu-libs 74.2-r1 apk
ieee754 1.2.1 npm
image-q 4.0.0 npm
inherits 2.0.4 npm
ipaddr.js 1.9.1 npm
is-arrayish 0.3.2 npm
is-fullwidth-code-point 3.0.0 npm
is-function 1.0.2 npm
is-stream 2.0.1 npm
is-stream 4.0.1 npm
is-typedarray 1.0.0 npm
isarray 1.0.0 npm
isexe 2.0.0 npm
isomorphic-fetch 3.0.0 npm
isstream 0.1.2 npm
jackspeak 3.4.3 npm
jimp 0.22.12 npm
jimp 1.6.0 npm
joi 17.13.3 npm
jpeg-js 0.4.4 npm
jq 1.7.1-r0 apk
js-yaml 4.1.0 npm
jsbn 0.1.1 npm (+1 duplicate)
json-schema 0.4.0 npm
json-schema-traverse 0.4.1 npm
json-stringify-safe 5.0.1 npm
jsonfile 4.0.0 npm
jsonfile 6.1.0 npm
jsonwebtoken 9.0.2 npm
jsprim 1.4.2 npm
jwa 1.4.1 npm
jws 3.2.2 npm
kuler 2.0.0 npm
lazy-val 1.0.5 npm
lazystream 1.0.1 npm
libacl 2.3.2-r0 apk
libattr 2.5.2-r0 apk
libbase64 0.5.2-r0 apk
libbsd 0.12.2-r0 apk
libcrypto3 3.3.6-r0 apk
libcurl 8.14.1-r2 apk
libgcc 13.2.1_git20240309-r1 apk
libidn2 2.3.7-r0 apk
libintl 0.22.5-r0 apk
libmd 1.1.0-r0 apk
libncursesw 6.4_p20240420-r2 apk
libproc2 4.0.4-r0 apk
libpsl 0.21.5-r1 apk
libssl3 3.3.6-r0 apk
libstdc++ 13.2.1_git20240309-r1 apk
libunistring 1.2-r0 apk
link 2.1.1 npm
linux-pam 1.6.0-r0 apk
load-bmfont 1.4.2 npm
lodash 4.17.21 npm
lodash.escaperegexp 4.1.2 npm
lodash.includes 4.3.0 npm
lodash.isboolean 3.0.3 npm
lodash.isequal 4.5.0 npm
lodash.isinteger 4.0.4 npm
lodash.isnumber 3.0.3 npm
lodash.isplainobject 4.0.6 npm
lodash.isstring 4.0.1 npm
lodash.once 4.1.1 npm
logform 2.7.0 npm
lokijs 1.5.12 npm
lru-cache 10.4.3 npm
m3u8-parser 7.2.0 npm
make-dir 3.1.0 npm
math-intrinsics 1.1.0 npm
media-typer 0.3.0 npm
media-typer 1.1.0 npm
merge-descriptors 1.0.3 npm
methods 1.1.2 npm
mime 1.6.0 npm (+1 duplicate)
mime 3.0.0 npm (+7 duplicates)
mime-db 1.52.0 npm
mime-types 2.1.35 npm
min-document 2.19.0 npm
minimatch 5.1.6 npm
minimatch 9.0.5 npm
minimist 1.2.8 npm
minipass 7.1.2 npm
mkdirp 0.5.6 npm
moment 2.30.1 npm
ms 2.0.0 npm (+4 duplicates)
ms 2.1.3 npm
mstream 5.13.1 npm
mstream-desktop-app 5.9.4 npm
music-metadata 10.6.4 npm
music-metadata 7.14.0 npm
musl 1.2.5-r1 apk
musl-utils 1.2.5-r1 apk
nanoid 3.3.8 npm
ncurses-terminfo-base 6.4_p20240420-r2 apk
negotiator 0.6.3 npm
netcat-openbsd 1.226-r0 apk
nghttp2-libs 1.62.1-r0 apk
node-fetch 2.7.0 npm
nodejs 20.15.1-r0 apk
normalize-path 3.0.0 npm
oauth-sign 0.9.0 npm
object-hash 3.0.0 npm
object-inspect 1.13.3 npm
omggif 1.0.10 npm
on-finished 2.4.1 npm
one-time 1.0.0 npm
oniguruma 6.9.9-r0 apk
openssl 3.3.6-r0 apk
package-json-from-dist 1.0.1 npm
pako 1.0.11 npm
parse-bmfont-ascii 1.0.6 npm
parse-bmfont-binary 1.0.6 npm
parse-bmfont-xml 1.1.6 npm
parse-headers 2.0.5 npm
parseurl 1.3.3 npm
path-key 3.1.1 npm
path-scurry 1.11.1 npm
path-to-regexp 0.1.12 npm
peek-readable 4.1.0 npm
peek-readable 5.3.1 npm
pend 1.2.0 npm
performance-now 2.1.0 npm
phin 3.7.1 npm
pixelmatch 4.0.2 npm
pixelmatch 5.3.0 npm
pngjs 3.4.0 npm
pngjs 6.0.0 npm
pngjs 7.0.0 npm
process 0.11.10 npm
process-nextick-args 2.0.1 npm
procps-ng 4.0.4-r0 apk
proxy-addr 2.0.7 npm
proxy-from-env 1.1.0 npm
psl 1.15.0 npm
punycode 2.3.1 npm
qs 6.13.0 npm
qs 6.5.3 npm
queue-tick 1.0.1 npm
range-parser 1.2.1 npm
raw-body 2.5.2 npm
readable-stream 2.3.8 npm (+1 duplicate)
readable-stream 3.6.2 npm (+2 duplicates)
readable-stream 4.6.0 npm
readable-web-to-node-stream 3.0.2 npm
readdir-glob 1.1.3 npm
readline 8.2.10-r0 apk
regenerator-runtime 0.13.11 npm (+1 duplicate)
regenerator-runtime 0.14.1 npm
request 2.88.2 npm
requires-port 1.0.0 npm
safe-buffer 5.1.2 npm (+1 duplicate)
safe-buffer 5.2.1 npm
safe-stable-stringify 2.5.0 npm
safer-buffer 2.1.2 npm
sax 1.4.1 npm
scanelf 1.3.7-r2 apk
semver 6.3.1 npm
semver 7.6.3 npm
send 0.19.0 npm
serve-static 1.16.2 npm
setprototypeof 1.2.0 npm
shadow 4.15.1-r0 apk
shebang-command 2.0.0 npm
shebang-regex 3.0.0 npm
side-channel 1.1.0 npm
side-channel-list 1.0.0 npm
side-channel-map 1.0.1 npm
side-channel-weakmap 1.0.2 npm
signal-exit 4.1.0 npm
simple-swizzle 0.2.2 npm
simple-xml-to-json 1.2.3 npm
skalibs 2.14.1.1-r0 apk
sshpk 1.18.0 npm
ssl_client 1.36.1-r31 apk
stack-trace 0.0.10 npm
statuses 2.0.1 npm
stdlib go1.13.1 go-module (+2 duplicates)
stdlib go1.16.3 go-module
streamsearch 1.1.0 npm
streamx 2.21.1 npm
string-width 4.2.3 npm (+1 duplicate)
string-width 5.1.2 npm (+1 duplicate)
string_decoder 1.1.1 npm (+1 duplicate)
string_decoder 1.3.0 npm
strip-ansi 6.0.1 npm (+3 duplicates)
strip-ansi 7.1.0 npm
strnum 1.0.5 npm
strtok3 10.0.1 npm
strtok3 6.3.0 npm
strtok3 9.1.1 npm
tar-stream 3.1.7 npm
text-decoder 1.2.3 npm
text-hex 1.0.0 npm
timm 1.7.1 npm
tiny-typed-emitter 2.1.0 npm
tinycolor2 1.6.0 npm
toidentifier 1.0.1 npm
token-types 4.2.1 npm
token-types 6.0.0 npm
tough-cookie 2.5.0 npm
tr46 0.0.3 npm
tree-kill 1.2.2 npm
triple-beam 1.4.1 npm
tunnel-agent 0.6.0 npm
tweetnacl 0.14.5 npm
type-is 1.6.18 npm
typedarray 0.0.6 npm
tzdata 2025c-r0 apk
uint8array-extras 1.4.0 npm
universalify 0.1.2 npm
universalify 2.0.1 npm
unpipe 1.0.0 npm
uri-js 4.4.1 npm
utif2 4.1.0 npm
util-deprecate 1.0.2 npm
utils-merge 1.0.1 npm
utmps-libs 0.1.2.2-r1 apk
uuid 3.4.0 npm
vary 1.1.2 npm
verror 1.10.0 npm
webidl-conversions 3.0.1 npm
whatwg-fetch 3.6.20 npm
whatwg-url 5.0.0 npm
which 1.3.1 npm
which 2.0.2 npm
winston 3.17.0 npm
winston-daily-rotate-file 5.0.0 npm
winston-transport 4.9.0 npm
wrap-ansi 7.0.0 npm
wrap-ansi 8.1.0 npm
ws 8.18.0 npm
xhr 2.6.0 npm
xml-parse-from-string 1.0.1 npm
xml2js 0.5.0 npm
xmlbuilder 11.0.1 npm
xtend 4.0.2 npm
yauzl 2.10.0 npm
zip-stream 6.0.1 npm
zlib 1.3.1-r1 apk
zod 3.24.1 npm
zstd-libs 1.5.6-r0 apk

View File

@ -4,42 +4,87 @@ project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/ma
project_blurb: |
[{{ project_name }}]({{ project_url }}) is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone.
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_categories: "Media Servers,Music"
# supported architectures
available_architectures:
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
- { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
- {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
# container parameters
param_container_name: "{{ project_name }}"
param_usage_include_vols: true
param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/data", desc: "mStream config" }
- { vol_path: "/music", vol_host_path: "/path/to/music", desc: "Music location" }
- {vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/data", desc: "mStream config"}
- {vol_path: "/music", vol_host_path: "/path/to/music", desc: "Music location"}
param_usage_include_ports: true
param_ports:
- { external_port: "3000", internal_port: "3000", port_desc: "The port for the mStream webinterface" }
param_usage_include_env: true
param_env_vars:
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use e.g. Europe/London" }
- {external_port: "3000", internal_port: "3000", port_desc: "The port for the mStream web interface"}
# application setup block
app_setup_block_enabled: true
app_setup_block: |
Access the webui at `http://<your-ip>:3000`
Settings are adjusted through the web ui or via editing of `config.json`. For more information check out [{{ project_name|capitalize }}](https://github.com/IrosTheBeggar/mStream/blob/master/docs/json_config.md#json-config).
## IMPORTANT NOTICE:
mStream v5 no longer accepts cli arguments for setting the user and password and requires the use of `config.json`. Therefore, the environment variables `USER`, `PASSWORD` and `USE_JSON` are deprecated.
v4's `config.json` is not compatible with v5. Existing `config.json` will be renamed to `config.json.v4-bak` for your reference and a new default `config.json` will be created upon upgrade from v4 to v5.
# init diagram
init_diagram: |
"mstream: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-os-end -> init-config
init-config -> init-config-end
init-mstream-config -> init-config-end
init-os-end -> init-crontab-config
init-mods-end -> init-custom-files
init-adduser -> init-device-perms
base -> init-envfile
base -> init-migrations
base -> init-mods
init-config-end -> init-mods
init-mods -> init-mods-end
init-mods-package-install -> init-mods-end
init-mods -> init-mods-package-install
init-config -> init-mstream-config
base -> init-os-end
init-adduser -> init-os-end
init-device-perms -> init-os-end
init-envfile -> init-os-end
init-migrations -> init-os-end
init-custom-files -> init-services
init-mods-end -> init-services
init-services -> svc-cron
svc-cron -> legacy-services
init-services -> svc-mstream
svc-mstream -> legacy-services
}
Base Images: {
"baseimage-alpine:3.20"
}
"mstream:latest" <- Base Images
# changelog
changelogs:
- { date: "17.05.21:", desc: "Deprecating the env vars `USER`, `PASSWORD` and `USE_JSON` as mStream v5 requires the use of `config.json`." }
- { date: "23.01.21:", desc: "Rebasing to alpine 3.13." }
- { date: "01.06.20:", desc: "Rebasing to alpine 3.12." }
- { date: "19.12.19:", desc: "Rebasing to alpine 3.11." }
- { date: "28.06.19:", desc: "Rebasing to alpine 3.10." }
- { date: "18.05.19:", desc: "Inital Release" }
- {date: "27.06.24:", desc: "Rebase to Alpine 3.20."}
- {date: "12.12.23:", desc: "Rebase to Alpine 3.19, move binaries to /app."}
- {date: "05.07.23:", desc: "Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)"}
- {date: "13.02.23:", desc: "Rebase to Alpine 3.17, migrate to s6v3."}
- {date: "05.04.22:", desc: "Move `sync` folder to `/config`."}
- {date: "02.04.22:", desc: "Rebase to alpine 3.15. Fix ffmpeg download."}
- {date: "17.05.21:", desc: "Deprecating the env vars `USER`, `PASSWORD` and `USE_JSON` as mStream v5 requires the use of `config.json`."}
- {date: "23.01.21:", desc: "Rebasing to alpine 3.13."}
- {date: "01.06.20:", desc: "Rebasing to alpine 3.12."}
- {date: "19.12.19:", desc: "Rebasing to alpine 3.11."}
- {date: "28.06.19:", desc: "Rebasing to alpine 3.10."}
- {date: "18.05.19:", desc: "Inital Release"}

View File

@ -1,12 +0,0 @@
#!/usr/bin/with-contenv bash
# make our folders
[[ ! -d /config/keys ]] && \
mkdir -p \
/config/keys
# create keys
[[ ! -e /config/keys/certificate.pem ]] && \
openssl req -x509 -nodes -days 3650 \
-newkey rsa:2048 -keyout /config/keys/private-key.pem -out /config/keys/certificate.pem \
-subj "/CN=mstream"

View File

@ -1,33 +1,20 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
# make folders
mkdir -p \
/config/{album-art,db,logs}
/config/{album-art,db,keys,logs,sync} \
/music
# create keys
if [[ ! -e /config/keys/certificate.pem ]]; then
openssl req -x509 -nodes -days 3650 \
-newkey rsa:2048 -keyout /config/keys/private-key.pem -out /config/keys/certificate.pem \
-subj "/CN=mstream"
fi
# copy config.json if doesn't exist
[[ ! -e /config/config.json ]] && \
if [[ ! -e /config/config.json ]]; then
cp /defaults/config.json /config/config.json
# Backwards compatibility notice
if [ -n "$USER" ] || [ -n "$PASSWORD" ] || [ -n "$USE_JSON" ]; then
echo '
*************************************
*************************************
**** ****
**** $USER, $PASSWORD and ****
**** ****
**** $USE_JSON env vars are ****
**** ****
**** deprecated. ****
**** ****
**** Please edit config.json ****
**** ****
**** or use the web ui to ****
**** ****
**** modify the settings. ****
**** ****
*************************************
*************************************'
fi
if grep -q '"webAppDirectory": "public"' /config/config.json; then
@ -52,6 +39,6 @@ if grep -q '"webAppDirectory": "public"' /config/config.json; then
fi
# permissions
chown abc:abc -R \
/config
lsiown -R abc:abc \
/config \
/app/mstream/bin

View File

@ -0,0 +1 @@
oneshot

View File

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

View File

@ -0,0 +1 @@
3

View File

@ -0,0 +1,8 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
PORT=$(jq -r '.port' /config/config.json)
exec \
s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z localhost ${PORT}" \
cd /app/mstream s6-setuidgid abc mstream -j /config/config.json

View File

@ -0,0 +1 @@
longrun

View File

@ -1,6 +0,0 @@
#!/usr/bin/with-contenv bash
cd /opt/mstream || exit
exec \
s6-setuidgid abc mstream -j /config/config.json