forked from MichaIng/DietPi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
dietpi-software
executable file
·15323 lines (13062 loc) · 616 KB
/
dietpi-software
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#!/bin/bash
{
#////////////////////////////////////
# DietPi Software
#
#////////////////////////////////////
# Created by Daniel Knight / [email protected] / dietpi.com
#
#////////////////////////////////////
#
# Info:
# - Location: /boot/dietpi/dietpi-software
# - Installs "ready to run" software with optimisations unique to the device.
# - Generates and uses /boot/dietpi/.installed listing installed software.
USAGE='
Usage: dietpi-software [<command> [<software_id>...]]
Available commands:
<empty> Interactive menu to install or uninstall software
install <software_id>... Install each software given by space-separated list of IDs
reinstall <software_id>... Reinstall each software given by space-separated list of IDs
uninstall <software_id>... Uninstall each software given by space-separated list of IDs
list [--machine-readable] Print a list with IDs and info for all available software titles
free Print an unused software ID, free for a new software implementation
' #////////////////////////////////////
# Import DietPi-Globals ---------------------------------------------------------------
. /boot/dietpi/func/dietpi-globals
readonly G_PROGRAM_NAME='DietPi-Software'
G_CHECK_ROOT_USER
G_CHECK_ROOTFS_RW
G_INIT
# Import DietPi-Globals ---------------------------------------------------------------
[[ $1 == 'list' && $2 == '--machine-readable' ]] && MACHINE_READABLE=1 || MACHINE_READABLE=
#/////////////////////////////////////////////////////////////////////////////////////
# Install states file
#/////////////////////////////////////////////////////////////////////////////////////
Write_InstallFileList()
{
# Update webserver stack meta install states
aSOFTWARE_INSTALL_STATE[75]=0 aSOFTWARE_INSTALL_STATE[76]=0
aSOFTWARE_INSTALL_STATE[78]=0 aSOFTWARE_INSTALL_STATE[79]=0
aSOFTWARE_INSTALL_STATE[81]=0 aSOFTWARE_INSTALL_STATE[82]=0
if (( ${aSOFTWARE_INSTALL_STATE[89]} == 2 ))
then
# Apache
if (( ${aSOFTWARE_INSTALL_STATE[83]} == 2 ))
then
(( ${aSOFTWARE_INSTALL_STATE[87]} == 2 )) && aSOFTWARE_INSTALL_STATE[75]=2 # SQLite: LASP
(( ${aSOFTWARE_INSTALL_STATE[88]} == 2 )) && aSOFTWARE_INSTALL_STATE[76]=2 # MariaDB: LAMP
# Nginx
elif (( ${aSOFTWARE_INSTALL_STATE[85]} == 2 ))
then
(( ${aSOFTWARE_INSTALL_STATE[87]} == 2 )) && aSOFTWARE_INSTALL_STATE[78]=2 # SQLite: LESP
(( ${aSOFTWARE_INSTALL_STATE[88]} == 2 )) && aSOFTWARE_INSTALL_STATE[79]=2 # MariaDB: LEMP
# Lighttpd
elif (( ${aSOFTWARE_INSTALL_STATE[84]} == 2 ))
then
(( ${aSOFTWARE_INSTALL_STATE[87]} == 2 )) && aSOFTWARE_INSTALL_STATE[81]=2 # SQLite: LLSP
(( ${aSOFTWARE_INSTALL_STATE[88]} == 2 )) && aSOFTWARE_INSTALL_STATE[82]=2 # MariaDB: LLMP
fi
fi
# Save installed states
local i install_states
for i in "${!aSOFTWARE_NAME[@]}"
do
# Don't save pending and uninstalled states (-1/0/1)
if (( ${aSOFTWARE_INSTALL_STATE[$i]} == 2 ))
then
install_states+="aSOFTWARE_INSTALL_STATE[$i]=2
"
# Store DietPi-RAMlog and Dropbear uninstalled state as well, as it is initialised as installed matching our image defaults
elif (( $i == 103 || $i == 104 ))
then
install_states+="aSOFTWARE_INSTALL_STATE[$i]=0
"
fi
done
# Save logging choice
install_states+="INDEX_LOGGING=$INDEX_LOGGING"
echo "$install_states" > /boot/dietpi/.installed
}
Read_InstallFileList()
{
if [[ -f '/boot/dietpi/.installed' ]]
then
# shellcheck disable=SC1091
if [[ $MACHINE_READABLE ]]
then
. /boot/dietpi/.installed
else
G_EXEC_DESC='Reading database' G_EXEC . /boot/dietpi/.installed
fi
else
# Assure that the file exists to allow choice/preference selections on first run: https://github.com/MichaIng/DietPi/issues/5080
>> /boot/dietpi/.installed
fi
}
Check_Net_and_Time_sync()
{
# Check network connectivity and sync system clock
G_CHECK_NET
/boot/dietpi/func/run_ntpd
}
#/////////////////////////////////////////////////////////////////////////////////////
# Installation system
#/////////////////////////////////////////////////////////////////////////////////////
# Flag to trigger Run_Installations()
GOSTARTINSTALL=0
# Flag to skip APT update in Run_Installations(), set by DietPi-Automation_Pre()
SKIP_APT_UPDATE=0
# Logging choice index
INDEX_LOGGING=-1
# Array to collect all installed services to be enabled after installs have finished
aENABLE_SERVICES=()
# Since no automated reboot is done anymore after installs, collect services to start manually, when not controlled by DietPi-Services
aSTART_SERVICES=()
# Global password for software installs
GLOBAL_PW=
Update_Global_Pw()
{
local encrypt=0
# Read encrypted password
if [[ -f '/var/lib/dietpi/dietpi-software/.GLOBAL_PW.bin' ]]
then
if ! GLOBAL_PW=$(openssl enc -d -a -md sha256 -aes-256-cbc -iter 10000 -salt -pass pass:'DietPiRocks!' -in /var/lib/dietpi/dietpi-software/.GLOBAL_PW.bin)
then
# Allow decryption without pbkdf2/"-iter 10000" and re-encrypt on dist-upgraded Buster systems
encrypt=1
# In case of error, assure empty password to fallback to default
GLOBAL_PW=$(openssl enc -d -a -md sha256 -aes-256-cbc -salt -pass pass:'DietPiRocks!' -in /var/lib/dietpi/dietpi-software/.GLOBAL_PW.bin) || GLOBAL_PW=
fi
# If encryption has not yet been done, do it now!
else
encrypt=1
GLOBAL_PW=$(sed -n '/^[[:blank:]]*AUTO_SETUP_GLOBAL_PASSWORD=/{s/^[^=]*=//p;q}' /boot/dietpi.txt)
grep -q '^[[:blank:]]*AUTO_SETUP_GLOBAL_PASSWORD=' /boot/dietpi.txt && G_EXEC sed -i '/^[[:blank:]]*AUTO_SETUP_GLOBAL_PASSWORD=/c\#AUTO_SETUP_GLOBAL_PASSWORD= # Password has been encrypted and saved to rootfs' /boot/dietpi.txt
fi
# Fallback
if [[ ! $GLOBAL_PW ]]
then
encrypt=1
GLOBAL_PW='dietpi'
G_WHIP_MSG "[FAILED] Unable to obtain your global software password
\nThe following fallback password will be used:\n - $GLOBAL_PW
\nYou can change it via:\n - dietpi-config > Security Options > Change Passwords"
fi
# Encrypt
# https://github.com/koalaman/shellcheck/issues/1009
# shellcheck disable=SC2086
[[ $encrypt == 1 ]] && openssl enc -e -a -md sha256 -aes-256-cbc -iter 10000 -salt -pass pass:'DietPiRocks!' -out /var/lib/dietpi/dietpi-software/.GLOBAL_PW.bin <<< $GLOBAL_PW
# Apply safe permissions
chown 0:0 /var/lib/dietpi/dietpi-software/.GLOBAL_PW.bin
chmod 0600 /var/lib/dietpi/dietpi-software/.GLOBAL_PW.bin
}
# Total physical system RAM: Used to calculate percentage based value for software cache limits, e.g.: OPcache/APCu
readonly RAM_PHYS=$(free -m | mawk '/^Mem:/{print $2;exit}')
# Total RAM + swap space: Used to estimate whether the swap file size needs to be increased.
readonly RAM_TOTAL=$(free -tm | mawk '/^Total:/{print $2;exit}')
# Whether to restart Deluge web UI once, required on fresh installs for auto-connection to work, more precisely a little delay between daemon and web UI is required
RESTART_DELUGE_WEB=0
# PHP version
case $G_DISTRO in
5) PHP_VERSION='7.3';;
6) PHP_VERSION='7.4';;
*) PHP_VERSION='8.2';;
esac
# Available for [$software_id,$G_*] 2D array
declare -A aSOFTWARE_AVAIL_G_HW_MODEL
declare -A aSOFTWARE_AVAIL_G_HW_ARCH
declare -A aSOFTWARE_AVAIL_G_DISTRO
# ToDo: On RPi 4, the 64-bit kernel is now used by default, without "arm_64bit=1" set: https://forums.raspberrypi.com/viewtopic.php?p=2088935#p2088935
# - We could set "arm_64bit=0", but for now lets assure that 32-bit software is installed and see how it goes. This enables general support for RPi with 64-bit kernel running 32-bit userland.
# - Also set a little flag here for the "dietpi-software list" command to correctly show that a software title is disabled because of the userland architecture, not because of the kernel architecture.
RPI_64KERNEL_32OS=
[[ $G_HW_MODEL == [2-9] && $G_HW_ARCH == 3 && $(dpkg --print-architecture) == 'armhf' ]] && G_HW_ARCH=2 G_HW_ARCH_NAME='armv7l' RPI_64KERNEL_32OS='32-bit image'
# Generate arrays for all available software titles
Software_Arrays_Init()
{
[[ $MACHINE_READABLE ]] || G_DIETPI-NOTIFY -2 'Initialising database'
#--------------------------------------------------------------------------------
# Software categories
# NB: Unique IDs, do not re-arrange or re-order!
#--------------------------------------------------------------------------------
readonly aSOFTWARE_CATEGORIES=(
# Use "-1" to hide software title from menu
'●─ Desktops ' #0
'●─ Remote Desktop ' #1
'●─ Media Systems ' #2
'●─ BitTorrent & Download ' #3
'●─ Cloud & Backup ' #4
'●─ Gaming & Emulation ' #5
'●─ Social & Search ' #6
'●─ Camera & Surveillance ' #7
'●─ System Stats & Management ' #8
'●─ Remote Access ' #9
'●─ Hardware Projects ' #10
'●─ System Security ' #11
'●─ Webserver Stacks ' #12
'●─ DNS Servers ' #13
'●─ File Servers ' #14
'●─ VPN Servers ' #15
'●─ Advanced Networking ' #16
'●─ Home Automation ' #17
'●─ Printing ' #18
'●─ Distributed Projects ' #19
'●─ SSH Clients ' #20
'●─ File Server Clients ' #21
'●─ File Managers ' #22
'●─ System ' #23
'●─ Databases & Data Stores ' #24
'●─ Network Tools ' #25
'●─ Development & Programming ' #26
'●─ Text Editors ' #27
'●─ Desktop Utilities ' #28
)
#--------------------------------------------------------------------------------
# Software items
#--------------------------------------------------------------------------------
# Before adding, please check 'dietpi-software free' to list free IDs for use.
# Assign unique ID to each item
local software_id i
# Desktops
#--------------------------------------------------------------------------------
software_id=23
aSOFTWARE_NAME[$software_id]='LXDE'
aSOFTWARE_DESC[$software_id]='ultra lightweight desktop'
aSOFTWARE_CATX[$software_id]=0
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/desktop/#lxde'
aSOFTWARE_DEPS[$software_id]='5 6 browser'
#------------------
software_id=24
aSOFTWARE_NAME[$software_id]='MATE'
aSOFTWARE_DESC[$software_id]='desktop enviroment'
aSOFTWARE_CATX[$software_id]=0
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/desktop/#mate'
aSOFTWARE_DEPS[$software_id]='5 6 browser'
#------------------
software_id=25
aSOFTWARE_NAME[$software_id]='Xfce'
aSOFTWARE_DESC[$software_id]='lightweight desktop'
aSOFTWARE_CATX[$software_id]=0
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/desktop/#xfce'
aSOFTWARE_DEPS[$software_id]='5 6 browser'
#------------------
software_id=26
aSOFTWARE_NAME[$software_id]='GNUstep'
aSOFTWARE_DESC[$software_id]='lightweight desktop based on OpenStep'
aSOFTWARE_CATX[$software_id]=0
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/desktop/#gnustep'
aSOFTWARE_DEPS[$software_id]='5 6 browser'
#------------------
software_id=173
aSOFTWARE_NAME[$software_id]='LXQt'
aSOFTWARE_DESC[$software_id]='lightweight desktop'
aSOFTWARE_CATX[$software_id]=0
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/desktop/#lxqt'
aSOFTWARE_DEPS[$software_id]='5 6 browser'
# Remote Desktop
#--------------------------------------------------------------------------------
software_id=28
aSOFTWARE_NAME[$software_id]='TigerVNC Server'
aSOFTWARE_DESC[$software_id]='desktop for remote connection'
aSOFTWARE_CATX[$software_id]=1
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/remote_desktop/#tigervnc-server'
aSOFTWARE_DEPS[$software_id]='desktop'
aSOFTWARE_CONFLICTS[$software_id]='120'
#------------------
software_id=29
aSOFTWARE_NAME[$software_id]='XRDP'
aSOFTWARE_DESC[$software_id]='remote desktop protocol (rdp) server'
aSOFTWARE_CATX[$software_id]=1
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/remote_desktop/#xrdp'
aSOFTWARE_DEPS[$software_id]='desktop'
#------------------
software_id=30
aSOFTWARE_NAME[$software_id]='NoMachine'
aSOFTWARE_DESC[$software_id]='multi-platform server and client access'
aSOFTWARE_CATX[$software_id]=1
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/remote_desktop/#nomachine'
aSOFTWARE_DEPS[$software_id]='desktop'
# - RISC-V: No package: https://downloads.nomachine.com/
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=120
aSOFTWARE_NAME[$software_id]='RealVNC Server'
aSOFTWARE_DESC[$software_id]='desktop for remote connection'
aSOFTWARE_CATX[$software_id]=1
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/remote_desktop/#realvnc-server'
aSOFTWARE_DEPS[$software_id]='desktop'
aSOFTWARE_CONFLICTS[$software_id]='28'
# RPi only (archive.raspberrypi.org repo, libraspberrypi0 dependency, license)
(( $G_HW_MODEL > 9 )) && aSOFTWARE_AVAIL_G_HW_MODEL[$software_id,$G_HW_MODEL]=0
# Media Systems
#--------------------------------------------------------------------------------
software_id=31
aSOFTWARE_NAME[$software_id]='Kodi'
aSOFTWARE_DESC[$software_id]='The media centre for Linux'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#kodi'
aSOFTWARE_DEPS[$software_id]='5 152'
# Bullseye + RPi 32-bit + Odroid N2 + Odroid C4: Kodi starts without X server
[[ $G_DISTRO -ge 6 || ( $G_HW_MODEL -le 9 && $(dpkg --print-architecture) == 'armhf' ) || $G_HW_MODEL == 1[56] ]] || aSOFTWARE_DEPS[$software_id]+=' 6'
# Odroids from Bullseye on (no Amlogic fbdev Kodi build available) require an X server when no DRM is available.
[[ $G_HW_MODEL == 1[56] && $G_DISTRO -ge 6 && ! -e '/dev/dri' ]] && aSOFTWARE_DEPS[$software_id]+=' 6'
#------------------
software_id=32
aSOFTWARE_NAME[$software_id]='ympd'
aSOFTWARE_DESC[$software_id]='lightweight web interface music player for mpd'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#ympd'
aSOFTWARE_DEPS[$software_id]='128'
# - Bookworm: No libssl3 support
aSOFTWARE_AVAIL_G_DISTRO[$software_id,7]=0
# - RISC-V: No binary: https://dietpi.com/downloads/binaries/all/ympd_1.2.3.7z
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=148
aSOFTWARE_NAME[$software_id]='myMPD'
aSOFTWARE_DESC[$software_id]='fork of ympd with improved features'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#mympd'
aSOFTWARE_DEPS[$software_id]='128'
# - RISC-V: No package: https://download.opensuse.org/repositories/home:/jcorporation/Debian_Unstable/
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=119
aSOFTWARE_NAME[$software_id]='CAVA'
aSOFTWARE_DESC[$software_id]='Console audio visualisation for MPD'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#cava'
aSOFTWARE_DEPS[$software_id]='128'
#------------------
software_id=33
aSOFTWARE_NAME[$software_id]='Airsonic-Advanced'
aSOFTWARE_DESC[$software_id]='Web interface media streaming server'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#airsonic'
aSOFTWARE_DEPS[$software_id]='5 7 196'
#------------------
software_id=35
aSOFTWARE_NAME[$software_id]='Logitech Media Server'
aSOFTWARE_DESC[$software_id]='fka. SlimServer, SqueezeboxServer, SliMP3'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#logitech-media-server'
# - RISC-V: No package: https://downloads.slimdevices.com/releases/latest.xml
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=36
aSOFTWARE_NAME[$software_id]='Squeezelite'
aSOFTWARE_DESC[$software_id]='audio player for LMS & Squeezebox'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#squeezelite'
aSOFTWARE_DEPS[$software_id]='5'
#------------------
software_id=37
aSOFTWARE_NAME[$software_id]='Shairport Sync'
aSOFTWARE_DESC[$software_id]='AirPlay audio player with multiroom sync'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#shairport-sync'
aSOFTWARE_DEPS[$software_id]='5 152'
#------------------
software_id=39
aSOFTWARE_NAME[$software_id]='ReadyMedia'
aSOFTWARE_DESC[$software_id]='(MiniDLNA) media streaming server (dlna, upnp)'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#readymedia'
#------------------
software_id=40
aSOFTWARE_NAME[$software_id]='Ampache'
aSOFTWARE_DESC[$software_id]='web interface media streaming server'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#ampache'
aSOFTWARE_DEPS[$software_id]='5 7 88 89 webserver'
#------------------
software_id=41
aSOFTWARE_NAME[$software_id]='Emby'
aSOFTWARE_DESC[$software_id]='web interface media streaming server'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#emby'
# - ARMv6: https://github.com/MichaIng/DietPi/issues/534#issuecomment-416405968
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
# - RISC-V: No package: https://github.com/MediaBrowser/Emby.Releases/releases
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=42
aSOFTWARE_NAME[$software_id]='Plex Media Server'
aSOFTWARE_DESC[$software_id]='web interface media streaming server'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#plex-media-server'
# - ARMv6: https://github.com/MichaIng/DietPi/issues/648
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
# - RISC-V: No package
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=43
aSOFTWARE_NAME[$software_id]='Murmur'
aSOFTWARE_DESC[$software_id]='mumble voip server'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#murmur'
#------------------
software_id=118
aSOFTWARE_NAME[$software_id]='Mopidy'
aSOFTWARE_DESC[$software_id]='Web interface music & radio player'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#mopidy'
aSOFTWARE_DEPS[$software_id]='5 130'
#------------------
software_id=121
aSOFTWARE_NAME[$software_id]='Roon Bridge'
aSOFTWARE_DESC[$software_id]='Turns device into Roon capable audio player'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#roon-bridge'
aSOFTWARE_DEPS[$software_id]='5'
# - ARMv6
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
# - RISC-V: No archive: https://help.roonlabs.com/portal/en/kb/articles/linux-install
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=124
aSOFTWARE_NAME[$software_id]='NAA daemon'
aSOFTWARE_DESC[$software_id]='signalyst network audio adaptor (naa)'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#naa-daemon'
aSOFTWARE_DEPS[$software_id]='5'
#------------------
software_id=128
aSOFTWARE_NAME[$software_id]='MPD'
aSOFTWARE_DESC[$software_id]='music player daemon'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DEPS[$software_id]='5 152'
#------------------
software_id=129
aSOFTWARE_NAME[$software_id]='O!MPD'
aSOFTWARE_DESC[$software_id]='Feature-rich, web interface audio player for MPD'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#ompd'
aSOFTWARE_DEPS[$software_id]='88 89 128 195 webserver'
#------------------
software_id=135
aSOFTWARE_NAME[$software_id]='IceCast'
aSOFTWARE_DESC[$software_id]='Shoutcast streaming server (+DarkIce)'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#icecast'
aSOFTWARE_DEPS[$software_id]='5'
#------------------
software_id=141
aSOFTWARE_NAME[$software_id]='Spotify Connect Web'
aSOFTWARE_DESC[$software_id]='web interface for Spotify premium'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#spotify-connect-web'
aSOFTWARE_DEPS[$software_id]='5'
# ARMv7 only
(( $G_HW_ARCH == 2 )) || aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,$G_HW_ARCH]=0
#------------------
software_id=143
aSOFTWARE_NAME[$software_id]='Koel'
aSOFTWARE_DESC[$software_id]='web interface audio streamer'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#koel'
aSOFTWARE_DEPS[$software_id]='7 88 89'
#------------------
software_id=146
aSOFTWARE_NAME[$software_id]='Tautulli'
aSOFTWARE_DESC[$software_id]='monitoring and tracking tool for Plex'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#tautulli'
aSOFTWARE_DEPS[$software_id]='17'
#------------------
software_id=154
aSOFTWARE_NAME[$software_id]='Roon Server'
aSOFTWARE_DESC[$software_id]='Roon capable audio player and core'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#roon-server'
aSOFTWARE_DEPS[$software_id]='1 5 7'
# x86_64 only: https://help.roonlabs.com/portal/en/kb/articles/linux-install
(( $G_HW_ARCH == 10 )) || aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,$G_HW_ARCH]=0
#------------------
software_id=159
aSOFTWARE_NAME[$software_id]='Allo GUI full'
aSOFTWARE_DESC[$software_id]='Audiophile web interface with all dependencies'
aSOFTWARE_CATX[$software_id]=-1
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/forum/t/dietpi-allo-com-web-gui-image/1523'
aSOFTWARE_DEPS[$software_id]='36 37 65 88 89 96 124 128 129 152 160 163 webserver'
# Roon Bridge is not supported on ARMv6 and RISC-V
(( $G_HW_ARCH == 1 || $G_HW_ARCH == 11 )) || aSOFTWARE_DEPS[$software_id]+=' 121'
#------------------
software_id=160
aSOFTWARE_NAME[$software_id]='Allo GUI'
aSOFTWARE_DESC[$software_id]='Audiophile web interface without dependencies'
aSOFTWARE_CATX[$software_id]=-1
#------------------
software_id=163
aSOFTWARE_NAME[$software_id]='GMediaRender'
aSOFTWARE_DESC[$software_id]='Resource efficient UPnP/DLNA renderer'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#gmediarender'
aSOFTWARE_DEPS[$software_id]='5 152'
#------------------
software_id=167
aSOFTWARE_NAME[$software_id]='Raspotify'
aSOFTWARE_DESC[$software_id]='Spotify connect client'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#raspotify'
aSOFTWARE_DEPS[$software_id]='5'
# - Buster: https://dtcooper.github.io/raspotify/
aSOFTWARE_AVAIL_G_DISTRO[$software_id,5]=0
#------------------
software_id=80
aSOFTWARE_NAME[$software_id]='Ubooquity'
aSOFTWARE_DESC[$software_id]='free home server for your comics and ebooks library'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#ubooquity'
aSOFTWARE_DEPS[$software_id]='196'
#------------------
software_id=179
aSOFTWARE_NAME[$software_id]='Komga'
aSOFTWARE_DESC[$software_id]='free and open source comics/mangas media server with web UI'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#komga'
aSOFTWARE_DEPS[$software_id]='196'
#------------------
software_id=86
aSOFTWARE_NAME[$software_id]='Roon Extension Manager'
aSOFTWARE_DESC[$software_id]='manage extensions from within Roon'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#roon-extension-manager'
aSOFTWARE_DEPS[$software_id]='162'
# - ARMv6
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
#------------------
software_id=178
aSOFTWARE_NAME[$software_id]='Jellyfin'
aSOFTWARE_DESC[$software_id]='FOSS web interface media streaming server'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#jellyfin'
# - ARMv6: https://github.com/jellyfin/jellyfin/issues/5011
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
# - RISC-V: No package: https://repo.jellyfin.org/releases/server/debian/unstable/
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=190
aSOFTWARE_NAME[$software_id]='Beets'
aSOFTWARE_DESC[$software_id]='music organizer and manager'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#beets'
#------------------
software_id=191
aSOFTWARE_NAME[$software_id]='Snapcast Server'
aSOFTWARE_DESC[$software_id]='Multiroom audio server'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#snapcast-server'
aSOFTWARE_DEPS[$software_id]='5'
# - ARMv8: https://github.com/badaix/snapcast/issues/706
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,3]=0
# - RISC-V: https://github.com/badaix/snapcast/releases
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=192
aSOFTWARE_NAME[$software_id]='Snapcast Client'
aSOFTWARE_DESC[$software_id]='Multiroom audio client'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#snapcast-client'
aSOFTWARE_DEPS[$software_id]='5'
aSOFTWARE_INTERACTIVE[$software_id]=1
# - ARMv8: https://github.com/badaix/snapcast/issues/706
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,3]=0
# - RISC-V: https://github.com/badaix/snapcast/releases
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=199
aSOFTWARE_NAME[$software_id]='Spotifyd'
aSOFTWARE_DESC[$software_id]='Open source Spotify client running as UNIX daemon'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#spotifyd'
aSOFTWARE_DEPS[$software_id]='5'
# - ARMv8
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,3]=0
# - RISC-V: No archive: https://github.com/Spotifyd/spotifyd/releases
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=204
aSOFTWARE_NAME[$software_id]='Navidrome'
aSOFTWARE_DESC[$software_id]='Web interface media streaming server'
aSOFTWARE_CATX[$software_id]=2
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#navidrome'
aSOFTWARE_DEPS[$software_id]='5 7'
# - RISC-V: No archive: https://github.com/navidrome/navidrome/releases/
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
# BitTorrent & Download
#--------------------------------------------------------------------------------
software_id=44
aSOFTWARE_NAME[$software_id]='Transmission'
aSOFTWARE_DESC[$software_id]='BitTorrent server with web interface (C)'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#transmission'
#------------------
software_id=45
aSOFTWARE_NAME[$software_id]='Deluge'
aSOFTWARE_DESC[$software_id]='BitTorrent server with web interface (Python)'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#deluge'
#------------------
software_id=46
aSOFTWARE_NAME[$software_id]='qBittorrent'
aSOFTWARE_DESC[$software_id]='BitTorrent server with web interface (C++)'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#qbittorrent'
#------------------
software_id=107
aSOFTWARE_NAME[$software_id]='rTorrent'
aSOFTWARE_DESC[$software_id]='BitTorrent server (C++) with rutorrent web interface (PHP)'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#rtorrent'
aSOFTWARE_DEPS[$software_id]='89 170 webserver'
#------------------
software_id=116
aSOFTWARE_NAME[$software_id]='Medusa'
aSOFTWARE_DESC[$software_id]='Automatic video library manager for TV shows'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#medusa'
aSOFTWARE_DEPS[$software_id]='170'
#------------------
software_id=132
aSOFTWARE_NAME[$software_id]='Aria2'
aSOFTWARE_DESC[$software_id]='Download manager with web interface'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#arias'
aSOFTWARE_DEPS[$software_id]='87 89 webserver'
#------------------
software_id=139
aSOFTWARE_NAME[$software_id]='SABnzbd'
aSOFTWARE_DESC[$software_id]='NZB download manager'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#sabnzbd'
aSOFTWARE_DEPS[$software_id]='130 170'
#------------------
software_id=144
aSOFTWARE_NAME[$software_id]='Sonarr'
aSOFTWARE_DESC[$software_id]='Automatically download TV shows'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#sonarr'
aSOFTWARE_DEPS[$software_id]='87 150'
# - RISC-V: Missing package
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=145
aSOFTWARE_NAME[$software_id]='Radarr'
aSOFTWARE_DESC[$software_id]='Automatically download movies'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#radarr'
aSOFTWARE_DEPS[$software_id]='87'
(( $G_HW_ARCH == 1 )) && aSOFTWARE_DEPS[$software_id]+=' 150'
# - RISC-V: Missing package
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=106
aSOFTWARE_NAME[$software_id]='Lidarr'
aSOFTWARE_DESC[$software_id]='Automatically download music'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#lidarr'
aSOFTWARE_DEPS[$software_id]='87'
(( $G_HW_ARCH == 1 )) && aSOFTWARE_DEPS[$software_id]+=' 150'
# - RISC-V: Missing package
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=180
aSOFTWARE_NAME[$software_id]='Bazarr'
aSOFTWARE_DESC[$software_id]='Automatically download subtitles'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#bazarr'
aSOFTWARE_DEPS[$software_id]='130'
# FFmpeg required on ARM, x86_64 binaries are shipped with Bazarr: https://github.com/morpheus65535/bazarr-binaries/tree/master/bin/Linux/x86_64/ffmpeg
(( $G_HW_ARCH == 10 )) || aSOFTWARE_DEPS[$software_id]+=' 7'
# UnRAR required on ARMv6/7, ARMv8 and x86_64 binaries are shipped with Bazarr: https://github.com/morpheus65535/bazarr-binaries/tree/master/bin/Linux
(( $G_HW_ARCH < 3 )) && aSOFTWARE_DEPS[$software_id]+=' 170'
#------------------
software_id=147
aSOFTWARE_NAME[$software_id]='Jackett'
aSOFTWARE_DESC[$software_id]='API support for your torrent trackers'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#jackett'
(( $G_HW_ARCH == 1 )) && aSOFTWARE_DEPS[$software_id]='150'
# - RISC-V: Missing package
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=149
aSOFTWARE_NAME[$software_id]='NZBGet'
aSOFTWARE_DESC[$software_id]='NZB download manager'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#nzbget'
#------------------
software_id=151
aSOFTWARE_NAME[$software_id]='Prowlarr'
aSOFTWARE_DESC[$software_id]='Indexer manager & proxy for PVR'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#prowlarr'
aSOFTWARE_DEPS[$software_id]='87'
# - ARMv6
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
# - RISC-V: Missing package
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=203
aSOFTWARE_NAME[$software_id]='Readarr'
aSOFTWARE_DESC[$software_id]='Ebook and audiobook collection manager'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#readarr'
aSOFTWARE_DEPS[$software_id]='87'
# - ARMv6
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
# - RISC-V: Missing package
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=155
aSOFTWARE_NAME[$software_id]='HTPC Manager'
aSOFTWARE_DESC[$software_id]='Manage your HTPC from anywhere'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#htpc-manager'
aSOFTWARE_DEPS[$software_id]='17 130'
#------------------
software_id=195
aSOFTWARE_NAME[$software_id]='youtube-dl'
aSOFTWARE_DESC[$software_id]='Download videos from YouTube and other video sites'
aSOFTWARE_CATX[$software_id]=3
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/bittorrent/#youtube-dl'
# Cloud & Backup
#--------------------------------------------------------------------------------
software_id=47
aSOFTWARE_NAME[$software_id]='ownCloud'
aSOFTWARE_DESC[$software_id]='File sync, sharing and collaboration platform'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#owncloud'
aSOFTWARE_DEPS[$software_id]='88 89 91 webserver'
# - Bookworm: No PHP 8.x support yet
aSOFTWARE_AVAIL_G_DISTRO[$software_id,7]=0
#------------------
software_id=114
aSOFTWARE_NAME[$software_id]='Nextcloud'
aSOFTWARE_DESC[$software_id]='File sync, sharing and collaboration platform'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#nextcloud'
aSOFTWARE_DEPS[$software_id]='88 89 91 webserver'
#------------------
software_id=168
aSOFTWARE_NAME[$software_id]='Nextcloud Talk'
aSOFTWARE_DESC[$software_id]='Video calls with configured Coturn server'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#nextcloud-talk'
aSOFTWARE_DEPS[$software_id]='114'
# Currently requires manual domain and Coturn server port input.
# - To resolve: Default port 5349 could be used, but reliable method to get external domain/static IP is required.
aSOFTWARE_INTERACTIVE[$software_id]=1
#------------------
software_id=48
aSOFTWARE_NAME[$software_id]='Pydio'
aSOFTWARE_DESC[$software_id]='Feature-rich backup and sync server'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#pydio'
aSOFTWARE_DEPS[$software_id]='88 89 webserver'
#------------------
software_id=111
aSOFTWARE_NAME[$software_id]='UrBackup Server'
aSOFTWARE_DESC[$software_id]='Full system backup server'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#urbackup'
# - ARMv6
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
# - RISC-V: Missing package
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=49
aSOFTWARE_NAME[$software_id]='Gogs'
aSOFTWARE_DESC[$software_id]='Personal Git server with web interface'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#gogs'
aSOFTWARE_DEPS[$software_id]='17 88 0'
aSOFTWARE_CONFLICTS[$software_id]='165'
#------------------
software_id=50
aSOFTWARE_NAME[$software_id]='Syncthing'
aSOFTWARE_DESC[$software_id]='Backup and sync server with web interface'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#syncthing'
#------------------
software_id=158
aSOFTWARE_NAME[$software_id]='MinIO'
aSOFTWARE_DESC[$software_id]='S3 compatible distributed object server'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#minio'
# - RISC-V: Missing package
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=161
aSOFTWARE_NAME[$software_id]='FuguHub'
aSOFTWARE_DESC[$software_id]='Lightweight WebDAV cloud with a CMS, album and blog integration'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#fuguhub'
# - ARMv8
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,3]=0
# - RISC-V: Missing package
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=165
aSOFTWARE_NAME[$software_id]='Gitea'
aSOFTWARE_DESC[$software_id]='Git with a cup of tea'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#gitea'
aSOFTWARE_DEPS[$software_id]='17 88 0'
aSOFTWARE_CONFLICTS[$software_id]='49'
# - RISC-V: Missing binary: https://github.com/go-gitea/gitea/releases
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=177
aSOFTWARE_NAME[$software_id]='Firefox Sync Server'
aSOFTWARE_DESC[$software_id]='Sync bookmarks, tabs, history & passwords'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#firefox-sync-server'
aSOFTWARE_DEPS[$software_id]='87'
# Python 2 only, hence supported only on Buster
(( $G_DISTRO == 5 )) || aSOFTWARE_AVAIL_G_DISTRO[$software_id,$G_DISTRO]=0
#------------------
software_id=183
aSOFTWARE_NAME[$software_id]='vaultwarden'
aSOFTWARE_DESC[$software_id]='Unofficial Bitwarden password manager server written in Rust'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#vaultwarden'
aSOFTWARE_DEPS[$software_id]='87'
#------------------
software_id=198
aSOFTWARE_NAME[$software_id]='File Browser'
aSOFTWARE_DESC[$software_id]='web based file manager'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#filebrowser'
#------------------
software_id=202
aSOFTWARE_NAME[$software_id]='Rclone'
aSOFTWARE_DESC[$software_id]='Utility to sync your files to cloud storages'
aSOFTWARE_CATX[$software_id]=4
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/cloud/#rclone'
# Gaming & Emulation
#--------------------------------------------------------------------------------
software_id=108
aSOFTWARE_NAME[$software_id]='Amiberry'
aSOFTWARE_DESC[$software_id]='Optimised Amiga emulator for ARM-based SoCs'
aSOFTWARE_CATX[$software_id]=5
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#amiberry'
aSOFTWARE_DEPS[$software_id]='5'
# - RISC-V: Missing target
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=51
aSOFTWARE_NAME[$software_id]='OpenTyrian'
aSOFTWARE_DESC[$software_id]='a classic retro game, addictive'
aSOFTWARE_CATX[$software_id]=5
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#opentyrian'
aSOFTWARE_DEPS[$software_id]='5 6'
# RPi only
(( $G_HW_MODEL > 9 )) && aSOFTWARE_AVAIL_G_HW_MODEL[$software_id,$G_HW_MODEL]=0
# - ARMv8
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,3]=0
#------------------
software_id=112
aSOFTWARE_NAME[$software_id]='DXX-Rebirth'
aSOFTWARE_DESC[$software_id]='Descent 1/2'
aSOFTWARE_CATX[$software_id]=5
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#dxx-rebirth'
aSOFTWARE_DEPS[$software_id]='5'
# RPi only
(( $G_HW_MODEL > 9 )) && aSOFTWARE_AVAIL_G_HW_MODEL[$software_id,$G_HW_MODEL]=0
#------------------
software_id=52
aSOFTWARE_NAME[$software_id]='Cuberite'
aSOFTWARE_DESC[$software_id]='Minecraft server with web interface (C++)'
aSOFTWARE_CATX[$software_id]=5
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#cuberite'
# - RISC-V: Missing binary
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=53
aSOFTWARE_NAME[$software_id]='MineOS'
aSOFTWARE_DESC[$software_id]='Minecraft servers with web interface (Java/Node.js)'
aSOFTWARE_CATX[$software_id]=5
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#mineos'
aSOFTWARE_DEPS[$software_id]='9 17 196'
#------------------
software_id=156
aSOFTWARE_NAME[$software_id]='Steam'
aSOFTWARE_DESC[$software_id]='Valve gaming platform client'
aSOFTWARE_CATX[$software_id]=5
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#steam'
aSOFTWARE_DEPS[$software_id]='5 6 desktop'
# Box86 required on ARM
(( $G_HW_ARCH == 2 )) && aSOFTWARE_DEPS[$software_id]+=' 62'
# x86_64 and ARMv7 only
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,3]=0
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
#------------------
software_id=164
aSOFTWARE_NAME[$software_id]='Nukkit'
aSOFTWARE_DESC[$software_id]='A nuclear-powered server for Minecraft Pocket Edition'
aSOFTWARE_CATX[$software_id]=5
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#nukkit'
aSOFTWARE_DEPS[$software_id]='196'
#------------------
software_id=181
aSOFTWARE_NAME[$software_id]='PaperMC'
aSOFTWARE_DESC[$software_id]='Highly optimised Minecraft server with plugins, written in Java'
aSOFTWARE_CATX[$software_id]=5
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#papermc'
aSOFTWARE_DEPS[$software_id]='196'
aSOFTWARE_INTERACTIVE[$software_id]=1
# As of Java 16+ need, currently only works on Bullseye+ and not on ARMv6
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
aSOFTWARE_AVAIL_G_DISTRO[$software_id,5]=0
#------------------
software_id=62
aSOFTWARE_NAME[$software_id]='Box86'
aSOFTWARE_DESC[$software_id]='x86 userspace emulation'
aSOFTWARE_CATX[$software_id]=5
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#box86'
# ARMv7 only
(( $G_HW_ARCH == 2 )) || aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,$G_HW_ARCH]=0
#------------------
software_id=197
aSOFTWARE_NAME[$software_id]='Box64'
aSOFTWARE_DESC[$software_id]='x86_64 userspace emulation'
aSOFTWARE_CATX[$software_id]=5
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/gaming/#box64'
# ARMv8 and RISC-V only
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,1]=0
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,2]=0
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,10]=0
# Social & Search
#--------------------------------------------------------------------------------
software_id=54
aSOFTWARE_NAME[$software_id]='phpBB'
aSOFTWARE_DESC[$software_id]='bulletin board forum software'
aSOFTWARE_CATX[$software_id]=6
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/social/#phpbb'
aSOFTWARE_DEPS[$software_id]='88 89 webserver'
#------------------
software_id=55
aSOFTWARE_NAME[$software_id]='WordPress'
aSOFTWARE_DESC[$software_id]='website blog and publishing platform'
aSOFTWARE_CATX[$software_id]=6
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/social/#wordpress'
aSOFTWARE_DEPS[$software_id]='88 89 webserver'
#------------------
software_id=38
aSOFTWARE_NAME[$software_id]='FreshRSS'
aSOFTWARE_DESC[$software_id]='self-hosted RSS feed aggregator'
aSOFTWARE_CATX[$software_id]=6
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/social/#freshrss'
aSOFTWARE_DEPS[$software_id]='88 89 webserver'
#------------------
software_id=56
aSOFTWARE_NAME[$software_id]='Single File PHP Gallery'
aSOFTWARE_DESC[$software_id]='Website to host and browse your images'
aSOFTWARE_CATX[$software_id]=6
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/social/#single-file-php-gallery'
aSOFTWARE_DEPS[$software_id]='89 webserver'
#------------------
software_id=57