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" 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)
- Descarga la imagen oficial de Alpine aarch64 desde alpinelinux.org.
- Graba la imagen en la SD (ejemplo usando
dden Linux):
sudo dd if=alpine-rpi-*.img of=/dev/sdc bs=4M status=progress sync - Conecta la SD a la RPi y ejecuta el instalador:
setup-alpine Asegúrate de seleccionar diskless mode sys.
- Comprueba que Alpine arranca en modo persistente:
mount | grep 'on /' # /dev/sdb2 on / type ext4 (rw,relatime) 🟢 PASO 2: Clonar el sistema al Disco Duro
Monta el disco duro externo (ej:
/dev/sdb2) en/mnt/usbroot.Copia el contenido de la SD al disco duro:
rsync -aAXv /mnt/sd/ /mnt/usbroot/ - Edita
/boot/cmdline.txty ajusta el UUID del rootfs:
root=UUID=11112222-3333-4444-aaaa-bbbbccccdddd modules=sd-mod,usb-storage,ext4 rootfstype=ext4 Edita
/mnt/usbroot/etc/fstabpara reflejar el nuevo UUID.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 📆 Crear servicio OpenRC para Syncthing
sudo vi /etc/init.d/syncthing.test 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 } Activar el servicio:
sudo chmod +x /etc/init.d/syncthing.test sudo rc-update add syncthing.test default sudo rc-service syncthing.test start 🟢 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 🟢 PASO 5: Configurar OpenVPN Cliente
- Instala OpenVPN:
sudo apk add openvpn openrc Copia el archivo
.ovpncomo/etc/openvpn/client.conf.Elimina o comenta la línea
register-dnssi existe.Crea
/dev/net/tunsi no existe:
sudo mkdir -p /dev/net sudo mknod /dev/net/tun c 10 200 sudo chmod 600 /dev/net/tun - Arranca OpenVPN:
sudo rc-service openvpn start 🟢 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 Verifica la instalación:
docker version docker compose version 🔴 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.shgeneraba tags inválidos.
Correcciones:
docker buildx build --platform linux/arm64 -t atareao/u2vpodcast:arm64 . 📚 Enlaces Útiles
- Alpine Linux Documentation
- Syncthing Downloads
- OpenVPN Wiki
- Docker Buildx Guide
- Syncthing FAQ - inotify
- Docker Compose V2
- u2vpodcast Repo - Atareao
🧹 Consideraciones Finales
- Automatizar la actualización de Syncthing mediante script root.
- Buscar o construir imagen ARM64 optimizada de u2vpodcast.
- Sustituir
vcgencmdpor lecturas desde/sys/class/thermal/. - Crear un script watchdog para OpenVPN.
Top comments (0)