Author SHA1 Message Date
ChasquiLabo 5da579e669 Permitir borrar particiones existentes con confirmación 2026-10-06 17:21:02 -06:00
fauno 85271bdc7c fix: recibir la dirección ip remota desde el proxy 2026-09-29 12:42:11 -03:00
fauno ea63f99d88 feat: preferir overlay2 2026-08-27 10:53:47 -03:00
fauno e3e20ab1dd fix: /usr/sbin/tinc no existe 2026-07-29 17:13:15 -03:00
fauno f4e8c6ff8b feat: usar proveedores alternativos de dns
cuando la red local no provee dns
2026-06-18 12:29:49 -03:00
fauno 7dbee24ff1 fix: avisar cuando el hostname contenga guiones 2026-06-18 10:25:48 -03:00
3 changed files with 93 additions and 53 deletions
+92 -52
View File
@@ -9,9 +9,16 @@ if ! test $UID -eq 0 ; then
exit 1
fi
hostname="`echo $HOSTNAME | tr -d "-" | tr -d "_"`"
dir="`realpath $0 | xargs dirname`"
authorized_keys=/home/$SUDO_USER/.ssh/authorized_keys
if test "$hostname" != "$HOSTNAME" ; then
not_ok "El nombre del servidor no pude contener _ ni -, por favor cambialo con:"
not_ok "sudo hostnamectl hostname $hostname"
exit 1
fi
if ! test -f $authorized_keys; then
not_ok "Primero usa ssh-copy-id desde tu computadora para copiar llaves SSH!"
exit 1
@@ -22,19 +29,52 @@ if test `cat $authorized_keys | wc -l` -eq 0; then
exit 1
fi
#if test -z "$1"; then
# not_ok "El primer parámetro tiene que ser un disco completo sin particiones"
# exit 1
#fi
if test -z "$1"; then
not_ok "El primer parámetro tiene que ser un disco completo sin particiones"
exit 1
fi
#disk=$1
if ! grep -q "^FallbackDNS=9.9.9.9" /etc/systemd/resolved.conf; then
ok "Cambiando el proveedor de DNS"
#for part in ${disk}?; do
# if test -b "$part"; then
# not_ok "El disco ${disk} contiene particiones, la instalación destruirá datos"
# exit 1
# fi
#done
echo "[Resolve]" >/etc/systemd/resolved.conf
echo "FallbackDNS=9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net" >>/etc/systemd/resolved.conf
systemctl restart systemd-resolved
fi
disk=$1
# Si el disco contiene particiones, ofrecer borrarlas
if lsblk -nr -o TYPE "$disk" | grep -q '^part$'; then
not_ok "El disco ${disk} contiene particiones, la instalación destruirá datos"
echo
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS "$disk"
echo
read -r -p "¿Quieres borrar todas las particiones de ${disk}? Escribe SI para continuar: " respuesta
if [ "$respuesta" != "SI" ]; then
not_ok "Operación cancelada"
exit 1
fi
ok "Preparando ${disk} para ser borrado"
sync
swapoff "$disk"* 2>/dev/null || true
lsblk -nrpo NAME,MOUNTPOINT "$disk" | awk '$2 != "" {print $1}' | while read -r part; do
umount "$part" || true
done
ok "Borrando particiones existentes de ${disk}"
wipefs --all --force "$disk"
blockdev --rereadpt "$disk" 2>/dev/null || true
fi
apt update
apt install -y dropbear-initramfs busybox-initramfs smartmontools git rsync make tinc dialog locales bash-completion gnutls-bin nano
@@ -73,58 +113,58 @@ rm -f $node_dir/hosts/abyayala*
NETWORK=comun ./rap add-host $HOSTNAME abyayala
NETWORK=comun ./rap install $HOSTNAME
#if ! test -b /dev/mapper/dm_crypt-1 ; then
# ok "Cifrando el disco, usa la misma contraseña de cifrado que usaste durante la instalación"
# cryptsetup luksFormat $disk
#fi
if ! test -b /dev/mapper/dm_crypt-1 ; then
ok "Cifrando el disco, usa la misma contraseña de cifrado que usaste durante la instalación"
cryptsetup luksFormat $disk
fi
#if ! test -b /dev/mapper/dm_crypt-1 ; then
# ok "Abriendo el disco cifrado"
# cryptsetup open $disk dm_crypt-1
#fi
if ! test -b /dev/mapper/dm_crypt-1 ; then
ok "Abriendo el disco cifrado"
cryptsetup open $disk dm_crypt-1
fi
key_file=/etc/dm_crypt-1.key
#if ! test -f "$key_file" ; then
# ok "Creando archivo de contraseña"
# dd bs=512 count=4 if=/dev/random iflag=fullblock | install -m 0600 /dev/stdin "$key_file"
if ! test -f "$key_file" ; then
ok "Creando archivo de contraseña"
dd bs=512 count=4 if=/dev/random iflag=fullblock | install -m 0600 /dev/stdin "$key_file"
# ok "Asignando archivo de contraseña"
# cryptsetup luksAddKey $disk /etc/dm_crypt-1.key
#fi
ok "Asignando archivo de contraseña"
cryptsetup luksAddKey $disk /etc/dm_crypt-1.key
fi
#if ! grep -q dm_crypt-1 /etc/crypttab ; then
# uuid="`blkid $disk -o value -p | head -n2 | tail -n 1`"
if ! grep -q dm_crypt-1 /etc/crypttab ; then
uuid="`blkid $disk -o value -p | head -n2 | tail -n 1`"
# ok "Agregando $uuid a /etc/crypttab"
# echo "dm_crypt-1 UUID=$uuid /etc/dm_crypt-1.key luks" >> /etc/crypttab
#fi
ok "Agregando $uuid a /etc/crypttab"
echo "dm_crypt-1 UUID=$uuid /etc/dm_crypt-1.key luks" >> /etc/crypttab
fi
if ! test -d /var/lib/docker; then
ok "Creando directorio de datos de Docker"
mkdir -p /var/lib/docker
fi
#if ! pvdisplay /dev/mapper/dm_crypt-1 &>/dev/null; then
# ok "Creando el PV de LVM para el disco de datos"
# pvcreate /dev/mapper/dm_crypt-1
#fi
if ! pvdisplay /dev/mapper/dm_crypt-1 &>/dev/null; then
ok "Creando el PV de LVM para el disco de datos"
pvcreate /dev/mapper/dm_crypt-1
fi
#if ! vgdisplay data-vg &>/dev/null ; then
# ok "Creando VG de LVM para el disco de datos"
# vgcreate data-vg /dev/mapper/dm_crypt-1
#fi
if ! vgdisplay data-vg &>/dev/null ; then
ok "Creando VG de LVM para el disco de datos"
vgcreate data-vg /dev/mapper/dm_crypt-1
fi
#if ! lvdisplay /dev/data-vg/data-lv &>/dev/null ; then
# ok "Creando LV de LVM para el disco de datos"
# lvcreate -l 100%FREE data-vg -n data-lv
# mkfs.xfs /dev/data-vg/data-lv
#fi
if ! lvdisplay /dev/data-vg/data-lv &>/dev/null ; then
ok "Creando LV de LVM para el disco de datos"
lvcreate -l 100%FREE data-vg -n data-lv
mkfs.xfs /dev/data-vg/data-lv
fi
#if ! grep -q /var/lib/docker /etc/fstab ; then
# ok "Agregando directorio de datos de Docker a fstab"
# echo "/dev/data-vg/data-lv /var/lib/docker xfs defaults 0 1" >> /etc/fstab
#fi
if ! grep -q /var/lib/docker /etc/fstab ; then
ok "Agregando directorio de datos de Docker a fstab"
echo "/dev/data-vg/data-lv /var/lib/docker xfs defaults 0 1" >> /etc/fstab
fi
if ! grep -q IP=dhcp /etc/initramfs-tools/initramfs.conf; then
ok "Configurando DHCP durante el inicio"
@@ -160,10 +200,10 @@ rsync -av --chown 0:0 $dir/initramfs-tools/ /etc/initramfs-tools/
ok "Generando initramfs"
update-initramfs -u
#if ! mount | grep -q /var/lib/docker ; then
# ok "Montando almacenamiento docker"
# mount /var/lib/docker
#fi
if ! mount | grep -q /var/lib/docker ; then
ok "Montando almacenamiento docker"
mount /var/lib/docker
fi
ok "Configurando el idioma"
localectl set-locale LANG=es_AR.UTF-8
@@ -189,7 +229,7 @@ fi
if ! grep -q https://hormuz.respaldos.abyaya.la /etc/docker/daemon.json ; then
ok "Configurando Docker"
echo '{"registry-mirrors":["https://hormuz.respaldos.abyaya.la"]}' >/etc/docker/daemon.json
echo '{"storage-driver":"overlay2","registry-mirrors":["https://hormuz.respaldos.abyaya.la"]}' >/etc/docker/daemon.json
systemctl restart docker
fi
-1
View File
@@ -11,7 +11,6 @@ esac
. /usr/share/initramfs-tools/hook-functions
copy_exec /usr/sbin/tincd /usr/sbin/
copy_exec /usr/sbin/tinc /usr/sbin/
copy_exec /usr/sbin/ip /usr/sbin/
rm "$DESTDIR/etc/dhcpcd.conf"
+1
View File
@@ -34,6 +34,7 @@ sed -re "s/^#(WILDCARDS_ENABLED=1)$/\1/" \
-e "s/^#(SECRET_WILDCARD_CERT_VERSION=v1)$/\1/" \
-e "s/^#(SECRET_WILDCARD_KEY_VERSION=v1)$/\1/" \
-e "s/^#(COMPOSE_FILE=\".COMPOSE_FILE:compose.wildcard.yml\")$/\1/" \
-e "s/^#(TRUSTED_IPS=).*/\1\"['10.13.12.1']\"/" \
-i ~/.abra/servers/default/$traefik.env
ok "Generando e instalando certificados"