forked from dertasiu/arch-installer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpost-install.sh
executable file
·1000 lines (918 loc) · 50 KB
/
post-install.sh
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/sh
: 'Copyright (C) 2015 Andrés Quiceno Hernández, Mario Gordillo Ortiz
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>'
#Load the X11 keymap
localectl --no-convert set-x11-keymap selectedkeymap
user=$(cat /etc/passwd | grep 1000 | awk -F':' '{ print $1}' | head -1)
noConflict="0"
dialog --backtitle "ArchLinux Installation" --title "Desktop Environment instalation" \
--yesno "Do you want to install any desktop environment?" 6 51
if [[ $? == 0 ]];then
until [[ $noConflict == "1" ]];do
dialog --backtitle "ArchLinux Installation" --title "Be careful" --msgbox 'These are the some incompatibilities between desktops\n
┌─Gnome \n
Unity─┼─Deepin \n
└─Pantheon\n
\nKDE4 ── KDE5 ' 0 0
cmd=(dialog --backtitle "ArchLinux Installation" --separate-output --checklist "Select the Desktop Environment:" 0 0 0)
options=(KDE4 "KDE desktop environment v4" off
KDE5 "KDE desktop environment v5" off
Gnome "GNOME Desktop environment" off
XFCE "XFCE desktop environment" off
LXDE "Light Desktop environment" off
MATE "A mantained fork of GNOME v2" off
Pantheon "Elementary OS' Desktop environment" off
LXQT "Light Desktop environment with QT" off
Unity "Ubuntu's Desktop environment" off
DDE "Deepin's Desktop environment" off
OpenBox "Simple and minimalistic DE" off
i3 "Tiled Window manager" off
Cinnamon "Linux Mint's desktop environment" off
Budgie "Solus' desktop environment" off
Enlightenment "Enlightenment desktop environment" off
bspwm "Minimalistic tiled window manager" off
)
desktop=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
KDE4true=$(echo "$desktop" | grep "KDE4")
KDE5true=$(echo "$desktop" | grep "KDE5")
Unitytrue=$(echo "$desktop" | grep "Unity")
Gnometrue=$(echo "$desktop" | grep "Gnome")
DDEtrue=$(echo "$desktop" | grep "DDE")
Pantheontrue=$(echo "$desktop" | grep "Pantheon")
if [[ $KDE4true == "KDE4" ]] && [[ $KDE5true == "KDE5" ]]
then
dialog --backtitle "ArchLinux Installation" --title "Incompatibility detected" --msgbox 'KDE4 and KDE5 are not compatible. Choose only one KDE' 6 57
noConflict=0
elif [[ $Unitytrue == "Unity" ]] && [[ $Gnometrue == "Gnome" || $DDEtrue == "DDE" || $Pantheontrue == "Pantheon" ]]
then
dialog --backtitle "ArchLinux Installation" --title "Incompatibility detected" --msgbox 'Unity cannot be installed at the same time that: Gnome, Deepin or Pantheon' 6 78
noConflict=0
else
noConflict=1
fi
done
pacman -Syy
clear
for choice in $desktop #For each line that is on the variable $desktop, grab one line and fit it on the $choice variable
do
case $choice in #In the case that the $choice variable is..., do... Ex: $choice=KDE5; case $choice in. This will select the KDE5 option
"KDE4")
dialog --backtitle "ArchLinux Installation" --title "KDE4 Instalation" \
--yesno "Do you want to install KDE4's extra software? (kde-meta)" 6 60
if [[ $? = 0 ]];then
kdemeta=kde-meta
fi
pacman -S --noconfirm kde $kdemeta
#Enable NetworkManager
systemctl enable NetworkManager
;;
"KDE5")
dialog --backtitle "ArchLinux Installation" --title "KDE5 Instalation" \
--yesno "Do you want to install KDE5's extra software? (plasma-meta)" 6 63
if [[ $? = 0 ]];then
plasmameta=plasma-meta
fi
pacman -S --noconfirm plasma $plasmameta
#Enable NetworkManager
systemctl enable NetworkManager
;;
"Gnome")
dialog --backtitle "ArchLinux Installation" --title "GNOME Instalation" \
--yesno "Do you want to install GNOME's extra software? (gnome-extra)" 6 64
if [[ $? = 0 ]];then
gnomeextra=gnome-extra
fi
pacman -S --noconfirm gnome $gnomeextra
#Enable NetworkManager
systemctl enable NetworkManager
;;
"XFCE")
dialog --backtitle "ArchLinux Installation" --title "XFCE4 Instalation" \
--yesno "Do you want to install XFCE's extra software? (xfce4-goodies)" 6 65
if [[ $? = 0 ]];then
xfce4goodies=xfce4-goodies
fi
pacman -S --noconfirm xfce4 $xfce4goodies
#Enable NetworkManager
systemctl enable NetworkManager
;;
"LXDE")
dialog --backtitle "ArchLinux Installation" --title "LXDE Instalation" \
--yesno "Do you want to install LXDE's extra software? (lxde-common)" 6 63
if [[ $? = 0 ]];then
lxdecommon=lxde-common
fi
pacman -S --noconfirm lxde $lxdecommon
#Enable NetworkManager
systemctl enable NetworkManager
;;
"MATE")
dialog --backtitle "ArchLinux Installation" --title "MATE Instalation" \
--yesno "Do you want to install MATE's extra software? (mate-extra)" 6 62
if [[ $? = 0 ]];then
mateextra=mate-extra
fi
pacman -S --noconfirm mate $mateextra
#Enable NetworkManager
systemctl enable NetworkManager
;;
"Pantheon")
printf "\n[pantheon]\nServer = http://pkgbuild.com/~alucryd/\x24repo/\x24arch\nSigLevel = Optional TrustAll\n" >> /etc/pacman.conf
pacman -Syy --noconfirm pantheon-session-bzr audience-bzr contractor-bzr eidete-bzr elementary-icon-theme-bzr elementary-icon-theme-bzr elementary-wallpapers-bzr gtk-theme-elementary-bzr footnote-bzr geary lightdm-pantheon-greeter-bzr maya-calendar-bzr midori-granite-bzr noise-bzr pantheon-backgrounds-bzr pantheon-calculator-bzr pantheon-default-settings-bzr pantheon-files-bzr pantheon-print-bzr pantheon-terminal-bzr plank-theme-pantheon-bzr scratch-text-editor-bzr snap-photobooth-bzr switchboard-bzr ttf-dejavu ttf-droid ttf-freefont ttf-liberation indicator-session indicator-sound
sed -i '/%wheel ALL=(ALL) ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
sudo -u $user yaourt -A -S --noconfirm ttf-opensans pantheon-notify-bzr
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
#Enable NetworkManager
systemctl enable NetworkManager
;;
"LXQT")
#Reload pacman's keys, this resolves an issue related to instalation of lxqt
pacman-key --init
pacman-key --populate archlinux
#Install LXQt
pacman -Syy --noconfirm lxqt oxygen-icons qtcurve
sed -i '/%wheel ALL=(ALL) ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
sudo -u $user yaourt -A -S --noconfirm qterminal-git obconf-qt-git
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
#Enable NetworkManager
systemctl enable NetworkManager
wm=$(dialog --backtitle "ArchLinux Installation" --clear --title "Window Manager Selecion: " \
--menu "LXQt requires an Window Manger to work, select it:" 0 0 0 \
Openbox "Simple Window manager" \
Kwin "KDE Window Manager" 2>&1 > /dev/tty)
for choice in $wm
do
case $choice in
"Openbox")
pacman -S --noconfirm openbox
;;
"Kwin")
pacman -S --noconfirm kwin
;;
esac
done
;;
"Unity")
printf "\n[Unity-for-Arch]\nServer = http://dl.dropbox.com/u/486665/Repos/\x24repo/\x24arch\nSigLevel = Optional TrustAll\n\n[Unity-for-Arch-Extra]\nServer = http://dl.dropbox.com/u/486665/Repos/\x24repo/\x24arch\nSigLevel = Optional TrustAll\n" >> /etc/pacman.conf
pacman -Syy
ubuntu=$(pacman -Slq Unity-for-Arch | grep -v upower-compat | grep -v gsettings-desktop-schemas)
ubuntuextra=$(pacman -Slq Unity-for-Arch-Extra | grep -v pidgin-libnotify-ubuntu)
pacman -R --noconfirm gsettings-desktop-schemas glib-networking libsoup networkmanager
pacman -S --noconfirm ${ubuntu} ${ubuntuextra}
pacman -S --noconfirm networkmanager
#Enable NetworkManager
systemctl enable NetworkManager
;;
"DDE")
dialog --backtitle "ArchLinux Installation" --title "Deepin Instalation" \
--yesno "Do you want to install Deepin's extra software? (deepin-extra)" 6 66
if [[ $? = 0 ]];then
deepinextra=deepin-extra
fi
printf "\n[home_metakcahura_arch-deepin_Arch_Extra]\nServer = http://download.opensuse.org/repositories/home:/metakcahura:/arch-deepin/Arch_Extra/\x24arch\nSigLevel = Never\n" >> /etc/pacman.conf
pacman -Syy --noconfirm deepin $deepinextra
#Enable NetworkManager
systemctl enable NetworkManager
;;
"OpenBox")
pacman -S --noconfirm openbox
#Enable NetworkManager
systemctl enable NetworkManager
;;
"i3")
pacman -S --noconfirm i3-wm i3status i3lock rxvt-unicode
#Enable NetworkManager
systemctl enable NetworkManager
;;
"Cinnamon")
pacman -S --noconfirm cinnamon
#Enable NetworkManager
systemctl enable NetworkManager
;;
"Budgie")
sed -i '/%wheel ALL=(ALL) ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
sudo -u $user yaourt -A -S --noconfirm budgie-desktop-git
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
#Enable NetworkManager
systemctl enable NetworkManager
;;
"Enlightenment")
pacman -S --noconfirm enlightenment
#Enable NetworkManager
systemctl enable NetworkManager
;;
"bspwm")
pacman -S --noconfirm bspwm sxhkd rxvt-unicode
mkdir -p /home/$user/.config/bspwm
mkdir -p /home/$user/.config/sxhkd
cp /usr/share/doc/bspwm/examples/bspwmrc /home/$user/.config/bspwm/bspwmrc
echo "sxhkd &" >> /home/$user/.config/bspwm/bspwmrc
chmod +x /home/$user/.config/bspwm/bspwmrc
chown -R $user:users /home/$user/.config/bspwm
cp /usr/share/doc/bspwm/examples/sxhkdrc /home/$user/.config/sxhkd/sxhkdrc
chmod +x /home/$user/.config/sxhkd/sxhkdrc
chown -R $user:users /home/$user/.config/sxhkd
;;
esac
done
until [[ $noDmConflict == "1" ]];do
dm=$(dialog --backtitle "ArchLinux Installation" --clear --title "Display Manager selection: " \
--menu "Select the Display Manager:" 0 0 0 \
GDM "GNOME Display manager" \
SDDM "KDE4 Display manager" \
LXDM "LXDE Display manager" \
MDM "Linux Mint's Display manager" \
Entrance "Enlightenment's Display manager (Experimental)" \
LightDM "Cross-desktop display manager" 2>&1 > /dev/tty)
GDMtrue=$(echo "$dm" | grep "GDM")
if [[ $Unitytrue == "Unity" ]] && [[ $GDMtrue == "GDM" ]]
then
dialog --backtitle "ArchLinux Installation" --title "Incompatibility detected" --msgbox 'Unity and GDM are not compatible. Please, choose other desktop manager than GDM' 6 83
noDmConflict=0
else
noDmConflict=1
fi
done
for choice in $dm
do
case $choice in
"GDM")
pacman -S --noconfirm gdm
systemctl enable gdm
;;
"SDDM")
pacman -S --noconfirm sddm
systemctl enable sddm
;;
"LXDM")
pacman -S --noconfirm lxdm
systemctl enable lxdm
;;
"MDM")
sed -i '/%wheel ALL=(ALL) ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
sudo -u $user yaourt -A -S --noconfirm mdm-display-manager
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
systemctl enable mdm
;;
"Entrance")
sed -i '/%wheel ALL=(ALL) ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
sudo -u $user yaourt -A -S --noconfirm entrance-git
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
systemctl enable entrance
;;
"LightDM")
pacman -S --noconfirm lightdm
systemctl enable lightdm
;;
esac
done
fi
sh=$(dialog --backtitle "ArchLinux Installation" --clear --title "Default Shell selection: " \
--menu "Select the Default Shell:" 0 0 0 \
BASH "Default Shell" \
SH "SH Shell" \
ZSH "ZSH Shell" \
FISH "FISH Shell" \
CShell "C Shell" \
DASH "DASH Shell" 2>&1 > /dev/tty)
for choice in $sh
do
case $choice in
"BASH")
usermod -s /bin/bash root
usermod -s /bin/bash $user
;;
"SH")
usermod -s /bin/sh root
usermod -s /bin/sh $user
;;
"ZSH")
pacman -S --noconfirm zsh
zsh=$(dialog --backtitle "ArchLinux Installation" --clear --title "ZSH selection: " \
--menu "Select the ZSH theme:" 0 0 0 \
grml "grml zsh config" \
oh-my-zsh "oh my zsh" \
None "Pure ZSH!" 2>&1 > /dev/tty)
for choice in $zsh
do
case $choice in
"grml")
pacman -S --noconfirm grml-zsh-config
;;
"oh-my-zsh")
sed -i '/%wheel ALL=(ALL) ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
sudo -u $user yaourt -S -A --noconfirm oh-my-zsh-git bullet-train-oh-my-zsh-theme-git oh-my-zsh-powerline-theme-git powerline-fonts-git
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
cp /usr/share/oh-my-zsh/zshrc /home/$user/.zshrc
cp /usr/share/oh-my-zsh/zshrc /root/.zshrc
themes=$(ls /usr/share/oh-my-zsh/themes | awk -F "." '{print $1}' | sed -e 's/$/ theme/')
theme=$(dialog --backtitle "ArchLinux Installation" --clear --title "Oh my ZSH theme selection: " \
--menu "Select the Oh my ZSH theme:" 0 0 0 ${themes} 2>&1 > /dev/tty)
sed -i "s/ZSH_THEME=\x22robbyrussell\x22/ZSH_THEME=\x22$theme\x22/" /home/$user/.zshrc
sed -i "s/ZSH_THEME=\x22robbyrussell\x22/ZSH_THEME=\x22$theme\x22/" /root/.zshrc
;;
"None")
echo "Pure ZSH!"
;;
esac
done
usermod -s /bin/zsh root
usermod -s /bin/zsh $user
;;
"FISH")
pacman -S --noconfirm fish
usermod -s /usr/bin/fish root
usermod -s /usr/bin/fish $user
;;
"CShell")
pacman -S --noconfirm tcsh
usermod -s /bin/tcsh root
usermod -s /bin/tcsh $user
;;
"DASH")
pacman -S --noconfirm dash
usermod -s /bin/dash root
usermod -s /bin/dash $user
;;
esac
done
#Install the compatibility layer for virtualbox or the graphics card driver
dialog --backtitle "ArchLinux Installation" --title "Graphics Drivers installation" \
--yesno "Are you on a VirtualBox machine?" 6 36
response=$?
case $response in
0) pacman -S --noconfirm virtualbox-guest-utils virtualbox-guest-modules
modprobe -a vboxguest vboxsf vboxvideo
systemctl enable vboxservice && systemctl start vboxservice;;
1) graphics=$(lspci -k | grep -A 2 -E "(VGA|3D)")
if [[ $graphics = *Intel* || $graphics = *intel* || $graphics = *INTEL* ]]
then
pacman -S --noconfirm xf86-video-intel mesa-libgl
fi
if [[ $graphics = *NVIDIA* || $graphics = *nvidia* || $graphics = *Nvidia* ]]
then
pacman -S --noconfirm nvidia
fi
if [[ $graphics = *ATI* || $graphics = *ati* || $graphics = *Ati* || $graphics = *AMD* || $graphics = *amd* || $graphics = *amd* ]]
then
pacman -S --noconfirm xf86-video-ati mesa-libgl mesa-vdpau lib32-mesa-vdpau
fi
;;
esac
LAMP=0
dialog --backtitle "ArchLinux Installation" --title "Services instalation" \
--yesno "Do you want to install any service? Ex: SSH" 6 47
if [[ $? == 0 ]];then
noConflict=0
until [[ $noConflict == "1" ]];do
dialog --backtitle "ArchLinux Installation" --title "Be careful" --msgbox 'These are the some incompatibilities between servers\n
Subsonic ── Madsonic' 0 0
cmd=(dialog --backtitle "ArchLinux Installation" --separate-output --checklist "Select the Services that you want to install:" 0 0 0)
options=(SSH "Remote console" off
Web "Apache + PHP5 + MariaDB(Mysql) A complete Web Server" off
Owncloud "Self-hosted cloud" off
Wordpress "Self-hosted blog" off
Subsonic "Music Server" off
Madsonic "Music Server" off
GitLab "Git Code server" off
Gogs "Simple Git code server" off
NTOP "Traffic monitoring tool" off
TightVNC "Remote screen server" off
Deluge "Torrent server with web UI" off
L2TP "VirtualPrivateNetwork Server L2TP, IPSEC" off
)
desktop=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
Subtrue=$(echo "$desktop" | grep "Subsonic")
Madtrue=$(echo "$desktop" | grep "Madsonic")
if [[ $Subtrue == "Subsonic" ]] && [[ $Madtrue == "Madsonic" ]]
then
dialog --backtitle "ArchLinux Installation" --title "Incompatibility detected" --msgbox 'Subsonic and Madsonic are not compatible. Choose only one' 6 61
noConflict=0
else
noConflict=1
fi
done
pacman -Syy
clear
for choice in $desktop
do
case $choice in
"SSH")
port=22
ip=$(ip a | grep inet | grep -v inet6 | grep -v host | awk -F " " '{print $2}' | awk -F "/" '{print $1}')
pacman -S --noconfirm openssh
dialog --backtitle "ArchLinux Installation" --title "SSH Configuration" \
--yesno "Do you want to change the default port(22) of SSHD?" 7 60
response=$?
case $response in
0) port=$(dialog --backtitle "Archlinux Installation" --title "SSH Configuration" \
--inputbox "Enter the port that you want to use:" 8 40 2>&1 > /dev/tty)
if [ "$?" = "0" ]
then
sed -i -e "s/#Port 22/Port $(echo $port)/g" /etc/ssh/sshd_config
fi;;
1) echo "Port not changed";;
esac
systemctl start sshd
systemctl enable sshd
dialog --backtitle "ArchLinux Installation" --title "SSH Installation" \
--msgbox "SSH Instalation is now completed. You can use this settings to connect to the server:\nIP: $ip \nPort: $port" 0 0
;;
"Web")
ip=$(ip a | grep inet | grep -v inet6 | grep -v host | awk -F " " '{print $2}' | awk -F "/" '{print $1}')
pacman -S --noconfirm apache php php-apache mariadb
##MariaDB
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl start mysqld
systemctl enable mysqld
#Ask for the password of the root's database username
rpassword=$(dialog --backtitle "Archlinux Installation" --passwordbox "Enter the root's password for MySQL/MariaDB:" 8 40 2>&1 > /dev/tty)
if [ "$?" = "0" ]
then
/usr/bin/mysqladmin -u root password $rpassword
fi
#Add the main user of mysql
db=$(dialog --backtitle "Archlinux Installation" --title "Mysql user creation" \
--form "\nPlease, enter the mysql user configuration" 25 60 16 \
"Username :" 1 1 "user" 1 25 25 30 \
"Password :" 2 1 "passw0rd" 2 25 25 30 2>&1 > /dev/tty)
dbuser=$(echo "$db" | sed -n 1p)
dbpass=$(echo "$db" | sed -n 2p)
if [ "$?" = "0" ]
then
DB1="CREATE USER '$dbuser'@'localhost' IDENTIFIED BY '$dbpass';"
DB2=" GRANT ALL PRIVILEGES ON *.* TO '$dbuser'@'localhost' WITH GRANT OPTION;"
DB="${DB1}${DB2}"
mysql -uroot -p$rpassword -e "$DB"
userdb="\n\nMySQL User\nUser: $dbuser\nPassword: $dbpass"
fi
dialog --backtitle "ArchLinux Installation" --title "MySQL Installation" \
--msgbox "MySQL Instalation is now completed. You can use this settings to connect to the server:\n\nUsername: root \nPassword: $rpassword$userdb" 0 0
##Apache+PHP5
sed -i 's/LoadModule mpm_event_module modules\x2Fmod_mpm_event.so/LoadModule mpm_prefork_module modules\x2Fmod_mpm_prefork.so/g' /etc/httpd/conf/httpd.conf #Replace the first string with the second one
sed -i '/LoadModule dir_module modules\x2Fmod_dir.so/a LoadModule php5_module modules\x2Flibphp5.so' /etc/httpd/conf/httpd.conf #Append the second string after the first one
sed -i '/Include conf\x2Fextra\x2Fhttpd-default.conf/a \\n\x23PHP5\nInclude conf\x2Fextra\x2Fphp5_module.conf' /etc/httpd/conf/httpd.conf #Append the second string after the first one
systemctl enable httpd
systemctl start httpd
LAMP=1
dialog --backtitle "ArchLinux Installation" --title "Apache Installation" \
--msgbox "Apache Instalation is now completed. You can use this settings to connect to the server:\nIP: $ip" 0 0
;;
"Owncloud")
if [[ $LAMP == "0" ]]; then
ip=$(ip a | grep inet | grep -v inet6 | grep -v host | awk -F " " '{print $2}' | awk -F "/" '{print $1}')
pacman -S --noconfirm apache php php-apache mariadb
##MariaDB
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl start mysqld
systemctl enable mysqld
#Ask for the password of the root's database username
rpassword=$(dialog --backtitle "Archlinux Installation" --passwordbox "Enter the root's password for MySQL/MariaDB:" 8 40 2>&1 > /dev/tty)
if [ "$?" = "0" ]
then
/usr/bin/mysqladmin -u root password $rpassword
fi
#Add the main user of mysql
db=$(dialog --backtitle "Archlinux Installation" --title "Mysql user creation" \
--form "\nPlease, enter the mysql user configuration" 25 60 16 \
"Username :" 1 1 "user" 1 25 25 30 \
"Password :" 2 1 "passw0rd" 2 25 25 30 2>&1 > /dev/tty)
dbuser=$(echo "$db" | sed -n 1p)
dbpass=$(echo "$db" | sed -n 2p)
if [ "$?" = "0" ]
then
DB1="CREATE USER '$dbuser'@'localhost' IDENTIFIED BY '$dbpass';"
DB2=" GRANT ALL PRIVILEGES ON *.* TO '$dbuser'@'localhost' WITH GRANT OPTION;"
DB="${DB1}${DB2}"
mysql -uroot -p$rpassword -e "$DB"
userdb="\n\nMySQL User\nUser: $dbuser\nPassword: $dbpass"
fi
dialog --backtitle "ArchLinux Installation" --title "MySQL Installation" \
--msgbox "MySQL Instalation is now completed. You can use this settings to connect to the server:\n\nUsername: root \nPassword: $rpassword$userdb" 0 0
##Apache+PHP5
sed -i 's/LoadModule mpm_event_module modules\x2Fmod_mpm_event.so/LoadModule mpm_prefork_module modules\x2Fmod_mpm_prefork.so/g' /etc/httpd/conf/httpd.conf #Replace the first string with the second one
sed -i '/LoadModule dir_module modules\x2Fmod_dir.so/a LoadModule php5_module modules\x2Flibphp5.so' /etc/httpd/conf/httpd.conf #Append the second string after the first one
sed -i '/Include conf\x2Fextra\x2Fhttpd-default.conf/a \\n\x23PHP5\nInclude conf\x2Fextra\x2Fphp5_module.conf' /etc/httpd/conf/httpd.conf #Append the second string after the first one
systemctl enable httpd
systemctl start httpd
LAMP=1
dialog --backtitle "ArchLinux Installation" --title "Apache Installation" \
--msgbox "Apache Instalation is now completed. You can use this settings to connect to the server:\nIP: $ip" 0 0
fi
pacman -S --noconfirm owncloud php-intl php-mcrypt
sed -i '/extension=gd.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=iconv.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=xmlrpc.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=zip.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=bz2.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=curl.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=intl.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=mcrypt.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=openssl.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=pdo_mysql.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=mysql.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
cp /etc/webapps/owncloud/apache.example.conf /etc/httpd/conf/extra/owncloud.conf
echo -e "Include conf/extra/owncloud.conf" >> /etc/httpd/conf/httpd.conf
owncloudname=wordpress
dialog --backtitle "ArchLinux Installation" --title "Owncloud Instalation" --yesno "Do you want to change the default address for owncloud?\n(Default http://domain.com/owncloud/)" 8 45
if [[ $? == "0" ]];then
owncloudname=$(dialog --backtitle "ArchLinux Installation" --title "Owncloud Instalation" --inputbox "Enter the address that you want to use:\n(Ej: acloud = http://domain.com/acloud)" 9 50 2>&1 > /dev/tty)
sed -i "s/Alias \x2Fowncloud/Alias \x2F$owncloudname/g" /etc/httpd/conf/extra/owncloud.conf
fi
dialog --backtitle "ArchLinux Installation" --title "Owncloud Instalation" --yesno "Do you want to change the default port for owncloud?\n(Default: 80)" 8 45
if [[ $? == "0" ]];then
owncloudport=$(dialog --backtitle "ArchLinux Installation" --title "Owncloud Instalation" --inputbox "Enter the port that you want to use: (Ej: 5297 = http://domain.com:5297)" 8 40 2>&1 > /dev/tty)
sed -i "s/*:80/*:$owncloudport/g" /etc/httpd/conf/extra/owncloud.conf
sed -i "s/Listen 80/Listen 80\nListen $owncloudport/g" /etc/httpd/conf/httpd.conf
definedport=1
fi
chown http:http -R /usr/share/webapps/owncloud/
#Enter the database's password
ownpass=$(dialog --backtitle "Archlinux Installation" --passwordbox "Enter owncloud's database password:" 8 40 2>&1 > /dev/tty)
DB1="CREATE USER 'owncloud'@'localhost' IDENTIFIED BY '$ownpass';"
DB2=" CREATE DATABASE owncloud;"
DB3=" GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost' WITH GRANT OPTION;"
DB="${DB1}${DB2}${DB3}"
mysql -uroot -p$rpassword -e "$DB"
if [[ defined == "1" ]];then
definedport="\nOr you can acces through $ip:$owncloudport"
fi
systemctl restart httpd
dialog --backtitle "ArchLinux Installation" --title "Owncloud Installation" \
--msgbox "Owncloud Instalation is now completed. You can use this settings to connect to the server:\nAddress: $ip/$owncloudname$definedport" 0 0
;;
"Wordpress")
if [[ $LAMP == "0" ]]; then
ip=$(ip a | grep inet | grep -v inet6 | grep -v host | awk -F " " '{print $2}' | awk -F "/" '{print $1}')
pacman -S --noconfirm apache php php-apache mariadb
##MariaDB
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl start mysqld
systemctl enable mysqld
#Ask for the password of the root's database username
rpassword=$(dialog --backtitle "Archlinux Installation" --passwordbox "Enter the root's password for MySQL/MariaDB:" 8 40 2>&1 > /dev/tty)
if [ "$?" = "0" ]
then
/usr/bin/mysqladmin -u root password $rpassword
fi
#Add the main user of mysql
db=$(dialog --backtitle "Archlinux Installation" --title "Mysql user creation" \
--form "\nPlease, enter the mysql user configuration" 25 60 16 \
"Username :" 1 1 "user" 1 25 25 30 \
"Password :" 2 1 "passw0rd" 2 25 25 30 2>&1 > /dev/tty)
dbuser=$(echo "$db" | sed -n 1p)
dbpass=$(echo "$db" | sed -n 2p)
if [ "$?" = "0" ]
then
DB1="CREATE USER '$dbuser'@'localhost' IDENTIFIED BY '$dbpass';"
DB2=" GRANT ALL PRIVILEGES ON *.* TO '$dbuser'@'localhost' WITH GRANT OPTION;"
DB="${DB1}${DB2}"
mysql -uroot -p$rpassword -e "$DB"
userdb="\n\nMySQL User\nUser: $dbuser\nPassword: $dbpass"
fi
dialog --backtitle "ArchLinux Installation" --title "MySQL Installation" \
--msgbox "MySQL Instalation is now completed. You can use this settings to connect to the server:\n\nUsername: root \nPassword: $rpassword$userdb" 0 0
##Apache+PHP5
sed -i 's/LoadModule mpm_event_module modules\x2Fmod_mpm_event.so/LoadModule mpm_prefork_module modules\x2Fmod_mpm_prefork.so/g' /etc/httpd/conf/httpd.conf #Replace the first string with the second one
sed -i '/LoadModule dir_module modules\x2Fmod_dir.so/a LoadModule php5_module modules\x2Flibphp5.so' /etc/httpd/conf/httpd.conf #Append the second string after the first one
sed -i '/Include conf\x2Fextra\x2Fhttpd-default.conf/a \\n\x23PHP5\nInclude conf\x2Fextra\x2Fphp5_module.conf' /etc/httpd/conf/httpd.conf #Append the second string after the first one
systemctl enable httpd
systemctl start httpd
LAMP=1
dialog --backtitle "ArchLinux Installation" --title "Apache Installation" \
--msgbox "Apache Instalation is now completed. You can use this settings to connect to the server:\nIP: $ip" 0 0
fi
pacman -S --noconfirm wordpress
sed -i '/extension=ftp.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=curl.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=gd.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=iconv.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=pdo_mysql.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=mysql.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=openssl.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=sockets.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=xmlrpc.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
sed -i '/extension=pspell.so/s/^;//g' /etc/php/php.ini #Uncomment the line matching that string
printf "Alias /wordpress \x22/usr/share/webapps/wordpress\x22\n<Directory \x22/usr/share/webapps/wordpress\x22>\n\tAllowOverride All\n\tOptions FollowSymlinks\n\tRequire all granted\n\tphp_admin_value open_basedir \x22/srv/:/tmp/:/usr/share/webapps/:/etc/webapps:\x24\x22\n</Directory>" > /etc/httpd/conf/extra/httpd-wordpress.conf
wordpressname=wordpress
echo -e "\nInclude conf/extra/httpd-wordpress.conf\n" >> /etc/httpd/conf/httpd.conf
dialog --backtitle "ArchLinux Installation" --title "Wordpress Instalation" --yesno "Do you want to change the default address for Wordpress?\n(Default http://domain.com/wordpress/)" 8 45
if [[ $? == "0" ]];then
wordpressname=$(dialog --backtitle "ArchLinux Installation" --title "Wordpress Instalation" --inputbox "Enter the address that you want to use\n(Ej: myblog = http://domain.com/myblog)" 9 50 2>&1 > /dev/tty)
sed -i "s/Alias \x2Fwordpress/Alias \x2F$wordpressname/g" /etc/httpd/conf/extra/httpd-wordpress.conf
fi
chown http:http -R /usr/share/webapps/wordpress/
#Enter the database's password
wordpass=$(dialog --backtitle "Archlinux Installation" --passwordbox "Enter WordPress' database password:" 8 40 2>&1 > /dev/tty)
DB1="CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '$wordpass';"
DB2=" CREATE DATABASE wordpress;"
DB3=" GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' WITH GRANT OPTION;"
DB="${DB1}${DB2}${DB3}"
mysql -uroot -p$rpassword -e "$DB"
systemctl restart httpd
dialog --backtitle "ArchLinux Installation" --title "Wordpress Installation" \
--msgbox "Wordpress Instalation is now completed. You can use this settings to connect to the server:\nIP: $ip/$wordpressname" 0 0
;;
"Subsonic")
pacman -S --noconfirm ffmpeg flac lame
sed -i '/%wheel ALL=(ALL) ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
sudo -u $user yaourt -S -A --noconfirm subsonic
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
useradd --system subsonic
gpasswd --add subsonic audio
cd /var/lib/subsonic
chown -R subsonic:subsonic .
test -d transcode || mkdir transcode
chown -R root:root transcode
mkdir /var/lib/subsonic/transcode
cd /var/lib/subsonic/transcode
ln -s "$(which ffmpeg)"
ln -s "$(which flac)"
ln -s "$(which lame)"
dialog --backtitle "ArchLinux Installation" --title "Subsonic Configuration" \
--yesno "Do you want to change the default HTTP port(4040) of Subsonic?" 7 60
response=$?
case $response in
0) port=$(dialog --backtitle "Archlinux Installation" --title "Subsonic Configuration" \
--inputbox "Enter the port that you want to use:" 8 40 2>&1 > /dev/tty)
if [ "$?" = "0" ]
then
sed -i "s/SUBSONIC_PORT=4040/SUBSONIC_PORT=$port/g" /var/lib/subsonic/subsonic.sh
fi;;
1) echo "HTTP port not changed";;
esac
dialog --backtitle "ArchLinux Installation" --title "Subsonic Configuration" \
--yesno "Do you want to add a HTTPS port to Subsonic?" 7 60
response=$?
case $response in
0) port=$(dialog --backtitle "Archlinux Installation" --title "Subsonic Configuration" \
--inputbox "Enter the port that you want to use:" 8 40 2>&1 > /dev/tty)
if [ "$?" = "0" ]
then
sed -i "s/SUBSONIC_HTTPS_PORT=0/SUBSONIC_HTTPS_PORT=$port/g" /var/lib/subsonic/subsonic.sh
fi;;
1) echo "HTTPS port not configured";;
esac
systemctl enable subsonic
systemctl start subsonic
dialog --backtitle "ArchLinux Installation" --title "Subsonic Installation" \
--msgbox "Subsonic Instalation is now completed. You can use this settings to connect to the server:\nIP: $ip:$port\nUser: admin\nPassword: admin" 0 0
;;
"Madsonic")
pacman -S --noconfirm ffmpeg flac lame
sed -i '/%wheel ALL=(ALL) ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
sudo -u $user yaourt -S -A --noconfirm madsonic
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
cd /var/madsonic
test -d transcode || mkdir transcode
chown -R root:root transcode
mkdir /var/madsonic/transcode
cd /var/madsonic/transcode
ln -s "$(which ffmpeg)"
ln -s "$(which flac)"
ln -s "$(which lame)"
dialog --backtitle "ArchLinux Installation" --title "Madsonic Configuration" \
--yesno "Do you want to change the default HTTP port(4040) of Madsonic?" 7 60
response=$?
case $response in
0) port=$(dialog --backtitle "Archlinux Installation" --title "Madsonic Configuration" \
--inputbox "Enter the port that you want to use:" 8 40 2>&1 > /dev/tty)
if [ "$?" = "0" ]
then
sed -i "s/MADSONIC_PORT=4040/MADSONIC_PORT=$port/g" /var/madsonic/madsonic.sh
fi;;
1) echo "HTTP port not changed";;
esac
dialog --backtitle "ArchLinux Installation" --title "Madsonic Configuration" \
--yesno "Do you want to add a HTTPS port to Madsonic?" 7 60
response=$?
case $response in
0) port=$(dialog --backtitle "Archlinux Installation" --title "Madsonic Configuration" \
--inputbox "Enter the port that you want to use:" 8 40 2>&1 > /dev/tty)
if [ "$?" = "0" ]
then
sed -i "s/MADSONIC_HTTPS_PORT=0/MADSONIC_HTTPS_PORT=$port/g" /var/madsonic/madsonic.sh
fi;;
1) echo "HTTPS port not configured";;
esac
systemctl enable madsonic
systemctl start madsonic
dialog --backtitle "ArchLinux Installation" --title "Madsonic Installation" \
--msgbox "Madsonic Instalation is now completed. You can use this settings to connect to the server:\nIP: $ip:$port\nUser: admin\nPassword: admin" 0 0
;;
"GitLab")
ip=$(ip a | grep inet | grep -v inet6 | grep -v host | awk -F " " '{print $2}' | awk -F "/" '{print $1}')
gitport=8080
gitdomain=$ip
if [[ $LAMP != 1 ]];then
pacman -S --noconfirm mariadb
##MariaDB
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl start mysqld
systemctl enable mysqld
#Ask for the password of the root's database username
rpassword=$(dialog --backtitle "Archlinux Installation" --passwordbox "Enter the root's password for MySQL/MariaDB:" 8 40 2>&1 > /dev/tty)
if [ "$?" = "0" ]
then
/usr/bin/mysqladmin -u root password $rpassword
fi
fi
sed -i '/%wheel ALL=(ALL) ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
sudo -u $user yaourt -S -A --noconfirm ruby-2.1
sudo -u $user yaourt -S -A --noconfirm gitlab
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
gitsqlpass=$(dialog --backtitle "Archlinux Installation" --passwordbox "Enter gitlabs's database password:" 0 0 2>&1 > /dev/tty)
gitsqlusernumber=$(cat -n /etc/webapps/gitlab/database.yml | grep "username: gitlab" | awk -F " " '{print $1}' | head -1)
gitsqlusernumber=$[$gitsqlusernumber+1]
sed -i "${gitsqlusernumber}s/.*/ password: $gitsqlpass/g" /etc/webapps/gitlab/database.yml
gitsqlrootnumber=$(cat -n /etc/webapps/gitlab/database.yml | grep "username: root" | awk -F " " '{print $1}' | head -1)
gitsqlrootnumber=$[$gitsqlrootnumber+1]
sed -i "${gitsqlrootnumber}s/.*/ password: $rpassword/g" /etc/webapps/gitlab/database.yml
sed -i 's/listen "127.0.0.1:8080"/listen "*:8080"/g' /etc/webapps/gitlab/unicorn.rb
dialog --backtitle "ArchLinux Installation" --title "GitLab Installation" \
--yesno "Do you want to change the listening port?\nDefault: 8080" 7 45
if [[ $? == 0 ]];then
gitport=$(dialog --backtitle "Archlinux Installation" --inputbox "Enter the port that you want to use:" 0 0 2>&1 > /dev/tty)
sed -i "s/:8080/:$gitport/g" /etc/webapps/gitlab/unicorn.rb
fi
dialog --backtitle "ArchLinux Installation" --title "GitLab Installation" \
--yesno "Do you want to configure a domain?" 7 38
if [[ $? == 0 ]];then
gitdomain=$(dialog --backtitle "Archlinux Installation" --inputbox "Enter the domain that you want to use:" 0 0 2>&1 > /dev/tty)
gitdomainline=$(cat /usr/share/webapps/gitlab/config/gitlab.yml -n | grep "Web server settings" | awk -F " " '{print $1}' | head -1)
gitdomainline=$[$gitdomainline+1]
sed -i "${gitsqlrootnumber}s/.*/ host: $gitdomain/g" /usr/share/webapps/gitlab/config/gitlab.yml
else
gitdomainline=$(cat /usr/share/webapps/gitlab/config/gitlab.yml -n | grep "Web server settings" | awk -F " " '{print $1}' | head -1)
gitdomainline=$[$gitdomainline+1]
sed -i "${gitsqlrootnumber}s/.*/ host: $ip/g" /usr/share/webapps/gitlab/config/gitlab.yml
fi
sed -i "s/port: 80/port: $gitport/g" /etc/webapps/gitlab/gitlab.yml
sed -i "s/:8080\x2F\x22/:$gitport\x2F\x22/g" /etc/webapps/gitlab-shell/config.yml
cd /usr/share/webapps/gitlab ; printf "yes\n$rpassword" | bundle exec rake gitlab:setup RAILS_ENV=production
su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake assets:precompile RAILS_ENV=production"
systemctl start gitlab-sidekiq.service gitlab-unicorn
systemctl enable gitlab-sidekiq.service gitlab-unicorn
dialog --backtitle "ArchLinux Installation" --title "GitLab Installation" \
--msgbox "GitLab Instalation is now completed. You can use this settings to connect to the server:\nIP: $gitdomain\nPort: $gitport\nUser: root\nPassword: 5iveL!fe" 0 0
;;
"Gogs")
sed -i '/%wheel ALL=(ALL) ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
sudo -u $user yaourt -S -A --noconfirm gogs
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
systemctl start gogs
systemctl enable gogs
;;
"NTOP")
pacman -S --noconfirm ntop
ntoppass=$(dialog --backtitle "Archlinux Installation" --passwordbox "Enter NTOP's admin password:" 8 40 2>&1 > /dev/tty)
ntop --set-admin-password=$ntoppass
patterns=$(echo -e "en\nwl")
interfaces=$(ip a | grep -E "$patterns" | grep -v inet | grep -v loop | grep -v link | grep -v DOWN | awk -F " " '{print $2}' | sed 's/://g' | sed 's/$/ net/')
interface=$(dialog --backtitle "ArchLinux Installation" --clear --title "Interface: " \
--menu "In what interface do you want to run NTOP?" 0 0 0 ${interfaces} 2>&1 > /dev/tty)
sed -i "s/-i eth0/-i $interface/g" /lib/systemd/system/ntop.service
ntopport=3000
dialog --backtitle "ArchLinux Installation" --title "NTOP Instalation" --yesno "Do you want to change the default port for NTOP?\n(Default: 3000)" 8 45
if [[ $? == "0" ]];then
ntopport=$(dialog --backtitle "ArchLinux Installation" --title "NTOP Instalation" --inputbox "Enter the port that you want to use: " 8 40 2>&1 > /dev/tty)
sed -i "s/-w 3000/-w $ntopport/g" /lib/systemd/system/ntop.service
fi
systemctl daemon-reload
systemctl enable ntop
systemctl start ntop
dialog --backtitle "ArchLinux Installation" --title "NTOP Installation" \
--msgbox "NTOP Instalation is now completed. You can use this settings to connect to the server:\nIP: $ip:$ntopport\nUser: admin\nPassword: $ntoppass" 0 0
;;
#π
"TightVNC")
sessions=$(ls /usr/share/xsessions | awk -F "." '{print $1" "$2}')
sed -i '/%wheel ALL=(ALL) ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
sudo -u $user yaourt -S -A --noconfirm tightvnc
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
cp /lib/systemd/system/vncserver.service /lib/systemd/system/vncserver@:1.service
sudo -u $user vncpasswd
interface=$(dialog --backtitle "ArchLinux Installation" --clear --title "TightVNC Installation" \
--menu "What desktop would you like to setup the VNC?" 0 0 0 ${sessions} 2>&1 > /dev/tty)
mv /home/$user/.vnc/xstartup /home/$user/.vnc/xstartup.bak
cat /usr/share/xsessions/$interface.desktop | grep Exec | grep -v Try | sed 's/^Exec=//g' > /home/$user/.vnc/xstartup
sed -i "s/User=/User=$user/g" /lib/systemd/system/vncserver@:1.service
systemctl enable vncserver@:1
systemctl start vncserver@:1
dialog --backtitle "ArchLinux Installation" --title "TightVNC Installation" \
--msgbox "TightVNC Instalation is now completed. You can use this settings to connect to the server:\nIP: $ip:5901\nPassword: The one you entered at the VNC configuration" 0 0
;;
"Deluge")
pacman -S --noconfirm deluge python2-pip python2-mako
pip2.7 install service-identity
delugeport=8112
dialog --backtitle "ArchLinux Installation" --title "Deluge Instalation" --yesno "Do you want to change the default port for Deluge?\n(Default: 8112)" 8 45
if [[ $? == "0" ]];then
delugeport=$(dialog --backtitle "ArchLinux Installation" --title "NTOP Instalation" --inputbox "Enter the port that you want to use: " 8 40 2>&1 > /dev/tty)
sed -i "s/8112/$delugeport/g" /srv/deluge/.config/deluge/web.conf
fi
systemctl start deluged
systemctl enable deluged
systemctl start deluge-web
systemctl enable deluge-web
dialog --backtitle "ArchLinux Installation" --title "Deluge Installation" \
--msgbox "Deluge Instalation is now completed. You can use this settings to connect to the server:\nIP: $ip:$delugeport\nPassword: deluge" 0 0
;;
"L2TP")
patterns=$(echo -e "en\nwl")
interfaces=$(ip a | grep -E "$patterns" | grep -v inet | grep -v loop | grep -v link | grep -v DOWN | awk -F " " '{print $2}' | sed 's/://g' | sed 's/$/ net/')
iface=$(dialog --backtitle "ArchLinux Installation" --clear --title "Interface: " \
--menu "In what interface do you want to setup the VPN Server?" 20 30 7 ${interfaces} 2>&1 > /dev/tty)
net=$(ip addr show dev $iface | grep "inet " | awk -F ' ' '{print $4}' | sed 's/255/0/g')
ip=$(ip addr show dev $iface | grep "inet " | awk -F ' ' '{print $2}' | sed 's/\x2F24//g')
gateway=$(ip route show dev $iface | grep default | awk -F " " '{print $3}')
pacman -S --noconfirm xl2tpd ppp lsof python2
sed -i '/%wheel ALL=(ALL) ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
sudo -u $user yaourt -A -S --noconfirm openswan
sed -i '/%wheel ALL=(ALL) NOPASSWD: ALL/s/^/#/g' /etc/sudoers #Comment the line matching that string
sed -i '/%wheel ALL=(ALL) ALL/s/^#//g' /etc/sudoers #Uncomment the line matching that string
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo "net.ipv4.ip_forward = 1" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.accept_redirects = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.send_redirects = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.rp_filter = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.accept_source_route = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.send_redirects = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" | tee -a /etc/sysctl.conf
for vpn in /proc/sys/net/ipv4/conf/*
do
echo 0 > $vpn/accept_redirects
echo 0 > $vpn/send_redirects
done
sysctl -p
printf "\x23\x21/usr/bin/env bash\nfor vpn in /proc/sys/net/ipv4/conf/*; do\n\techo 0 > \x24vpn/accept_redirects;\n\techo 0 > \x24vpn/send_redirects;\ndone\niptables --table nat --append POSTROUTING --jump MASQUERADE\n\nsysctl -p" > /usr/local/bin/vpn-boot.sh
chmod 755 /usr/local/bin/vpn-boot.sh
printf "[Unit]\nDescription=VPN Settings at boot\nAfter=netctl@$iface.service\nBefore=openswan.service xl2tpd.service\n\n[Service]\nExecStart=/usr/local/bin/vpn-boot.sh\n\n[Install]\nWantedBy=multi-user.target\n" > /etc/systemd/system/vpnboot.service
systemctl enable vpnboot.service
#IPSEC Configuration
sed -i "s/\x23 plutoopts=\x22--perpeerlog\x22/plutoopts=\x22--interface=$iface\x22/g" /etc/ipsec.conf
sed -i "s/virtual_private=%v4:10.0.0.0\x2F8,%v4:192.168.0.0\x2F16,%v4:172.16.0.0\x2F12,%v4:25.0.0.0\x2F8,%v6:fd00::\x2F8,%v6:fe80::\x2F10/virtual_private=%v4:10.0.0.0\x2F8,%v4:192.168.0.0\x2F16,%v4:$net\x2F24,%v4:172.16.0.0\x2F12,%v4:25.0.0.0\x2F8,%v6:fd00::\x2F8,%v6:fe80::\x2F10/g" /etc/ipsec.conf
sed -i "s/protostack=auto/protostack=netkey/g" /etc/ipsec.conf
sed -i '/#plutostderrlog=\x2Fdev\x2Fnull/a \\tforce_keepalive=yes\n\tkeep_alive=60\n\t# Send a keep-alive packet every 60 seconds.' /etc/ipsec.conf
printf "\nconn L2TP-PSK-noNAT\n\tauthby=secret\n\t#shared secret. Use rsasig for certificates.\n\n\tpfs=no\n\t#Not enable pfs\n\n\tauto=add\n\n\t#the ipsec tunnel should be started and routes created when the ipsec daemon itself starts.\n\n\tkeyingtries=3\n\t#Only negotiate a conn. 3 times.\n\n\tikelifetime=8h\n\tkeylife=1h\n\n\ttype=transport\n\t#because we use l2tp as tunnel protocol\n\n\tleft=$ip\n\t#fill in server IP above\n\tleftnexthop=$gateway\n\tleftprotoport=17/1701\n\n\tright=\x25any\n\trightprotoport=17/\x25any\n\trightsubnetwithin=0.0.0.0/0\n\n\tdpddelay=10\n\t# Dead Peer Dectection (RFC 3706) keepalives delay\n\tdpdtimeout=20\n\t# length of time (in seconds) we will idle without hearing either an R_U_THERE poll from our peer, or an R_U_THERE_ACK reply.\n\tdpdaction=clear\n\t# When a DPD enabled peer is declared dead, what action should be taken. clear means the eroute and SA with both be cleared.\n" >> /etc/ipsec.conf
echo -e "$ip %any:\t PSK \x22$(openssl rand -hex 30)\x22" > /etc/ipsec.secrets
systemctl start openswan
ipsec verify
systemctl enable openswan
printf "[global]\nipsec saref = yes\nsaref refinfo = 30\nauth file = /etc/ppp/pap-secrets\nlisten-addr = $ip\n\n[lns default]\nip range = 172.16.1.30-172.16.1.100\nlocal ip = 172.16.1.1\nrequire authentication = yes\nppp debug = no\npppoptfile = /etc/ppp/options.xl2tpd\nlength bit = yes" > /etc/xl2tpd/xl2tpd.conf
mkdir /var/run/xl2tpd/
#printf "ms-dns 8.8.8.8\nms-dns 8.8.4.4\nauth\nmtu 1200\nmru 1000\ncrtscts\nhide-password\nmodem\nname l2tpd\nproxyarp\nlcp-echo-interval 30\nlcp-echo-failure 4\nlogin" > /etc/ppp/options.xl2tpd
printf "ipcp-accept-local\nipcp-accept-remote\nms-dns 8.8.8.8\nms-dns 8.8.4.4\nauth\nmtu 1200\nmru 1000\ncrtscts\nhide-password\nmodem\nname l2tpd\nproxyarp\nlcp-echo-interval 30\nlcp-echo-failure 4\nlogin" > /etc/ppp/options.xl2tpd
##PAM Auth
echo -e "\nunix authentication = yes" >> /etc/xl2tpd/xl2tpd.conf
printf "auth\trequired\tpam_nologin.so\nauth\trequired\tpam_unix.so\naccount required\tpam_unix.so\nsession required\tpam_unix.so" > /etc/pam.d/ppp
echo -e "*\tl2tpd\t\x22\x22\t*" >> /etc/ppp/pap-secrets
systemctl restart openswan
systemctl restart xl2tpd
systemctl enable xl2tpd
externalip=$(dig +short myip.opendns.com @resolver1.opendns.com)
dialog --backtitle "ArchLinux Installation" --title "L2TP Installation" \
--msgbox "L2TP + IPSEC + PAM Instalation is now completed. You can use this settings to connect to the server:\nExternal IP: $externalip\nUser: Your system username\nPassword: Your system password according to the user" 0 0
;;
esac
done
fi
#Disable root automatic login tn tty1
rm -R /etc/systemd/system/getty@tty1.service.d
sed -i 's/sh post-install.sh//g' /root/.bashrc
rm /root/.bash_profile
#Delete the scripts and reboot
rm post-install.sh
reboot