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)