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
dd
en 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.txt
y ajusta el UUID del rootfs:
root=UUID=11112222-3333-4444-aaaa-bbbbccccdddd modules=sd-mod,usb-storage,ext4 rootfstype=ext4
Edita
/mnt/usbroot/etc/fstab
para 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
.ovpn
como/etc/openvpn/client.conf
.Elimina o comenta la línea
register-dns
si existe.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
- 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.sh
generaba 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
vcgencmd
por lecturas desde/sys/class/thermal/
. - Crear un script watchdog para OpenVPN.
Top comments (0)