-
Notifications
You must be signed in to change notification settings - Fork 4
/
main-vps.sh
executable file
·96 lines (78 loc) · 3.02 KB
/
main-vps.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
#!/usr/bin/env bash
# -*- ENCODING: UTF-8 -*-
##
## @author Raúl Caro Pastorino
## @copyright Copyright © 2017 Raúl Caro Pastorino
## @license https://wwww.gnu.org/licenses/gpl.txt
## @email [email protected]
## @web https://raupulus.dev
## @gitlab https://gitlab.com/raupulus
## @github https://github.com/raupulus
## @twitter https://twitter.com/raupulus
##
## Applied Style Guide:
## @style https://gitlab.com/raupulus/bash-style-guide
############################
## INSTRUCTIONS ##
############################
## Prepara un VPS recién creado antes de ejecutar el script principal.
## Este script debe ejecutarse como root.
## Importo variables globales para evitar conflictos de configuración sin reboot
if [[ -f '/etc/environment' ]]; then
source '/etc/environment'
fi
DEBUG='false' ## Establece si está el script en modo depuración
WORKSCRIPT=$PWD ## Directorio principal del script
## Importo variables locales si existieran, sobreescriben a las globales
if [[ -a "$WORKSCRIPT/.env" ]]; then
source "$WORKSCRIPT/.env"
fi
###########################
## FUNCIONES ##
###########################
if [[ $USER != 'root' ]]; then
echo 'Este script tiene que ser iniciado por root'
exit 1
fi
if [[ ! -f '/usr/bin/git' ]]; then
echo 'Se necesita tener instalado "git"'
echo 'Prueba con tu gestor de paquetes, por ejemplo: apt install git'
exit 1
fi
if [[ ! -f '/usr/bin/wget' ]]; then
echo 'Se necesita tener instalado "wget"'
echo 'Prueba con tu gestor de paquetes, por ejemplo: apt install wget'
exit 1
fi
read -p " Nombre del usuario principal → " username
#TODO → Asegurar que no pasa en blanco, comprobar mejor esta parte y volver a pedir
if [[ "$username" = '' ]] && [[ "$username" = ' ' ]]; then
username='admin'
fi
adduser $username
gpasswd -a $username sudo
gpasswd -a $username crontab
gpasswd -a $username $username
gpasswd -a $username go
gpasswd -a $username www-data
if [[ ! -d "/home/${username}/debian-developer-conf" ]]; then
git clone https://gitlab.com/raupulus/debian-developer-conf.git \
"/home/${username}/debian-developer-conf"
fi
chown "$username:$username" -R "/home/$username/debian-developer-conf"
chmod 755 -R "/home/${username}/debian-developer-conf"
cd "/home/$username/debian-developer-conf" || exit
## TODO → Con el "all" ya es suficiente, pero es necesario comprobar que exista
## la línea ya que al volver a ejecutar script o en algunos servidores ya se
## encuentra y produce problemas después con firewalld u otros cortafuegos.
# Desactivar ipv6 por completo
echo 'net.ipv6.conf.all.disable_ipv6=1' >> '/etc/sysctl.conf'
echo 'net.ipv6.conf.default.disable_ipv6=1' >> '/etc/sysctl.conf'
echo 'net.ipv6.conf.lo.disable_ipv6=1' >> '/etc/sysctl.conf'
echo 'net.ipv6.conf.eth0.disable_ipv6=1' >> '/etc/sysctl.conf'
sysctl -p
# Desactivar ipv6 temporalmente en el momento
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1
su $username ./main.sh
exit 0