Apuntes de Kirby
  • 👀whoami
  • 🦉Redes
    • Introducción Redes
      • Organizaciones
      • Historia
      • Puntos de conexión
      • Métodos de acceso a la red
    • Clasificación de las redes
    • Topología de las red
    • Direccionamiento IP
      • IPv4
        • Subredes IPv4
        • Superredes IPv4
        • VLSM
      • IPv6
      • MAC
      • NAT
    • Enrutamiento estático
    • Enrutamiento dinámico
      • RIPv1 & RIPv2
      • Tablas de enrutamiento
      • 🚧Redes conmutadas
    • CML
      • 🚧1er CML lab
    • CISCO
      • ¿Qué son las VLAN?
        • Ejemplo 1 de VLAN
        • Ejemplo 2 de VLAN
      • Acceso y password
      • NAT / PAT
    • Firewalls
      • Tipos de firewalls
      • ZPF
        • Funcionamiento
        • Configurando un ZPF
      • Sophos Firewall XG
        • Sophos home
        • Aprendiendo a usar Sophos
      • pfSense
        • Instalando pfSense
        • OpenVPN en pfSense
        • Port Forward
        • Alias
    • Proxy
      • Squid en pfSense
        • Squid Proxy Server
        • SquidGuard Proxy
      • Proxy reverse Nginx
    • 🚧Suricata
  • 🐝Servicios
    • Servidores Web
      • Nginx
        • NGINX, hosts virtuales
        • Hosts virtuales basados en dominio
        • PHP-FPM
        • Nginx: PHP y MySQL
          • MySQLi - PHP
        • En Alpine linux
        • 🚧Proxy
    • Servidores de correo
      • Seguridad en el correo
      • Postfix
      • hMailServer
      • Clientes de correo
        • Mailutils
        • Mutt
    • Servidores de FTP
      • FileZilla
      • VSFTPD
      • FTP vía IIS
    • Servidores DNS
      • DNS - Windows Server 2016
      • DNS - Ubuntu Server 22.04
      • Systemd
    • Servidores DHCP
      • DHCP-Windows Server 2016
      • DHCP-Ubuntu Server 22.04
    • Servidores MySQL
    • 🚧Mensajería instantánea
      • Ejabberd
    • 🚧Imágenes - Vídeos
      • FFMPEG + YT-DLP
      • Plex
      • Jellyfin
      • Plesk
      • RTMP
      • SRT
    • Webmin + Virtualmin
  • NextCloud
  • 🔑Seguridad
    • NAS
      • Instalación Synology NAS en VirtualBox
        • Creación de volúmenes y su uso
        • Actualización Synology NAS
        • Creación de usuarios y carpetas compartidas
        • Funciones del panel de control
          • Acceso por SSH
          • Configuración de los servicios de archivos
          • Configuración de red
          • Copias de seguridad (restauración)
          • Seguridad
          • Personalizar páginas de inicio
          • Servicio de notificaciones
        • Centro de paquetes Synology
          • Servidores multimedia
          • Paquetes de utilidades
          • Cloud Sync
          • Hyper Backup
          • Synology Office
      • Truenas
        • Rsync en Truenas
      • OpenmediaVault
    • Backups
      • Rsync
        • Ejemplo de rsync
    • ¿Qué son las ACL?
    • SOPS/AGE
    • RAID
      • mdadm
  • 🐳Virtualización
    • Proxmox
      • Instalar en VMWare
      • Instalar en VirtualBox
      • Entorno Proxmox
      • Almacenamiento local
      • Añadir discos
      • Clonar
      • Qemu agent
      • Linux container - LXC
      • Clúster
      • Red Interna
      • 🚧Proxmox Backup
      • 🚧Otras consideraciones
    • Alpine Linux
    • Contenedores
      • Docker
        • YAML
        • Instalando Docker
        • Portainer
          • Instalando Portainer
          • Dentro de Portainer
        • Docker volumen
        • Docker compose
          • Docker: PHP y MySQL
          • Importar sitio web en Docker
          • Instalando Wordpress
      • Pi-hole
        • Instalando Pi-hole en Docker
        • Instalando Pi-hole en Debian
        • RDP
          • RDP - Docker
  • 🐞Misceláneas
    • Datos - codificación
    • IPTables
    • Túnel con Cloudflare
    • Servidor de video
    • Comandos de Linux
    • Anaconda & Spyder
    • CGI - NGINX
    • Arduino
      • Capítulo 0 Blink
      • Capítulo 1 Led
      • Capítulo 2 Botton & LED
  • ⁉️Interesante
    • Curioso
    • Ideas
Powered by GitBook
On this page
  • Por qué Alpine
  • Algunos comandos básicos
  • Instalando Alpine Linux
  • Instalando Docker y Portainer
  • Instalando Pi-hole
  • Accediendo a Pi-Hole
  • Configurando Portainer
  • Algunos aspectos a considerar
  • Links

