DEV Community

Cover image for Tutorial: Alpine Linux en Raspberry Pi 3 con Syncthing, OpenVPN y Docker
Ivaj O'Franc
Ivaj O'Franc

Posted on • Edited on • Originally published at dev.to

Tutorial: Alpine Linux en Raspberry Pi 3 con Syncthing, OpenVPN y Docker

id: 2754299 title: "Tutorial: Alpine Linux en Raspberry Pi 3 con Syncthing, OpenVPN y Docker" published: true tags: ["raspberrypi", "alpinelinux", "docker", "syncthing"] series: Lo Arreglé y No Sé Cómo description: "Instalación avanzada de Alpine Linux en una Raspberry Pi 3 con migración a disco, configuración de Syncthing, OpenVPN, Docker y resolución de errores comunes." canonical_url: "https://dev.to/ivajofranc/tutorial-alpine-linux-en-raspberry-pi-3-con-syncthing-openvpn-y-docker-3h61" cover_image: "https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F670e8xzuffugf407bj2l.png" 
Enter fullscreen mode Exit fullscreen mode

Tutorial: Alpine Linux en Raspberry Pi 3 con Syncthing, OpenVPN y Docker

🇬🇧 Also read this post in English

📝 Tutorial Detallado de Instalación y Configuración en Alpine Linux (Raspberry Pi 3)

🧑 Usuario

Usuario: test

🔧 Objetivo General

Este tutorial tiene como objetivo guiarte paso a paso para:

  • Instalar Alpine Linux en una Raspberry Pi 3 (v1).
  • Migrar el sistema del almacenamiento SD a un disco duro externo.
  • Configurar servicios como Syncthing, OpenVPN, Docker, y herramientas de sistema.
  • Resolver errores comunes (permisos, arquitectura ARM, inotify, problemas de paquetes apk).

🟢 PASO 1: Instalación de Alpine en SD (modo sys)

  1. Descarga la imagen oficial de Alpine aarch64 desde alpinelinux.org.
  2. Graba la imagen en la SD (ejemplo usando dd en Linux):
sudo dd if=alpine-rpi-*.img of=/dev/sdc bs=4M status=progress sync 
Enter fullscreen mode Exit fullscreen mode
  1. Conecta la SD a la RPi y ejecuta el instalador:
setup-alpine 
Enter fullscreen mode Exit fullscreen mode

Asegúrate de seleccionar diskless mode sys.

  1. Comprueba que Alpine arranca en modo persistente:
mount | grep 'on /' # /dev/sdb2 on / type ext4 (rw,relatime) 
Enter fullscreen mode Exit fullscreen mode

🟢 PASO 2: Clonar el sistema al Disco Duro

  1. Monta el disco duro externo (ej: /dev/sdb2) en /mnt/usbroot.

  2. Copia el contenido de la SD al disco duro:

rsync -aAXv /mnt/sd/ /mnt/usbroot/ 
Enter fullscreen mode Exit fullscreen mode
  1. Edita /boot/cmdline.txt y ajusta el UUID del rootfs:
root=UUID=11112222-3333-4444-aaaa-bbbbccccdddd modules=sd-mod,usb-storage,ext4 rootfstype=ext4 
Enter fullscreen mode Exit fullscreen mode
  1. Edita /mnt/usbroot/etc/fstab para reflejar el nuevo UUID.

  2. Retira la SD (deja solo el boot) y arranca desde el disco.


🟢 PASO 3: Instalación manual de Syncthing

🔄 Descargar e instalar la última versión

wget https://github.com/syncthing/syncthing/releases/download/v1.27.8/syncthing-linux-arm64-v1.27.8.tar.gz tar -xzf syncthing-linux-arm64-v1.27.8.tar.gz sudo mv syncthing /usr/bin/ sudo chmod +x /usr/bin/syncthing 
Enter fullscreen mode Exit fullscreen mode

📆 Crear servicio OpenRC para Syncthing

sudo vi /etc/init.d/syncthing.test 
Enter fullscreen mode Exit fullscreen mode

Contenido del script:

#!/sbin/openrc-run name="Syncthing" description="Syncthing service" command="/usr/bin/syncthing" command_args="--no-browser --gui-address=0.0.0.0:8384" command_user="test" depend() { need net } 
Enter fullscreen mode Exit fullscreen mode

Activar el servicio:

sudo chmod +x /etc/init.d/syncthing.test sudo rc-update add syncthing.test default sudo rc-service syncthing.test start 
Enter fullscreen mode Exit fullscreen mode

🟢 PASO 4: Aumentar inotify watches

sudo sysctl fs.inotify.max_user_watches=65536 echo "fs.inotify.max_user_watches=65536" | sudo tee -a /etc/sysctl.conf sudo sysctl -p 
Enter fullscreen mode Exit fullscreen mode

🟢 PASO 5: Configurar OpenVPN Cliente

  1. Instala OpenVPN:
sudo apk add openvpn openrc 
Enter fullscreen mode Exit fullscreen mode
  1. Copia el archivo .ovpn como /etc/openvpn/client.conf.

  2. Elimina o comenta la línea register-dns si existe.

  3. Crea /dev/net/tun si no existe:

sudo mkdir -p /dev/net sudo mknod /dev/net/tun c 10 200 sudo chmod 600 /dev/net/tun 
Enter fullscreen mode Exit fullscreen mode
  1. Arranca OpenVPN:
sudo rc-service openvpn start 
Enter fullscreen mode Exit fullscreen mode

🟢 PASO 6: Instalación de Docker & Docker Compose

sudo apk add docker docker-cli containerd docker-cli-compose sudo rc-update add docker default sudo rc-service docker start 
Enter fullscreen mode Exit fullscreen mode

Verifica la instalación:

docker version docker compose version 
Enter fullscreen mode Exit fullscreen mode

🔴 Problemas encontrados y soluciones

Syncthing auto-update (permission denied)

  • Causa: Syncthing intenta autoupdate en /usr/bin/ sin permisos.
  • Solución: Actualizar manualmente desde GitHub como en PASO 3.

Problemas apk con Syncthing y Neofetch

  • Syncthing: No funcionaba por repos incompletos ➔ descarga manual.
  • Neofetch: Instalado clonado desde GitHub.

vcgencmd no disponible

  • Causa: Faltan headers Linux.
  • Solución alternativa: Scripts desde /sys/class/thermal/.

u2vpodcast Docker image (amd64 en ARM)

  • build-arm64.sh generaba tags inválidos.

Correcciones:

docker buildx build --platform linux/arm64 -t atareao/u2vpodcast:arm64 . 
Enter fullscreen mode Exit fullscreen mode

📚 Enlaces Útiles


🧹 Consideraciones Finales

  • Automatizar la actualización de Syncthing mediante script root.
  • Buscar o construir imagen ARM64 optimizada de u2vpodcast.
  • Sustituir vcgencmd por lecturas desde /sys/class/thermal/.
  • Crear un script watchdog para OpenVPN.

Top comments (0)