From d2e513a8d0adfa4e3c0b65ac3bf58f281802eb6c Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 28 May 2023 17:33:16 +0200 Subject: [PATCH 01/49] v8.18 - DietPi-Software | Update Radarr and Readarr fallback URLs --- dietpi/dietpi-software | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 5e4446e0e4..070b64755c 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -9700,7 +9700,7 @@ _EOF_ # ARMv7 else local url=$(curl -sSfL 'https://api.github.com/repos/Radarr/Radarr/releases/latest' | mawk -F\" '/"browser_download_url": .*linux-core-arm\.tar\.gz"/{print $4}') - local fallback_url='https://github.com/Radarr/Radarr/releases/download/v4.4.4.7068/Radarr.master.4.4.4.7068.linux-core-arm.tar.gz' + local fallback_url='https://github.com/Radarr/Radarr/releases/download/v4.5.2.7388/Radarr.master.4.5.2.7388.linux-core-arm.tar.gz' fi # ARMv8 @@ -10232,7 +10232,7 @@ _EOF_ *) local arch='x64';; esac - local fallback_url="https://github.com/Readarr/Readarr/releases/download/v0.1.5.1832/Readarr.develop.0.1.5.1832.linux-core-$arch.tar.gz" + local fallback_url="https://github.com/Readarr/Readarr/releases/download/v0.1.6.1867/Readarr.develop.0.1.6.1867.linux-core-$arch.tar.gz" Download_Install "$(curl -sSfL 'https://api.github.com/repos/Readarr/Readarr/releases' | mawk -F\" "/\"browser_download_url\": .*linux-core-$arch\.tar\.gz\"/{print \$4}" | head -1)" G_EXEC mv Readarr /opt/readarr fi From 5991a7af359fa003a09f9a0e4c055ec576513fdd Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 28 May 2023 18:10:13 +0200 Subject: [PATCH 02/49] v8.18 - DietPi-Software | Minor --- dietpi/dietpi-software | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 070b64755c..18d973d329 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -1548,13 +1548,12 @@ Available commands: #-------------------------------------------------------------------------------- software_id=2 aSOFTWARE_NAME[$software_id]='Folding@Home' - aSOFTWARE_DESC[$software_id]='distributed disease research project' + aSOFTWARE_DESC[$software_id]='Help desease research with your computing power!' aSOFTWARE_CATX[$software_id]=19 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/distributed_projects/#foldinghome' - # - ARMv6 - ARMv7 + # - ARMv6/7/RISC-V: No package: https://download.foldingathome.org/releases/public/release/fahclient/ aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0 aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,2]=0 - # - RISC-V: No package: https://download.foldingathome.org/releases/public/release/fahclient/ aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=133 From 044ec97de14374d4fb0d82aca473287e90a14fe2 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 28 May 2023 18:17:03 +0200 Subject: [PATCH 03/49] v8.18 - CI | DietPi-Software: Test java command when testing JRE and JDK install --- .github/workflows/dietpi-software.bash | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 223e31b509..327c3490f0 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -193,6 +193,7 @@ Process_Software() 199) aSERVICES[i]='spotifyd';; # aPORTS[4079]='tcp';; ??? 185) aSERVICES[i]='docker' aPORTS[9002]='tcp';; #172) aSERVICES[i]='wg-quick@wg0' aPORTS[51820]='udp';; # cannot be installed non-interactively + 196) aCOMMANDS[i]='java -version' *) :;; esac done @@ -209,6 +210,7 @@ do #61) Process_Software 60;; # Cannot be installed in CI 49|165) Process_Software 88;; 205) Process_Software webserver;; + 8) Process_Software 196;; *) :;; esac Process_Software "$i" From e6d4ba34b4acf678267f67a304c4512c85f44f5d Mon Sep 17 00:00:00 2001 From: MichaIng Date: Sun, 28 May 2023 18:18:19 +0200 Subject: [PATCH 04/49] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 327c3490f0..7d50397e20 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -193,7 +193,7 @@ Process_Software() 199) aSERVICES[i]='spotifyd';; # aPORTS[4079]='tcp';; ??? 185) aSERVICES[i]='docker' aPORTS[9002]='tcp';; #172) aSERVICES[i]='wg-quick@wg0' aPORTS[51820]='udp';; # cannot be installed non-interactively - 196) aCOMMANDS[i]='java -version' + 196) aCOMMANDS[i]='java -version';; *) :;; esac done From 42ec9a572f054892e1fc188e0a3f2686fc6d1bd8 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 19:43:30 +0200 Subject: [PATCH 05/49] v8.18 - DietPi-Software | LXQt: Resolved an issue where the install on Bookworm systems failed since configs were missing. --- .conf/desktop/lxqt/lxqt-bookworm.7z | Bin 0 -> 1058 bytes .conf/desktop/lxqt/lxqt-stretch.7z | Bin 4208 -> 0 bytes CHANGELOG.txt | 1 + 3 files changed, 1 insertion(+) create mode 100644 .conf/desktop/lxqt/lxqt-bookworm.7z delete mode 100644 .conf/desktop/lxqt/lxqt-stretch.7z diff --git a/.conf/desktop/lxqt/lxqt-bookworm.7z b/.conf/desktop/lxqt/lxqt-bookworm.7z new file mode 100644 index 0000000000000000000000000000000000000000..ddbf415a270609a06fbceb57a8571c8a5f9ac855 GIT binary patch literal 1058 zcmV+-1l{{Ldc3bE8~_BvIcN3X0{{R30000Z0000000009GXG`Z1rP$~T>veS$qe+c zc_^(c+amxA0lrBqSoF`EZNhg4Gn37M<;KgNMH{wd+ad@-xi2$ z2GH6p=@$O9Z?CX>J}82Y4*~}Q#M1T=n9t3S+w+CaO}Jbuj}y#jgjjS$Gz2~VdB)R2 zEO^}2IAYs%+{NQ`h-Yj~d-`+l5$afK4BL`~MI@}31B(MSW z=Srhg|98Bx{&V#v_-Ca4h0luaxTU>gChy8y1!Y?+qZO~dwXeByoQ!TIs`$_JU&XnW zhj-B|HEo;vyuw%#7q)VsAa^E$G^AP8tc8jx zaFdvlp1xjQq!05-029?H_iFWz1nDP_L)zHoY=L+7=-CTBie+On-p zNz!_7OE)huyEthXMmsxqsAP&VS9M3+Z?^?`foJwA!p)?(v)J7>?I;2{)= zG1Lmj{drtTMakb=WU)FufkA$XWz8Gw0RjvvFS;rgr6hozqqT*@aYH+S5WbU) zV=wJnMUy=1OzG}!8{C~^)E97ey_xYN_T_KYR;7N?3y}anA;%?0R|V4?qgWzE2qd=@kSqI!whszFoMR$2ha}sx zGkf>gy&0n`A;#YEu^2#+f>;}!162#df>kS#4wBXM1nME}3l#j@{=&qVaZ990^9fSC zoqRvV&+0DC@DfAe5M8WkqG1UlGx-conr?gM(36Qp9FMwrT`?Tb*9HyVz!I>|<^ud? z9bHJ4a=bMt5JMwXnKwR8*G zunX7nSRsd?iT*gXtVLG_{TNfY6{uQc9a>5u@ax;%^4cVIWg?kLfB+W;g6{zdfbakZ c3jqKDBLe{e1zi9T000bu)(Qb7s8iDb0D1G_g8%>k literal 0 HcmV?d00001 diff --git a/.conf/desktop/lxqt/lxqt-stretch.7z b/.conf/desktop/lxqt/lxqt-stretch.7z deleted file mode 100644 index 119d1045a9d44aeb0c34bc516d333059125b4780..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4208 zcmai&S3Dblx5pEEkJ@`y?IKoGjMj`=tyQx|%qoHirNnN8qQtCOdsCx!>{S$16t(xJ zMpfPZ?|rzR`_g+J&Uya+&ib4q7tmUDj~ze|^Z>#sMg#b7EYdTMCR!(sJo47!0v?8cyga-r}r%yy8b9Us`r^F$xY} zwq23GG!%iUQLfS&Vizx!9uKphYz!ifK*&=?ZE$5$K#A)_D_6Vg5K-c2^&`bG{SvV+ zIZtnN0Ha_%(%s!V+<4_m&G>U8iY`SCOI`gN&F(J2by!6eT^*%TCbsBAHRX>#Mf@-Z zw;#(yIe+dY@7_6V7YwiRyQ2t0fi%SRxh&rv0D70#}D})8^ik$^AxT|D-|IquvBNC+;i- zR&+JyO|19WDO36$I@pE~HNwwwv*akJ^`PX#<2w9E{j?z1ScBLI5iRwT6|dL>?8H|FtH5D%mEOnpkhkWsNo@1+Adpwf?G40DEA zf=n`=C9#a&AL(9jhtZwbK7$cydM+XKw=3=!3Y2hdWaya$)>>4M)w?TD5LZ{kCvcIq zFvfuODOX3cCQJUrYs>#`wRx}CI9rtR-2bIJ9Dc-?owff5DrdtQH+m;%;h0FCzGbG` zsY19Glju+N=1%N=&r>O8)1Tf27eZZhAkSDP!@~XTlR_QkgL$ zu+ExPq%Fh)4FCWE92T0emoT{P3o9~jmjD<<<>_B9C@%r#mY0?hA_FV|5rFo8r*Q45 zl&YN+r)|S-koxn|%8agPHD5(Zv^-A=d*=}3#`Euydm?22X)R5tf#gpX8a?l}? zDtqv57~?Kmzy~TJ!f-c8t6_~RaI*a`r;UxTHw^CR@&aaK1Mz|T!v0bMz5^QmOUwmTgho)vtbYH!#eN7y(@7mB< z^tC=QmG8*X-#C?kt;nr`!AEIB+Pl1Tg21n{%SzXhfnrz4Qf)~Q}m%ff!xOFn&Io`H*eJ|ye%R$ z^Mr!H0I5}ulWIK0J1$spQ$rdC3mZm_KC z3Nx=He-!N7>>f2(k_n3I46{jmtCtk&vIp6?t4UiP$+m72I&foP8iVhEJQaqgQqIe& zm&1_9#jE^`B#j`0BkG&OfOj7L0#EzDu2GErmeAUM!KpProLo}pkUsOfvj_UqJ*8h; z-I7{qj5cB-<1;sU*5MhPSEX11-GB1B-iWiv8@WS@_}=va%R_GkOrcf( zWkOInA-{^9>|;RBd2T%}mQksJh|tHo$!ar?`F>KpD6V3M=LyxNtGvoWb9J5ilMU1K zG{a)oYw_#w2Qo&ak&j5c)RJ;0+n3XO(x1@aB_1Q%U0FAkevh0EQK)?+>4ra-CVm+! za31{bwqr8Sj~jhFdd;BwRsZ8PTj`KW+WY|Kw0DX8)wEg6nYkV=(jz1$&hEXumi)KcyqVKbk^PCwqHrXtaIqHq(-58>s-+2RQ2A{jc}UIzjwgC*j1)zhknHJS7KA13FBl6>0@NXum3m>t-54)R7CuSjIwuuzb zaBB^tmQ!_mfwzQbl4~cPNi5$A7a;Lm)r)qmq%3mW2%nHa5WV>)WP~w1b?m`&P%|wX zT(zMp>K?|b|LL*0@EY{(nh7|C2Imp@jvzAT0iWdB+W@!Pt5Pr(-%M-(r|4+~sbBQd z1|{`VhmzqQToJ~iEKnlzFvXxmo3ds*S(t+75Z|uS-rOtlvde`@aBos3#tvB9N+wpM ze7mg&+0|t{r0Dq?l+yR!9`+U5rGYA?Age!E`JQ6EtsoX|yaZUnYXM6BQ;)yv-ib%g zMkl5d;wS_k3{E)0E$~Zb&KNR7rLjr@ zhgE5 zPS^!(YeVHpW~Q@glRg6?1cgkm16tf;lODYDqG=2ts>^cm+fMED%at;TF+cX>m@oKa z0QwXmem=RQi5dsO0}aO0^mX_m+e-&YVa%vkD=E&`LptOYzatgsO}DKWqlMI`X5yM9 zy;=SoG{x;4Q~BHlED94evr&r@(BY>yI|nIp6N#Aq(%DP_%uJ+@ zVrzx&9^t-hFpy`r#G#ISXVl=_6u5fIs0cQCWILNlQWR?iC$_N#Jnuj3*rtzzHW9u3 z(P(V;g|jhd?9^+g#66c+Ft)t-^RL%ymBKe}g6QWg!kS9*N{;Lup}oVw3jRX@TI0hjumqASGteD~IZ2AJ+^CpVO< zCTmfuUDErkOx1;boz9d`35MA4^h(}v{kBlWQWUA$f`Tqn)2|M+r&ef*#Bj=dQj>Pi|fh#{78iiazbLoM=*M*L8#ryi=?wNt7b`_ z^OLx9N#*FM(s0|4U9}_^bna)8P$PNx{){TLoTP0X?au8}?E%e0Fprf0J6x525fXGJ z2}k|Z(2V#LNFNMyo59R97@WEIrP%P>-B%O5<44;LN?blems@fgs;^pUAym79!x>GW zf6`74R`DivG1uydAsh=kZmaO9Kcz6ufD7|0<2JBd2CtyX#rUCAZtiu6!uWw;&Z1pd zHM7=WYy1=NGi{TLy%L(#DBQ+*)=O!7A0u)`%jwVU__}ME(-6^%|$df_J}k?qo3djQJNaU8IS9&5aITnttWM`(^JxCo2j>TxIx~y}^Xd zOncAl&CpNrA{2kR32V&5OKa$J+X0F89c>02c_DF4YeDFvz&d(!!Ka>W$+HA z9CkhnZ_F(=HpC*=B6xg);Zv3kllAE%*txz(#@5K4a3h+Fp&F{8litJP6=QZcnJg#N zK?YyZ`Yg@S0_MG*x@fHA#XPZ^?R|;!jVw2EY3#24ea{|b&iN-0qmag`u*kku?=4y! zpM`FUUk|06pLIR?-RKwZ!&*W*443O_qD(2OcuEbrw7pm?nA_j~tgW{z2tF>iUl*;3x7}2;z7QeI?PV;a zF$I+Tpaphto$zE)Jk9UHy^hK_f>b{i8{`dPO;?b%d~Fe6|Ix?qV@HgYf}do@VkY;P vz&Jws9v}w*U?Peu1(Kq|0L0`#0FVzK2qd%u{Cz4=gw2rwkBvqt0D%7jBxle& diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 25ef12c6df..90c896f26e 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -13,6 +13,7 @@ Bug fixes: - DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @lima1 for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 - DietPi-Software | Domoticz: Resolved an issue where the installation failed when trying to unpack the tarball. Many thanks to @mcnahum for reporting this issue: https://github.com/MichaIng/DietPi/issues/6369 - DietPi-Software | motionEye: Resolved an issue where the installation failed on ARMv6, ARMv7 and RISC-V Bookworm systems due to missing build dependencies. Many thanks to @magicfoxt-magicfox for reporting this issue: https://github.com/MichaIng/DietPi/issues/6333 +- DietPi-Software | LXQt: Resolved an issue where the install on Bookworm systems failed since configs were missing. As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/XXXX From 070f07c7570447310d1aff3ac94eb587604d5ebc Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 19:56:49 +0200 Subject: [PATCH 06/49] v8.18 - DietPi-Software | frp: Update fallback URL --- dietpi/dietpi-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 18d973d329..17d6b468f3 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -6573,7 +6573,7 @@ _EOF_ esac # Download - local fallback_url="https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_$arch.tar.gz" + local fallback_url="https://github.com/fatedier/frp/releases/download/v0.49.0/frp_0.49.0_linux_$arch.tar.gz" Download_Install "$(curl -sSfL 'https://api.github.com/repos/fatedier/frp/releases/latest' | mawk -F\" "/\"browser_download_url\": .*\/frp_[0-9.]*_linux_$arch\.tar\.gz\"/{print \$4}")" G_EXEC cd frp_* From 46fd29b616a730ceadc26de34081f668517d791d Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 20:10:23 +0200 Subject: [PATCH 07/49] v8.18 - CI | DietPi-Software: Numerically sort software ID case loop --- .github/workflows/dietpi-software.bash | 180 ++++++++++++------------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 7d50397e20..0e6a891a0f 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -70,130 +70,130 @@ Process_Software() do case $i in 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aPORTS[80]='tcp';; - 152) aSERVICES[i]='avahi-daemon' aPORTS[5353]='udp';; - 104) aSERVICES[i]='dropbear' aPORTS[22]='tcp';; - 105) aSERVICES[i]='ssh' aPORTS[22]='tcp';; - 194) aSERVICES[i]='postgresql';; + 2) aSERVICES[i]='fahclient' aPORTS[7396]='tcp';; + 16) aSERVICES[i]='microblog-pub' aPORTS[8007]='tcp';; + 28|120) aSERVICES[i]='vncserver' aPORTS[5901]='tcp';; 29) aSERVICES[i]='xrdp' aPORTS[3389]='tcp';; 30) aSERVICES[i]='nxserver' aPORTS[4000]='tcp';; - 200) aSERVICES[i]='dietpi-dashboard' aPORTS[5252]='tcp';; - 99) aSERVICES[i]='node_exporter' aPORTS[9100]='tcp';; - 44) aSERVICES[i]='transmission-daemon' aPORTS[9091]='tcp';; - 94) aSERVICES[i]='proftpd' aPORTS[21]='tcp';; - 96) aSERVICES[i]='smbd' aPORTS[139]='tcp' aPORTS[445]='tcp';; - 95) aSERVICES[i]='vsftpd' aPORTS[21]='tcp';; - 109) aSERVICES[i]='nfs-kernel-server' aPORTS[2049]='tcp';; - 83) aSERVICES[i]='apache2' aPORTS[80]='tcp';; - 85) aSERVICES[i]='nginx' aPORTS[80]='tcp';; - 84) aSERVICES[i]='lighttpd' aPORTS[80]='tcp';; - 88) aSERVICES[i]='mariadb' aPORTS[3306]='tcp';; - 91) aSERVICES[i]='redis-server' aPORTS[6379]='tcp';; - 89) case $DISTRO in 'buster') aSERVICES[i]='php7.3-fpm';; 'bullseye') aSERVICES[i]='php7.4-fpm';; *) aSERVICES[i]='php8.2-fpm';; esac;; - 125) aSERVICES[i]='synapse' aPORTS[8008]='tcp';; - 128) aSERVICES[i]='mpd' aPORTS[6600]='tcp';; - 133) aSERVICES[i]='yacy' aPORTS[8090]='tcp';; - 186) aSERVICES[i]='ipfs' aPORTS[5003]='tcp' aPORTS[8087]='tcp';; - 16) aSERVICES[i]='microblog-pub' aPORTS[8007]='tcp';; - 2) aSERVICES[i]='fahclient' aPORTS[7396]='tcp';; 32) aSERVICES[i]='ympd' aPORTS[1337]='tcp';; - 148) aSERVICES[i]='mympd' aPORTS[1333]='tcp';; - 121) aSERVICES[i]='roonbridge' aPORTS[9003]='udp';; - 118) aSERVICES[i]='mopidy' aPORTS[6680]='tcp';; + 33) aSERVICES[i]='airsonic' aPORTS[8080]='tcp';; + 35) aSERVICES[i]='logitechmediaserver' aPORTS[9000]='tcp';; + 36) aSERVICES[i]='Squeezelite';; # Random high UDP port + 37) aSERVICES[i]='shairport-sync' aPORTS[5000]='tcp';; # AirPlay 2 would be TCP port 7000 39) aSERVICES[i]='minidlna' aPORTS[8200]='tcp';; - 111) aSERVICES[i]='urbackupsrv' aPORTS[55414]='tcp';; - 59) aSERVICES[i]='raspimjpeg';; + 41) aSERVICES[i]='emby-server' aPORTS[8096]='tcp';; + 42) aSERVICES[i]='plexmediaserver' aPORTS[32400]='tcp';; + 43) aSERVICES[i]='mumble-server' aPORTS[64738]='tcp';; + 44) aSERVICES[i]='transmission-daemon' aPORTS[9091]='tcp';; 45) aSERVICES[i]='deluged deluge-web' aPORTS[8112]='tcp' aPORTS[58846]='tcp' aPORTS[6882]='tcp';; - 115) aSERVICES[i]='webmin' aPORTS[10000]='tcp';; - 135) aSERVICES[i]='icecast2 darkice' aPORTS[8000]='tcp';; - #184) aSERVICES[i]='tor' aPORTS[443]='tcp' aPORTS[9051]='tcp';; # Cannot be installed non-interactively, ports can be chosen and depend on chosen relay type - 182) aSERVICES[i]='unbound' aPORTS[53]='udp'; [[ ${aSERVICES[126]} ]] && aPORTS[5353]='udp';; # Uses port 5353 if Pi-hole or AdGuard Home is installed, but those do listen on port 53 instead - #93) aSERVICES[i]='pihole-FTL' aPORTS[53]='udp';; # Cannot be installed non-interactively - 126) aSERVICES[i]='adguardhome' aPORTS[53]='udp' aPORTS[8083]='tcp'; [[ ${aSERVICES[182]} ]] && aPORTS[5353]='udp';; # Unbound uses port 5353 if AdGuard Home is installed - 33) aSERVICES[i]='airsonic' aPORTS[8080]='tcp';; - 204) aSERVICES[i]='navidrome' aPORTS[4533]='tcp';; - 100) aSERVICES[i]='pijuice';; # aPORTS[????]='tcp';; - #171) aSERVICES[i]='frps frpc' aPORTS[7000]='tcp' aPORTS[7500]='tcp' aPORTS[7400]='tcp';; # Cannot be installed non-interactively, ports on chosen type - 122) aSERVICES[i]='node-red' aPORTS[1880]='tcp';; - 123) aSERVICES[i]='mosquitto' aPORTS[1883]='tcp';; - 131) aSERVICES[i]='blynkserver' aPORTS[9443]='tcp';; - 124) aSERVICES[i]='networkaudiod';; # aPORTS[????]='tcp';; + 46) aSERVICES[i]='qbittorrent' aPORTS[1340]='tcp' aPORTS[6881]='tcp';; + 49) aSERVICES[i]='gogs' aPORTS[3000]='tcp';; + 50) aSERVICES[i]='syncthing' aPORTS[8384]='tcp';; + 52) aSERVICES[i]='cuberite' aPORTS[1339]='tcp';; + 53) aSERVICES[i]='mineos' aPORTS[8443]='tcp';; + 58) aSERVICES[i]='tailscale';; # aPORTS[????]='udp';; + 59) aSERVICES[i]='raspimjpeg';; + #60) aPORTS[53]='udp' aPORTS[68]='udp';; Cannot be installed in CI since a WiFi interface is required + #61) aSERVICES[i]='tor' aPORTS[9040]='udp';; Cannot be installed in CI since a WiFi interface is required + 65) aSERVICES[i]='netdata' aPORTS[19999]='tcp';; + 66) aSERVICES[i]='rpimonitor' aPORTS[8888]='tcp';; 71) aSERVICES[i]='webiopi' aPORTS[8002]='tcp';; - 98) aSERVICES[i]='haproxy' aPORTS[80]='tcp';; - 35) aSERVICES[i]='logitechmediaserver' aPORTS[9000]='tcp';; - 28|120) aSERVICES[i]='vncserver' aPORTS[5901]='tcp';; 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aPORTS[8086]='tcp' aPORTS[8088]='tcp';; 77) aSERVICES[i]='grafana-server' aPORTS[3001]='tcp';; 80) aSERVICES[i]='ubooquity' aPORTS[2038]='tcp' aPORTS[2039]='tcp';; - 179) aSERVICES[i]='komga' aPORTS[2037]='tcp';; - 58) aSERVICES[i]='tailscale';; # aPORTS[????]='udp';; + 83) aSERVICES[i]='apache2' aPORTS[80]='tcp';; + 84) aSERVICES[i]='lighttpd' aPORTS[80]='tcp';; + 85) aSERVICES[i]='nginx' aPORTS[80]='tcp';; + 86) aSERVICES[i]='roon-extension-manager';; + 88) aSERVICES[i]='mariadb' aPORTS[3306]='tcp';; + 89) case $DISTRO in 'buster') aSERVICES[i]='php7.3-fpm';; 'bullseye') aSERVICES[i]='php7.4-fpm';; *) aSERVICES[i]='php8.2-fpm';; esac;; + 91) aSERVICES[i]='redis-server' aPORTS[6379]='tcp';; + #93) aSERVICES[i]='pihole-FTL' aPORTS[53]='udp';; # Cannot be installed non-interactively + 94) aSERVICES[i]='proftpd' aPORTS[21]='tcp';; + 95) aSERVICES[i]='vsftpd' aPORTS[21]='tcp';; + 96) aSERVICES[i]='smbd' aPORTS[139]='tcp' aPORTS[445]='tcp';; 97) aSERVICES[i]='openvpn' aPORTS[1194]='udp';; - #117) :;; # ToDo: Implement automated install via /boot/unattended_pivpn.conf - 201) aSERVICES[i]='zerotier-one' aPORTS[9993]='tcp';; - #60) aPORTS[53]='udp' aPORTS[68]='udp';; Cannot be installed in CI since a WiFi interface is required - #61) aSERVICES[i]='tor' aPORTS[9040]='udp';; Cannot be installed in CI since a WiFi interface is required - 37) aSERVICES[i]='shairport-sync' aPORTS[5000]='tcp';; # AirPlay 2 would be TCP port 7000 - 36) aSERVICES[i]='Squeezelite';; # Random high UDP port - 66) aSERVICES[i]='rpimonitor' aPORTS[8888]='tcp';; - 65) aSERVICES[i]='netdata' aPORTS[19999]='tcp';; - 43) aSERVICES[i]='mumble-server' aPORTS[64738]='tcp';; - 41) aSERVICES[i]='emby-server' aPORTS[8096]='tcp';; - 42) aSERVICES[i]='plexmediaserver' aPORTS[32400]='tcp';; - 52) aSERVICES[i]='cuberite' aPORTS[1339]='tcp';; - 53) aSERVICES[i]='mineos' aPORTS[8443]='tcp';; - 49) aSERVICES[i]='gogs' aPORTS[3000]='tcp';; - 165) aSERVICES[i]='gitea' aPORTS[3000]='tcp';; - 46) aSERVICES[i]='qbittorrent' aPORTS[1340]='tcp' aPORTS[6881]='tcp';; + 98) aSERVICES[i]='haproxy' aPORTS[80]='tcp';; + 99) aSERVICES[i]='node_exporter' aPORTS[9100]='tcp';; + 100) aSERVICES[i]='pijuice';; # aPORTS[????]='tcp';; + 104) aSERVICES[i]='dropbear' aPORTS[22]='tcp';; + 105) aSERVICES[i]='ssh' aPORTS[22]='tcp';; + 106) aSERVICES[i]='lidarr' aPORTS[8686]='tcp';; 107) aSERVICES[i]='rtorrent' aPORTS[49164]='tcp' aPORTS[6881]='udp';; - 132) aSERVICES[i]='aria2' aPORTS[6800]='tcp';; # aPORTS[6881-6999]='tcp';; # Listens on random port + 109) aSERVICES[i]='nfs-kernel-server' aPORTS[2049]='tcp';; + 111) aSERVICES[i]='urbackupsrv' aPORTS[55414]='tcp';; + 115) aSERVICES[i]='webmin' aPORTS[10000]='tcp';; 116) aSERVICES[i]='medusa' aPORTS[8081]='tcp';; - 50) aSERVICES[i]='syncthing' aPORTS[8384]='tcp';; + #117) :;; # ToDo: Implement automated install via /boot/unattended_pivpn.conf + 118) aSERVICES[i]='mopidy' aPORTS[6680]='tcp';; + 121) aSERVICES[i]='roonbridge' aPORTS[9003]='udp';; + 122) aSERVICES[i]='node-red' aPORTS[1880]='tcp';; + 123) aSERVICES[i]='mosquitto' aPORTS[1883]='tcp';; + 124) aSERVICES[i]='networkaudiod';; # aPORTS[????]='tcp';; + 125) aSERVICES[i]='synapse' aPORTS[8008]='tcp';; + 126) aSERVICES[i]='adguardhome' aPORTS[53]='udp' aPORTS[8083]='tcp'; [[ ${aSERVICES[182]} ]] && aPORTS[5353]='udp';; # Unbound uses port 5353 if AdGuard Home is installed + 128) aSERVICES[i]='mpd' aPORTS[6600]='tcp';; + 131) aSERVICES[i]='blynkserver' aPORTS[9443]='tcp';; + 132) aSERVICES[i]='aria2' aPORTS[6800]='tcp';; # aPORTS[6881-6999]='tcp';; # Listens on random port + 133) aSERVICES[i]='yacy' aPORTS[8090]='tcp';; + 135) aSERVICES[i]='icecast2 darkice' aPORTS[8000]='tcp';; 136) aSERVICES[i]='motioneye' aPORTS[8765]='tcp';; 137) aSERVICES[i]='mjpg-streamer' aPORTS[8082]='tcp';; 138) aSERVICES[i]='virtualhere' aPORTS[7575]='tcp';; 139) aSERVICES[i]='sabnzbd' aPORTS[8080]='tcp';; # ToDo: Solve conflict with Airsonic - 177) aSERVICES[i]='firefox-sync' aPORTS[5002]='tcp';; - 183) aSERVICES[i]='vaultwarden' aPORTS[8001]='tcp';; - 142) aSERVICES[i]='snapd';; + 140) aSERVICES[i]='domoticz' aPORTS[8124]='tcp' aPORTS[8424]='tcp';; 141) aSERVICES[i]='spotify-connect-web' aPORTS[4000]='tcp';; + 142) aSERVICES[i]='snapd';; 143) aSERVICES[i]='koel' aPORTS[8003]='tcp';; 144) aSERVICES[i]='sonarr' aPORTS[8989]='tcp';; 145) aSERVICES[i]='radarr' aPORTS[7878]='tcp';; - 106) aSERVICES[i]='lidarr' aPORTS[8686]='tcp';; - 180) aSERVICES[i]='bazarr' aPORTS[6767]='tcp';; 146) aSERVICES[i]='tautulli' aPORTS[8181]='tcp';; 147) aSERVICES[i]='jackett' aPORTS[9117]='tcp';; + 148) aSERVICES[i]='mympd' aPORTS[1333]='tcp';; 149) aSERVICES[i]='nzbget' aPORTS[6789]='tcp';; 151) aSERVICES[i]='prowlarr' aPORTS[9696]='tcp';; - 203) aSERVICES[i]='readarr' aPORTS[8787]='tcp';; - 155) aSERVICES[i]='htpc-manager' aPORTS[8085]='tcp';; + 152) aSERVICES[i]='avahi-daemon' aPORTS[5353]='udp';; 153) aSERVICES[i]='octoprint' aPORTS[5001]='tcp';; - 187) aSERVICES[i]='cups' aPORTS[631]='tcp';; 154) aSERVICES[i]='roonserver';; # Listens on a variety of different port ranges + 155) aSERVICES[i]='htpc-manager' aPORTS[8085]='tcp';; + 157) aSERVICES[i]='home-assistant' aPORTS[8123]='tcp';; 158) aSERVICES[i]='minio' aPORTS[9000]='tcp';; # ToDo: Solve port conflict with LMS - 162) aSERVICES[i]='docker';; 161) aSERVICES[i]='bdd' aPORTS[80]='tcp' aPORTS[443]='tcp';; - 164) aSERVICES[i]='nukkit' aPORTS[19132]='udp';; + 162) aSERVICES[i]='docker';; 163) aSERVICES[i]='gmediarender';; # DLNA => UPnP high range of ports + 164) aSERVICES[i]='nukkit' aPORTS[19132]='udp';; + 165) aSERVICES[i]='gitea' aPORTS[3000]='tcp';; 166) aSERVICES[i]='pi-spc';; 167) aSERVICES[i]='raspotify';; 169) aSERVICES[i]='voice-recognizer';; + #171) aSERVICES[i]='frps frpc' aPORTS[7000]='tcp' aPORTS[7500]='tcp' aPORTS[7400]='tcp';; # Cannot be installed non-interactively, ports on chosen type + #172) aSERVICES[i]='wg-quick@wg0' aPORTS[51820]='udp';; # cannot be installed non-interactively 176) aSERVICES[i]='mycroft';; - 86) aSERVICES[i]='roon-extension-manager';; + 177) aSERVICES[i]='firefox-sync' aPORTS[5002]='tcp';; 178) aSERVICES[i]='jellyfin' aPORTS[8097]='tcp';; - 206) aSERVICES[i]='openhab' aPORTS[8444]='tcp';; - 157) aSERVICES[i]='home-assistant' aPORTS[8123]='tcp';; + 179) aSERVICES[i]='komga' aPORTS[2037]='tcp';; + 180) aSERVICES[i]='bazarr' aPORTS[6767]='tcp';; 181) aSERVICES[i]='papermc' aPORTS[25565]='tcp';; - 140) aSERVICES[i]='domoticz' aPORTS[8124]='tcp' aPORTS[8424]='tcp';; + 182) aSERVICES[i]='unbound' aPORTS[53]='udp'; [[ ${aSERVICES[126]} ]] && aPORTS[5353]='udp';; # Uses port 5353 if Pi-hole or AdGuard Home is installed, but those do listen on port 53 instead + 183) aSERVICES[i]='vaultwarden' aPORTS[8001]='tcp';; + #184) aSERVICES[i]='tor' aPORTS[443]='tcp' aPORTS[9051]='tcp';; # Cannot be installed non-interactively, ports can be chosen and depend on chosen relay type + 185) aSERVICES[i]='docker' aPORTS[9002]='tcp';; + 186) aSERVICES[i]='ipfs' aPORTS[5003]='tcp' aPORTS[8087]='tcp';; + 187) aSERVICES[i]='cups' aPORTS[631]='tcp';; 191) aSERVICES[i]='snapserver' aPORTS[1780]='tcp';; #192) aSERVICES[i]='snapclient';; # cannot be installed non-interactively - 202) aCOMMANDS[i]='rclone -h';; - 209) aCOMMANDS[i]='restic version';; + 194) aSERVICES[i]='postgresql';; + 196) aCOMMANDS[i]='java -version';; 198) aSERVICES[i]='filebrowser' aPORTS[8084]='tcp';; 199) aSERVICES[i]='spotifyd';; # aPORTS[4079]='tcp';; ??? - 185) aSERVICES[i]='docker' aPORTS[9002]='tcp';; - #172) aSERVICES[i]='wg-quick@wg0' aPORTS[51820]='udp';; # cannot be installed non-interactively - 196) aCOMMANDS[i]='java -version';; + 200) aSERVICES[i]='dietpi-dashboard' aPORTS[5252]='tcp';; + 201) aSERVICES[i]='zerotier-one' aPORTS[9993]='tcp';; + 202) aCOMMANDS[i]='rclone -h';; + 203) aSERVICES[i]='readarr' aPORTS[8787]='tcp';; + 204) aSERVICES[i]='navidrome' aPORTS[4533]='tcp';; + 206) aSERVICES[i]='openhab' aPORTS[8444]='tcp';; + 209) aCOMMANDS[i]='restic version';; *) :;; esac done @@ -201,16 +201,16 @@ Process_Software() for i in $SOFTWARE do case $i in - 47|114|168) Process_Software 88 89 91 webserver;; - 38|40|48|54|55|57|59|90|160) Process_Software 88 89 webserver;; + 205) Process_Software webserver;; 27|56|63|64|107|132) Process_Software 89 webserver;; # 93 (Pi-hole) cannot be installed non-interactively - 125) Process_Software 194;; + 38|40|48|54|55|57|59|90|160) Process_Software 88 89 webserver;; + 47|114|168) Process_Software 88 89 91 webserver;; + 8) Process_Software 196;; 32|148|119) Process_Software 128;; 129) Process_Software 88 89 128 webserver;; - #61) Process_Software 60;; # Cannot be installed in CI 49|165) Process_Software 88;; - 205) Process_Software webserver;; - 8) Process_Software 196;; + #61) Process_Software 60;; # Cannot be installed in CI + 125) Process_Software 194;; *) :;; esac Process_Software "$i" From 70f7fae2f2ba3f2cc485ef0a1ea032682d28cd18 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 20:36:36 +0200 Subject: [PATCH 08/49] v8.18 - CI | DietPi-Software: Show last 25 journal lines only on failure --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 0e6a891a0f..644ac2e8eb 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -334,7 +334,7 @@ fi G_EXEC eval 'echo '\''[ $exit_code = 0 ] && > /success; poweroff'\'' >> rootfs/boot/Automation_Custom_Script.sh' # Shutdown as well on failure -G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -e; ss -tlpn; df -h; free -h; poweroff; }|' rootfs/boot/dietpi/dietpi-login +G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -n 25; ss -tlpn; df -h; free -h; poweroff; }|' rootfs/boot/dietpi/dietpi-login ########################################## # Boot container From afd1ca188f26a2d808d4f987d2294ea6b2d4a5f5 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 20:45:24 +0200 Subject: [PATCH 09/49] v8.18 - DietPi-Software | TigerVNC: Resolved an issue on Bookworm systems where the VNC password was not set as expected since the tigervncpasswd command became a dedicated DEB package "tigervnc-tools". --- CHANGELOG.txt | 3 ++- dietpi/dietpi-software | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 90c896f26e..c17af42085 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -13,7 +13,8 @@ Bug fixes: - DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @lima1 for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 - DietPi-Software | Domoticz: Resolved an issue where the installation failed when trying to unpack the tarball. Many thanks to @mcnahum for reporting this issue: https://github.com/MichaIng/DietPi/issues/6369 - DietPi-Software | motionEye: Resolved an issue where the installation failed on ARMv6, ARMv7 and RISC-V Bookworm systems due to missing build dependencies. Many thanks to @magicfoxt-magicfox for reporting this issue: https://github.com/MichaIng/DietPi/issues/6333 -- DietPi-Software | LXQt: Resolved an issue where the install on Bookworm systems failed since configs were missing. +- DietPi-Software | LXQt: Resolved an issue on Bookworm systems where the install failed since configs were missing. +- DietPi-Software | TigerVNC: Resolved an issue on Bookworm systems where the VNC password was not set as expected since the tigervncpasswd command became a dedicated DEB package "tigervnc-tools". As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/XXXX diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 17d6b468f3..fa43179069 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -7171,8 +7171,10 @@ _EOF_ # netbase is required until Bullseye to solve: "Use of uninitialized value $proto in socket at /usr/bin/tigervncserver" # - It is a recommendation and no dependency of perl, but expected by some packages depending on perl only: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=939055 # tigervnc-common is required as it is a recommendation only until Bullseye. + # tigervnc-tools ships tigervncpasswd as dedicated package since Bookworm. local apackages=() (( $G_DISTRO > 5 )) || apackages=('tigervnc-common' 'netbase') + (( $G_DISTRO > 6 )) && apackages=('tigervnc-tools') G_AGI tigervnc-standalone-server tigervnc-scraping-server "${apackages[@]}" fi From 97e380af765b7e58938a84e78a61311814b00da5 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 21:26:50 +0200 Subject: [PATCH 10/49] v8.18 - CI | DietPi-Software: Start non-controlled services as well before testing service and port status --- .github/workflows/dietpi-software.bash | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 644ac2e8eb..b85199c8d0 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -302,6 +302,8 @@ fi (( $ARCH < 3 && $G_HW_ARCH > 9 )) && G_EXEC eval 'echo -e '\''tmpfs /mnt/dietpi_userdata tmpfs size=3G,noatime,lazytime\ntmpfs /root tmpfs size=3G,noatime,lazytime'\'' >> rootfs/etc/fstab' # Check for service status, ports and commands +# shellcheck disable=SC2016 +G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1'\'' > rootfs/boot/Automation_Custom_Script.sh' if (( ${#aSERVICES[@]} || ${#aPORTS[@]} || ${#aCOMMANDS[@]} )) then @@ -340,5 +342,5 @@ G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -n 25; ss -tlpn; df -h; free -h # Boot container ########################################## systemd-nspawn -bD rootfs -[[ -f 'rootfs/success' ]] || { journalctl -e; df -h; free -h; exit 1; } +[[ -f 'rootfs/success' ]] || { journalctl -n 25; df -h; free -h; exit 1; } } From 45c6b01b3f13996be39fb9cb74ec726b5af388a1 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 21:48:57 +0200 Subject: [PATCH 11/49] v8.18 - CI | DietPi-Software: Add tests for SSH client, SMB client, FFmpeg, Node and Git commands --- .github/workflows/dietpi-software.bash | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index b85199c8d0..7eaed8ced5 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -70,8 +70,13 @@ Process_Software() do case $i in 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aPORTS[80]='tcp';; + 0) aSERVICES[i]='ssh -V';; + 1) aSERVICES[i]='smbclient -V';; 2) aSERVICES[i]='fahclient' aPORTS[7396]='tcp';; + 7) aSERVICES[i]='ffmpeg -version';; + 9) aSERVICES[i]='node -v';; 16) aSERVICES[i]='microblog-pub' aPORTS[8007]='tcp';; + 17) aSERVICES[i]='git -v';; 28|120) aSERVICES[i]='vncserver' aPORTS[5901]='tcp';; 29) aSERVICES[i]='xrdp' aPORTS[3389]='tcp';; 30) aSERVICES[i]='nxserver' aPORTS[4000]='tcp';; From a6973d08b3bdc5e95e38d097a791d9b95e352e5f Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 21:52:28 +0200 Subject: [PATCH 12/49] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 7eaed8ced5..953a2a75c7 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -308,7 +308,7 @@ fi # Check for service status, ports and commands # shellcheck disable=SC2016 -G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login +G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1'\'' > rootfs/boot/Automation_Custom_Script.sh' if (( ${#aSERVICES[@]} || ${#aPORTS[@]} || ${#aCOMMANDS[@]} )) then From baf4e55e1aa98c8f288514839b362fc5f75eaef2 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 22:22:45 +0200 Subject: [PATCH 13/49] v8.18 - CI | DietPi-Software: Typos --- .github/workflows/dietpi-software.bash | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 953a2a75c7..da9b45c689 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -70,13 +70,13 @@ Process_Software() do case $i in 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aPORTS[80]='tcp';; - 0) aSERVICES[i]='ssh -V';; - 1) aSERVICES[i]='smbclient -V';; + 0) aCOMMANDS[i]='ssh -V';; + 1) aCOMMANDS[i]='smbclient -V';; 2) aSERVICES[i]='fahclient' aPORTS[7396]='tcp';; - 7) aSERVICES[i]='ffmpeg -version';; - 9) aSERVICES[i]='node -v';; + 7) aCOMMANDS[i]='ffmpeg -version';; + 9) aCOMMANDS[i]='node -v';; 16) aSERVICES[i]='microblog-pub' aPORTS[8007]='tcp';; - 17) aSERVICES[i]='git -v';; + 17) aCOMMANDS[i]='git -v';; 28|120) aSERVICES[i]='vncserver' aPORTS[5901]='tcp';; 29) aSERVICES[i]='xrdp' aPORTS[3389]='tcp';; 30) aSERVICES[i]='nxserver' aPORTS[4000]='tcp';; From 79fc97a3739d904f4bcb3492a9d7dd46d008fc23 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 22:40:32 +0200 Subject: [PATCH 14/49] v8.18 - DietPi-Software | Disable browser dependency/preference on RISC-V as there are neither Chromium nor Firefox packages available for this arch yet --- dietpi/dietpi-software | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index fa43179069..184a0c6c21 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -1815,7 +1815,7 @@ Available commands: aSOFTWARE_DEPS[$software_id]='5 6' # - ARMv6 since Bullseye: https://github.com/RPi-Distro/chromium-browser/issues/21 (( $G_DISTRO < 6 )) || aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0 - # - RISC-V: Missing package + # - RISC-V: Missing package: https://packages.debian.org/sid/chromium aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=67 @@ -1826,7 +1826,7 @@ Available commands: aSOFTWARE_DEPS[$software_id]='5 6' # - ARMv6 since Bullseye: https://github.com/RPi-Distro/chromium-browser/issues/21#issuecomment-997044303 (( $G_DISTRO < 6 )) || aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0 - # - RISC-V: Missing package + # - RISC-V: Missing package: https://packages.debian.org/sid/firefox-esr aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=174 @@ -2095,8 +2095,8 @@ Available commands: # - Do no reinstalls, as those are loose dependencies (( ${aSOFTWARE_INSTALL_STATE[67]} < 1 && ${aSOFTWARE_INSTALL_STATE[113]} < 1 )) || return 1 - # Disable browser preference on ARMv6 Bullseye+ systems: https://github.com/RPi-Distro/chromium-browser/issues/21 - (( $G_HW_ARCH == 1 && $G_DISTRO > 5 )) && return 1 + # Disable browser preference on ARMv6 Bullseye+ and RISC-V systems: https://github.com/RPi-Distro/chromium-browser/issues/21 + (( $G_HW_ARCH == 1 && $G_DISTRO > 5 )) || (( $G_HW_ARCH == 11 )) && return 1 # Auto-select browser if manually installed if dpkg-query -s 'firefox-esr' &> /dev/null From 8d797640abc0ab82d3f08388180b13432948b4cc Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 22:51:48 +0200 Subject: [PATCH 15/49] v8.18 - CI | DietPi-Software: Workaround for Node.js on ARMv6 --- .github/workflows/dietpi-software.bash | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index da9b45c689..59dccf186d 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -306,6 +306,9 @@ fi # Workaround for failing 32-bit ARM Rust builds on ext4 in QEMU emulated container on 64-bit host: https://github.com/rust-lang/cargo/issues/9545 (( $ARCH < 3 && $G_HW_ARCH > 9 )) && G_EXEC eval 'echo -e '\''tmpfs /mnt/dietpi_userdata tmpfs size=3G,noatime,lazytime\ntmpfs /root tmpfs size=3G,noatime,lazytime'\'' >> rootfs/etc/fstab' +# Workaround for Node.js on ARMv6 +(( $ARCH == 1 )) && G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/G_EXEC chmod +x node-install.sh/a\\sed -i "/^ARCH=/c\\ARCH=armv6l" node-install.sh'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login + # Check for service status, ports and commands # shellcheck disable=SC2016 G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login From 6bde1296aa54bb2ce2e1e89853fa6cdf0b43a4e0 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 23:21:45 +0200 Subject: [PATCH 16/49] v8.18 - CI | DietPi-Software: Fix ARM index handling --- .github/workflows/dietpi-software.bash | 28 +++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 59dccf186d..788ce00272 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -49,11 +49,11 @@ do done [[ $DISTRO =~ ^'buster'|'bullseye'|'bookworm'$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } case $ARCH in - 'armv6l') image="DietPi_Container-ARMv6-${DISTRO^}";; - 'armv7l') image="DietPi_Container-ARMv7-${DISTRO^}";; - 'aarch64') image="DietPi_Container-ARMv8-${DISTRO^}";; - 'x86_64') image="DietPi_Container-x86_64-${DISTRO^}";; - 'riscv64') image="DietPi_Container-RISC-V-Sid";; + 'armv6l') image="DietPi_Container-ARMv6-${DISTRO^}" arch=1;; + 'armv7l') image="DietPi_Container-ARMv7-${DISTRO^}" arch=2;; + 'aarch64') image="DietPi_Container-ARMv8-${DISTRO^}" arch=3;; + 'x86_64') image="DietPi_Container-x86_64-${DISTRO^}" arch=10;; + 'riscv64') image="DietPi_Container-RISC-V-Sid" arch=11;; *) G_DIETPI-NOTIFY 1 "Invalid architecture \"$ARCH\" passed, aborting..."; exit 1;; esac [[ $SOFTWARE =~ ^[0-9\ ]+$ ]] || { G_DIETPI-NOTIFY 1 "Invalid software list \"$SOFTWARE\" passed, aborting..."; exit 1; } @@ -225,7 +225,7 @@ done # Dependencies ########################################## apackages=('7zip' 'parted' 'fdisk' 'systemd-container') -(( $G_HW_ARCH == $ARCH || ( $G_HW_ARCH < 10 && $G_HW_ARCH > $ARCH ) )) || apackages+=('qemu-user-static' 'binfmt-support') +(( $G_HW_ARCH == $arch || ( $G_HW_ARCH < 10 && $G_HW_ARCH > $arch ) )) || apackages+=('qemu-user-static' 'binfmt-support') G_AG_CHECK_INSTALL_PREREQ "${apackages[@]}" ########################################## @@ -252,15 +252,15 @@ G_EXEC mkdir rootfs G_EXEC mount "${FP_LOOP}p1" rootfs # Force ARMv6 arch on Raspbian -[[ $ARCH == 'armv6l' ]] && G_EXEC sed -i '/# Start DietPi-Software/iG_EXEC sed -i -e '\''/^G_HW_ARCH=/cG_HW_ARCH=1'\'' -e '\''/^G_HW_ARCH_NAME=/cG_HW_ARCH_NAME=armv6l'\'' /boot/dietpi/.hw_model' rootfs/boot/dietpi/dietpi-login +(( $arch == 1 )) && G_EXEC sed -i '/# Start DietPi-Software/iG_EXEC sed -i -e '\''/^G_HW_ARCH=/cG_HW_ARCH=1'\'' -e '\''/^G_HW_ARCH_NAME=/cG_HW_ARCH_NAME=armv6l'\'' /boot/dietpi/.hw_model' rootfs/boot/dietpi/dietpi-login # Force RPi on ARM systems if requested -if [[ $RPI == 'true' && $ARCH == 'a'* ]] +if [[ $RPI == 'true' ]] && (( $arch < 10 )) then - case $ARCH in - 'armv6l') model=1;; - 'armv7l') model=2;; - 'aarch64') model=4;; + case $arch in + 1) model=1;; + 2) model=2;; + 3) model=4;; *) G_DIETPI-NOTIFY 1 "Invalid architecture $ARCH beginning with \"a\" but not being one of the known/accepted ARM architectures. This should never happen!"; exit 1;; esac G_EXEC sed -i "/# Start DietPi-Software/iG_EXEC sed -i -e '/^G_HW_MODEL=/cG_HW_MODEL=$model' -e '/^G_HW_MODEL_NAME=/cG_HW_MODEL_NAME=\"RPi $model ($ARCH)\"' /boot/dietpi/.hw_model; > /boot/config.txt; > /boot/cmdline.txt" rootfs/boot/dietpi/dietpi-login @@ -304,10 +304,10 @@ then fi # Workaround for failing 32-bit ARM Rust builds on ext4 in QEMU emulated container on 64-bit host: https://github.com/rust-lang/cargo/issues/9545 -(( $ARCH < 3 && $G_HW_ARCH > 9 )) && G_EXEC eval 'echo -e '\''tmpfs /mnt/dietpi_userdata tmpfs size=3G,noatime,lazytime\ntmpfs /root tmpfs size=3G,noatime,lazytime'\'' >> rootfs/etc/fstab' +(( $arch < 3 && $G_HW_ARCH > 9 )) && G_EXEC eval 'echo -e '\''tmpfs /mnt/dietpi_userdata tmpfs size=3G,noatime,lazytime\ntmpfs /root tmpfs size=3G,noatime,lazytime'\'' >> rootfs/etc/fstab' # Workaround for Node.js on ARMv6 -(( $ARCH == 1 )) && G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/G_EXEC chmod +x node-install.sh/a\\sed -i "/^ARCH=/c\\ARCH=armv6l" node-install.sh'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login +(( $arch == 1 )) && G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/G_EXEC chmod +x node-install.sh/a\\sed -i "/^ARCH=/c\\ARCH=armv6l" node-install.sh'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login # Check for service status, ports and commands # shellcheck disable=SC2016 From fcd7ce8459c58b8e2280d9e95634bf78c757a6b9 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Mon, 29 May 2023 23:32:01 +0200 Subject: [PATCH 17/49] v8.18 - CI | DietPi-Software: Show service logs on failure --- .github/workflows/dietpi-software.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 788ce00272..6db88849f7 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -320,7 +320,7 @@ then do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo -n '\e[33m[ INFO ] Checking $i service status:\e[0m ' -systemctl is-active '$i' || exit_code=1 +systemctl is-active '$i' || { journalctl -u '$i'; exit_code=1; } _EOF_ done for i in "${!aPORTS[@]}" @@ -341,7 +341,7 @@ fi # Success flag and shutdown # shellcheck disable=SC2016 -G_EXEC eval 'echo '\''[ $exit_code = 0 ] && > /success; poweroff'\'' >> rootfs/boot/Automation_Custom_Script.sh' +G_EXEC eval 'echo '\''[ $exit_code = 0 ] && > /success || { journalctl -n 25; ss -tlpn; df -h; free -h; poweroff; }; poweroff'\'' >> rootfs/boot/Automation_Custom_Script.sh' # Shutdown as well on failure G_EXEC sed -i 's|Prompt_on_Failure$|{ journalctl -n 25; ss -tlpn; df -h; free -h; poweroff; }|' rootfs/boot/dietpi/dietpi-login From 9852c8a0743608be4b83be725a68f5c468427ede Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 01:57:39 +0200 Subject: [PATCH 18/49] v8.18 - CI | DietPi-Software: Airsonic depends on JRE --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 6db88849f7..885b1be6df 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -210,7 +210,7 @@ do 27|56|63|64|107|132) Process_Software 89 webserver;; # 93 (Pi-hole) cannot be installed non-interactively 38|40|48|54|55|57|59|90|160) Process_Software 88 89 webserver;; 47|114|168) Process_Software 88 89 91 webserver;; - 8) Process_Software 196;; + 8|33) Process_Software 196;; 32|148|119) Process_Software 128;; 129) Process_Software 88 89 128 webserver;; 49|165) Process_Software 88;; From 6dbcd553682fc6736b0990bdbffc711a9c9f42c7 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 16:30:05 +0200 Subject: [PATCH 19/49] v8.18 - CI | DietPi-Software: Check service port and command only if software really got installed, i.e. if it is supported on the tested hardware and distro version --- .github/workflows/dietpi-software.bash | 262 +++++++++++++------------ 1 file changed, 135 insertions(+), 127 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 885b1be6df..a1e5e8226a 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -62,142 +62,142 @@ esac ########################################## # Create service and port lists ########################################## -aSERVICES=() aPORTS=() aCOMMANDS=() +aSERVICES=() aTCP=() aUDP=() aCOMMANDS=() Process_Software() { local i for i in "$@" do case $i in - 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aPORTS[80]='tcp';; + 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aTCP[i]='80';; 0) aCOMMANDS[i]='ssh -V';; 1) aCOMMANDS[i]='smbclient -V';; - 2) aSERVICES[i]='fahclient' aPORTS[7396]='tcp';; + 2) aSERVICES[i]='fahclient' aTCP[i]='7396';; 7) aCOMMANDS[i]='ffmpeg -version';; 9) aCOMMANDS[i]='node -v';; - 16) aSERVICES[i]='microblog-pub' aPORTS[8007]='tcp';; + 16) aSERVICES[i]='microblog-pub' aTCP[i]='8007';; 17) aCOMMANDS[i]='git -v';; - 28|120) aSERVICES[i]='vncserver' aPORTS[5901]='tcp';; - 29) aSERVICES[i]='xrdp' aPORTS[3389]='tcp';; - 30) aSERVICES[i]='nxserver' aPORTS[4000]='tcp';; - 32) aSERVICES[i]='ympd' aPORTS[1337]='tcp';; - 33) aSERVICES[i]='airsonic' aPORTS[8080]='tcp';; - 35) aSERVICES[i]='logitechmediaserver' aPORTS[9000]='tcp';; + 28|120) aSERVICES[i]='vncserver' aTCP[i]='5901';; + 29) aSERVICES[i]='xrdp' aTCP[i]='3389';; + 30) aSERVICES[i]='nxserver' aTCP[i]='4000';; + 32) aSERVICES[i]='ympd' aTCP[i]='1337';; + 33) aSERVICES[i]='airsonic' aTCP[i]='8080';; + 35) aSERVICES[i]='logitechmediaserver' aTCP[i]='9000';; 36) aSERVICES[i]='Squeezelite';; # Random high UDP port - 37) aSERVICES[i]='shairport-sync' aPORTS[5000]='tcp';; # AirPlay 2 would be TCP port 7000 - 39) aSERVICES[i]='minidlna' aPORTS[8200]='tcp';; - 41) aSERVICES[i]='emby-server' aPORTS[8096]='tcp';; - 42) aSERVICES[i]='plexmediaserver' aPORTS[32400]='tcp';; - 43) aSERVICES[i]='mumble-server' aPORTS[64738]='tcp';; - 44) aSERVICES[i]='transmission-daemon' aPORTS[9091]='tcp';; - 45) aSERVICES[i]='deluged deluge-web' aPORTS[8112]='tcp' aPORTS[58846]='tcp' aPORTS[6882]='tcp';; - 46) aSERVICES[i]='qbittorrent' aPORTS[1340]='tcp' aPORTS[6881]='tcp';; - 49) aSERVICES[i]='gogs' aPORTS[3000]='tcp';; - 50) aSERVICES[i]='syncthing' aPORTS[8384]='tcp';; - 52) aSERVICES[i]='cuberite' aPORTS[1339]='tcp';; - 53) aSERVICES[i]='mineos' aPORTS[8443]='tcp';; - 58) aSERVICES[i]='tailscale';; # aPORTS[????]='udp';; + 37) aSERVICES[i]='shairport-sync' aTCP[i]='5000';; # AirPlay 2 would be TCP port 7000 + 39) aSERVICES[i]='minidlna' aTCP[i]='8200';; + 41) aSERVICES[i]='emby-server' aTCP[i]='8096';; + 42) aSERVICES[i]='plexmediaserver' aTCP[i]='32400';; + 43) aSERVICES[i]='mumble-server' aTCP[i]='64738';; + 44) aSERVICES[i]='transmission-daemon' aTCP[i]='9091';; + 45) aSERVICES[i]='deluged deluge-web' aTCP[i]='8112 58846 6882';; + 46) aSERVICES[i]='qbittorrent' aTCP[i]='1340 6881';; + 49) aSERVICES[i]='gogs' aTCP[i]='3000';; + 50) aSERVICES[i]='syncthing' aTCP[i]='8384';; + 52) aSERVICES[i]='cuberite' aTCP[i]='1339';; + 53) aSERVICES[i]='mineos' aTCP[i]='8443';; + 58) aSERVICES[i]='tailscale';; # aUDP[i]='????';; 59) aSERVICES[i]='raspimjpeg';; - #60) aPORTS[53]='udp' aPORTS[68]='udp';; Cannot be installed in CI since a WiFi interface is required - #61) aSERVICES[i]='tor' aPORTS[9040]='udp';; Cannot be installed in CI since a WiFi interface is required - 65) aSERVICES[i]='netdata' aPORTS[19999]='tcp';; - 66) aSERVICES[i]='rpimonitor' aPORTS[8888]='tcp';; - 71) aSERVICES[i]='webiopi' aPORTS[8002]='tcp';; + #60) aUDP[i]='53 68';; Cannot be installed in CI since a WiFi interface is required + #61) aSERVICES[i]='tor' aUDP[i]='9040';; Cannot be installed in CI since a WiFi interface is required + 65) aSERVICES[i]='netdata' aTCP[i]='19999';; + 66) aSERVICES[i]='rpimonitor' aTCP[i]='8888';; + 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; 73) aSERVICES[i]='fail2ban';; - 74) aSERVICES[i]='influxdb' aPORTS[8086]='tcp' aPORTS[8088]='tcp';; - 77) aSERVICES[i]='grafana-server' aPORTS[3001]='tcp';; - 80) aSERVICES[i]='ubooquity' aPORTS[2038]='tcp' aPORTS[2039]='tcp';; - 83) aSERVICES[i]='apache2' aPORTS[80]='tcp';; - 84) aSERVICES[i]='lighttpd' aPORTS[80]='tcp';; - 85) aSERVICES[i]='nginx' aPORTS[80]='tcp';; + 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; + 77) aSERVICES[i]='grafana-server' aTCP[i]='3001';; + 80) aSERVICES[i]='ubooquity' aTCP[i]='2038 2039';; + 83) aSERVICES[i]='apache2' aTCP[i]='80';; + 84) aSERVICES[i]='lighttpd' aTCP[i]='80';; + 85) aSERVICES[i]='nginx' aTCP[i]='80';; 86) aSERVICES[i]='roon-extension-manager';; - 88) aSERVICES[i]='mariadb' aPORTS[3306]='tcp';; + 88) aSERVICES[i]='mariadb' aTCP[i]='3306';; 89) case $DISTRO in 'buster') aSERVICES[i]='php7.3-fpm';; 'bullseye') aSERVICES[i]='php7.4-fpm';; *) aSERVICES[i]='php8.2-fpm';; esac;; - 91) aSERVICES[i]='redis-server' aPORTS[6379]='tcp';; - #93) aSERVICES[i]='pihole-FTL' aPORTS[53]='udp';; # Cannot be installed non-interactively - 94) aSERVICES[i]='proftpd' aPORTS[21]='tcp';; - 95) aSERVICES[i]='vsftpd' aPORTS[21]='tcp';; - 96) aSERVICES[i]='smbd' aPORTS[139]='tcp' aPORTS[445]='tcp';; - 97) aSERVICES[i]='openvpn' aPORTS[1194]='udp';; - 98) aSERVICES[i]='haproxy' aPORTS[80]='tcp';; - 99) aSERVICES[i]='node_exporter' aPORTS[9100]='tcp';; - 100) aSERVICES[i]='pijuice';; # aPORTS[????]='tcp';; - 104) aSERVICES[i]='dropbear' aPORTS[22]='tcp';; - 105) aSERVICES[i]='ssh' aPORTS[22]='tcp';; - 106) aSERVICES[i]='lidarr' aPORTS[8686]='tcp';; - 107) aSERVICES[i]='rtorrent' aPORTS[49164]='tcp' aPORTS[6881]='udp';; - 109) aSERVICES[i]='nfs-kernel-server' aPORTS[2049]='tcp';; - 111) aSERVICES[i]='urbackupsrv' aPORTS[55414]='tcp';; - 115) aSERVICES[i]='webmin' aPORTS[10000]='tcp';; - 116) aSERVICES[i]='medusa' aPORTS[8081]='tcp';; + 91) aSERVICES[i]='redis-server' aTCP[i]='6379';; + #93) aSERVICES[i]='pihole-FTL' aUDP[i]='53';; # Cannot be installed non-interactively + 94) aSERVICES[i]='proftpd' aTCP[i]='21';; + 95) aSERVICES[i]='vsftpd' aTCP[i]='21';; + 96) aSERVICES[i]='smbd' aTCP[i]='139 445';; + 97) aSERVICES[i]='openvpn' aUDP[i]='1194';; + 98) aSERVICES[i]='haproxy' aTCP[i]='80';; + 99) aSERVICES[i]='node_exporter' aTCP[i]='9100';; + 100) aSERVICES[i]='pijuice';; # aTCP[i]='????';; + 104) aSERVICES[i]='dropbear' aTCP[i]='22';; + 105) aSERVICES[i]='ssh' aTCP[i]='22';; + 106) aSERVICES[i]='lidarr' aTCP[i]='8686';; + 107) aSERVICES[i]='rtorrent' aTCP[i]='49164' aUDP[i]='6881';; + 109) aSERVICES[i]='nfs-kernel-server' aTCP[i]='2049';; + 111) aSERVICES[i]='urbackupsrv' aTCP[i]='55414';; + 115) aSERVICES[i]='webmin' aTCP[i]='10000';; + 116) aSERVICES[i]='medusa' aTCP[i]='8081';; #117) :;; # ToDo: Implement automated install via /boot/unattended_pivpn.conf - 118) aSERVICES[i]='mopidy' aPORTS[6680]='tcp';; - 121) aSERVICES[i]='roonbridge' aPORTS[9003]='udp';; - 122) aSERVICES[i]='node-red' aPORTS[1880]='tcp';; - 123) aSERVICES[i]='mosquitto' aPORTS[1883]='tcp';; - 124) aSERVICES[i]='networkaudiod';; # aPORTS[????]='tcp';; - 125) aSERVICES[i]='synapse' aPORTS[8008]='tcp';; - 126) aSERVICES[i]='adguardhome' aPORTS[53]='udp' aPORTS[8083]='tcp'; [[ ${aSERVICES[182]} ]] && aPORTS[5353]='udp';; # Unbound uses port 5353 if AdGuard Home is installed - 128) aSERVICES[i]='mpd' aPORTS[6600]='tcp';; - 131) aSERVICES[i]='blynkserver' aPORTS[9443]='tcp';; - 132) aSERVICES[i]='aria2' aPORTS[6800]='tcp';; # aPORTS[6881-6999]='tcp';; # Listens on random port - 133) aSERVICES[i]='yacy' aPORTS[8090]='tcp';; - 135) aSERVICES[i]='icecast2 darkice' aPORTS[8000]='tcp';; - 136) aSERVICES[i]='motioneye' aPORTS[8765]='tcp';; - 137) aSERVICES[i]='mjpg-streamer' aPORTS[8082]='tcp';; - 138) aSERVICES[i]='virtualhere' aPORTS[7575]='tcp';; - 139) aSERVICES[i]='sabnzbd' aPORTS[8080]='tcp';; # ToDo: Solve conflict with Airsonic - 140) aSERVICES[i]='domoticz' aPORTS[8124]='tcp' aPORTS[8424]='tcp';; - 141) aSERVICES[i]='spotify-connect-web' aPORTS[4000]='tcp';; + 118) aSERVICES[i]='mopidy' aTCP[i]='6680';; + 121) aSERVICES[i]='roonbridge' aUDP[i]='9003';; + 122) aSERVICES[i]='node-red' aTCP[i]='1880';; + 123) aSERVICES[i]='mosquitto' aTCP[i]='1883';; + 124) aSERVICES[i]='networkaudiod';; # aUDP[i]='????';; + 125) aSERVICES[i]='synapse' aTCP[i]='8008';; + 126) aSERVICES[i]='adguardhome' aUDP[i]='53' aTCP[i]='8083'; [[ ${aSERVICES[182]} ]] && aUDP[i]+=' 5353';; # Unbound uses port 5353 if AdGuard Home is installed + 128) aSERVICES[i]='mpd' aTCP[i]='6600';; + 131) aSERVICES[i]='blynkserver' aTCP[i]='9443';; + 132) aSERVICES[i]='aria2' aTCP[i]='6800';; # aTCP[i]+=' 6881-6999';; # Listens on random port + 133) aSERVICES[i]='yacy' aTCP[i]='8090';; + 135) aSERVICES[i]='icecast2 darkice' aTCP[i]='8000';; + 136) aSERVICES[i]='motioneye' aTCP[i]='8765';; + 137) aSERVICES[i]='mjpg-streamer' aTCP[i]='8082';; + 138) aSERVICES[i]='virtualhere' aTCP[i]='7575';; + 139) aSERVICES[i]='sabnzbd' aTCP[i]='8080';; # ToDo: Solve conflict with Airsonic + 140) aSERVICES[i]='domoticz' aTCP[i]='8124 8424';; + 141) aSERVICES[i]='spotify-connect-web' aTCP[i]='4000';; 142) aSERVICES[i]='snapd';; - 143) aSERVICES[i]='koel' aPORTS[8003]='tcp';; - 144) aSERVICES[i]='sonarr' aPORTS[8989]='tcp';; - 145) aSERVICES[i]='radarr' aPORTS[7878]='tcp';; - 146) aSERVICES[i]='tautulli' aPORTS[8181]='tcp';; - 147) aSERVICES[i]='jackett' aPORTS[9117]='tcp';; - 148) aSERVICES[i]='mympd' aPORTS[1333]='tcp';; - 149) aSERVICES[i]='nzbget' aPORTS[6789]='tcp';; - 151) aSERVICES[i]='prowlarr' aPORTS[9696]='tcp';; - 152) aSERVICES[i]='avahi-daemon' aPORTS[5353]='udp';; - 153) aSERVICES[i]='octoprint' aPORTS[5001]='tcp';; + 143) aSERVICES[i]='koel' aTCP[i]='8003';; + 144) aSERVICES[i]='sonarr' aTCP[i]='8989';; + 145) aSERVICES[i]='radarr' aTCP[i]='7878';; + 146) aSERVICES[i]='tautulli' aTCP[i]='8181';; + 147) aSERVICES[i]='jackett' aTCP[i]='9117';; + 148) aSERVICES[i]='mympd' aTCP[i]='1333';; + 149) aSERVICES[i]='nzbget' aTCP[i]='6789';; + 151) aSERVICES[i]='prowlarr' aTCP[i]='9696';; + 152) aSERVICES[i]='avahi-daemon' aUDP[i]='5353';; + 153) aSERVICES[i]='octoprint' aTCP[i]='5001';; 154) aSERVICES[i]='roonserver';; # Listens on a variety of different port ranges - 155) aSERVICES[i]='htpc-manager' aPORTS[8085]='tcp';; - 157) aSERVICES[i]='home-assistant' aPORTS[8123]='tcp';; - 158) aSERVICES[i]='minio' aPORTS[9000]='tcp';; # ToDo: Solve port conflict with LMS - 161) aSERVICES[i]='bdd' aPORTS[80]='tcp' aPORTS[443]='tcp';; + 155) aSERVICES[i]='htpc-manager' aTCP[i]='8085';; + 157) aSERVICES[i]='home-assistant' aTCP[i]='8123';; + 158) aSERVICES[i]='minio' aTCP[i]='9000';; # ToDo: Solve port conflict with LMS + 161) aSERVICES[i]='bdd' aTCP[i]='80 443';; 162) aSERVICES[i]='docker';; 163) aSERVICES[i]='gmediarender';; # DLNA => UPnP high range of ports - 164) aSERVICES[i]='nukkit' aPORTS[19132]='udp';; - 165) aSERVICES[i]='gitea' aPORTS[3000]='tcp';; + 164) aSERVICES[i]='nukkit' aUDP[i]='19132';; + 165) aSERVICES[i]='gitea' aTCP[i]='3000';; 166) aSERVICES[i]='pi-spc';; 167) aSERVICES[i]='raspotify';; 169) aSERVICES[i]='voice-recognizer';; - #171) aSERVICES[i]='frps frpc' aPORTS[7000]='tcp' aPORTS[7500]='tcp' aPORTS[7400]='tcp';; # Cannot be installed non-interactively, ports on chosen type - #172) aSERVICES[i]='wg-quick@wg0' aPORTS[51820]='udp';; # cannot be installed non-interactively + #171) aSERVICES[i]='frps frpc' aTCP[i]='7000 7400 7500';; # Cannot be installed non-interactively, ports on chosen type + #172) aSERVICES[i]='wg-quick@wg0' aUDP[i]='51820';; # cannot be installed non-interactively 176) aSERVICES[i]='mycroft';; - 177) aSERVICES[i]='firefox-sync' aPORTS[5002]='tcp';; - 178) aSERVICES[i]='jellyfin' aPORTS[8097]='tcp';; - 179) aSERVICES[i]='komga' aPORTS[2037]='tcp';; - 180) aSERVICES[i]='bazarr' aPORTS[6767]='tcp';; - 181) aSERVICES[i]='papermc' aPORTS[25565]='tcp';; - 182) aSERVICES[i]='unbound' aPORTS[53]='udp'; [[ ${aSERVICES[126]} ]] && aPORTS[5353]='udp';; # Uses port 5353 if Pi-hole or AdGuard Home is installed, but those do listen on port 53 instead - 183) aSERVICES[i]='vaultwarden' aPORTS[8001]='tcp';; - #184) aSERVICES[i]='tor' aPORTS[443]='tcp' aPORTS[9051]='tcp';; # Cannot be installed non-interactively, ports can be chosen and depend on chosen relay type - 185) aSERVICES[i]='docker' aPORTS[9002]='tcp';; - 186) aSERVICES[i]='ipfs' aPORTS[5003]='tcp' aPORTS[8087]='tcp';; - 187) aSERVICES[i]='cups' aPORTS[631]='tcp';; - 191) aSERVICES[i]='snapserver' aPORTS[1780]='tcp';; + 177) aSERVICES[i]='firefox-sync' aTCP[i]='5002';; + 178) aSERVICES[i]='jellyfin' aTCP[i]='8097';; + 179) aSERVICES[i]='komga' aTCP[i]='2037';; + 180) aSERVICES[i]='bazarr' aTCP[i]='6767';; + 181) aSERVICES[i]='papermc' aTCP[i]='25565';; + 182) aSERVICES[i]='unbound' aUDP[i]='53'; [[ ${aSERVICES[126]} ]] && aUDP[i]+=' 5353';; # Uses port 5353 if Pi-hole or AdGuard Home is installed, but those do listen on port 53 instead + 183) aSERVICES[i]='vaultwarden' aTCP[i]='8001';; + #184) aSERVICES[i]='tor' aTCP[i]='443 9051';; # Cannot be installed non-interactively, ports can be chosen and depend on chosen relay type + 185) aSERVICES[i]='docker' aTCP[i]='9002';; + 186) aSERVICES[i]='ipfs' aTCP[i]='5003 8087';; + 187) aSERVICES[i]='cups' aTCP[i]='631';; + 191) aSERVICES[i]='snapserver' aTCP[i]='1780';; #192) aSERVICES[i]='snapclient';; # cannot be installed non-interactively 194) aSERVICES[i]='postgresql';; 196) aCOMMANDS[i]='java -version';; - 198) aSERVICES[i]='filebrowser' aPORTS[8084]='tcp';; - 199) aSERVICES[i]='spotifyd';; # aPORTS[4079]='tcp';; ??? - 200) aSERVICES[i]='dietpi-dashboard' aPORTS[5252]='tcp';; - 201) aSERVICES[i]='zerotier-one' aPORTS[9993]='tcp';; + 198) aSERVICES[i]='filebrowser' aTCP[i]='8084';; + 199) aSERVICES[i]='spotifyd';; # aTCP[i]='4079';; ??? + 200) aSERVICES[i]='dietpi-dashboard' aTCP[i]='5252';; + 201) aSERVICES[i]='zerotier-one' aTCP[i]='9993';; 202) aCOMMANDS[i]='rclone -h';; - 203) aSERVICES[i]='readarr' aPORTS[8787]='tcp';; - 204) aSERVICES[i]='navidrome' aPORTS[4533]='tcp';; - 206) aSERVICES[i]='openhab' aPORTS[8444]='tcp';; + 203) aSERVICES[i]='readarr' aTCP[i]='8787';; + 204) aSERVICES[i]='navidrome' aTCP[i]='4533';; + 206) aSERVICES[i]='openhab' aTCP[i]='8444';; 209) aCOMMANDS[i]='restic version';; *) :;; esac @@ -311,33 +311,41 @@ fi # Check for service status, ports and commands # shellcheck disable=SC2016 +# - Start all services G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login -G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1'\'' > rootfs/boot/Automation_Custom_Script.sh' -if (( ${#aSERVICES[@]} || ${#aPORTS[@]} || ${#aCOMMANDS[@]} )) +G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1; sleep 30'\'' > rootfs/boot/Automation_Custom_Script.sh' +# - Loop through software IDs to test +printf '%s\n' "${!aSERVICES[@]}" "$!#aTCP[@]}" "${!aUDP[@]}" "${!aCOMMANDS[@]}" | sort -u | while read -r i +do + # - Check whether ID really got installed, to skip software unsupported on hardware or distro + cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +if grep -q '^aSOFTWARE_INSTALL_STATE\[$i\]=2$' /boot/dietpi/.installed then - G_EXEC eval 'echo '\''sleep 30'\'' >> rootfs/boot/Automation_Custom_Script.sh' - for i in "${aSERVICES[@]}" - do - cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh -echo -n '\e[33m[ INFO ] Checking $i service status:\e[0m ' -systemctl is-active '$i' || { journalctl -u '$i'; exit_code=1; } _EOF_ - done - for i in "${!aPORTS[@]}" - do - cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh -echo '\e[33m[ INFO ] Checking ${aPORTS[i]^^} port $i status:\e[0m' -ss -${aPORTS[i]::1}lpn | grep ':${i}[[:blank:]]' || exit_code=1 + # - Check service status + [[ ${aSERVICES[i]} ]] && cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo -n '\e[33m[ INFO ] Checking ${aSERVICES[i]} service status:\e[0m ' +systemctl is-active '${aSERVICES[i]}' || { journalctl -u '${aSERVICES[i]}'; exit_code=1; } +_EOF_ + # - Check TCP ports + [[ ${aTCP[i]} ]] && for j in ${aTCP[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo '\e[33m[ INFO ] Checking TCP port $j status:\e[0m' +ss -tlpn | grep ':${j}[[:blank:]]' || exit_code=1 _EOF_ done - for i in "${aCOMMANDS[@]}" - do - cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh -echo '\e[33m[ INFO ] Testing command $i:\e[0m' -$i || exit_code=1 + # - Check UDP ports + [[ ${aUDP[i]} ]] && for j in ${aUDP[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo '\e[33m[ INFO ] Checking UDP port $j status:\e[0m' +ss -ulpn | grep ':${j}[[:blank:]]' || exit_code=1 _EOF_ done -fi + # - Check commands + [[ ${aCOMMANDS[i]} ]] && cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo '\e[33m[ INFO ] Testing command ${aCOMMANDS[i]}:\e[0m' +${aCOMMANDS[i]} || exit_code=1 +_EOF_ + echo 'fi' >> rootfs/boot/Automation_Custom_Script.sh +done # Success flag and shutdown # shellcheck disable=SC2016 From 0844cf8f4a60a674a0828afbaca3b5268354b956 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 17:48:57 +0200 Subject: [PATCH 20/49] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index a1e5e8226a..30cc683241 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -315,7 +315,7 @@ fi G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1; sleep 30'\'' > rootfs/boot/Automation_Custom_Script.sh' # - Loop through software IDs to test -printf '%s\n' "${!aSERVICES[@]}" "$!#aTCP[@]}" "${!aUDP[@]}" "${!aCOMMANDS[@]}" | sort -u | while read -r i +printf '%s\n' "${!aSERVICES[@]}" "${!aTCP[@]}" "${!aUDP[@]}" "${!aCOMMANDS[@]}" | sort -u | while read -r i do # - Check whether ID really got installed, to skip software unsupported on hardware or distro cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh From 00cefd7bee0a52699ac3eff7fe1845590a0f8c6e Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 18:37:29 +0200 Subject: [PATCH 21/49] v8.18 - CI | DietPi-Software: Switch to Lighttpd as default webserver due to a bug on Bookworm systems in 32-bit ARM containers. Actively replace requested Apache install with Lighttpd as well in this circumstance and print a related warning --- .github/workflows/dietpi-software.bash | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 30cc683241..8028e62c67 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -47,7 +47,7 @@ do esac shift done -[[ $DISTRO =~ ^'buster'|'bullseye'|'bookworm'$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } +[[ $DISTRO =~ ^('buster'|'bullseye'|'bookworm')$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } case $ARCH in 'armv6l') image="DietPi_Container-ARMv6-${DISTRO^}" arch=1;; 'armv7l') image="DietPi_Container-ARMv7-${DISTRO^}" arch=2;; @@ -57,7 +57,10 @@ case $ARCH in *) G_DIETPI-NOTIFY 1 "Invalid architecture \"$ARCH\" passed, aborting..."; exit 1;; esac [[ $SOFTWARE =~ ^[0-9\ ]+$ ]] || { G_DIETPI-NOTIFY 1 "Invalid software list \"$SOFTWARE\" passed, aborting..."; exit 1; } -[[ $RPI =~ ^|'false'|'true'$ ]] || { G_DIETPI-NOTIFY 1 "Invalid RPi flag \"$RPI\" passed, aborting..."; exit 1; } +[[ $RPI =~ ^(|'false'|'true')$ ]] || { G_DIETPI-NOTIFY 1 "Invalid RPi flag \"$RPI\" passed, aborting..."; exit 1; } + +# Workaround for "Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 145." during Apache2 DEB postinst in 32-bit ARM Bookworm container: https://lists.ubuntu.com/archives/foundations-bugs/2022-January/467253.html +[[ $SOFTWARE =~ (^| )83( |$) && $DISTRO == 'bookworm' ]] && (( $arch < 3 )) && { echo '[ WARN ] Installing Lighttpd instead of Apache due to a bug in 32-bit ARM containers'; SOFTWARE=$(sed -Ei 's/(^| )83( |$)/\184\2/' <<< "$SOFTWARE"); } ########################################## # Create service and port lists @@ -69,7 +72,7 @@ Process_Software() for i in "$@" do case $i in - 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[83]='apache2' aTCP[i]='80';; + 'webserver') [[ $SOFTWARE =~ (^| )8[345]( |$) ]] || aSERVICES[84]='lighttpd' aTCP[84]='80';; # Lighttpd as default due to above bug in 32-bit ARM Bookworm containers 0) aCOMMANDS[i]='ssh -V';; 1) aCOMMANDS[i]='smbclient -V';; 2) aSERVICES[i]='fahclient' aTCP[i]='7396';; @@ -289,6 +292,9 @@ G_EXEC rm rootfs/root/.ssh/known_hosts # Apply software IDs to install for i in $SOFTWARE; do G_CONFIG_INJECT "AUTO_SETUP_INSTALL_SOFTWARE_ID=$i" "AUTO_SETUP_INSTALL_SOFTWARE_ID=$i" rootfs/boot/dietpi.txt; done +# Workaround for "Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 145." during Apache2 DEB postinst in 32-bit ARM Bookworm container: https://lists.ubuntu.com/archives/foundations-bugs/2022-January/467253.html +G_CONFIG_INJECT 'AUTO_SETUP_WEB_SERVER_INDEX=' 'AUTO_SETUP_WEB_SERVER_INDEX=-2' rootfs/boot/dietpi.txt + # Workaround for failing Redis as of PrivateUsers=true leading to "Failed to set up user namespacing" G_EXEC mkdir rootfs/etc/systemd/system/redis-server.service.d G_EXEC eval 'echo -e '\''[Service]\nPrivateUsers=0'\'' > rootfs/etc/systemd/system/redis-server.service.d/dietpi-container.conf' From 4f7b00763becc1466eea2470cf5d6701efc2e937 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 19:13:38 +0200 Subject: [PATCH 22/49] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 8028e62c67..7ad7531256 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -60,7 +60,7 @@ esac [[ $RPI =~ ^(|'false'|'true')$ ]] || { G_DIETPI-NOTIFY 1 "Invalid RPi flag \"$RPI\" passed, aborting..."; exit 1; } # Workaround for "Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 145." during Apache2 DEB postinst in 32-bit ARM Bookworm container: https://lists.ubuntu.com/archives/foundations-bugs/2022-January/467253.html -[[ $SOFTWARE =~ (^| )83( |$) && $DISTRO == 'bookworm' ]] && (( $arch < 3 )) && { echo '[ WARN ] Installing Lighttpd instead of Apache due to a bug in 32-bit ARM containers'; SOFTWARE=$(sed -Ei 's/(^| )83( |$)/\184\2/' <<< "$SOFTWARE"); } +[[ $SOFTWARE =~ (^| )83( |$) && $DISTRO == 'bookworm' ]] && (( $arch < 3 )) && { echo '[ WARN ] Installing Lighttpd instead of Apache due to a bug in 32-bit ARM containers'; SOFTWARE=$(sed -E 's/(^| )83( |$)/\184\2/g' <<< "$SOFTWARE"); } ########################################## # Create service and port lists @@ -350,7 +350,7 @@ _EOF_ echo '\e[33m[ INFO ] Testing command ${aCOMMANDS[i]}:\e[0m' ${aCOMMANDS[i]} || exit_code=1 _EOF_ - echo 'fi' >> rootfs/boot/Automation_Custom_Script.sh + G_EXEC eval 'echo fi >> rootfs/boot/Automation_Custom_Script.sh' done # Success flag and shutdown From 5406f65d7235de27107a4aa3115b6ba69476ffb5 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 22:19:23 +0200 Subject: [PATCH 23/49] v8.18 (#6398) - CI | DietPi-Software: Add support for defining individual check delays for each software title to give all services sufficient time to start up before checking their status - CI DietPi-Software: Disable Airsonic checks on ARM and RISC-V since the service fails in QEMU-emulated containers, probably due to missing device access --- .github/workflows/dietpi-software.bash | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 7ad7531256..96bc8544c9 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -65,7 +65,7 @@ esac ########################################## # Create service and port lists ########################################## -aSERVICES=() aTCP=() aUDP=() aCOMMANDS=() +aSERVICES=() aTCP=() aUDP=() aCOMMANDS=() aDELAY=() Process_Software() { local i @@ -84,7 +84,7 @@ Process_Software() 29) aSERVICES[i]='xrdp' aTCP[i]='3389';; 30) aSERVICES[i]='nxserver' aTCP[i]='4000';; 32) aSERVICES[i]='ympd' aTCP[i]='1337';; - 33) aSERVICES[i]='airsonic' aTCP[i]='8080';; + 33) (( $arch == 10 )) && aSERVICES[i]='airsonic' aTCP[i]='8080' aDELAY[i]=30;; # Fails in QEMU-emulated containers, probably due to missing device access 35) aSERVICES[i]='logitechmediaserver' aTCP[i]='9000';; 36) aSERVICES[i]='Squeezelite';; # Random high UDP port 37) aSERVICES[i]='shairport-sync' aTCP[i]='5000';; # AirPlay 2 would be TCP port 7000 @@ -319,33 +319,35 @@ fi # shellcheck disable=SC2016 # - Start all services G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login -G_EXEC eval 'echo -e '\''#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1; sleep 30'\'' > rootfs/boot/Automation_Custom_Script.sh' +delay=10 +for i in "${aDELAY[@]}"; do (( $i > $delay )) && delay=$i; done +G_EXEC eval "echo -e '#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1; sleep $delay' > rootfs/boot/Automation_Custom_Script.sh" # - Loop through software IDs to test printf '%s\n' "${!aSERVICES[@]}" "${!aTCP[@]}" "${!aUDP[@]}" "${!aCOMMANDS[@]}" | sort -u | while read -r i do - # - Check whether ID really got installed, to skip software unsupported on hardware or distro + # Check whether ID really got installed, to skip software unsupported on hardware or distro cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh if grep -q '^aSOFTWARE_INSTALL_STATE\[$i\]=2$' /boot/dietpi/.installed then _EOF_ - # - Check service status + # Check service status [[ ${aSERVICES[i]} ]] && cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo -n '\e[33m[ INFO ] Checking ${aSERVICES[i]} service status:\e[0m ' systemctl is-active '${aSERVICES[i]}' || { journalctl -u '${aSERVICES[i]}'; exit_code=1; } _EOF_ - # - Check TCP ports + # Check TCP ports [[ ${aTCP[i]} ]] && for j in ${aTCP[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo '\e[33m[ INFO ] Checking TCP port $j status:\e[0m' ss -tlpn | grep ':${j}[[:blank:]]' || exit_code=1 _EOF_ done - # - Check UDP ports + # Check UDP ports [[ ${aUDP[i]} ]] && for j in ${aUDP[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo '\e[33m[ INFO ] Checking UDP port $j status:\e[0m' ss -ulpn | grep ':${j}[[:blank:]]' || exit_code=1 _EOF_ done - # - Check commands + # Check commands [[ ${aCOMMANDS[i]} ]] && cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo '\e[33m[ INFO ] Testing command ${aCOMMANDS[i]}:\e[0m' ${aCOMMANDS[i]} || exit_code=1 From 18b3e4d9393a67910a75a7e792a411d7d61cc703 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 22:47:21 +0200 Subject: [PATCH 24/49] v8.18 - DietPi-Software | Deluge: Resolved an issue on Bookworm systems where the install failed when trying to alter the service user. --- CHANGELOG.txt | 1 + dietpi/dietpi-software | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index c17af42085..ef5b8bf33b 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -15,6 +15,7 @@ Bug fixes: - DietPi-Software | motionEye: Resolved an issue where the installation failed on ARMv6, ARMv7 and RISC-V Bookworm systems due to missing build dependencies. Many thanks to @magicfoxt-magicfox for reporting this issue: https://github.com/MichaIng/DietPi/issues/6333 - DietPi-Software | LXQt: Resolved an issue on Bookworm systems where the install failed since configs were missing. - DietPi-Software | TigerVNC: Resolved an issue on Bookworm systems where the VNC password was not set as expected since the tigervncpasswd command became a dedicated DEB package "tigervnc-tools". +- DietPi-Software | Deluge: Resolved an issue on Bookworm systems where the install failed when trying to alter the service user. As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/XXXX diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 184a0c6c21..ea554f52a7 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -5533,6 +5533,7 @@ _EOF_ then # Packages G_AGI deluged deluge-web deluge-console + (( $G_DISTRO > 6 )) && G_EXEC systemctl stop deluge-web G_EXEC systemctl stop deluged # Remove SysV service leftovers, installed by Debian APT package @@ -5587,7 +5588,7 @@ _EOF_ G_EXEC chown -R debian-deluged:root /mnt/dietpi_userdata/deluge # Service: https://github.com/deluge-torrent/deluge/blob/develop/packaging/systemd/deluged.service - cat << _EOF_ > /etc/systemd/system/deluged.service + cat << '_EOF_' > /etc/systemd/system/deluged.service [Unit] Description=Deluge Daemon (DietPi) Documentation=man:deluged @@ -5596,8 +5597,8 @@ After=network-online.target remote-fs.target [Service] User=debian-deluged -UMask=002 -ExecStart=$(command -v deluged) -d +UMask=007 +ExecStart=/usr/bin/deluged -d [Install] WantedBy=multi-user.target @@ -5610,12 +5611,13 @@ _EOF_ [Unit] Description=Deluge Web UI (DietPi) Documentation=man:deluge-web -After=deluged.service +Wants=network-online.target +After=network-online.target deluged.service [Service] User=debian-deluged UMask=027 -ExecStart=$(command -v deluge-web)$flag +ExecStart=/usr/bin/deluge-web$flag [Install] WantedBy=multi-user.target From 83ec23695af19fd341e2272e1c1ae03aff83329a Mon Sep 17 00:00:00 2001 From: MichaIng Date: Tue, 30 May 2023 22:56:39 +0200 Subject: [PATCH 25/49] v8.18 - CI | DietPi-Software: Add support for multiple services per software title --- .github/workflows/dietpi-software.bash | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 96bc8544c9..3b4f9d06b2 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -331,10 +331,11 @@ if grep -q '^aSOFTWARE_INSTALL_STATE\[$i\]=2$' /boot/dietpi/.installed then _EOF_ # Check service status - [[ ${aSERVICES[i]} ]] && cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh -echo -n '\e[33m[ INFO ] Checking ${aSERVICES[i]} service status:\e[0m ' -systemctl is-active '${aSERVICES[i]}' || { journalctl -u '${aSERVICES[i]}'; exit_code=1; } + [[ ${aSERVICES[i]} ]] && for j in ${aSERVICES[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh +echo -n '\e[33m[ INFO ] Checking $j service status:\e[0m ' +systemctl is-active '$j' || { journalctl -u '$j'; exit_code=1; } _EOF_ + done # Check TCP ports [[ ${aTCP[i]} ]] && for j in ${aTCP[i]}; do cat << _EOF_ >> rootfs/boot/Automation_Custom_Script.sh echo '\e[33m[ INFO ] Checking TCP port $j status:\e[0m' From 7639bb3d86141a5b70473a927367ab00fb367396 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 00:23:48 +0200 Subject: [PATCH 26/49] v8.18 - CI | DietPi-Software: Add test command for OpenTyrian --- .github/workflows/dietpi-software.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 3b4f9d06b2..78314ca1e1 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -97,6 +97,7 @@ Process_Software() 46) aSERVICES[i]='qbittorrent' aTCP[i]='1340 6881';; 49) aSERVICES[i]='gogs' aTCP[i]='3000';; 50) aSERVICES[i]='syncthing' aTCP[i]='8384';; + 51) aCOMMANDS[i]='/usr/games/opentyrian/opentyrian -h';; 52) aSERVICES[i]='cuberite' aTCP[i]='1339';; 53) aSERVICES[i]='mineos' aTCP[i]='8443';; 58) aSERVICES[i]='tailscale';; # aUDP[i]='????';; From 8769e0addebf2d2eeef8a8f172fe3fb862a47699 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 21:06:37 +0200 Subject: [PATCH 27/49] v8.18 - CI | DietPi-Software: Disable Squeezelite service check since it exits if no audio device exists --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 78314ca1e1..eeb737fc2d 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -86,7 +86,7 @@ Process_Software() 32) aSERVICES[i]='ympd' aTCP[i]='1337';; 33) (( $arch == 10 )) && aSERVICES[i]='airsonic' aTCP[i]='8080' aDELAY[i]=30;; # Fails in QEMU-emulated containers, probably due to missing device access 35) aSERVICES[i]='logitechmediaserver' aTCP[i]='9000';; - 36) aSERVICES[i]='Squeezelite';; # Random high UDP port + #36) aSERVICES[i]='Squeezelite';; # Random high UDP port # Service exits if no audio device has been found, which does not exist on GitHub Actions runners, respectively within the containers 37) aSERVICES[i]='shairport-sync' aTCP[i]='5000';; # AirPlay 2 would be TCP port 7000 39) aSERVICES[i]='minidlna' aTCP[i]='8200';; 41) aSERVICES[i]='emby-server' aTCP[i]='8096';; From 7456ef4b0cc25b50779f97d7b06c81104ab81cd0 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 21:10:27 +0200 Subject: [PATCH 28/49] v8.18 (#6401) - CI | Squeezelite: Update/align workflow and add RISC-V support --- .../shairport-sync/container_build.bash | 2 +- .build/software/squeezelite/build.bash | 12 +- .../software/squeezelite/container_build.bash | 25 +- .github/workflows/squeezelite.yml | 271 ++++-------------- 4 files changed, 72 insertions(+), 238 deletions(-) diff --git a/.build/software/shairport-sync/container_build.bash b/.build/software/shairport-sync/container_build.bash index 330187de1c..f01582ed90 100755 --- a/.build/software/shairport-sync/container_build.bash +++ b/.build/software/shairport-sync/container_build.bash @@ -43,7 +43,7 @@ do esac shift done -[[ $DISTRO =~ ^'buster'|'bullseye'|'bookworm'$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } +[[ $DISTRO =~ ^('buster'|'bullseye'|'bookworm')$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } case $ARCH in 'armv6l') image="DietPi_Container-ARMv6-${DISTRO^}" arch=1;; 'armv7l') image="DietPi_Container-ARMv7-${DISTRO^}" arch=2;; diff --git a/.build/software/squeezelite/build.bash b/.build/software/squeezelite/build.bash index efb4d8e550..9e578c6cba 100755 --- a/.build/software/squeezelite/build.bash +++ b/.build/software/squeezelite/build.bash @@ -138,13 +138,21 @@ DEPS_APT_VERSIONED=${DEPS_APT_VERSIONED%,} # shellcheck disable=SC2001 grep -q 'raspbian' /etc/os-release && DEPS_APT_VERSIONED=$(sed 's/+rp[it][0-9]\+[^)]*)/)/g' <<< "$DEPS_APT_VERSIONED") || DEPS_APT_VERSIONED=$(sed 's/+b[0-9]\+)/)/g' <<< "$DEPS_APT_VERSIONED") +# - Obtain version +version="$(mawk -F\" '/MAJOR_VERSION/{print $2;exit}' squeezelite-master/squeezelite.h).$(mawk -F\" '/MINOR_VERSION/{print $2;exit}' squeezelite-master/squeezelite.h)-$(mawk -F\" '/MICRO_VERSION/{print $2;exit}' squeezelite-master/squeezelite.h)" +G_EXEC curl -sSfo package.deb "https://dietpi.com/downloads/binaries/$G_DISTRO_NAME/squeezelite_$G_HW_ARCH_NAME.deb" +old_version=$(dpkg-deb -f package.deb Version) +G_EXEC rm package.deb +suffix=${old_version#*-dietpi} +[[ $old_version == "$version-"* ]] && suffix="dietpi$((suffix+1))" || suffix="dietpi1" + # - control cat << _EOF_ > "$DIR/DEBIAN/control" Package: squeezelite -Version: $(mawk -F\" '/MAJOR_VERSION/{print $2;exit}' squeezelite-master/squeezelite.h).$(mawk -F\" '/MINOR_VERSION/{print $2;exit}' squeezelite-master/squeezelite.h)-$(mawk -F\" '/MICRO_VERSION/{print $2;exit}' squeezelite-master/squeezelite.h)-dietpi1 +Version: $version-$suffix Architecture: $(dpkg --print-architecture) Maintainer: MichaIng -Date: $(date '+%a, %d %b %Y %T %z') +Date: $(date -u '+%a, %d %b %Y %T %z') Standards-Version: 4.6.2.0 Installed-Size: $(du -sk "$DIR" | mawk '{print $1}') Depends:$DEPS_APT_VERSIONED diff --git a/.build/software/squeezelite/container_build.bash b/.build/software/squeezelite/container_build.bash index 88c9ae2ba1..44d7019178 100755 --- a/.build/software/squeezelite/container_build.bash +++ b/.build/software/squeezelite/container_build.bash @@ -43,18 +43,13 @@ do esac shift done -case $DISTRO in - 5) distro='buster';; - 6) distro='bullseye';; - 7) distro='bookworm';; - *) G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1;; -esac +[[ $DISTRO =~ ^('buster'|'bullseye'|'bookworm')$ ]] || { G_DIETPI-NOTIFY 1 "Invalid distro \"$DISTRO\" passed, aborting..."; exit 1; } case $ARCH in - 1) image="DietPi_Container-ARMv6-${distro^}" arch='armv6l';; - 2) image="DietPi_Container-ARMv7-${distro^}" arch='armv7l';; - 3) image="DietPi_Container-ARMv8-${distro^}" arch='aarch64';; - 10) image="DietPi_Container-x86_64-${distro^}" arch='x86_64';; - 11) image='DietPi_Container-RISC-V-Sid' arch='riscv64';; + 'armv6l') image="DietPi_Container-ARMv6-${DISTRO^}" arch=1;; + 'armv7l') image="DietPi_Container-ARMv7-${DISTRO^}" arch=2;; + 'aarch64') image="DietPi_Container-ARMv8-${DISTRO^}" arch=3;; + 'x86_64') image="DietPi_Container-x86_64-${DISTRO^}" arch=10;; + 'riscv64') image='DietPi_Container-RISC-V-Sid' arch=11;; *) G_DIETPI-NOTIFY 1 "Invalid architecture \"$ARCH\" passed, aborting..."; exit 1;; esac @@ -62,7 +57,7 @@ esac # Dependencies ########################################## apackages=('7zip' 'parted' 'fdisk' 'systemd-container') -(( $G_HW_ARCH == $ARCH || ( $G_HW_ARCH < 10 && $G_HW_ARCH > $ARCH ) )) || apackages+=('qemu-user-static' 'binfmt-support') +(( $G_HW_ARCH == $arch || ( $G_HW_ARCH < 10 && $G_HW_ARCH > $arch ) )) || apackages+=('qemu-user-static' 'binfmt-support') G_AG_CHECK_INSTALL_PREREQ "${apackages[@]}" ########################################## @@ -92,7 +87,7 @@ G_EXEC mount "${FP_LOOP}p1" rootfs G_CONFIG_INJECT 'AUTO_SETUP_AUTOMATED=' 'AUTO_SETUP_AUTOMATED=1' rootfs/boot/dietpi.txt # Force ARMv6 arch on Raspbian -(( $ARCH == 1 )) && echo 'sed -i -e '\''/^G_HW_ARCH=/c\G_HW_ARCH=1'\'' -e '\''/^G_HW_ARCH_NAME=/c\G_HW_ARCH_NAME=armv6l'\'' /boot/dietpi/.hw_model' > rootfs/boot/Automation_Custom_PreScript.sh +(( $arch == 1 )) && echo 'sed -i -e '\''/^G_HW_ARCH=/c\G_HW_ARCH=1'\'' -e '\''/^G_HW_ARCH_NAME=/c\G_HW_ARCH_NAME=armv6l'\'' /boot/dietpi/.hw_model' > rootfs/boot/Automation_Custom_PreScript.sh # Avoid DietPi-Survey uploads to not mess with the statistics G_EXEC rm rootfs/root/.ssh/known_hosts @@ -109,7 +104,7 @@ cat << _EOF_ > rootfs/boot/Automation_Custom_Script.sh || exit 1 #!/bin/dash echo '[ INFO ] Running Squeezelite build script...' bash -c "\$(curl -sSf 'https://raw.githubusercontent.com/$G_GITOWNER/DietPi/$G_GITBRANCH/.build/software/squeezelite/build.bash')" -mv -v '/tmp/squeezelite_$arch.deb' / +mv -v '/tmp/squeezelite_$ARCH.deb' / poweroff _EOF_ @@ -117,5 +112,5 @@ _EOF_ # Boot container ########################################## systemd-nspawn -bD rootfs -[[ -f rootfs/squeezelite_$arch.deb ]] || exit 1 +[[ -f rootfs/squeezelite_$ARCH.deb ]] || exit 1 } diff --git a/.github/workflows/squeezelite.yml b/.github/workflows/squeezelite.yml index b6e8cc8705..08ef07b58b 100644 --- a/.github/workflows/squeezelite.yml +++ b/.github/workflows/squeezelite.yml @@ -3,242 +3,73 @@ on: workflow_dispatch: inputs: arch: - description: 'Target architecture index: 1, 2, 3, 10 or all' + description: 'Target architecture' + type: choice + options: [armv6l, armv7l, aarch64, x86_64, riscv64, all] + default: all required: true - distro: - description: 'Target Debian version index: 5, 6, 7 or all' + dist: + description: 'Target Debian version' + type: choice + options: [buster, bullseye, bookworm, all] + default: all required: true concurrency: group: ${{ github.workflow }}-${{ github.event.inputs.arch }}-${{ github.event.inputs.distro }} cancel-in-progress: true permissions: {} +defaults: + run: + shell: sh + working-directory: /dev/shm jobs: - armv6_buster: - if: ( github.event.inputs.arch == 1 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 5 || github.event.inputs.distro == 'all' ) - # https://github.com/actions/virtual-environments - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 1 -d 5 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_armv6l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/buster/testing/","https://dietpi.com/downloads/binaries/buster/testing/squeezelite_armv6l.deb"]}' - armv6_bullseye: - if: ( github.event.inputs.arch == 1 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 6 || github.event.inputs.distro == 'all' ) + prep: + outputs: + arch: ${{ steps.arch.outputs.arch }} + dist: ${{ steps.dist.outputs.dist }} runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 1 -d 6 - - name: Upload package + - id: arch run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_armv6l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bullseye/testing/","https://dietpi.com/downloads/binaries/bullseye/testing/squeezelite_armv6l.deb"]}' - armv6_bookworm: - if: ( github.event.inputs.arch == 1 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 7 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 1 -d 7 - - name: Upload package + if [ '${{ github.event.inputs.arch }}' = 'all' ] + then + echo 'arch=["armv6l", "armv7l", "aarch64", "x86_64", "riscv64"]' >> "$GITHUB_OUTPUT" + else + echo 'arch=["${{ github.event.inputs.arch }}"]' >> "$GITHUB_OUTPUT" + fi + - id: dist run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_armv6l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bookworm/testing/","https://dietpi.com/downloads/binaries/bookworm/testing/squeezelite_armv6l.deb"]}' - - armv7_buster: - if: ( github.event.inputs.arch == 2 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 5 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 2 -d 5 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_armv7l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/buster/testing/","https://dietpi.com/downloads/binaries/buster/testing/squeezelite_armv7l.deb"]}' - armv7_bullseye: - if: ( github.event.inputs.arch == 2 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 6 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 2 -d 6 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_armv7l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bullseye/testing/","https://dietpi.com/downloads/binaries/bullseye/testing/squeezelite_armv7l.deb"]}' - armv7_bookworm: - if: ( github.event.inputs.arch == 2 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 7 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 2 -d 7 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_armv7l.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bookworm/testing/","https://dietpi.com/downloads/binaries/bookworm/testing/squeezelite_armv7l.deb"]}' - - armv8_buster: - if: ( github.event.inputs.arch == 3 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 5 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 3 -d 5 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_aarch64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/buster/testing/","https://dietpi.com/downloads/binaries/buster/testing/squeezelite_aarch64.deb"]}' - armv8_bullseye: - if: ( github.event.inputs.arch == 3 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 6 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 3 -d 6 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_aarch64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bullseye/testing/","https://dietpi.com/downloads/binaries/bullseye/testing/squeezelite_aarch64.deb"]}' - armv8_bookworm: - if: ( github.event.inputs.arch == 3 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 7 || github.event.inputs.distro == 'all' ) + if [ '${{ github.event.inputs.dist }}' = 'all' ] + then + echo 'dist=["buster", "bullseye", "bookworm"]' >> "$GITHUB_OUTPUT" + else + echo 'dist=["${{ github.event.inputs.dist }}"]' >> "$GITHUB_OUTPUT" + fi + build: + needs: prep + strategy: + matrix: + arch: ${{ fromJson(needs.prep.outputs.arch) }} + dist: ${{ fromJson(needs.prep.outputs.dist) }} + exclude: + - { arch: riscv64, dist: buster } + - { arch: riscv64, dist: bullseye } + fail-fast: false + name: "Build: ${{ matrix.arch }} - ${{ matrix.dist }}" + # https://github.com/actions/virtual-environments runs-on: ubuntu-22.04 - defaults: - run: - shell: sh steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 3 -d 7 - - name: Upload package + - name: Build + run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=$GITHUB_REF_NAME; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/$GITHUB_REF_NAME/.build/software/squeezelite/container_build.bash")" -- -a '${{ matrix.arch }}' -d '${{ matrix.dist }}' + - name: Upload run: | - [ -d ~/.ssh ] || mkdir ~/.ssh + # SSH server and client keys + mkdir ~/.ssh umask 377 echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_aarch64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bookworm/testing/","https://dietpi.com/downloads/binaries/bookworm/testing/squeezelite_aarch64.deb"]}' - x86_64_buster: - if: ( github.event.inputs.arch == 10 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 5 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 10 -d 5 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_x86_64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}buster/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/buster/testing/","https://dietpi.com/downloads/binaries/buster/testing/squeezelite_x86_64.deb"]}' - x86_64_bullseye: - if: ( github.event.inputs.arch == 10 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 6 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 10 -d 6 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_x86_64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bullseye/' - curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bullseye/testing/","https://dietpi.com/downloads/binaries/bullseye/testing/squeezelite_x86_64.deb"]}' - x86_64_bookworm: - if: ( github.event.inputs.arch == 10 || github.event.inputs.arch == 'all' ) && ( github.event.inputs.distro == 7 || github.event.inputs.distro == 'all' ) - runs-on: ubuntu-22.04 - defaults: - run: - shell: sh - working-directory: /dev/shm - steps: - - name: Start build container - run: sudo bash -c "G_GITOWNER=$GITHUB_REPOSITORY_OWNER G_GITBRANCH=${GITHUB_REF#refs/heads/}; $(curl -sSf "https://raw.githubusercontent.com/$GITHUB_REPOSITORY_OWNER/DietPi/${GITHUB_REF#refs/heads/}/.build/software/squeezelite/container_build.bash")" 'DietPi-Build_Squeezelite' -a 10 -d 7 - - name: Upload package - run: | - [ -d ~/.ssh ] || mkdir ~/.ssh - umask 377 - echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts - echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 - curl -T rootfs/squeezelite_x86_64.deb --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}bookworm/' + # Upload + curl -T 'rootfs/squeezelite_${{ matrix.arch }}.deb' --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}${{ matrix.dist }}/' curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' \ - --data '{"files":["https://dietpi.com/downloads/binaries/bookworm/testing/","https://dietpi.com/downloads/binaries/bookworm/testing/squeezelite_x86_64.deb"]}' + --data '{"files":["https://dietpi.com/downloads/binaries/${{ matrix.dist }}/testing/","https://dietpi.com/downloads/binaries/${{ matrix.dist }}/testing/squeezelite_${{ matrix.arch }}.deb"]}' From 92c2502eeaeee7fc756b9c8c8e9dde07198df101 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 22:13:07 +0200 Subject: [PATCH 29/49] v8.18 - CI | DietPi-Software: Test Squeezelite command instead of service to at least assure that architecture flags and linked libraires work --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index eeb737fc2d..3d1654e744 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -86,7 +86,7 @@ Process_Software() 32) aSERVICES[i]='ympd' aTCP[i]='1337';; 33) (( $arch == 10 )) && aSERVICES[i]='airsonic' aTCP[i]='8080' aDELAY[i]=30;; # Fails in QEMU-emulated containers, probably due to missing device access 35) aSERVICES[i]='logitechmediaserver' aTCP[i]='9000';; - #36) aSERVICES[i]='Squeezelite';; # Random high UDP port # Service exits if no audio device has been found, which does not exist on GitHub Actions runners, respectively within the containers + 36) aCOMMANDS[i]='squeezelite -t';; # Service listens on random high UDP port and exits if no audio device has been found, which does not exist on GitHub Actions runners, respectively within the containers 37) aSERVICES[i]='shairport-sync' aTCP[i]='5000';; # AirPlay 2 would be TCP port 7000 39) aSERVICES[i]='minidlna' aTCP[i]='8200';; 41) aSERVICES[i]='emby-server' aTCP[i]='8096';; From d75e1d7c20e85fd220ee81bc518d859031893ca6 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 22:19:42 +0200 Subject: [PATCH 30/49] v8.18 - CI | DietPi-Software: Give Cuberite more time to start on emulated containers --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 3d1654e744..ddf2e215ae 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -98,7 +98,7 @@ Process_Software() 49) aSERVICES[i]='gogs' aTCP[i]='3000';; 50) aSERVICES[i]='syncthing' aTCP[i]='8384';; 51) aCOMMANDS[i]='/usr/games/opentyrian/opentyrian -h';; - 52) aSERVICES[i]='cuberite' aTCP[i]='1339';; + 52) aSERVICES[i]='cuberite' aTCP[i]='1339'; (( $arch < 10 )) && aDELAY[i]=30;; 53) aSERVICES[i]='mineos' aTCP[i]='8443';; 58) aSERVICES[i]='tailscale';; # aUDP[i]='????';; 59) aSERVICES[i]='raspimjpeg';; From 5809033e52c3dd2c1c202f7f927beebb2f5a2810 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 22:57:41 +0200 Subject: [PATCH 31/49] v8.18 - DietPi-Software | Tailscale: Fix handled service name. Visual issue only since the service is enabled and started during package install. Also fix this + add UDP port check to test install workflow. --- .github/workflows/dietpi-software.bash | 2 +- dietpi/dietpi-software | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index ddf2e215ae..96cc4ca22e 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -100,7 +100,7 @@ Process_Software() 51) aCOMMANDS[i]='/usr/games/opentyrian/opentyrian -h';; 52) aSERVICES[i]='cuberite' aTCP[i]='1339'; (( $arch < 10 )) && aDELAY[i]=30;; 53) aSERVICES[i]='mineos' aTCP[i]='8443';; - 58) aSERVICES[i]='tailscale';; # aUDP[i]='????';; + 58) aSERVICES[i]='tailscaled' aUDP[i]='41641';; 59) aSERVICES[i]='raspimjpeg';; #60) aUDP[i]='53 68';; Cannot be installed in CI since a WiFi interface is required #61) aSERVICES[i]='tor' aUDP[i]='9040';; Cannot be installed in CI since a WiFi interface is required diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index ea554f52a7..4016826bb3 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -7660,7 +7660,7 @@ _EOF_ G_EXEC chown www-data "$fp_install/ampache/config/ampache.cfg.php" fi - if To_Install 58 tailscale # Tailscale + if To_Install 58 tailscaled # Tailscale then # APT key G_EXEC curl -sSfL "https://pkgs.tailscale.com/stable/debian/$G_DISTRO_NAME.noarmor.gpg" -o /etc/apt/trusted.gpg.d/dietpi-tailscale.gpg @@ -13214,7 +13214,7 @@ If no WireGuard (auto)start is included, but you require it, please do the follo if To_Uninstall 58 # Tailscale then G_AGP tailscale - [[ -d '/etc/systemd/system/tailscale.service.d' ]] && G_EXEC rm -R /etc/systemd/system/tailscale.service.d + [[ -d '/etc/systemd/system/tailscaled.service.d' ]] && G_EXEC rm -R /etc/systemd/system/tailscaled.service.d [[ -d '/var/lib/tailscale' ]] && G_EXEC rm -R /var/lib/tailscale [[ -f '/etc/sysctl.d/dietpi-tailscale.conf' ]] && G_EXEC rm /etc/sysctl.d/dietpi-tailscale.conf [[ -f '/etc/apt/sources.list.d/dietpi-tailscale.list' ]] && G_EXEC rm /etc/apt/sources.list.d/dietpi-tailscale.list From 8bcf6f53eebded8c62acd741fd5fe94080f4cb57 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 23:41:05 +0200 Subject: [PATCH 32/49] v8.18 - CI | DietPi-Software: Increase Cuberite service startup time. It took more than 6 minutes on a local test, let's hope the GitHub runners are faster. - CI | DietPi-Software: Try to enable tun kernel module for Tailscale and OpenVPN installs --- .github/workflows/dietpi-software.bash | 2 +- .github/workflows/dietpi-software.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 96cc4ca22e..0918d7c593 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -98,7 +98,7 @@ Process_Software() 49) aSERVICES[i]='gogs' aTCP[i]='3000';; 50) aSERVICES[i]='syncthing' aTCP[i]='8384';; 51) aCOMMANDS[i]='/usr/games/opentyrian/opentyrian -h';; - 52) aSERVICES[i]='cuberite' aTCP[i]='1339'; (( $arch < 10 )) && aDELAY[i]=30;; + 52) aSERVICES[i]='cuberite' aTCP[i]='1339'; (( $arch < 10 )) && aDELAY[i]=120;; 53) aSERVICES[i]='mineos' aTCP[i]='8443';; 58) aSERVICES[i]='tailscaled' aUDP[i]='41641';; 59) aSERVICES[i]='raspimjpeg';; diff --git a/.github/workflows/dietpi-software.yml b/.github/workflows/dietpi-software.yml index 853a382e5d..16debe9ebc 100644 --- a/.github/workflows/dietpi-software.yml +++ b/.github/workflows/dietpi-software.yml @@ -77,4 +77,5 @@ jobs: branch='${{ github.event.inputs.branch }}' [ $branch ] || branch=$GITHUB_REF_NAME sudo systemctl stop ssh mono-xsp4 + echo '${{ github.event.inputs.soft }}' | grep -Eq '(^| )(52|97)( |$)' && sudo modprobe tun sudo bash -c "G_GITOWNER=$owner G_GITBRANCH=$branch; $(curl -sSf "https://raw.githubusercontent.com/$owner/DietPi/$branch/.github/workflows/dietpi-software.bash")" -- -a '${{ matrix.arch }}' -d '${{ matrix.dist }}' -s '${{ github.event.inputs.soft }}' -rpi '${{ github.event.inputs.rpi }}' From 1ae766199c8d5831bf289c3f2286a96378b3b0c6 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Wed, 31 May 2023 23:42:20 +0200 Subject: [PATCH 33/49] v8.18 - CI | DietPi-Software: Fix Tailscale software ID --- .github/workflows/dietpi-software.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.yml b/.github/workflows/dietpi-software.yml index 16debe9ebc..1d4c69a900 100644 --- a/.github/workflows/dietpi-software.yml +++ b/.github/workflows/dietpi-software.yml @@ -77,5 +77,5 @@ jobs: branch='${{ github.event.inputs.branch }}' [ $branch ] || branch=$GITHUB_REF_NAME sudo systemctl stop ssh mono-xsp4 - echo '${{ github.event.inputs.soft }}' | grep -Eq '(^| )(52|97)( |$)' && sudo modprobe tun + echo '${{ github.event.inputs.soft }}' | grep -Eq '(^| )(58|97)( |$)' && sudo modprobe tun sudo bash -c "G_GITOWNER=$owner G_GITBRANCH=$branch; $(curl -sSf "https://raw.githubusercontent.com/$owner/DietPi/$branch/.github/workflows/dietpi-software.bash")" -- -a '${{ matrix.arch }}' -d '${{ matrix.dist }}' -s '${{ github.event.inputs.soft }}' -rpi '${{ github.event.inputs.rpi }}' From 751d96361d1da2e3b87d5f6f7407a687e933e315 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 00:21:48 +0200 Subject: [PATCH 34/49] v8.18 - CI | DietPI-Software: Disable Tailscale service check since GitHub Action runners seem to not support the TUN driver, instead test the CLI only --- .github/workflows/dietpi-software.bash | 2 +- .github/workflows/dietpi-software.yml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 0918d7c593..0f96ace0c7 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -100,7 +100,7 @@ Process_Software() 51) aCOMMANDS[i]='/usr/games/opentyrian/opentyrian -h';; 52) aSERVICES[i]='cuberite' aTCP[i]='1339'; (( $arch < 10 )) && aDELAY[i]=120;; 53) aSERVICES[i]='mineos' aTCP[i]='8443';; - 58) aSERVICES[i]='tailscaled' aUDP[i]='41641';; + 58) aCOMMANDS[i]='tailscale version' # aSERVICES[i]='tailscaled' aUDP[i]='41641';; GitHub Action runners to not support the TUN module 59) aSERVICES[i]='raspimjpeg';; #60) aUDP[i]='53 68';; Cannot be installed in CI since a WiFi interface is required #61) aSERVICES[i]='tor' aUDP[i]='9040';; Cannot be installed in CI since a WiFi interface is required diff --git a/.github/workflows/dietpi-software.yml b/.github/workflows/dietpi-software.yml index 1d4c69a900..853a382e5d 100644 --- a/.github/workflows/dietpi-software.yml +++ b/.github/workflows/dietpi-software.yml @@ -77,5 +77,4 @@ jobs: branch='${{ github.event.inputs.branch }}' [ $branch ] || branch=$GITHUB_REF_NAME sudo systemctl stop ssh mono-xsp4 - echo '${{ github.event.inputs.soft }}' | grep -Eq '(^| )(58|97)( |$)' && sudo modprobe tun sudo bash -c "G_GITOWNER=$owner G_GITBRANCH=$branch; $(curl -sSf "https://raw.githubusercontent.com/$owner/DietPi/$branch/.github/workflows/dietpi-software.bash")" -- -a '${{ matrix.arch }}' -d '${{ matrix.dist }}' -s '${{ github.event.inputs.soft }}' -rpi '${{ github.event.inputs.rpi }}' From f31655f7067297deaffa4c56086b5c862f5a75a5 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 00:25:09 +0200 Subject: [PATCH 35/49] v8.18 - CI | DietPi-Software: Syntax --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 0f96ace0c7..0d918f4a06 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -100,7 +100,7 @@ Process_Software() 51) aCOMMANDS[i]='/usr/games/opentyrian/opentyrian -h';; 52) aSERVICES[i]='cuberite' aTCP[i]='1339'; (( $arch < 10 )) && aDELAY[i]=120;; 53) aSERVICES[i]='mineos' aTCP[i]='8443';; - 58) aCOMMANDS[i]='tailscale version' # aSERVICES[i]='tailscaled' aUDP[i]='41641';; GitHub Action runners to not support the TUN module + 58) aCOMMANDS[i]='tailscale version';; # aSERVICES[i]='tailscaled' aUDP[i]='41641' GitHub Action runners to not support the TUN module 59) aSERVICES[i]='raspimjpeg';; #60) aUDP[i]='53 68';; Cannot be installed in CI since a WiFi interface is required #61) aSERVICES[i]='tor' aUDP[i]='9040';; Cannot be installed in CI since a WiFi interface is required From 6d589b819196bf4739612189bb2cd789a4ab8a6e Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 00:31:39 +0200 Subject: [PATCH 36/49] v8.18 - CI | DietPi-Software: Add Box86 and Box64 command tests --- .github/workflows/dietpi-software.bash | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 0d918f4a06..d88ba7da4b 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -104,6 +104,7 @@ Process_Software() 59) aSERVICES[i]='raspimjpeg';; #60) aUDP[i]='53 68';; Cannot be installed in CI since a WiFi interface is required #61) aSERVICES[i]='tor' aUDP[i]='9040';; Cannot be installed in CI since a WiFi interface is required + 62) aCOMMANDS[i]='box86 -v';; 65) aSERVICES[i]='netdata' aTCP[i]='19999';; 66) aSERVICES[i]='rpimonitor' aTCP[i]='8888';; 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; @@ -194,6 +195,7 @@ Process_Software() #192) aSERVICES[i]='snapclient';; # cannot be installed non-interactively 194) aSERVICES[i]='postgresql';; 196) aCOMMANDS[i]='java -version';; + 197) aCOMMANDS[i]='box64 -v';; 198) aSERVICES[i]='filebrowser' aTCP[i]='8084';; 199) aSERVICES[i]='spotifyd';; # aTCP[i]='4079';; ??? 200) aSERVICES[i]='dietpi-dashboard' aTCP[i]='5252';; From f7df163ecb4d33c1824299e50fb9d36168a11abf Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 00:39:58 +0200 Subject: [PATCH 37/49] v8.18 - DietPi-Software | RPi Cam Web Interface: Exit service with error if any startup command fails --- .conf/dps_59/raspimjpeg.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.conf/dps_59/raspimjpeg.sh b/.conf/dps_59/raspimjpeg.sh index 3f2cea2948..fcfdf06a94 100644 --- a/.conf/dps_59/raspimjpeg.sh +++ b/.conf/dps_59/raspimjpeg.sh @@ -1,4 +1,4 @@ -#!/bin/dash +#!/bin/dash -e { #//////////////////////////////////// # DietPi Raspimjpeg control Script From 133f17d30604589fd4c9c95adf764cd51587308c Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 01:05:48 +0200 Subject: [PATCH 38/49] v8.18 - DietPi-Software | RPi Cam Web Interface: Bookworm since gpac/MP4Box is currently not available: https://packages.debian.org/gpac. Also whether the raspimjpeg binary actually works on Bookworm is questionable + modern RPi camera modules (3) seems to be not supported and no commit for 1 year --- dietpi/dietpi-software | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 4016826bb3..554ed41460 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -1056,6 +1056,8 @@ Available commands: (( $G_HW_MODEL > 9 )) && aSOFTWARE_AVAIL_G_HW_MODEL[$software_id,$G_HW_MODEL]=0 # - ARMv8: https://github.com/silvanmelchior/RPi_Cam_Web_Interface/tree/master/bin aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,3]=0 + # - Bookworm since gpac/MP4Box is currently not available: https://packages.debian.org/gpac + aSOFTWARE_AVAIL_G_DISTRO[$software_id,7]=0 #------------------ software_id=136 aSOFTWARE_NAME[$software_id]='motionEye' From 0f7d0f082475e7fa020147ac1ea28d665990c7ea Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 20:24:59 +0200 Subject: [PATCH 39/49] v8.18 - CI | DietPi-Software: Add Firefox test command and Remote.It service with UDP port --- .github/workflows/dietpi-software.bash | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index d88ba7da4b..a6519d1111 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -107,6 +107,8 @@ Process_Software() 62) aCOMMANDS[i]='box86 -v';; 65) aSERVICES[i]='netdata' aTCP[i]='19999';; 66) aSERVICES[i]='rpimonitor' aTCP[i]='8888';; + 67) aCOMMANDS[i]='firefox-esr -v';; + 68) aSERVICES[i]='schannel' aUDP[i]='5980';; # remoteit@.service service listens on random high UDP port 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; From 2c72095db2511ba07966d05530c44b1d81a91d33 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 20:34:50 +0200 Subject: [PATCH 40/49] v8.18 - CI | DietPi-Software: Add WiringPi test command --- .github/workflows/dietpi-software.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index a6519d1111..6c2411c798 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -109,6 +109,7 @@ Process_Software() 66) aSERVICES[i]='rpimonitor' aTCP[i]='8888';; 67) aCOMMANDS[i]='firefox-esr -v';; 68) aSERVICES[i]='schannel' aUDP[i]='5980';; # remoteit@.service service listens on random high UDP port + 70) aCOMMANDS[i]='gpio -v';; 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; From b0bc3add7f500bc1bfa38a46aabe75ba54b83c8c Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 21:29:39 +0200 Subject: [PATCH 41/49] v8.18 - CI | DietPi-Software: Fix WiringPi test command as it returns an error code when no RPi revision code can be found in /proc/cpuinfo --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 6c2411c798..c17c932f54 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -109,7 +109,7 @@ Process_Software() 66) aSERVICES[i]='rpimonitor' aTCP[i]='8888';; 67) aCOMMANDS[i]='firefox-esr -v';; 68) aSERVICES[i]='schannel' aUDP[i]='5980';; # remoteit@.service service listens on random high UDP port - 70) aCOMMANDS[i]='gpio -v';; + 70) aCOMMANDS[i]='gpio -v | grep '\''gpio version'\';; 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; From a2bcfd5543fd5bf34327d6054134d4e5ae03ae91 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 21:59:43 +0200 Subject: [PATCH 42/49] v8.18 - DietPi-Software | Disable Docker and all Docker dependants on RISC-V, since the Docker APT repo does not ship packages for this architecture yet --- dietpi/dietpi-software | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 554ed41460..a71b00b243 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -559,6 +559,8 @@ Available commands: aSOFTWARE_DEPS[$software_id]='162' # - ARMv6 aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0 + # - RISC-V: Missing Docker package: https://download.docker.com/linux/debian/dists/ + aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=178 aSOFTWARE_NAME[$software_id]='Jellyfin' @@ -1113,6 +1115,8 @@ Available commands: aSOFTWARE_DESC[$software_id]='Build, ship, and run distributed applications' aSOFTWARE_CATX[$software_id]=8 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/programming/#docker' + # - RISC-V: Missing package: https://download.docker.com/linux/debian/dists/ + aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=185 aSOFTWARE_NAME[$software_id]='Portainer' @@ -1122,6 +1126,8 @@ Available commands: aSOFTWARE_DEPS[$software_id]='162' # - ARMv6: https://dietpi.com/forum/t/armv6-bookworm-software-test-matrix-question/16380/11 aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0 + # - RISC-V: Missing Docker package: https://download.docker.com/linux/debian/dists/ + aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=134 aSOFTWARE_NAME[$software_id]='Docker Compose' @@ -1129,6 +1135,8 @@ Available commands: aSOFTWARE_CATX[$software_id]=8 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/programming/#docker-compose' aSOFTWARE_DEPS[$software_id]='162' + # - RISC-V: Missing Docker package: https://download.docker.com/linux/debian/dists/ + aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=193 aSOFTWARE_NAME[$software_id]='K3s' From 3315289ce260f08aeafcb8ce59eb762f70b0b17a Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 22:03:26 +0200 Subject: [PATCH 43/49] v8.18 - CI | DietPi-Software: Increase Grafana service start wait time to 30 seconds for ARM, as 10 seconds is not sufficient on emulated container --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index c17c932f54..3331ef8c35 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -113,7 +113,7 @@ Process_Software() 71) aSERVICES[i]='webiopi' aTCP[i]='8002';; 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; - 77) aSERVICES[i]='grafana-server' aTCP[i]='3001';; + 77) aSERVICES[i]='grafana-server' aTCP[i]='3001'; (( $arch < 10 )) && aDELAY[i]=30;; 80) aSERVICES[i]='ubooquity' aTCP[i]='2038 2039';; 83) aSERVICES[i]='apache2' aTCP[i]='80';; 84) aSERVICES[i]='lighttpd' aTCP[i]='80';; From 5f52da22bae1da765314079ae1aac8adcf299e35 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 22:13:47 +0200 Subject: [PATCH 44/49] v8.18 - DietPi-Software | MicroK8s: Disable on RISC-V as Debian does not provide snapd packages for this architecture: https://packages.debian.org/sid/snapd --- dietpi/dietpi-software | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index a71b00b243..a4199cf896 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -1149,6 +1149,8 @@ Available commands: aSOFTWARE_DESC[$software_id]='The simplest production-grade upstream K8s, light and focused' aSOFTWARE_CATX[$software_id]=8 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#microk8s' + # - RISC-V: Missing package: https://packages.debian.org/sid/snapd + aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0 #------------------ software_id=200 aSOFTWARE_NAME[$software_id]='DietPi-Dashboard' From a02120f46e9a10e6de62095067997e04b80fd461 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 22:55:56 +0200 Subject: [PATCH 45/49] v8.18 - CI | DietPi-Software: Remove Roon Extension Manager and Portainer from test installs as Docker cannot start in systemd containers. Keep testing Docker install but do not test for the service afterwards. Instead test the CLI only. --- .github/workflows/dietpi-software.bash | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 3331ef8c35..6d5762a2c9 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -61,6 +61,8 @@ esac # Workaround for "Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 145." during Apache2 DEB postinst in 32-bit ARM Bookworm container: https://lists.ubuntu.com/archives/foundations-bugs/2022-January/467253.html [[ $SOFTWARE =~ (^| )83( |$) && $DISTRO == 'bookworm' ]] && (( $arch < 3 )) && { echo '[ WARN ] Installing Lighttpd instead of Apache due to a bug in 32-bit ARM containers'; SOFTWARE=$(sed -E 's/(^| )83( |$)/\184\2/g' <<< "$SOFTWARE"); } +# Remove Roon Extension Manager and Portainer from test installs as Docker cannot start in systemd containers +[[ $SOFTWARE =~ (^| )(86|185)( |$) ]] && { echo '[ WARN ] Removing Roon Extension Manager and Portainer from test installs as Docker cannot start in systemd containers'; SOFTWARE=$(sed -E 's/(^| )(86|186)( |$)/\1\2/g' <<< "$SOFTWARE"); } ########################################## # Create service and port lists @@ -114,11 +116,11 @@ Process_Software() 73) aSERVICES[i]='fail2ban';; 74) aSERVICES[i]='influxdb' aTCP[i]='8086 8088';; 77) aSERVICES[i]='grafana-server' aTCP[i]='3001'; (( $arch < 10 )) && aDELAY[i]=30;; - 80) aSERVICES[i]='ubooquity' aTCP[i]='2038 2039';; + 80) aSERVICES[i]='ubooquity' aTCP[i]='2038 2039'; (( $arch == 10 )) || aDELAY[i]=30;; 83) aSERVICES[i]='apache2' aTCP[i]='80';; 84) aSERVICES[i]='lighttpd' aTCP[i]='80';; 85) aSERVICES[i]='nginx' aTCP[i]='80';; - 86) aSERVICES[i]='roon-extension-manager';; + #86) aSERVICES[i]='roon-extension-manager';; # Docker does not start in systemd containers (without dedicated network) 88) aSERVICES[i]='mariadb' aTCP[i]='3306';; 89) case $DISTRO in 'buster') aSERVICES[i]='php7.3-fpm';; 'bullseye') aSERVICES[i]='php7.4-fpm';; *) aSERVICES[i]='php8.2-fpm';; esac;; 91) aSERVICES[i]='redis-server' aTCP[i]='6379';; @@ -173,7 +175,7 @@ Process_Software() 157) aSERVICES[i]='home-assistant' aTCP[i]='8123';; 158) aSERVICES[i]='minio' aTCP[i]='9000';; # ToDo: Solve port conflict with LMS 161) aSERVICES[i]='bdd' aTCP[i]='80 443';; - 162) aSERVICES[i]='docker';; + 162) aCOMMANDS[i]='docker -v';; # aSERVICES[i]='docker' # Docker does not start in systemd containers (without dedicated network) 163) aSERVICES[i]='gmediarender';; # DLNA => UPnP high range of ports 164) aSERVICES[i]='nukkit' aUDP[i]='19132';; 165) aSERVICES[i]='gitea' aTCP[i]='3000';; @@ -191,7 +193,7 @@ Process_Software() 182) aSERVICES[i]='unbound' aUDP[i]='53'; [[ ${aSERVICES[126]} ]] && aUDP[i]+=' 5353';; # Uses port 5353 if Pi-hole or AdGuard Home is installed, but those do listen on port 53 instead 183) aSERVICES[i]='vaultwarden' aTCP[i]='8001';; #184) aSERVICES[i]='tor' aTCP[i]='443 9051';; # Cannot be installed non-interactively, ports can be chosen and depend on chosen relay type - 185) aSERVICES[i]='docker' aTCP[i]='9002';; + #185) aTCP[i]='9002';; # Docker does not start in systemd containers (without dedicated network) 186) aSERVICES[i]='ipfs' aTCP[i]='5003 8087';; 187) aSERVICES[i]='cups' aTCP[i]='631';; 191) aSERVICES[i]='snapserver' aTCP[i]='1780';; @@ -225,6 +227,7 @@ do 49|165) Process_Software 88;; #61) Process_Software 60;; # Cannot be installed in CI 125) Process_Software 194;; + #86|185) Process_Software 162;; # Docker does not start in systemd containers (without dedicated network) *) :;; esac Process_Software "$i" @@ -327,7 +330,7 @@ fi G_EXEC sed -i '/# Start DietPi-Software/a\sed -i '\''/# Custom 1st run script/a\\for i in "${aSTART_SERVICES[@]}"; do G_EXEC_NOHALT=1 G_EXEC systemctl start "$i"; done'\'' /boot/dietpi/dietpi-software' rootfs/boot/dietpi/dietpi-login delay=10 for i in "${aDELAY[@]}"; do (( $i > $delay )) && delay=$i; done -G_EXEC eval "echo -e '#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1; sleep $delay' > rootfs/boot/Automation_Custom_Script.sh" +G_EXEC eval "echo -e '#!/bin/dash\nexit_code=0; /boot/dietpi/dietpi-services start || exit_code=1; echo Waiting $delay seconds for service starts; sleep $delay' > rootfs/boot/Automation_Custom_Script.sh" # - Loop through software IDs to test printf '%s\n' "${!aSERVICES[@]}" "${!aTCP[@]}" "${!aUDP[@]}" "${!aCOMMANDS[@]}" | sort -u | while read -r i do From 378ef32d602803a7ecdef50e35b7e6efbf12e081 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 23:45:34 +0200 Subject: [PATCH 46/49] v8.18 (#6405) - DietPi-Software | Domoticz: Resolved an issue where the service start failed because the new version of Domoticz depends on the GnuTLS variant of libcurl instead of the OpenSSL one. Many thanks to @IgrekLg for reporting this issue: https://github.com/MichaIng/DietPi/issues/6404 --- CHANGELOG.txt | 1 + dietpi/dietpi-software | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index ef5b8bf33b..75a7a18a42 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -12,6 +12,7 @@ Bug fixes: - DietPi-DDNS | Resolved an issue where the IP sync failed because the API URL changed recently. Many thanks to @ma651851384 for implementing the update: https://github.com/MichaIng/DietPi/pull/6375 - DietPi-Software | Restic: Resolved an issue where Restic was installed without executable flag. Many thanks to @lima1 for reporting this issue: https://github.com/MichaIng/DietPi/pull/6350#issuecomment-1537656560 - DietPi-Software | Domoticz: Resolved an issue where the installation failed when trying to unpack the tarball. Many thanks to @mcnahum for reporting this issue: https://github.com/MichaIng/DietPi/issues/6369 +- DietPi-Software | Domoticz: Resolved an issue where the service start failed because the new version of Domoticz depends on the GnuTLS variant of libcurl instead of the OpenSSL one. Many thanks to @IgrekLg for reporting this issue: https://github.com/MichaIng/DietPi/issues/6404 - DietPi-Software | motionEye: Resolved an issue where the installation failed on ARMv6, ARMv7 and RISC-V Bookworm systems due to missing build dependencies. Many thanks to @magicfoxt-magicfox for reporting this issue: https://github.com/MichaIng/DietPi/issues/6333 - DietPi-Software | LXQt: Resolved an issue on Bookworm systems where the install failed since configs were missing. - DietPi-Software | TigerVNC: Resolved an issue on Bookworm systems where the VNC password was not set as expected since the tigervncpasswd command became a dedicated DEB package "tigervnc-tools". diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index a4199cf896..822d6df2ea 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -1521,7 +1521,7 @@ Available commands: aSOFTWARE_DESC[$software_id]='Open source home automation platform' aSOFTWARE_CATX[$software_id]=17 aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/home_automation/#domoticz' - # - Bookworm: No libssl3 support: https://github.com/domoticz/domoticz/issues/5233 + # - Bookworm: No libssl3 support: https://github.com/domoticz/domoticz/issues/5233, https://github.com/MichaIng/DietPi/issues/6404 aSOFTWARE_AVAIL_G_DISTRO[$software_id,7]=0 #------------------ software_id=27 @@ -11569,7 +11569,7 @@ _EOF_ if To_Install 140 domoticz # Domoticz then # APT deps - aDEPS=('libusb-0.1-4') + aDEPS=('libusb-0.1-4' 'libcurl3-gnutls') # https://github.com/MichaIng/DietPi/issues/6404 Download_Install "https://releases.domoticz.com/releases/release/domoticz_linux_${G_HW_ARCH_NAME/armv6l/armv7l}.tgz" ./domoticz # Reinstall: Clean old install dir From 4ee5e6afddadaed4846e23cab7547ac4e78ee130 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 23:48:51 +0200 Subject: [PATCH 47/49] v8.18 - DietPi-Software | Emby: Update fallback URL --- dietpi/dietpi-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dietpi/dietpi-software b/dietpi/dietpi-software index 822d6df2ea..16b55c093a 100755 --- a/dietpi/dietpi-software +++ b/dietpi/dietpi-software @@ -8294,7 +8294,7 @@ location = /.well-known/caldav { return 301 /baikal/html/dav.php; }' > /etc/ngi *) local arch='amd64';; esac - local fallback_url="https://github.com/MediaBrowser/Emby.Releases/releases/download/4.7.11.0/emby-server-deb_4.7.11.0_$arch.deb" + local fallback_url="https://github.com/MediaBrowser/Emby.Releases/releases/download/4.7.13.0/emby-server-deb_4.7.13.0_$arch.deb" Download_Install "$(curl -sSfL 'https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest' | mawk -F\" "/^ *\"browser_download_url\": .*\/emby-server-deb_[^\"\/]*_$arch\.deb\"$/{print \$4}")" G_EXEC systemctl stop emby-server From 53f378ee5d57a01d55838da84f6dcd6de609f7dc Mon Sep 17 00:00:00 2001 From: MichaIng Date: Thu, 1 Jun 2023 23:53:16 +0200 Subject: [PATCH 48/49] v8.18 - CI | DietPi-Software: Remove Roon Extension Manager and Portainer correctly from install requests --- .github/workflows/dietpi-software.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dietpi-software.bash b/.github/workflows/dietpi-software.bash index 6d5762a2c9..35883db7ec 100644 --- a/.github/workflows/dietpi-software.bash +++ b/.github/workflows/dietpi-software.bash @@ -62,7 +62,7 @@ esac # Workaround for "Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 145." during Apache2 DEB postinst in 32-bit ARM Bookworm container: https://lists.ubuntu.com/archives/foundations-bugs/2022-January/467253.html [[ $SOFTWARE =~ (^| )83( |$) && $DISTRO == 'bookworm' ]] && (( $arch < 3 )) && { echo '[ WARN ] Installing Lighttpd instead of Apache due to a bug in 32-bit ARM containers'; SOFTWARE=$(sed -E 's/(^| )83( |$)/\184\2/g' <<< "$SOFTWARE"); } # Remove Roon Extension Manager and Portainer from test installs as Docker cannot start in systemd containers -[[ $SOFTWARE =~ (^| )(86|185)( |$) ]] && { echo '[ WARN ] Removing Roon Extension Manager and Portainer from test installs as Docker cannot start in systemd containers'; SOFTWARE=$(sed -E 's/(^| )(86|186)( |$)/\1\2/g' <<< "$SOFTWARE"); } +[[ $SOFTWARE =~ (^| )(86|185)( |$) ]] && { echo '[ WARN ] Removing Roon Extension Manager and Portainer from test installs as Docker cannot start in systemd containers'; SOFTWARE=$(sed -E 's/(^| )(86|186)( |$)/\1\3/g' <<< "$SOFTWARE"); } ########################################## # Create service and port lists From 175fd6154788ac82645e9318763f8e35b1d3aaca Mon Sep 17 00:00:00 2001 From: MichaIng Date: Fri, 2 Jun 2023 17:22:18 +0200 Subject: [PATCH 49/49] v8.18 - RC up and set release PR URL in changelog --- .update/version | 2 +- CHANGELOG.txt | 2 +- dietpi/func/dietpi-globals | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.update/version b/.update/version index bd0c332c83..3e0e3a6447 100644 --- a/.update/version +++ b/.update/version @@ -3,7 +3,7 @@ # Available DietPi version G_REMOTE_VERSION_CORE=8 G_REMOTE_VERSION_SUB=18 -G_REMOTE_VERSION_RC=0 +G_REMOTE_VERSION_RC=1 # Minimum DietPi version to allow update G_MIN_VERSION_CORE=6 G_MIN_VERSION_SUB=14 diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 75a7a18a42..d1d163b169 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -18,7 +18,7 @@ Bug fixes: - DietPi-Software | TigerVNC: Resolved an issue on Bookworm systems where the VNC password was not set as expected since the tigervncpasswd command became a dedicated DEB package "tigervnc-tools". - DietPi-Software | Deluge: Resolved an issue on Bookworm systems where the install failed when trying to alter the service user. -As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/XXXX +As always, many smaller code performance and stability improvements, visual and spelling fixes have been done, too much to list all of them here. Check out all code changes of this release on GitHub: https://github.com/MichaIng/DietPi/pull/6406 ----------------------------------------------------------------------------------------------------------- diff --git a/dietpi/func/dietpi-globals b/dietpi/func/dietpi-globals index f344fea13f..be1066b4b0 100644 --- a/dietpi/func/dietpi-globals +++ b/dietpi/func/dietpi-globals @@ -59,7 +59,7 @@ # - Assign defaults/code version as fallback [[ $G_DIETPI_VERSION_CORE ]] || G_DIETPI_VERSION_CORE=8 [[ $G_DIETPI_VERSION_SUB ]] || G_DIETPI_VERSION_SUB=18 - [[ $G_DIETPI_VERSION_RC ]] || G_DIETPI_VERSION_RC=0 + [[ $G_DIETPI_VERSION_RC ]] || G_DIETPI_VERSION_RC=1 [[ $G_GITBRANCH ]] || G_GITBRANCH='master' [[ $G_GITOWNER ]] || G_GITOWNER='MichaIng' # - Save current version and Git branch