Was this helpful?

Edit on GitHub
  1. Virtualización

Alpine Linux

N-Tech-Admin Group

PreviousOtras consideracionesNextContenedores

Last updated 1 year ago

Was this helpful?

En este apartado vamos a utilizar una VM con Alpine Linux por su facilidad de uso y por ser una distribución ultra ligera para instalar Docker, Portainer para facilitar el trabajo con Docker y Pi-Hole.

Por qué Alpine

Una versión no GNU que puede llegar a ocupar tan solo 8MB...

Se trata de:

  • una distribución Linux ultraligera

  • orientada a la seguridad y cuyo software se compila usando Musl en lugar de la biblioteca C de GNU (Libc)

  • sustituye las herramientas GNU por Busybox, un único ejecutable capaz de emular el funcionamiento de todas ellas.

  • Ha sido diseñada principalmente para Routers x86, Firewalls, VPN, VoIP y servidores.

  • Se utiliza en VM o Docker, para ejecutar entornos de desarrollo y ejecución de aplicaciones, portables y aislados del sistema principal

  • También es posible instalar las herramientas GNU, así como softwares como KDE, GNOME

  • Para administrar el software Alpine recurre a su propio gestor de paquetes: APK.

Algunos comandos básicos

Para actualizar las listas de paquetes:

apk update
apk upgrade

Para desinstalar un paquete:

apk del name_package

Para pedir ayuda:

apk --help

Para ver todos los paquetes:

apk search -v

Para buscar un paquete en específico:

apk search -v nodejs
apk search -v | grep -i nodejs

Para instalar paquetes:

apk add package

Para enumerar los paquetes instalados:

apk info

Para verificar si un paquete específico está instalado:

apk info package-name

Reiniciar el sistema, esto es, el equivalente a shutdown now -r sería:

reboot

Apagar el sistema, el equivalente a: shutdown now -P:

poweroff

Renovar los parámetros de red:

service networking restart

Instalando Alpine Linux

A la hora de instalar la MV tenemos que tener en cuenta las necesidades específicas. Por ello, siempre es conveniente que detallemos los requisitos de la misma.

Requisitos técnicos

RAM: 4GB

Tamaño disco: 20GB

Sistema Operativo: Linux / Linux 2.6 / 3.x / 4.x (64-bit)

Alpine System: alpine-virt-3.16.2-x86_64.iso

Iniciamos la MV y lo primero que nos encontramos es que nos pide el usuario del sistema, sin haber hecho la instalación. Para acceder, basta con escribir root.

Leyendo la información que nos brinda en pantalla vemos que nos dice que para instalar el sistema escribamos:

setup-alpine

Dado que el sistema está en inglés, tengamos en cuenta la posición de los caracteres en el teclado. No obstante, lo primero que nos solicita es nuestro idioma y distribución. Escribimos es las dos veces que nos lo pide.

Podemos dejar los valores por defecto:

  • localhost

  • eth0

  • dhcp

  • configuración manual de la red: N

  • el password que deseemos

  • podemos ignorar la zona horaria

  • proxy no tenemos

  • NTP client: chrony (por defecto)

  • mirror server: seleccionemos la opción por defecto: 1

  • user: lo dejamos por defecto

  • ssh: openssh para que nos lo instale

  • permitir que el root se conecte por ssh (no me gusta por seguridad pero ...)

  • disco a utilizar: sda, tenemos un solo disco. En caso de duda podemos teclear ? y nos dice las opciones.

  • configuración base del sistema para el arranque en uno de los tres modos de disco diferentes de Alpine Linux: 'sin disco', 'datos' o 'sys'. Seleccionamos sys.

Una vez hecho esto, comienza la instalación del sistema que dura segundos y nos pedirá reiniciar el sistema. Mejor lo apagamos para quitar la ISO y no vuelva al punto de partida de la instalación.

Para poder utilizar todos los paquetes disponibles para Alpine debemos hacer una modificación en el archivo de los repositorios, el equivalente al sources.list de Ubuntu que contiene los repositorios del tipo Main.

Vamos al fichero: /etc/apk/repositories y lo editamos pero mejor que instalemos previamente el nano, así que lo instalamos:

apk add nano

Abrimos el archivo de los repositorios y eliminamos el # de las líneas que vienen comentadas. Éstas son: main, community y testing.

nano /etc/apk/repositories

Actualizamos los paquetes:

apk update
apk upgrade

Instalando Docker y Portainer

Docker

Comenzamos por instalar Docker y para ello basta con:

apk add docker
apk add docker-compose

Para iniciar el servicio de Docker daemon al inicio:

rc-update add docker boot 
service docker start

Para comprobar el estado del servicio:

service docker status

En el caso de que el servicio estuviera apagado, lo iniciamos y comprobamos nuevamente:

service docker start
service docker status

Portainer

Ahora vamos con la instalación de Portainer. Para ello toma nota del sitio siguiente:

Creamos el volumen que Portainer Server usará para almacenar su base de datos:

docker volume create portainer_data

Si quieres verificar el volume recién creado puedes escribir:

docker volume inspect portainer_data

Y verás algo como lo siguiente:

Ahora, descargamos e instalamos el contenedor de Portainer Server:

docker run -d -p 8000:8000 -p 9443:9443 --name portainer \
--restart=always -v \
/var/run/docker.sock:/var/run/docker.sock -v\
portainer_data:/data \
portainer/portainer-ce:2.9.3

Realmente, es toda una línea:

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Al ejecutar esta línea de comando nos dice que no puede encontrar la imagen de Portainer en el sistema, con lo cual la descarga la última imagen existente de portainer/portainer -ce.

De forma predeterminada, Portainer genera y utiliza un certificado SSL auto-firmado para asegurar el puerto 9443. Alternativamente, puede proporcionar su propio certificado SSL durante la instalación o mediante la interfaz de usuario de Portainer, una vez que se completa la instalación.

El servidor de Portainer ha sido instalado. Puedes comprobar si el contenedor del servidor de Portainer se ha iniciado ejecutando docker ps:

docker ps

Si necesitas reiniciar el servicio de Portainer haríamos:

docker restart portainer

Nos vamos al navegador y escribimos la IP de la VM y el puerto de acceso:

https://192.168.1.79:9443

Una vez dentro, ya podemos utilizar el Portainer.

Instalando Pi-hole

Busca la imagen de Pi-Hole en local y al no encontrarla la descarga del sitio oficial de Pi-Hole de Docker.

docker search pihole/pihole:latest
docker pull pihole/pihole:latest 

Para ver las imágenes descargadas ejecuta:

docker images

Para ejecutar el contenedor de pihole:

docker run -it pihole/pihole:latest

Realmente ejecuta el comando en un nuevo contenedor. Este comando run primero crea una capa de contenedor en la que se puede escribir sobre la imagen especificada y luego la inicia con el comando especificado.

Este ejemplo, ejecuta un contenedor usando la imagen más reciente de pihole. La combinación de las opciones -i y -t brindan acceso interactivo del Shell al contenedor.

Nota: Pudiera ser que no funcionara a la primera. Entonces quizá sea mejor utilizar un docker-compose.yml con el siguiente contenido:

version: "3"

# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    # For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp" # Only required if you are using Pi-hole as your DHCP server
      - "80:80/tcp"
    environment:
      TZ: 'Europe/Berlin'
      WEBPASSWORD: elquesea
    # Volumes store your data between container upgrades
    volumes:
      - './etc-pihole:/etc/pihole'
      - './etc-dnsmasq.d:/etc/dnsmasq.d'
    #   https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
    cap_add:
      - NET_ADMIN # Required if you are using Pi-hole as your DHCP server, else not needed
    restart: unless-stopped

Accediendo a Pi-Hole

Para acceder a nuestro contenedor de pihole basta usar el navegador, escribiendo la IP de nuestra MV. Esto es: http://192.168.1.79

Configurando Portainer

Portainer es un conjunto de herramientas de administración de código abierto que nos permite construir, administrar y mantener entornos Docker de un modo más cómodo.

Nos vamos a https://192.168.1.79:9443 y seleccionamos el modo de environment:

E instalamos Docker Standalone

Podemos visualizar nuestra lista de contenedores creados. En este caso, pihole y portainer:

Si clicas en uno de los contenedores se desplegarán mas opciones específicas:

Algunos aspectos a considerar

Network Time Protocol (NTP) es un protocolo cliente-servidor. Un dispositivo cliente puede solicitar periódicamente información de tiempo de un servidor NTP y éste responde a las solicitudes con información de tiempo que el cliente puede usar para fines de sincronización.

La mayoría de los SO vienen con herramientas integradas para la sincronización automática, sin embargo, existen herramientas de terceros que brindan funciones mejoradas y mejor sincronización.

Links

Alpine Linux

Docker

Portainer

Pi-hole

Misceláneas

o h

🐳
😄
ttp://192.168.1.79/admin/index.php
https://alpinelinux.org/downloads/
https://wiki.alpinelinux.org/wiki/Installation
https://wiki.alpinelinux.org/wiki/Docker
https://docs.linuxserver.io/images/docker-swag#site-config-and-reverse-proxy
https://docs.portainer.io
https://github.com/pi-hole/docker-pi-hole
https://www.linuxserver.io
https://timetoolsltd.com/ntp/ntp-client/
https://www.netmentor.es/entrada/introduccion-portainer-contenedores
Install Portainer with Docker on LinuxPortainer Documentation
Inspeccionando un volumen de docker
Instalando Portainer en Docker
Comprobando el servidor de Portainer
Accediendo al servicio de Portainer en la VM de Alpine
Accediendo a Portainer, recién instalado
Container
Logo