Contents

  1. Uso típico: Nube Privada
  2. Uso avanzado: Router Casero Inteligente
  3. Uso avanzado: Para Comunidades
  4. Interfaz de FreedomBox
  5. Lo que necesitas para empezar
  6. Cómo empezar
  7. Orientándote
  8. Descargando en Debian
  9. Descargando para placa SBC o Máquina Virtual
  10. Obtener el Código Fuente
  11. Sitios Web de Usuario (User websites) (userdir)
  12. Red para el anónimato (Tor)
  13. BitTorrent (Transmission)
  14. BitTorrent (Deluge)
  15. Block Sandbox (Minetest)
  16. Agenda (Radicale)
  17. Servidor de Mensajería Instantánea (chat) (ejabberd)
  18. Servidor de Mensajería Instantánea (chat) (Matrix Synapse)
  19. Cliente de Correo Electrónico (Email) (Roundcube)
  20. Compartición de Archivos (Coquelicot)
  21. Compartición de Archivos (MLDonkey)
  22. Sincronización de Archivos (Syncthing)
  23. Servidor Gobby (infinoted)
  24. Cliente IRC (Quassel)
  25. Lector de Feeds de Noticias (Tiny Tiny RSS)
  26. Servidor SIP (Repro)
  27. Proxy SOCKS5 (Shadowsocks)
  28. Red Privada Virtual (OpenVPN)
  29. Conversaciones de Voz (Mumble)
  30. Proxy Web (Privoxy)
  31. Búsqueda Web (Searx)
  32. Wiki (MediaWiki)
  33. Wiki y Blog (Ikiwiki)
  34. Red de Anonimato (I2P)
  35. Copias de respaldo (backups)
  36. Configurar
  37. Administración de Servidor (Cockpit)
  38. Fecha y hora
  39. Diagnósticos
  40. Cliente de DNS Dinamico
  41. Cortafuegos
  42. Certificados (Let's Encrypt)
  43. Monkeysphere
  44. Servicios de Nombre
  45. Redes
  46. Apagado
  47. Visibilidad Publica (PageKite)
  48. Shell Segura
  49. Seguridad
  50. Detección de Servicios
  51. Instantáneas
  52. Almacenamiento
  53. Actualizaciones de Software
  54. Usuarios y Grupos
  55. Hardware Recomendado
  56. Hardware Soportado
  57. Más Hardware Operativo
  58. Hardware Obsoleto
  59. Añadir Soporte a más Hardware
  60. FreedomBox Pioneer Edition
  61. Características del Producto
  62. Obtener el Código Fuente
  63. Cubietruck
  64. Beagle Bone Black
  65. A20 OLinuXino Lime2
  66. A20 OLinuXino MICRO
  67. APU
  68. pcDuino3
  69. Pine A64+
  70. VirtualBox
  71. Debian
  72. DreamPlug
  73. Raspberry Pi Model B+
  74. Raspberry Pi 2 Model B
  75. Raspberry Pi 3 Model B
  76. Raspberry Pi 3 Model B+
  77. USB Wi-Fi
  78. FreedomBox 19.16 (2019-09-09)
  79. FreedomBox 19.15 (2019-08-26)
  80. FreedomBox 19.14 (2019-08-12)
  81. FreedomBox 19.13 (2019-07-29)
  82. FreedomBox 19.12 (2019-07-22)
  83. FreedomBox 19.2.2 (2019-07-17)
  84. FreedomBox 19.2.1 (2019-07-09)
  85. FreedomBox 19.11 (2019-07-08)
  86. FreedomBox 19.10 (2019-06-24)
  87. FreedomBox 19.9 (2019-06-10)
  88. FreedomBox 19.8 (2019-05-27)
  89. FreedomBox 19.7 (2019-05-13)
  90. FreedomBox 19.6 (2019-04-29)
  91. FreedomBox 19.5 (2019-04-15)
  92. FreedomBox 19.4 (2019-04-01)
  93. FreedomBox 19.3 (2019-03-18)
  94. FreedomBox 19.2 (2019-03-02)
  95. FreedomBox 19.1 (2019-02-14)
  96. FreedomBox 19.0 (2019-02-09)
  97. Version 0.49.1 (2019-02-07)
  98. Version 0.49.0 (2019-02-05)
  99. Version 0.48.0 (2019-01-28)
  100. Version 0.47.0 (2019-01-14)
  101. Version 0.46.0 (2018-12-31)
  102. Version 0.45.0 (2018-12-17)
  103. Version 0.44.0 (2018-12-03)
  104. Version 0.43.0 (2018-11-19)
  105. Version 0.42.0 (2018-11-05)
  106. Version 0.41.0 (2018-10-22)
  107. Version 0.40.0 (2018-10-08)
  108. Version 0.39.0 (2018-09-24)
  109. Version 0.38.0 (2018-09-10)
  110. Version 0.37.0 (2018-08-27)
  111. Version 0.36.0 (2018-08-13)
  112. Version 0.35.0 (2018-07-30)
  113. Version 0.34.0 (2018-07-16)
  114. Version 0.33.1 (2018-07-04)
  115. Version 0.33.0 (2018-07-02)
  116. Version 0.32.0 (2018-06-18)
  117. Version 0.31.0 (2018-06-04)
  118. Version 0.30.0 (2018-05-21)
  119. Version 0.29.1 (2018-05-08)
  120. Version 0.29.0 (2018-05-07)
  121. Version 0.28.0 (2018-04-23)
  122. Version 0.27.0 (2018-04-09)
  123. Version 0.26.0 (2018-03-26)
  124. Version 0.25.0 (2018-03-12)
  125. Plinth v0.24.0 (2018-02-26)
  126. Plinth v0.23.0 (2018-02-12)
  127. Plinth v0.22.0 (2018-01-30)
  128. Plinth v0.21.0 (2018-01-15)
  129. Plinth v0.20.0 (2018-01-01)
  130. Plinth v0.19.0 (2017-12-18)
  131. Plinth v0.18.0 (2017-12-04)
  132. Plinth v0.17.0 (2017-11-20)
  133. Plinth v0.16.0 (2017-11-06)
  134. Plinth v0.15.3 (2017-10-20)
  135. Plinth v0.15.2 (2017-09-24)
  136. Plinth v0.15.0 (2017-07-01)
  137. Plinth v0.14.0 (2017-04)
  138. Plinth v0.13.1 (2017-01-22)
  139. Plinth v0.12.0 (2016-12-08)
  140. Plinth v0.11.0 (2016-09-29)
  141. Plinth v0.10.0 (2016-08-21)
  142. Version 0.9.4 (2016-06-24)
  143. Version 0.9 (2016-04-24)
  144. Version 0.8 (2016-02-20)
  145. Version 0.7 (2015-12-13)
  146. Version 0.6 (2015-10-31)
  147. Version 0.5 (2015-08-07)
  148. Version 0.3 (2015-01-20)
  149. Version 0.2 (2014-03-16)
  150. Version 0.1 (2013-02-26)
  151. Enlaces Rápidos
  152. Bienvenida a los recién llegados
  153. Prioridades de Desarrollo
  154. Se necesitan Contribuciones
  155. Writing Applications - Tutorial
  156. Reference Guide
  157. Servicio FreedomBox (Plinth)
  158. Freedom Maker

FreedomBox: recupera tu privacidad online

FreedomBox es un servidor personal diseñado tomando en cuenta la privacidad y la propiedad de los datos. Es un subconjunto del sistema operativo universal Debian e incluye solo software libre. Puedes ejecutarlo en casa en un ordenador pequeño, barato y energéticamente eficiente dedicado a tal uso. También se puede instalar en cualquier ordenador que ejecute Debian o en una máquina virtual.

Para reeemplazar servicios de comunicaciones de terceros que están espiando toda tu vida, podrás alojar servicios por ti mismo y usarlos en casa o a través de Internet mediante un navegador o aplicaciones especializadas. Estos servicios incluyen chat y audioconferencias, correo electrónico web, compartición de ficheros y calendario, libreta de direcciones y sincronización de feeds de noticias. Por ejemplo, para comenzar a usar un servicio de chat privado activa el servicio desde el interfaz de administración y agrega a tus amistades como usuarios autorizados del servicio. Podrán conectarse al servicio alojado en tu FreedomBox usando clientes de chat XMPP como Conversations para Android, Pidgin para Windows y Linux, o Messages para Mac OS, y acceder a comunicaciones cifradas.

FreedomBox también puede alojar un punto de acceso Wi-Fi, un proxy para bloquear anuncios y una red privada virtual (VPN). Los usuarios más avanzados pueden reemplazar su router por un FreedomBox.

Configurar FreedomBox en casa sobre un hardware específico o en tu ordenador con Debian podría requerir cierto conocimiento técnico o ayuda de la comunidad. Una vez instalado el interfaz es fácil de usar, parecido a un teléfono inteligente.

Documentación relacionada:

1. Uso típico: Nube Privada

FreedomBox proporciona servicios a ordenadores y dispositivos móviles en tu hogar, y a tus amistades. Esto incluye mensajería instantánea segura y audioconferencias de alta calidad con poco consumo de banda. FreedomBox te permite publicar tus contenidos en un blog y en un wiki para colaborar con el resto del mundo. Están previstos los servicios de servidor personal de correo electrónico y red social federada usando GNU Social y Diaspora, para proporcionar alternativas a Gmail y Facebook que respeten la privacidad.

2. Uso avanzado: Router Casero Inteligente

FreedomBox se ejecuta en un ordenador físico y puede enrutar tu tráfico. Puede reemplazar a tu router inalámbrico de casa dando salida a internet a dispositivos variados como teléfonos móviles, ordenadores portátiles y televisores. Enrutando tráfico FreedomBox puede eliminar anuncios espía y malware web antes incluso de que alcancen tus dispositivos. FreedomBox puede ocultar tu localización y protejer tu anonimato enrutando tu tráfico por la red Tor. FreedomBox proporciona un servidor VPN que puedes emplear cuando estés lejos de casa para mantener secreto tu tráfico en redes inalámbricas públicas en las que no confíes y para acceder con seguridad a tus dispositivos de casa.

También lo puedes llevar contigo y tu portátil y usarlo para conectar a redes públicas en el trabajo, o para habilitar sus servicios en la escuela o en la oficina.

Se podría emplear en una aldea para habilitar comunicaciones digitales por toda la aldea. En el futuro, FreedomBox intentará dar soporte a medios alternativos de conexión a Internet, como redes Mesh.

3. Uso avanzado: Para Comunidades

El objetivo principal del diseño de FreedomBox es ser empleado como servidor personal en el hogar para uso por parte de una única familia y sus amistades. No obstante, en esencia es un software servidor que puede ayudar a un usuario no técnico a desplegar y mantener servicios con facilidad. El software se encarga automáticamente de muchas de las decisiones técnicas de administración del sistema, incluída la seguridad, reduciendo la complejidad para un usuario no técnico. Esta naturaleza de FreedomBox le hace apropiado para alojar servicios para comunidades pequeñas como aldeas o pequeñas empresas. Las comunidades pueden alojar sus propios servicios con un esfuerzo minimo usando FreedomBox. Pueden desplegar redes Wi-Fi que cubran toda el área de la comunidad y traer conexiones a Internet desde largas distancias. Los miembros de la comunidad pueden disfrutar conectividad a Internet, cobertura Wi-Fi omnipresente, servicios de VoIP, contenidos educativos y de entretenimiento offline, etc anteriormente no disponibles. También reforzará la privacidad individual de los miembros de la comunidad, reducirá su dependencia de servicios centralizados proporcionados por grandes compañías y les hará resistentes a la censura.

El libro electrónico libre FreedomBox for Communities describe la motivación y proporciona instrucciones detalladas para configurar FreedomBox para este caso de uso. Miembros del proyecto FreedomBox estan involucrados en desplegar redes Wi-Fi con conectividad gratuíta a Internet en la India rural. Este libro electrónico documenta su conocimiento y experiencias.

4. Interfaz de FreedomBox

4.1. Captura de pantalla

FreedomBox front page

4.2. Video de introducción

Plinth_Introduction.webm

(36 MB, 13 Min.)

4.3. Más recursos en formato video

La charla Eben Moglen - Freedom in the cloud que impartió Eben Moglen antes del arranque del proyecto FreedomBox expone aspectos de la filosofía que hay detrás FreedomBox.

Primera demostración de FreedomBox en SFLC, Universidad de Columbia por Sunil Mohan Adapa.

Guía de Inicio Rápido

1. Lo que necesitas para empezar

  • Un dispositivo soportado (incluyendo cualquier dispositivo que pueda funcionar con Debian). En el resto de este manual lo llamaremos la FreedomBox.

  • Un cable de alimentación para tu dispositivo.
  • Un cable de red Ethernet.

  • Una tarjeta microSD (o un medio de almacenamiento equivalente para tu dispositivo) preparado según las instrucciones de la página de Descargas.

2. Cómo empezar

  1. Conecta un extremo del cable de red al puerto Ethernet de tu FreedomBox y el otro a tu router.

  2. Enciende la FreedomBox. Nota: En la mayoría de computadoras monoplaca no esperes un efecto de salida en un monitor si lo conectas por HDMI porque el núcleo (kernel) del sistema podría no reconocerlo. Mira más abajo para aprender cómo acceder y controlar tu FreedomBox desde la red.

  3. En el primer arranque FreedomBox ejecutará su configuración inicial (las versiones más antiguas de FreedomBox se reinician tras este paso). Este proceso podría llevar varios minutos en algunas máquinas. Después de darle unos 10 minutos aproximadamente, sigue con el siguiente paso. Nota: Esta espera y reinicio se necesitan a causa de un defecto conocido.

  4. Después de que tu FreedomBox haya finalizado su configuración inicial puedes acceder a su interfaz web (llamado Plinth) mediante tu navegador web.

    • Si tu ordenador está conectado directamente a tu FreedomBox a través de un segundo puerto Ethernet de la red local, puedes navegar a http://freedombox/ o a http://10.42.0.1/.

    • Si tu ordenador sopora mDNS (GNU/Linux, Mac OSX o Windows con software mDNS instalado), puedes navegar a: http://freedombox.local/ (o a http://the-hostname-you-entered-during-install.local/)

    • Si te manejas con el interfaz web de tu router, puedes buscar allí la dirección IP de tu FreedomBox y navegar a ella.

    • Si no están disponibles ninguno de estos métodos necesitarás averiguar la dirección IP de tu FreedomBox. Puedes usar el programa "nmap" de tu ordenador para encontrar su dirección IP:

           nmap -p 80 --open -sV 192.168.0.0/24 (remplaza la ip/netmask con la que use tu router)

      En la mayoría de los casos puedes mirar tu dirección IP actual y cambiar los últimos dígitos por 0 para encontrar tu red local, así: XXX.XXX.XXX.0/24

      Tu FreedomBox aparecerá como una dirección IP con un puerto TCP 80 abierto usando el servicio Apache httpd sobre Debian. En el siguiente ejemplo estaría en http://192.168.0.165:

           Nmap scan report for 192.168.0.165
           Host is up (0.00088s latency).
           PORT   STATE SERVICE VERSION
           80/tcp open  http    Apache httpd 2.4.17 ((Debian))

      Si nmap no encuentra nada con el comando anterior puedes probar a remplazar 192.168.0.0/24 por 10.42.0.255/24.

           nmap -n -sP 10.42.0.255/24
      El informe de escaneo mostrará algo similar a esto:
           Nmap scan report for 10.42.0.1
           Host is up (0.00027s latency).
           Nmap scan report for 10.42.0.50
           Host is up (0.00044s latency).

      En este ejemplo, la FreedomBox está en http://10.42.0.50. (10.42.0.1 es mi ordenador.)

  5. Al acceder a Plinth tu navegador te avisará de que comunica en modo seguro pero que considera invalido el certificado de seguridad. Tienes que aceptarlo porque el certificado es autogenerado en la FreedomBox y "autofirmado" (el navegador podría denominarlo "no confiable", "no privado", "error de privacidad" o "emisor/autoridad desconocida"). Decir a tu navegador que ya lo sabes podría implicar accionar algunos botones como "Entiendo los riesgos", "proceder ... (inseguro)" o "Añadir excepción". Después de la instalación este certificado se puede cambiar a otro normal usando la opción Let's Encrypt.

    • Aviso de certificado autofirmado

    • Añadir excepción de seguridad

  6. La primera vez que accedes al interfaz web de tu FreedomBox verás una página de bienvenida. Haz clic en el botón "Comenzar configuración" para continuar.

    • Bienvenida

      Si has instalado FreedomBox usando un paquete Debian se te pedirá una clave secreta. Esta clave se te habrá proporcionado durante la instalación del paquete Debian. También se puede leer en el archivo /var/lib/plinth/firstboot-wizard-secret.

  7. La siguiente página te pide un nombre de usuario y contraseña. Rellena el formulario y haz clic en "Crear Cuenta."
    • Nota: El usuario que creas aquí tendrá privilegios de Admin y también podrá entrar por SSH. Por seguridad y para prevenir meteduras de pata no deberías introducir tu cuenta de uso habitual, sino una especial. Luego puedes añadir más usuarios, entre ellos el tuyo de uso habitual.

    • Cuenta

  8. Tras completar el formulario estarás en Plinth y podrás acceder a las apps y a la configuración mediante el interfaz web.
    • Completado

Ahora puedes probar cualquier App disponible en FreedomBox.

3. Orientándote

3.1. Página principal

La página principal es la que verás al acceder a la raíz web de tu FreedomBox. También puedes acceder a ella haciendo clic sobre el logo de FreedomBox de la esquina de arriba a la izquierda del interfaz web Plinth.

La página principal tiene accesos directos a las apps instaladas que estén habilitadas. Haciendo clic en los accesos directos de aplicaciones web te llevarán a la página web correspondiente de cada app. Si son otro tipo de servicios hacer clic en los accesos directos te mostrará información acerca de cada servicio.

Página principal

Página principal

3.2. Menú de Aplicaciones

Al Menú de Aplicaciones se accede por el icono de rejilla que está junto al logo de FreedomBox. Esta página lista todas las apps disponibles para instalar en tu FreedomBox. Haz click sobre el nombre de la app para visitar su página, desde la que podrás instalarla y configurarla.

Apps

3.3. Menú de Ayuda

Al Menú de Ayuda se accede por el icono del signo de interrogación de la esquina de arriba a la derecha. Incluye enlaces útiles y el manual de FreedomBox.

Ayuda

3.4. Menú del Sistema

Al Menú del Sistema se accede por el icono del engranaje de la esquina de arriba a la izquierda. Incluye páginas relacionadas con la configuración del sistema.

Sistema

3.5. Menú del Usuario

En la esquina de arriba a la derecha se muestra el nombre del usuario actual. Un menú desplegable incluye opciones para editar el perfil del usuario o sacarle del interfaz web.

Usuario

Obtener Ayuda

Este manual intenta darte la información que necesitas para comenzar a usar tu FreedomBox. No obstante, si después de leerlo tienes cualquier pregunta puedes obtener ayuda de los contribuyentes a la comunidad así:

Descarga e Instalación

Bienvenido a la página de descargas de FreedomBox. Puedes instalar FreedomBox sobre alguno de los baratos dispositivos hardware soportados, sobre cualquier sistema operativo Debian Linux, o sobre una máquina virtual.

Instalar en una máquina que lleve el sistema Debian es fácil porque FreedomBox está disponble como paquete. Recomendamos instalar FreedomBox sobre una placa SBC soportada. La placa estaría dedicada al uso de FreedomBox en el hogar. Esto evitará un montón de riesgos, como configuraciones accidentalmente incorectas por el usuario. En caso de duda decidiendo qué hardware es el más apropiado para tí o durante la instalación, usa por favor la página de soporte o lee la página de Preguntas y Respuestas basada en los archivos de la lista de correo Freedombox-discuss.

1. Descargando en Debian

Si estás instalando sobre un sistema Debian existente no necesitas descargar las imágenes. Lee las instrucciones (en) para configurar FreedomBox en Debian.

2. Descargando para placa SBC o Máquina Virtual

2.1. Preparar tu dispositivo

Lee las instrucciones específicas para tu hardware respecto a como preparar tu dispositivo en la sección Hardware. En la web hay abundante documentación respecto a como contigurar tu dispositivo y grabar USB's o tarjetas SD para arrancar tu hardware.

2.2. Descargar Imágenes

Las imágenes recientes para hardware soportado están disponibles aquí:

2.3. Verificar las Imágenes Descargadas

Es importante verificar las imágenes que has descargado para asegurar que el fichero no se ha corrompido durante la transmisión y que efectívamente es la imagen construída por los desarrolladores de FreedomBox.

Nota: Las imágenes de prueba y nocturnas las firma el servidor de integración contínua de FreedomBox automaticamente.

  • Primero abre un terminal e importa las claves publicas de los desarrolladores de FreedomBox que construyeron las imágenes:

    $ gpg --recv-keys BCBEBD57A11F70B23782BC5736C361440C9BC971
    
    $ gpg --recv-keys 7D6ADB750F91085589484BE677C0C75E7B650808
    
    # Esta es la clave del servidor de integración contínua de FreedomBox
    $ gpg --recv-keys 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8
  • A continuación, verifica la huella de las claves públicas:
    $ gpg --fingerprint BCBEBD57A11F70B23782BC5736C361440C9BC971
    pub   4096R/0C9BC971 2011-11-12
          Key fingerprint = BCBE BD57 A11F 70B2 3782  BC57 36C3 6144 0C9B C971
    uid                  Sunil Mohan Adapa <sunil@medhas.org>
    sub   4096R/4C1D4B57 2011-11-12
    
    $ gpg --fingerprint 7D6ADB750F91085589484BE677C0C75E7B650808
    pub   4096R/7B650808 2015-06-07 [expires: 2020-06-05]
          Key fingerprint = 7D6A DB75 0F91 0855 8948  4BE6 77C0 C75E 7B65 0808
    uid                  James Valleroy <jvalleroy@mailbox.org>
    uid                  James Valleroy <jvalleroy@freedombox.org>
    sub   4096R/25D22BF4 2015-06-07 [expires: 2020-06-05]
    sub   4096R/DDA11207 2015-07-03 [expires: 2020-07-01]
    sub   2048R/2A624357 2015-12-22
    
    $ gpg --fingerprint 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8
    pub   rsa4096 2018-06-06 [SC]
          013D 86D8 BA32 EAB4 A669  1BF8 5D41 53D6 FE18 8FC8
    uid           [ unknown] FreedomBox CI (Continuous Integration server) <admin@freedombox.org>
    sub   rsa4096 2018-06-06 [E]
  • Finalmente, verifica tu imágen descargada con su archivo de firma .sig. Por ejemplo:

    $ gpg --verify freedombox-unstable-free_2015-12-13_cubietruck-armhf.img.xz.sig freedombox-unstable-free_2015-12-13_cubietruck-armhf.img.xz
    gpg: Signature made Thursday 15 January 2015 09:27:50 AM IST using RSA key ID 0C9BC971
    gpg: Good signature from "Sunil Mohan Adapa <sunil@medhas.org>"
    gpg: WARNING: This key is not certified with a trusted signature!
    gpg:          There is no indication that the signature belongs to the owner.
    Primary key fingerprint: BCBE BD57 A11F 70B2 3782  BC57 36C3 6144 0C9B C971

2.4. Instalación

Tras la descarga puedes emplear la imágen para arrancar tu hardware (incluyendo máquinas virtuales). Necesitarás copiar la imágen a la tarjeta de memoria o pincho USB así:

  1. Averigua en qué dispositivo está tu tarjeta.
    1. Desconecta tu tarjeta (Sácala de la ranura).
    2. Ejecuta dmesg -w mara mostrar y seguir los mensajes del núcleo (kernel).

    3. Conecta tu tarjeta (insértala en su ranura). Verás mensajes como estos:
      [33299.023096] usb 4-6: new high-speed USB device number 12 using ehci-pci
      [33299.157160] usb 4-6: New USB device found, idVendor=058f, idProduct=6361
      [33299.157162] usb 4-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
      [33299.157164] usb 4-6: Product: Mass Storage Device
      [33299.157165] usb 4-6: Manufacturer: Generic
      [33299.157167] usb 4-6: SerialNumber: XXXXXXXXXXXX
      [33299.157452] usb-storage 4-6:1.0: USB Mass Storage device detected
      [33299.157683] scsi host13: usb-storage 4-6:1.0
      [33300.155626] scsi 13:0:0:0: Direct-Access     Generic- Compact Flash    1.01 PQ: 0 ANSI: 0
      [33300.156223] scsi 13:0:0:1: Direct-Access     Multiple Flash Reader     1.05 PQ: 0 ANSI: 0
      [33300.157059] sd 13:0:0:0: Attached scsi generic sg4 type 0
      [33300.157462] sd 13:0:0:1: Attached scsi generic sg5 type 0
      [33300.462115] sd 13:0:0:1: [sdg] 30367744 512-byte logical blocks: (15.5 GB/14.4 GiB)
      [33300.464144] sd 13:0:0:1: [sdg] Write Protect is off
      [33300.464159] sd 13:0:0:1: [sdg] Mode Sense: 03 00 00 00
      [33300.465896] sd 13:0:0:1: [sdg] No Caching mode page found
      [33300.465912] sd 13:0:0:1: [sdg] Assuming drive cache: write through
      [33300.470489] sd 13:0:0:0: [sdf] Attached SCSI removable disk
      [33300.479493]  sdg: sdg1
      [33300.483566] sd 13:0:0:1: [sdg] Attached SCSI removable disk
    4. En este caso, el disco insertado recientemente está disponible en /dev/sdg. Toma nota con mucho cuidado para emplearla en el paso de copia más adelante.

  2. Descomprime la descarga usando tar:
    $ xz -d freedombox-unstable-free_2015-12-13_cubietruck-armhf.img.xz

    El comando de arriba es un ejemplo para la imagen cubietruck construída el 2015/12/13. El nombre de archivo de tu descarga será diferente.

  3. Copia la imágen a tu tarjeta. Asegúrate de que NO escribes sobre el almacenamiento principal de tu ordenador (como /dev/sda). Asegúrate

también de que NO ejecutas este paso como root para evitar sobreescribir datos en tu disco duro por una identificación errónea del dispositivo o fallos al teclear el comando. No habitual es que los usuarios normales tuvieran acceso de escritura sobre los discos USB y tarjetas SD pinchados en el sistema. Si no tienes permiso para escribir en tu tarjeta SD como usuario normal quizá necesites ejecutar éste comando como root. En tal caso comprueba y recomprueba todo antes de ejecutar el comando. Otra precaución de seguridad es desconectar todos los demás discos externos excepto la tarjeta SD antes de ejecutar el comando.

  • Por ejemplo, si tu tarjeta SD es /dev/sdg, como en el paso anterior, para copiar la imágen, ejecuta:

    $ dd bs=1M if=freedombox-unstable-free_2015-12-13_cubietruck-armhf.img of=/dev/sdg conv=fdatasync status=progress

Un comando alternativo para copiar a la tarjeta SD:

  • $ cat freedombox-unstable-free_2015-12-13_cubietruck-armhf.img > /dev/sdg ; sync

En MS Windows necesitarás una herramienta como etcher. En MacOS (OSX) puedes usar programas como balenaetcher y rosaimagewriter.

  • El comando anterior es un ejemplo para la imagen cubietruck construída el 2015/12/13. El nombre del archivo de tu imágen será diferente.

    Al identificar el dispositivo, usa el destino con letra de unidad como /dev/sdg, NO un destino numerado como /dev/sdg1. El dispositivo sin número refiere al dispositivo completo, mientras que el numerado refiere a una partición concreta. Queremos usar todo el dispositivo. Las imágenes descargadas contienen información completa acerca de cuantas particiones debería haber, sus tamaños y tipos. No necesitas formatear tu tarjeta SD ni crear particiones. Todo el contenido previo de la tarjeta será eliminado durante el proceso de escritura.

  • Usa la imágen insertando la tarjeta SD o disco USB en el dispositivo de destino y arrancándolo. Tu dispositivo también debe estár preparado

    (ver la sección Hardware).

  • Lee (el resto de) el Manual (en) para obtener instrucciones acerca de como usar las aplicaciones de FreedomBox.

3. Obtener el Código Fuente

FreedomBox es 100% software libre y puedes obtener el código fuente para estudiarlo, modificarlo y distribuir mejoras.

3.1. Desde (dentro de) FreedomBox

FreedomBox se compone de diferentes programas de software y puedes obtener el código fuente de cualquiera de ellos. Estas instrucciones son similares a obtener y construír código fuente de Debian ya que FreedomBox es una variante pura de Debian. Usando este procedimiento puedes obtener el código fuente de la misma versión del paquete que estás usando actualmene en FreedomBox.

  1. Para ver la lista de paquetes software instalados en tu FreedomBox, ejecuta lo siguiente en un terminal:

    dpkg -l
  2. Para obtener el código fuente de cualquiera de esos programas ejecuta:
    apt source <nombre_del_paquete>

    Esto requiere que el archivo /etc/apt/sources.list contenga información acerca de los repositorios de código fuente. Esto es así por defecto en todas las imágenes FreedomBox. Pero si has instalado FreedomBox desde Debian necesitas asegurarte de que los repositorios de código fuente figuren en este archivo.

  3. Para construir el paquete desde su código fuente, primero instala sus dependencias
    apt build-dep <nombre_del_paquete>

    Cambia al directorio fuente creado con el comando apt source:

    cd <directorio_fuente>
    Y construye el paquete
     dpkg-buildpackage -rfakeroot -uc
  4. Instala el paquete:
     dpkg -i ../<paquete_construído>.deb

3.2. Otras Maneras de Obtener el Código Fuente

  1. El código fuente de cualquier paquete se puede ver y buscar usando el interfaz web de sources.debian.org. Por ejemplo, mira el paquete plinth.

  2. El código fuente y el binario precompilado de cualquier version de un paquete, incluyendo versiones antigüas, se pueden obtener de snapshot.debian.org. Por ejemplo, mira el paquete plinth.

  3. También puedes obtener los enlaces a la web del proyecto original, al control de versiones del proyecto original, al control de versiones de Debian, registro de cambios, etc. desde la página de control Debian para el proyecto en tracker.debian.org. Por ejemplo, mira la página de control para el paquete plinth.

  4. Puedes compilar e instalar un paquete desde el control de versiones de Debian. Por ejemplo,
     git clone https://salsa.debian.org/freedombox-team/plinth
     cd plinth
     apt build-dep .
     dpkg-buildpackage -rfakeroot -uc
     dpkg -i ../plinth*.deb

3.3. Construyendo Imágenes de disco

También puedes construír imágenes de disco FreedomBox para varias platformas de hardware usando la herramienta freedom-maker. Esta también está disponible como paquete Debian y su código fuente se puede obtener empleando los métodos anteriores. Hay disponibles Instrucciones de Construcción para generar imágenes de disco incluídas en el código fuente del paquete freedom-maker.

Las imágenes de disco de FreedomBox se construyen y suben a los servidores oficiales empleando la infraestructura de integración contínua automatizada. Esta infraestructura está disponible también como código fuente y proporciona información precisa acerca de como se contruyen las imágenes de FreedomBox.

3.3.1. Imágenes U-boot sobre Pioneer Edition

Hay una excepción menor en el paquete u-boot que viene con el hardware que se vende como Kits de Servidor Casero FreedomBox Pioneer Edition. Contiene un parche pequeño pero importante que no está en el código fuente de Debian. Tanto el repositorio fuente de Debian u-boot como el parche de FreedomBox están disponibles como un repositorio aparte. Esperamos que en algún momento este parche esté integrado en u-boot de serie y este repositorio ya no sea necesario. Este paquete se puede compilar en una máquina Debian armhf como sigue (también se puede hacer compilación cruzada, simplemente sigue las instrucciones para compilación cruzada de paquetes Debian):

apt install git git-buildpackage
git clone https://salsa.debian.org/freedombox-team/u-boot.git
cd u-boot
pbuilder create --distribution=buster
gbp buildpackage --git-pbuilder

El paquete u-boot Debian estará en u-boot-sunxi*.deb. Este paquete contendrá

mkdir temp
dpkg -x u-boot-suxi*.deb temp
unxz <lime2_image_built_with_freedom_maker>
dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=<lime2.img> seek=8 bs=1k conv=notrunc

La imagen resultante tendrá el u-boot modificado.

Apps

1. Sitios Web de Usuario (User websites) (userdir)

1.1. ¿Qué es User websites?

User websites es un módulo del servidor web Apache habilitado para permitir a los usuarios definidos en el sistema FreedomBox exponer un conjunto de archivos del sistema de ficheros de FreedomBox como sitio web a la red local y/o a internet de acuerdo a la configuración de la red y el cortafuegos.

Datos básicos de la aplicación

Categoría

Compartición de archivos

Disponible desde la versión

0.9.4

Sitio web del proyecto original

https://httpd.apache.org/docs/2.4/mod/mod_userdir.html

Documentación original de usuario

https://httpd.apache.org/docs/2.4/howto/public_html.html

1.2. Captura de pantalla

1.3. Usar User websites

El módulo está siempre activado y no ofrece configuración desde el interfaz web de Plinth. Actualmente ni siquiera muestra que exita.

Para servir documentos con el módulo solo se necesita poner los documentos en un subdirectorio designado /home/<un_usuario_de_plinth>/public_html.

User websites servirá los documentos que haya en este directorio cuando se reciban peticiones con la URI ~<un_usuario_de_plinth>. Por tanto para un dominio ejemplo.org con un usuario pepe una petición ejemplo.org/~pepe/index.html transferirá el fichero /home/pepe/public_html/index.html.

1.4. Usar SFTP para crear public_html y subir archivos

2. Red para el anónimato (Tor)

2.1. ¿Qué es Tor?

Tor es una red de servidores operada por voluntarios. Permite a los usuarios de esos servidores mejorar su privacidad y seguridad cuando navegan por Internet. Tu y tus amigos podéis acceder a tu FreedomBox a través de la red Tor sin revelar su dirección IP. Activando la aplicación Tor en tu FreedomBox podrás ofrecer servicios remotos (chat, wiki, file sharing, etc...) sin mostrar tu localización. Esta aplicación te dará una protección mejor que un servidor web público porque estarás menos expuesto a gente intrusiva.

2.2. Usar Tor para navegación anónima

Tor Browser es la manera recomendada para navegar la web a través de Tor. Puedes descargar Tor Browser desde https://www.torproject.org/projects/torbrowser.html y seguir sus instrucciones para instalarlo y ejecutarlo.

2.3. Usar Servicio Oculto Tor para acceder a tu FreedomBox

El Servicio Oculto Tor proporciona una manera de acceder a tu FreedomBox incluso aunque esté detrás de un router, cortafuegos, o redirector NAT (p.ej. si tu proveedor de Internet no proporciona una dirección pública IPv4 para tu router).

Para habilitar el Servicio Oculto Tor primero navega a la página Red para el anónimato (Tor). (Si no la ves haz clic en el logo de FreedomBox de arriba a la izquierda de la página y ve a la página principal de Apps.) En la página Red para el anónimato (Tor), bajo Configuración, habilita la caja Habilitar los Servicios Ocultos Tor y pulsa el botón de Actualizar configuración. Tor se reconfigurará y se reiniciará.

Transcurrido un rato la página se refrescará bajo Estado verás la tabla que lista la dirección .onion del servicio oculto. Copia toda la dirección (que termina en .onion) y pégala en el campo dirección de Tor Browser. Deberías poder acceder a tu FreedomBox. (Quizá veas un aviso de certificado porque FreedomBox tiene un certificado autofirmado.)

Tor Browser - Plinth

Actualmente solo HTTP (puerto 80), HTTPS (puerto 443) y SSH (puerto 22) están accesibles a través del Servicio Oculto Tor configurado en la FreedomBox.

2.4. Apps accesibles via Tor

Las siguientes apps se pueden acceder a través de Tor. Esta lista puede ser incompleta.

  • Calendario y Libreta de direcciones (Radicale)
  • Sincronización de ficheros (Syncthing)
  • Búsqueda Web (Searx)
  • Wiki (MediaWiki)

  • Wiki y Blog (Ikiwiki)

2.5. Ejecutar un nodo Tor

Cuando se instala Tor se configura por defecto para ejecutarse como puente a la red (bridge relay). Esta opción se puede deshabilitar en la página de configuración de Tor de Plinth.

En la parte inferior de página de Tor de Plinth hay una lista de puertos que usa el puente a la red Tor. Si tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos de tu router para que estos puertos sean accesibles desde Internet.

Los requisitos para ejecutar un puente a la red se listan en la Tor Relay Guide. En resúmen, se

  • recomienda que un puente tenga disponibles para Tor al menos 16 Mbit/s (Mbps) de ancho de banda para subida y bajada. Mejor más.
  • requiere que a se le permita al puente usar un mínimo de 100 GByte de tráfico mensual de salida y de entrada.
  • recomienda que un nodo sin salida (mero reenrutador) de <40 Mbit/s tenga al menos 512 MB de RAM disponible; Uno más rápido de 40 Mbit/s debería tener al menos 1 GB de RAM.

2.6. Usar el puerto Tor SOCKS (avanzado)

FreedomBox proporciona un puerto Tor SOCKS al que pueden conectar otras aplicaciones para enrutar su tráfico a través de la red Tor. Este puerto es accesible a cualquier interfaz (de red) configurado en la zona interna del cortafuegos. Para configurar la aplicación apunta el Host SOCKS a la dirección IP interna de la conexión y pon el Puerto SOCKS a 9050.

2.7. Saltando la censura de Tor

Si tu proveedor de Internet (ISP) está tratando de bloquear el tráfico Tor puedes usar puentes (a la red Tor) para conectar (a la red Tor).

1. Obtén la configuración de los puentes de Tor BridgeDB

Tor BridgeDB

2. Añade las líneas a la configuración de Tor de tu FreedomBox como se muestra.

Tor Configuration Page

3. BitTorrent (Transmission)

3.1. ¿Qué es Transmission ?

BitTorrent es un protocolo de comunicaciones para compartir ficheros entre pares (P2P = peer-to-peer). No es anónimo; debes asumir que otros puedan ver qué ficheros estás comprtiendo. Hay 2 clientes web para BitTorrent disponibles en FreedomBox: Transmission y Deluge. Tienen funcionalidades similares pero quizá prefieras uno sobre otro.

Transmission es un cliente BitTorrent ligero, famoso por su simplicidad y una configuración por defecto que "símplemente funciona".

3.2. Captura de pantalla

Transmission Web Interface

3.3. Usar Transmission

Tras instalar Transmission está accesible en https://<tu freedombox>/transmission. Cuando trates de acceder a esta página se te pedirá ingresar con tu usuario y contraseña. Por defecto ambas son transmission. Puedes y debes cambiar usuario y contraseña usando el formulario de configuración en Plinth.

3.4. Incidencias conocidas

  • La contraseña inicial se muestra cifrada en el formulario de configuración de Plinth. Esto impide que sea leída o copiada. Sin embargo tras cambiar la contraseña se muestra directamente sin cifrar.

3.5. Consejos

3.5.1. Transferir Descargas desde la FreedomBox

  • Se puede añadir el directorio de descargas de Transmission como directorio compartido en la app "Compartir" y así acceder a tus descargas en este directorio compartido empleando un navegador web.

  • (Avanzado) Si tienes acceso SSH a tu FreedomBox puedes usar sftp para ver el directorio de descargas usando un gestor de archivos o un navegador apropiados (p.ej. dolphin o Konqueror).

4. BitTorrent (Deluge)

4.1. ¿Qué es Deluge?

BitTorrent es un protocolo de comunicaciones para compartir ficheros entre pares (P2P = peer-to-peer). No es anónimo; debes asumir que otros puedan ver qué ficheros estás comprtiendo. Hay 2 clientes web para BitTorrent disponibles en FreedomBox: Transmission y Deluge. Tienen funcionalidades similares pero quizá prefieras uno sobre otro.

Deluge es un cliente BitTorrent altamente configurable. Se puede añadir funcionalidad adicional instalando extensiones (plugins).

4.2. Captura de pantalla

Deluge Web UI

4.3. Configuración Inicial

Tras instalar Deluge se puede acceder apuntando tu navegador a https://<tu freedombox>/deluge. Necesitarás introducir una contraseña para ingresar:

Deluge Login

La contraseña inicial es deluge. La primera vez que ingreses Deluge te preguntará si quieres cambiarla. Debes cambiarla por algo más dificil de adivinar.

A continuación se te mostrará el administrador de conexiones. Haz clic sobre la primera entrada (Offline - 127.0.0.1:58846). Luego pulsa "Arrancar el Demonio" para que arranque el servicio Deluge service que se ejecutará en segundo plano.

Deluge Connection Manager (Offline)

Ahora debería poner "Online". Haz clic en "Conectar" para completar la configuración.

Deluge Connection Manager (Online)

En este punto ya estás usando Deluge. Puedes hacer más cambios en las Preferencias o añadir un fichero o una URL de torrent.

5. Block Sandbox (Minetest)

Minetest es un Block Sandbox multijugador para mundos infinitos. Este módulo permite ejecutar el servidor Minetest en esta FreedomBox, en su puerto por defecto (30000). Para conectar al servidor se necesita un cliente de Minetest.

5.1. Enrutado de Puertos

Si tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos en tu router para los siguientes puertos de Minetest:

  • UDP 30000

6. Agenda (Radicale)

Con Radicale puedes sincronizar tus calendarios, listas de tareas y agendas de contactos personales entre varios ordendores, tabletas, y/o teléfonos inteligentes y compartirlos con tus amistades. Todo sin tener que permitir a terceros que accedan a tu información privada.

6.1. ¿Porque debería usar Radicale?

Usando Radicale puedes evitar servicios centralizados como Google Calendar o Apple Calendar (iCloud) que explotan los datos de tus eventos y conexiones sociales.

6.2. ¿Cómo configurar Radicale?

Primero el servidor Radicale necesita estar activado en tu FreedomBox.

  • En el servicio FreedomBox (Plinth)

    1. selecciona Apps

    2. ve a Radicale (Calendario y Libreta de contactos) e

    3. instala la aplicación. Tras completar la instalación asegúrate de que la aplicación está marcada como "habilitada" en el interfaz de FreedomBox. Habilitar la aplicación arranca el servidor CalDAV/CardDAV Radicale.

    4. define los permisos de acceso:
      • Solo el dueño de un calendario/libreta de contactos puede ver o hacer cambios
      • Cualquier usuario puede ver cualquier calendario/libreta de contactos pero solo el dueño puede hacer cambios
      • Cualquier usuario puede ver o hacer cambios en cualquier calendario/libreta

Nota: Solo los usuarios dados de alta en FreedomBox pueden acceder a Radicale.

Radicale-Plinth.png

Si quieres compartir un calendario solo con algunos usuarios determinados la manera más simple es crear un nuevo usuario común para ellos y compartir con ellos el nombre del usuario común y su contraseña.

Radicale proporciona un interfaz web básico que solo soporta crear calendarios y libretas nuevos. Para añadir eventos o contactos se necesita una aplicación cliente soportada externa.

radicale_web.png

  • Crear calendarios y/o libretas usando el interfaz web
    1. Visita https://<dirección_IP_o_dominio_de_tu_servidor>/radicale/

    2. Ingresa con tu cuenta de FreedomBox

    3. Selecciona "Crear nuevo calendario o libreta"
    4. Proporciona un título y selecciona el tipo
    5. Opcionalmente, proporciona una descripción o selecciona un color
    6. Haz clic en "Crear"
    7. La página mostrará la URL de tu created nuevo calendario o libreta

Ahora abre tu aplicación cliente para crear calendarios y/o libretas nuevos que usarán tu FreedomBox y servidor Radicale. El sitio web de Radicale proporciona una lista de clientes soportados pero no uses las URLs que se mencionan allí; sigue este manual porque FreedomBox usa otra configuración. A continuación se muestran los pasos para 2 ejemplos:

  • Ejemplo de configuración con el cliente Evolution:

    • Calendario
      1. Crea un calendario nuevo
      2. Selecciona el "Tipo" "CalDAV"
      3. Con "CalDAV" seleccionado aparecerán más opciones en el cuadro de diálogo.
      4. URL: https://<dirección_IP_o_dominio_de_tu_servidor>/radicale/<usuario>/<nombre_del_calendario>.ics/ cambiando los elementos marcados entre <> de acuerdo a tu configuración.

        • nota: la / inicial de la ruta es importante.

      5. Habilita "Usar una conexión segura."
      6. Nombre del calendario

        Radicale-Evolution-Docu.png

    • Lista de tareas: Añadir una lista de tareas es prácticamente igual que con un calendario.
    • Contactos
      • Sigue los mismos pasos anteriores reemplazando CalDAV por WebDAV y la extensión de la libreta por .vcf.

6.3. Sincronizar via Tor

Configurar un calendario en Plinth con Radicale sobre Tor es lo mismo que sobre la red en claro, en resumen:

  1. Cuando hayas ingresado a Plinth desde Tor haz clic en Radicale e introduce un usuario de tu FreedomBox y su contraseña.

  2. Ingresa en el interfaz web de Radicale usando el usuario de tu FreedomBox y su contraseña.

  3. Haz clic en "Crear libreta o calendario nuevo", proporciona un título, selecciona un tipo y haz clic en "Crear".
  4. Anota la URL, p.ej. https://<direccion_onion_de_tu_servidor>.onion/radicale/<usuario>/<código_del_calendario>/ cambiando los elementos marcados entre <> de acuerdo a tu configuración.

Estas instrucciones son para Thunderbird/Lightning. Nota: necesitarás estar conectado a Tor con el Tor Browser Bundle.

  1. Abre Thunderbird, la extensión (add-on) Torbirdy y reinicia Thunderbird. (Quizá no haga falta.)

  2. En el interfaz Lightning, en el panel izquierdo bajo Calendario haz clic con el botón derecho del ratón y selecciona "Nuevo calendario".

  3. Selecciona "En la red" como localización de tu calendario.
  4. Selecciona "CalDAV" copia la URL, p.ej., https://<direccion_onion_de_tu_servidor>.onion/radicale/<usuario>/<código_del_calendario>/. como localización cambiando los elementos marcados entre <> de acuerdo a tu configuración.

  5. Proporciona un nombre, etc. Haz clic en "Siguiente". Tu calendario está ahora sincronizando con tu FreedomBox a través de Tor.

  6. Si no has generado un certificado con "Let's Encrypt" para tu FreedomBox quizá necesites seleccionar "Confirmar Excepción de Seguridad" cuando se te indique.

6.4. Sincronizar con tu teléfono Android

Hay varias Apps que admiten integración con el servidor Radicale. Este ejemplo usa DAVx5, que está disponible p.ej. en F-Droid. Si también quieres usar listas de tareas hay que instalar primero la app compatible OpenTasks.

Sigue estos pasos para configurar tu cuanta con el servidor Radicale de tu FreedomBox.

  1. Instala DAVx5.

  2. Crea una cuenta nueva en DAVx5 haciendo clic en el botón flotante [+].
  3. Selecciona la 2ª opción como se muestra en la primera imagen más abajo e introduce la URL base https://<dirección_de_tu_freedombox>/radicale/<usuario>/ (no olvides la / del final). DAVx5 averiguará las cuentas CalDAV y WebDAV del usuario.

  4. Sigue este video del FAQ de DAVx5 para aprender cómo importar tus contactos existentes a Radicale.

Sincronizar contactos

  1. Haz clic en los menús de hamburguesa de CalDAV y CardDAV y selecciona "Refrescar ..." en caso de cuentas existentes o "Crear ..." en caso de cuentas nuevas (ver la 2ª captura de pantalla más abajo).

  2. Marca las cajas de las libretas y/o contactos que quieras sincronizar y haz clic en el botón de sincronización de la cabecera. (ver la 3ª captura de pantalla más abajo)

DAVx5 account setup DAVx5 refresh DAVx5 account sync

6.5. Usuarios Avanzados

6.5.1. Compartir recursos

Arriba se mostrá una manera fácil de crear un recurso para un grupo de gente creando una cuenta dedicada común. Aquí de describe un método alternativo con el que se otorga acceso a un calendario a 2 usuarios Usuario1 y Usuario2. Esto requiere acceso por SSH a la FreedomBox.

  1. crea un archivo /etc/radicale/rights

    • [friends_calendar]
      user: ^(Usuario1|Usuario2)$
      collection: ^.*/calendario_de_mis_amigos.ics$
      permission: rw
      
      # Dar permisos de escritura a los dueños:
      [owner-write]
      user: .+
      collection: ^%(login)s/.+$
      permission: rw
    • [calendario_de_mis_amigos] es solo un identificador, puede ser cualquier nombre.

    • La sección [owner-write] asegura que los dueños tengan acceso a sus propios archivos.

  2. Edita el archivo /etc/radicale/config y haz los siguientes cambios en la sección [rights)

    • [rights]
      type = from_file
      file = /etc/radicale/rights
  3. Reinicia el servidor Radicale o la FreedomBox

6.5.2. Importar archivos

Si estás usando un archivo de contactos exportado desde otro servicio o aplicación hay que copiarlo a: /var/lib/radicale/collections/<usuario>/<nombre_del_archivo_de_contactos>'.vcf.

6.6. Migrar desde Radicale versión 1.x a versión 2.x

En Febrero de 2019 se actualizó Radicale en las versiones "en pruebas" (testing) de Debian desde la versión 1.x a la 2.x. La versión 2.x es mejor pero incompatible con los datos y la configuración empleados en la 1.x. El mecanismo automático de actualización de FreedomBox que emplean las actualizaciones desatendidas no actualiza automaticamente la version 2.x de Radicale debido a cambios en los archivos de configuración. No obstante la version 19.1 de FreedomBox, disponible en en las versiones "en pruebas" (testing) desde el 23 de Febrero de 2019, realizará la migración de los datos y la configuración a la versión 2.x de Radicale. No se requiere ninguna acción por parte de los usuarios típicos. Ocurrirá automáticamente.

Si por algún motivo necesitas ejecutar a mano apt dist-upgrade en tu máquina Radicale se actualizará a 2.x y entonces tu FreedomBox no podrá ejecutar esta actualización (ya que el proyecto de origen decidió eliminar las herramientas de migración de la versión 2.x de Radicale). Para evitar esta situación se recomienda el siguiente procedimiento para actualizar.

sudo su -
apt hold radicale
apt dist-upgrade
apt unhold radicale

En cualquier caso, si ya has actualizado a Radicale 2.x sin ayuda de FreedomBox necesitas realizar la migración de los datos y la configuración por tí mismo. Sigue este procedimiento:

sudo su -
tar -cvzf /root/radicale_backup.tgz /var/lib/radicale/ /etc/radicale/ /etc/default/radicale
apt install -y python-radicale
python -m radicale --export-storage=/root/radicale-migration
cp -dpR /root/radicale-migration/collection-root /var/lib/radicale/collections/collection-root/
(elimina este directorio si ya existe. O mezcla los contenidos.)
chown -R radicale:radicale /var/lib/radicale/collections/collection-root/
apt remove -y python-radicale
if [ -f /etc/radicale/config.dpkg-dist ] ; then cp /etc/radicale/config.dpkg-dist /etc/radicale/config ; fi
if [ -f /etc/default/radicale.dpkg-dist ] ; then cp /etc/default/radicale.dpkg-dist /etc/default/radicale ; fi
(Cuando FreedomBox 19.1 está disponble ve al interfaz web de FreedomBox y vuelve a configurar tu preferencia de compartición de calendario si no se muestra bien porque se habrá perdido durante la operación.)

Notas:

  • python-radicale es un paquete antigüo de la versión 1.x de Radicale que sigue disponible en las versiones "en pruebas" (testing) de Debian. Esto es un hack alternativo para emplear la funcionalidad --export-storage que es responsable de la migración de datos. Por desgracia esta funcionalidad ya no está disponible en Radicale 2.x.

  • Los ficheros que acaban en .dpkg-dist solo existirán si has elegido "Conservar tu versión actualmente instalada" cuando se te preguntó durante la actualización a Radicale 2.x. El procedimiento anterior sobrescribirá la configuración antigüa con una nueva. No se necesitan cambios a los 2 ficheros de configuración salvo que hayas cambiado la preferencia de compartición de calendario.

  • Nota: Durante la migración tus datos permanecen a salvo en el directorio /var/lib/radicale/collections. Los datos nuevos se crearán y usarán en el directorio /var/lib/radicale/collections/collections-root/.

  • El comando tar hace una copia de seguridad de tu configuración y tus datos en /root/radicale_backup.tgz por si haces o algo va mal y quieres deshacer los cambios.

6.7. Resolución de Problemas

1. Si estás usando FreedomBox Pioneer Edition o instalando FreedomBox sobre Debian Buster Radicale podría no estar operativo inmediatamente después de la instalación. Esto se debe a un defecto ya corregido posteriormente. Para superar el problema actualiza FreedomBox haciendo clic en 'Actualización Manual' desde la app 'Actualizaciones'. Otra opción es simplemente esperar un par de días y dejar que FreedomBox se actualice solo. Después instala Radicale. Si Radicale ya está instalado deshabilitalo y rehabilitalo después de que se complete la actualización. Esto arreglará el problema y dejará a Radicale trabajando correctamente.

7. Servidor de Mensajería Instantánea (chat) (ejabberd)

7.1. ¿Qué es XMPP?

XMPP es un protocolo federatedo para Mensajería Instantánea. Esto significa que los usuarios que tengan cuenta en un servidor XMPP pueden conversar con los usuarios que estén en el mismo u otros servidores XMPP. XMPP se puede usar también para llamadas de voz y vídeo si los clientes las soportan.

Con XMPP las conversaciones se pueden securizar de 2 maneras:

  1. TLS: Esto securiza la conexión entre el cliente y el servidor o entre 2 servidores. Esto está áltamente recomendado y ya debería estar soportado por todos los clientes.
  2. Punto a punto: Esto securiza los mensajes enviados entre los clientes de modo que ni siquiera el servidor pueda ver los contenidos. El último protocolo y también el más cómodo se llama OMEMO pero solo lo soportan algunos clientes. Algunos clientes que no soportan OMEMO podrían soportar otro protocolo llamado OTR. Para que funcione ambos clientes tienen que ser compatibles con el mismo protocolo.

7.2. Estableciendo un Nombre de Dominio

Para que funcione XMPP tu FreedomBox necesita tener Nombre de Dominio accesible desde Internet. Puedes leer acerca de la obtención de un Nombre de Dominio en la sección DNS Dinámico de este manual.

Una vez tengas ya tu Nombre de Dominio puedes decirle a tu FreedomBox que lo use dándolo de alta en la configuración del sistema.

  • Nota: Tras cambiar tu Nombre de Dominio la página del servidor (XMPP) de mensajería instantánea podría mostrar que el servicio no está funcionando. En un minuto más o menos se actualizará y lo volverá a mostrar operativo.

Ten en cuenta que de momento PageKite no soporta el protocolo XMPP.

7.3. Registrando los usuarios XMPP mediante SSO

Actualmente todos los usuarios creados con Plinth podrán ingresar al servidor XMPP. Puedes añadir usuarios nuevos con el módulo de "Usuarios y Grupos del Sistema". Los grupos seleccionados para el usuario nuevo no importan.

7.4. Usar el cliente web

Tras completar la instalación del módulo XMPP el cliente web JSXC para XMPP está accesible en https://<tu_freedombox>/plinth/apps/xmpp/jsxc/. Automáticamente comprobará la conexión del servidor BOSH al nombre de dominio configurado.

7.5. Usar un cliente móvil o de escritorio

Hay disponibles clientes XMPP para varias platformas móviles y de escritorio.

7.6. Enrutado de Puertos

Si tu FreedomBox está detrás de un router tendrás que configurar en él la redirección de puertos. Redirije los siguientes puertos de XMPP:

  • TCP 5222 (cliente-a-servidor)
  • TCP 5269 (servidor-a-servidor)

8. Servidor de Mensajería Instantánea (chat) (Matrix Synapse)

8.1. ¿Qué es Matrix?

Matrix es un estándar abierto para comunicaciones sobre IP en tiempo real interoperables y descentralizadas. Synapse es la implementación de referencia de un servidor Matrix. Se puede usar para montar mensajería instantánea sobre FreedomBox para albergar grandes salones de chat, comunicaciones cifradas punto a punto y llamadas de audio/vídeo. Matrix Synapse es una aplicación federada en la que puede haber salas de chat en un servidor y los usuarios de cualquier otro servidor de la red federada pueden unirse a ellas. Más información acerca de Matrix.

Disponible desde: versión 0.14.0

8.2. ¿Cómo acceder a tu servidor Matrix Synapse?

Para acceder al servidor Matrix Synapse recomendamos el cliente Riot. Puedes descargar Riot para escritorio. Las aplicaciones para Android e iOS están disponibles en sus tiendas (app stores) respectivas.

8.3. Configurar Matrix Synapse en tu FreedomBox

Para habilitar Matrix, primero navega a la página de tu servidor de chat (Matrix Synapse) e instálalo. Matrix necesita un nombre de dominio válido configurado. Tras la instalación, se te pedirá que lo configures seleccionandolo de entre un menú desplegable con dominios disponibles. Los dominios se configuran en la página Sistema -> Configuración. Tras configurar un dominio verás que el servicio se está ejecutando. El servicio estará accesible en el dominio de FreedomBox configurado. Todos los usuarios registrados tendrán sus IDs Matrix @usuario:dominio. Actualmente no podrás cambiar el dominio una vez esté configurado.

8.4. Federarse con otras instancias Matrix

Podrás interactuar con cualquier otra persona que ejecute otra instancia de Matrix. Esto se hace simplemente iniciando una conversación con ellos usando su matrix ID que seguirá el formato @su-usuario:su-dominio. También podrás unirte a salas de otros servidores y tener llamadas de audio/video con contactos de otros servidores.

8.5. Uso de Memoria

El servidor de referencia Synapse implementado en Python es conocido por consumir mucha RAM, especialmente al cargar salones grandes con miles de participantes como #matrix:matrix.org. Se recomienda evitar unirse a estos salones si tu dispositivo FreedomBox solo tiene 1 GiB RAM o menos. Debería ser seguro unirse a salas con hasta 100 participantes. El equipo de Matrix está trabajando en una implementación de servidor Matrix escrita en Go llamada Dendrite que debería tener mejor rendimiento en entornos con poca memoria.

Algunos salones públicos muy grandes de la red Matrix están también disponibles como canales IRC (p.ej. #freedombox:matrix.org está disponible también como #freedombox en irc.debian.org). Es mejor usar IRC en vez de Matrix para estos salones tán grandes. Puedes unirte a los canales de IRC usando Quassel.

9. Cliente de Correo Electrónico (Email) (Roundcube)

9.1. ¿Qué es Roundcube?

Roundcube es un cliente de correo electrónico (email) para navegador con un interfaz de usuario parecido a una aplicación de escritorio. Admite varios lenguajes. Roundcube usa el protocolo de acceso a mensajes de Internet (IMAP = Internet Message Access Protocol) para acceder a los correos en un servidor remoto. Soporta MIME para enviar archivos adjuntos y en particular proporciona libreta de contactos, gestión de carpetas, búsquedas de mensajes y verificación ortográfica.

9.2. Usar Roundcube

Tras instalar Roundcube se puede acceder a él en https://<tu_freedombox>/roundcube. Introduce tu usuario y contraseña. El usuario de muchos servicios de correo electrónico suele ser la propia dirección completa, como usuario_de_ejemplo@servicio_de_ejemplo.org, no solo el usuario usuario_de_ejemplo. Introduce la dirección del servidor IMAP de tu servicio de correo electrónico en el campo Servidor. Puedes probar a poner aquí tu nombre de dominio como servicio_de_ejemplo.org si la dirección es usuario_de_ejemplo@servicio_de_ejemplo.org y si esto no funciona consulta la dirección del servidor IMAP en la documentación de tu proveedor de correo electrónico. Se recomienda encarecidamente usar una conexión cifrada a tu servidor IMAP. Para ello inserta el prefijo "imaps://" al principio de la dirección del servidor IMAP. Por ejemplo, imaps://imap.servicio_de_ejemplo.org.

Logging into your IMAP server

9.3. Usar Gmail con Roundcube

Si quieres usar Roundcube con tu cuenta Gmail necesitas habilitar primero el ingreso con contraseña en las preferencias de tu cuenta Google porque Gmail no va a permitir por defecto que ingresen aplicaciones mediante contraseña. Para hacerlo visita las preferencias de la Cuenta Google y habilita Apps Menos seguras. A continuación ingresa en Roundcube introduciendo tu dirección de Gmail como Usuario y tu contraseña. En el campo servidor pon imaps://imap.gmail.com.

Logging into Gmail

10. Compartición de Archivos (Coquelicot)

10.1. Acerca de Coquelicot

Coquelicot es aplicación web para compartir archivos enfocada a proteger la privacidad de sus usuarios. El principio básico es simple: los usuarios pueden subir un archivo al servidor y a cambio reciben una URL única para descargarlo que se puede compartir con terceros. Además se puede establecer una contraseña para reforzar el acceso.

Más información acerca de Coquelicot en su LEEME

Disponible desde: versión 0.24.0

10.2. Cuando usar Coquelicot

El mejor uso de Coquelicot es para compartir rápidamente un archivo suelto. Si quieres compartir una carpeta...

  • ...para usar y tirar, comprime la carpeta y compartela como archivo con Coquelicot
  • ...que deba mantenerse sincronizada entre ordenadores usa mejor Syncthing

Coquelicot también puede proporcionar un grado de privacidad razonable. Si se necesita anonimato mejor sopesas emplear la aplicación de escritorio Onionshare.

Como Coquelicot carga todo el archivo al servidor tu FreedomBox consumirá ancho de banda tanto para la subida como para la descarga. Para archivos muy grandes sopesa compartirlos creando un fichero BitTorrent privado. Si se necesita anonimato usa Onionshare. Es P2P y no necesita servidor.

10.3. Coquelicot en FreedomBox

Con Coquelicot instalado puedes subir archivos a tu servidor FreedomBox y compartirlos en privado.

Tras la instalación la página de Coquelicot ofrece 2 preferencias.

  1. Contraseña de Subida: Actualmente y por facilidad de uso Coquelicot está configurado en FreedomBox para usar autenticación simple por contraseña. Recuerda que se trata de una contraseña global para esta instancia de Coquelicot y no tu contraseña de usuario para FreedomBox. Tienes que acordarte de esta contraseña. Puedes establecer otra en cualquier momento desde el interfaz Plinth.

  2. Tamaño Máximo de Archivo: Puedes alterar el tamaño máximo de los archivos a transferir mediante Coquelicot usando esta preferencia. El tamaño se expresa en Mebibytes y el máximo solo está limitado por el espacio en disco de tu FreedomBox.

10.4. Privacidad

Alguien que monitorice tu tráfico de red podría averiguar que se está transfiriendo un archivo en tu FreedomBox y posiblemente también su tamaño pero no sabrá su nombre. Coquelicot cifra los archivos en el servidor y sobrescribe los contenidos con 0s al borrarlos, eliminando el riesgo de que se desvelen los contenidos del fichero si tu FreedomBox resultara confiscada o robada. El riesgo real que hay que mitigar es que además del destinatario legítimo un tercero también descargue tu fichero.

10.4.1. Compartir mediante mensajería instantánea

Algunas aplicaciones de mensajería instantánea con vista previa de sitios web podrían descargar tu fichero para mostrarla (su vista previa) en la conversación. Si configuras la opción de descarga única para un archivo podrías notar que la aplicación de mensajería consume la única descarga. Si compartes mediante estas aplicaciones usa una contraseña de descarga en combinación con la opción de descarga única.

10.4.2. Compartir en privado enlaces de descarga

Se recomienda compartir las contraseñas y los enlaces de descarga de tus archivos por canales cifrados. Puedes evitar todos los problemas anteriores con las vistas previas de la mensajería instantánea símplemente empleando aplicaciones de mensajería que soporten conversaciones cifradas como Riot con Matrix Synapse o XMPP (servidor ejabberd en FreedomBox) con clientes que soporten cifrado punto a punto. Envía la contraseña y el enlace de descarga separados en 2 mensajes distintos (ayuda que tu aplicación de mensajería soporte perfect forward secrecy como XMPP con OTR). También puedes compartir tus enlaces por correo electrónico cifrado con PGP usando Thunderbird.

11. Compartición de Archivos (MLDonkey)

11.1. ¿Qué es MLDonkey?

MLDonkey es una aplicación libre y multiprotocolo para compartir archivos entre pares (P2P) que ejecuta un servidor back-end sobre muchas plataformas. Se puede controlar mediante algún interfaz front-end, ya sea web, telnet o cualquier otro de entre una docena de programas cliente nativos.

Originalmente era un cliente Linux para el protocolo eDonkey pero ahora se ejecuta en multiples sabores de Unix y derivados, OS X, Microsoft Windows y MorphOS. Y soporta muchos protocolos P2P, incluyendo ED2K (y Kademlia sobre Overnet), BitTorrent, DC++ y más.

Más información acerca de MLDonkey en el Wiki del Proyecto MLDonkey

Disponible desde: versión 0.48.0

11.2. Captura de Pantalla

MLDonkey Web Interface

11.3. Usar el Interfaz Web MLDonkey

Tras instalar MLDonkey su interfaz web está accesible a los usuarios de los grupos ed2k y admin en https://<tu_freedombox>/mldonkey.

11.4. Usar el Interfaz para Escritorio/Móvil

Se pueden usar muchas aplicaciones de escritorio y móviles para controlar a MLDonkey. El servidor MLDonkey estará ejecutándose siempre en la FreedomBox y (cargará o) descargará archivos y los mantendrá almacenados incluso cuando tu máquina local esté apagada o desconectada del MLDonkey de FreedomBox. Por restricciones de acceso via SSH a la FreedomBox solo los usuarios del grupo admin pueden acceder a su MLDonkey.

  1. Crea un usuario nuevo en el grupo admin o usa uno que ya esté allí.
  2. En tu máquina de escritorio abre una terminal y ejecuta el siguiente comando. Para este paso se recomienda que configures y uses claves SSH en vez de contraseñas.
    $ ssh -L 4001:localhost:4001 -N usuario_de_ejemplo@ejemplo.freedombox.mola
  3. Arranca la aplicación gráfica y conéctala a MLDonkey como si MLDonkey se estuviera ejecutando en la máquina local de escritorio. Cuando hayas terminado mata el proceso SSH pulsando Control-C.

Para más información lee acerca de los túneles SSH en la documentación MLDonkey.

12. Sincronización de Archivos (Syncthing)

Con Syncthing instalado en tu FreedomBox puedes sincronizar contenido desde otros dispositivos a tu FreedomBox y vice-versa. Por ejemplo puedes mantener sincronizadas las fotos tomadas desde tu teléfono móvil con tu FreedomBox.

Nota: Syncthing está disponible en FreedomBox desde la versión de Plinth 0.14.

Syncthing es una solución de sincronización entre pares, no una de tipo cliente-servidor. Esto implica que FreedomBox no es realmente el servidor y tus otros dispositivos no son sus clientes. Desde la perspectiva de Syncthing todos son dispositivos equivalentes. Puedes emplear Syncthing para sincronizar tus archivos entre cualquiera de tus dispositivos. La ventaja que aporta FreedomBox consiste en que como es un servidor está encendida (casi) siempre. Supón que quieres sincronizar las fotos de tu teléfono con tu portátil. Si sincronizas tu teléfono con FreedomBox el portátil podrá obtenerlas desde la FreedomBox cuando vuelva a conectarse. No necesitas preocuparte de cuando se conectan los otros dispositivos. Si tu FreedomBox es uno de los dispositivos configurados con la carpeta compartida de Syncthing puedes estár tranquilo que tus otros dispositivos se sincronizarán en cuanto se conecten.

Tras instalarlo sigue estas instrucciones del proyecto Syncthing: Arrancando.

Syncthing permite compartir selectivamente carpetas individuales. Antes de compartir los dispositivos tienen que estar emparejados leyendo códigos QR o introduciendo manualmente identificadores de dispositivo. Syncthing tiene un servicio de autodescubrimiento para identicar fácilmente a los otros dispositivos de la misma subred que tengan Syncthing instalado.

Para acceder al cliente web de la instancia Syncthing que se ejecuta en tu FreedomBox, usa la ruta /syncthing. Actualmente este cliente web está accesible solo a los usuarios de FreedomBox que tengan privilegios de administrador aunque en alguna futura versión podría estarlo a todos los usuarios de FreedomBox.

Syncthing web interface

Syncthing tiene apps Android disponibles en F-Droid y Google Play. También hay disponibles aplicaciones de escritorio multiplataforma.

Para más información acerca de Syncthing visita su sitio web oficial y su documentación.

12.1. Sincronizar via Tor

Syncthing debe sincronizar automáticamente con tu FreedomBox incluso cuando esta solo sea accesible como servicio oculto Tor.

Si quieres enrutar tu cliente Syncthing via Tor configura la variable de entorno all_proxy:

$ all_proxy=socks5://localhost:9050 syncthing

Para más información mira la documentación de Syncthing acerca de el uso de proxies.

13. Servidor Gobby (infinoted)

Infinoted es un servidor de edición colaborativa de textos para Gobby.

Para usarlo descarga el cliente Gobby para escritorio e instalalo. Inicialo, selecciona "Conectar a un Servidor" e introduce el nombre de dominio de tu FreedomBox.

13.1. Redirección de Puertos

Si tu FreedomBox está detras de un router necesitarás configurar la redirección de puertos en tu router. Redirije los siguientes puertos de infinoted:

  • TCP 6523

14. Cliente IRC (Quassel)

Quassel es una aplicación IRC separada en 2 partes: un "núcleo" y un "cliente". Esto permite que el núcleo permanezca conectado a los servidores IRC recibiendo mensajes aunque el cliente esté desconectado. Ejecutando el servicio nucleo de Quassel FreedomBox puede mantenerte siempre en línea. Se pueden usar uno o varios clentes Quassel para conectarse intermitentemente desde escritorios o dispositivos móviles.

14.1. ¿Para qué ejecutar Quassel?

Muchos debates acerca de FreedomBox tienen lugar en el canal IRC irc://irc.debian.org/freedombox. Si tu FreedomBox ejecuta Quassel recolectará todos ellos mientras estás ausente, capturando las respuestas a tus preguntas. Recuerda que el proyecto FreedomBox es mundial y participa gente de casi todos los husos horarios. Usarás tu cliente para conectar al núcleo de Quassel y leer y/o responder cuando tengas tiempo y disponibilidad.

14.2. ¿Cómo activar Quassel?

  • En Plinth
    1. selecciona Aplicaciones

    2. ve a Cliente IRC (Quassel) e

    3. instala la aplicación y asegúrate de que está habilitada

      Quassel Installation

    4. tu núcleo de Quassel se está ejecutando

14.3. Redirección de Puertos

Si tu FreedomBox está detras de un router necesitarás configurar la redirección de puertos en tu router. Redirije los siguientes puertos de Quassel:

  • TCP 4242
  • Ejemplo de configuración en el router:
    • Quassel_PortForwarding.png

14.4. Clientes

Hay disponibles clientes para escritorio y dispositivos móviles para conectar a Quassel.

14.4.1. Escritorio

En un sistema Debian puedes, p. ej. usar quassel-client. Los siguientes pasos describen cómo conectar el Cliente Quassel con el Núcleo de Quassel de tu FreedomBox. La primera vez que te conectes el Núcleo de Quassel se inicializará también.

  1. Abre el Cliente Quassel. Te guiará paso a paso para Conectar con el Núcleo.

    • Connect to Core

  2. Haz clic en el botón Añadir para abrir el diálogo Añadir Cuenta al Núcleo.

    • Add Core Account

  3. Rellena cualquier cosa en el campo Nombre de Cuenta. Introduce el hostname DNS de tu FreedomBox en el campo Hostname. El campo Puerto debe tener el valor 4242. Pon el usuario y la contraseña de la cuenta que quieres crear para conectar con el Núcleo de Quassel en los campos Usuario y Contraseña. Si no quieres que se te pida la contraseña cada vez que arranques el cliente de Quassel marca la opción Recordarme.

  4. Tras pulsar OK en el diálogo Añadir Cuenta al Núcleo deberías ver la cuenta en el diálogo Conectar con el Núcleo.

    • Connect to Core

  5. Selecciona la cuenta del núcleo recién creada y dale a OK para conectar con él.

  6. Si es la primera vez que te conectas a este núcleo verás un aviso de Certificado de Seguridad Desconocido y necesitarás aceptar el certificado del servidor.

    • Untrusted Security Certificate

  7. Selecciona Continuar. Se te preguntará si quieres aceptar el certificado permanentemente. Selecciona Para siempre.

    • Untrusted Security Certificate

  8. Si nadie se ha conectado nunca antes a este Núcleo Quassel antes verás un diálogo por pasos Asistente de Configuración del Núcleo. Selecciona Siguiente.

    • Core Configuration Wizard

  9. En la página Crear Usuario Administrador introduce el usuario y la contraseña que has usado antes para crear la conexión al núcleo. Selecciona Recordar contraseña para que recuerde la contraseña para futuras sesiones. Haz clic en Siguiente.

    • Create Admin User Page

  10. En la página Seleccionar Backend de Almacenamiento selecciona SQLite y haz clic en Confirmar.

    • Select Storage Backend

  11. La configuración del núcleo está completa y verás un asistente Quassel IRC para configurar tus conexiones IRC. Haz clic en Siguiente.

    • Welcome Wizard

  12. A continuación en la página de Configuración de Identidad pon un nombre y múltiples pseudónimos. Te presentarás con estos a otros usuarios de IRC. No es necesario dar tu nombre real. Los pseudónimos múltipes son útiles como suplentes cuando el primero no se pueda usar por cualquier motivo. Tras aportar la información haz clic en Siguiente.

    • Setup Identity

  13. A continuación en la página de Configuración de Conexión de Red pon el nombre de red que quieras y una lista de servidores a los que se deba conectar el Núcleo de Quassel para unirte a esa red IRC (por ejemplo irc.debian.org:6667).

    • Setup Network Connection

  14. Selecciona un servidor de la lista y dale a Editar. En el diálogo Información del Servidor pon el puerto 6697 (consulta la lista real de servidores y sus puertos seguros en la documentación de tu red) y haz clic en Usar SSL. Clic en OK. Esto es para asegurar que la comunicación entre tu FreedomBox y el servidor de la red IRC va cifrada.

    • Server Info Server Info SSL

  15. Ya de vuelta en el diálogo Configuración de Conexión de Red proporciona una lista de canales IRC (como #freedombox) a los que unirte al conectarte a la red. Dale a Grabar y Conectar.

    • Setup Network Connection

  16. Deberías conectar con la red y ver la lista de canales a los que te has unido en el panel Todas las conversaciones de la izquierda de la ventana principal del Cliente Quassel.

    • Quassel Main Window

  17. Selecciona un canal y empieza a recibir mensajes de otros participantes del canal y a enviar los tuyos.

14.4.2. Android

Para dispositivos Android puedes usar p.ej. Quasseldroid obtenido desde F-Droid

  • introduce el núcleo, usuario, etc.
    • Quasseldroid.png

Por cierto el verbo alemán quasseln significa hablar mucho, rajar.

15. Lector de Feeds de Noticias (Tiny Tiny RSS)

Tiny Tiny RSS es un lector y agregador de feeds de noticias (RSS/Atom) diseñado para leer noticias desde cualquier lugar con una experiencia lo más parecida posible a una aplicación de escritorio.

Cualquier usuario creado mediante el interfaz web de FreedomBox podrá ingresar y usar esta app. Cada usuario tiene sus propios feeds, estado y preferencias.

15.1. Usar el interfaz web

Cuando esté habilitado Tiny Tiny RSS estará disponible en la ruta /tt-rss del servidor web. Cualquier usuario creado mediante el interfaz web de FreedomBox podrá ingresar y usar esta app.

Tiny Tiny RSS

15.1.1. Añadir un nuevo feed

1. Ve a la página cuyo feed quieras y copia su enlace RSS/Atom feed.

Selecting feeds

2. Selecciona "Subscribirse al feed.." en el desplegable Acciones.

Subscribe to feed

3. Pega la URL que has copiado en el diálogo que aparece y pulsa el botón Subscribirse.

Subscription dialog box

Dale un minuto a la aplicación para obtener los feeds.

En algunos sitios web el botón de feeds RSS no está claramente visible. En tal caso simplemente pega la URL del sitio web en el diálogo Subscribirse y deja que TT-RSS detecte automáticamente los feeds RSS que haya en la página.

Puedes probarlo ahora con la página principal de WikiNews

Como puedes ver en la imagen seguiente TT-RSS ha detectado y añadido el feed Atom de WikiNews a nuestra lista de feeds.

WikiNews feed added

Si no quieres conservar este feed haz clic con el botón derecho del ratón en el feed de la imagen anterior, selecciona Editar feed y dale a Desubscribir en el diálogo que aparece.

Unsubscribe from a feed

15.1.2. Importar tus feeds desde otro lector

Encuentra en tu lector de feeds previo una opción para Exportar tus feeds a un fichero. Si tiene que elegir entre varios formatos elige OPML. Pongamos que tu fichero de feeds exportados se llama Subscriptions.opml

Haz click en la esquina superior izquierda el menú Acciones y selecciona Preferencias. Se te llevará a otra página.

En la cabecera superior selecciona la 2ª solapa llamada Feeds. Tiene varias secciones y la 2ª se llama OPML. Selecciónala.

OPML feeds page

Para importar tu fichero Subscriptions.opml a TT-RSS,

  1. Haz clic en Examinar... y selecciona el fichero en tu sistema de archivos.

  2. Haz clic en Importar mi OPML

Tras importar se te llevará a la sección Feeds que está en la página encima de la de OPML. Puedes ver que los feeds del lector previo figuran ahora importados en Tiny Tiny RSS. Ahora puedes empezar a usar Tiny Tiny RSS como tu lector principal.

15.2. Usar la app móvil

La app oficial para Android del proyecto Tiny Tiny RSS funciona con el servidor Tiny Tiny RSS de FreedomBox. Se sabe que la aplicación anterior TTRSS-Reader no funciona.

Desafortunadamente la app oficial para Android solo está disponible en la Play Store de Google y no en F-Droid. Todavía puedes obtener el código fuente y compilar el fichero apk por tu cuenta.

Para configurarla, primero instálala y entonces en la página de configuración pon https://<tu_freedombox>/tt-rss-app/ como URL. Pon tu usuario y contraseña en los detalles del Login así como los detalles de Autenticación HTTP. Si tu FreedomBox no tiene un certificado HTTPS válido configuralo para que admita cualquier certificado SSL y cualquier servidor.

Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS

16. Servidor SIP (Repro)

App eliminada

Repro ha sido eliminada de Debian 10 (Buster) y por tanto ya no está disponible en FreedomBox.

17. Proxy SOCKS5 (Shadowsocks)

17.1. ¿Qué es Shadowsocks?

Shadowsocks es un proxy SOCKS5 ligero y seguro, diseñado para proteger tu tráfico Internet. Se puede usar para eludir la censura y los filtros de Internet. Tu FreedomBox puede ejecutar un cliente Shadowsocks que puede conectar con un servidor Shadowsocks. También ejecutará un proxy SOCKS5. Los dispositivos locales pueden conectar con este proxy y sus datos serán cifrados y retransmitidos a través del sevidor Shadowsocks.

Nota: Shadowsocks está disponible en FreedomBox a partir de la versión 0.18 de Plinth.

17.2. Usar el cliente Shadowsocks

La implementación actual de Shadowsocks en FreedomBox solo soporta configurar FreedomBox como cliente Shadowsocks. Este caso de uso sería así:

  • El client de Shadowsocks (FreedomBox) está en una región en la que partes de Internet están bloqueadas o censuradas.

  • El servidor de Shadowsocks está en una región diferente que no tiene esos bloqueos.
  • FreedomBox proporciona un servicio de proxy SOCKS en la red local para que otros dispositivos hagan uso de la conexión Shadowsocks.

En el futuro será posible configurar FreedomBox como servidor Shadowsocks.

17.3. Configurar tu FreedomBox para el cliente Shadowsocks

Para habilitar Shadowsocks primero navega a la página Proxy Socks5 (Shadowsocks) e instalalo.

Servidor: el servidor Shadowsocks no es la IP o la URL de FreedomBox, sino que será otro servidor o VPS configurado como tal (servidor Shadowsocks). También hay algunos servidores Shadowsocks públicos listados en la web, pero sé consciente de que quienquiera que opere el servidor puede ver a dónde van las peticiones y cualquier dato no cifrado que se transmita.

Para usar Shadowsocks una vez instalado configura la URL del proxy SOCKS5 en tu dispositivo, navegador o aplicación como http://<tu_freedombox>:1080/.

18. Red Privada Virtual (OpenVPN)

18.1. ¿Qué es OpenVPN?

OpenVPN proporciona un servicio de red privada virtual a tu FreedomBox. Puedes usar este software para acceso remoto, VPNs punto-a-punto y seguridad Wi-Fi. OpenVPN incluye soporte para direcciones IP dinámicas y NAT.

18.2. Redirección de puertos

Si tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos en tu router. Debes redirigir los siguientes puertos para OpenVPN:

  • UDP 1194

18.3. Configurar

  1. En el menú de apps de Plinth selecciona Red Privada Virtual (OpenVPN) y haz clic en Instalar.

  2. Tras instalar el módulo todavía queda un paso de configuración que puede llevar largo tiempo completar. Haz clic en "Iniciar configuración" para empezar.

    OpenVPN service page

  3. Espera a que termine la configuración. Puede tardar un rato.
  4. Una vez completada la configuración del servidor OpenVPN puedes descargar tu perfil. Esto descargará un archivo llamado <usuario>.ovpn, siendo <usuario> un usuario de FreedomBox. Todos los usuarios de FreedomBox podrán descargar un perfil propio y diferente. Los usuarios que no sean administradores pueden descargar el perfil desde la portada después de ingresar.

  5. El archivo ovpn contiene toda la información que necesita un cliente vpn para conectar con un servidor.
  6. El perfil descargado contiene el nombre de dominio de FreedomBox al que debe conectarse el cliente. Este se obtiene del dominio configurado en la sección 'Configuración' de la página de 'Sistema'. En caso de que tu dominio no esté configurado adecuadamente quizá necesites cambiar este valor después de descargar el perfil. Si tu cliente OpenVPN lo permite puedes hacer esto después de importar el perfil OpenVPN. De lo contrario puedes editar el perfil .ovpn con un editor de texto y cambiar la línea 'remote' para que contenga la dirección IP WAN o el hostname de tu FreedomBox como se indica aquí.

    client
    remote tu.freedombox.org 1194
    proto udp

18.4. Navegar por Internet tras conectar a una VPN

Tras conectar a la VPN el dispositivo cliente podrá navegar por Internet sin más configuración adicional. No obstante una pre-condición para que esto funcione es que necesitas tener al menos 1 interfaz (tarjeta) de red conectado a Internet en la zona Externa del cortafuegos. Usa la página de configuración de redes para editar la zona del cortafuegos con los interfaces (tarjetas) de red del dispositivo.

18.5. Uso

18.5.1. En Android/LineageOS

  1. Visita la página principal de FreedomBox. Ingresa con tu cuenta de usuario. Desde la página principal descarga el perfil OpenVPN. El archivo se llamará <usuario>.ovpn.

    • OpenVPN Download Profile

  2. Descarga un cliente OpenVPN como OpenVPN for Android. Se recomienda el repositorio F-Droid. En la app, selecciona Importar perfil.

    • OpenVPN App

  3. En el diálogo Seleccionar perfil elige el archivo <usuario>.opvn que acabas de descargar. Pon un nombre a la conexión y graba el perfil.

    • OpenVPN import profile

  4. El perfil recién creado aparecera. Si hace falta edita el perfil y pon el nombre de dominio de tu FreedomBox como dirección de servidor.

    • OpenVPN profile created

      OpenVPN edit domain name

  5. Conecta haciendo clic sobre el perfil.
    • OpenVPN connect

      OpenVPN connected

  6. Cuando esté desconecta haciendo clic sobre el perfil.
    • OpenVPN disconnect

18.5.2. En Debian

Instala un cliente OpenVPN para tu sistema

$ sudo apt install openvpn

Abre el archivo ovpn con el cliente OpenVPN.

$ sudo openvpn --config /ruta/a/<usuario>.ovpn

18.6. Comprobar si estás conectado

18.6.1. En Debian

  1. Trata de hacer ping a tu FreedomBox u otros dispositivos de tu red.

  2. El comando ip addr debe mostrar una conexión tun0.

  3. El comando traceroute freedombox.org debiera mostrar la dirección IP del servidor VPN como primer salto.

18.7. Enlaces Externos

https://community.openvpn.net/openvpn

19. Conversaciones de Voz (Mumble)

19.1. ¿Qué es Mumble?

Mumble es un software de conversaciones de voz. Principalmente diseñado para uso con juegos multijugador por red, sirve para hablar con alta calidad de audio, cancelación de ruido, comunicación cifrada, autenticación de interlocutores por defecto mediante par de claves pública/privada, y "asistentes" para configurar tu micrófono, por ejemplo. Se puede marcar a un usuario dentro de un canal como "interlocutor prioritario".

19.2. Usar Mumble

FreedomBox incluye el servidor Mumble. Para conectar con el servidor los usuarios pueden descargar algún cliente de entre los disponibles para plataformas de escritorio y móviles.

19.3. Redirección de Puertos

Si tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos de tu router. Deberías redirigir los siguientes puertos para Mumble:

  • TCP 64738
  • UDP 64738

20. Proxy Web (Privoxy)

Un proxy web actúa como filtro para tráfico web entrante y saliente. Por tanto, puedes ofrecer a los ordenadores de tu red pasar su tráfico internet a través del proxy para eliminar anuncios y mecanismos de rastreo indeseados.

Privoxy es un software para la seguridad, privacidad, y control certero sobre la web. Proporciona una navegación web mucho más controlada (y anónima) que la que te puede ofrecer tu navegador. Privoxy "es un proxy enfocado principalmente al aumento de la privacidad, eliminación de anuncios y morralla, y a liberar al usuario de las restricciones impuestas sobre sus propias actividades" (fuente: Preguntas frecuentes acerca de Privoxy).

20.1. Vídeo

Mira el vídeo acerca de como configurar y usar Privoxy en FreedomBox.

20.2. Configurar

  1. Instala Proxy Web (Privoxy) desde Plinth

    Privoxy Installation

  2. Adapta las preferencias de proxy de tu navegador al hostname (o dirección IP) de tu FreedomBox con el puerto 8118. Observa por favor que Privoxy sólo puede tratar tráfico HTTP y HTTPS. No funciona con FTP u otros protocolos.

    Privoxy Browser Settings

  3. Vé a la página http://config.privoxy.org/ o http://p.p. Si Privoxy está instalado adecuadamente podrás configurarlo en detalle y si no verás un mensaje de fallo.

  4. Si usas un portátil que tenga a veces que conectarse con FreedomBox y Privoxy pasando por routers de terceros quizá quieras instalar una extensión proxy switch que te permite activar y desactivar el proxy más fácilmente.

20.3. Usuarios Avanzados

  1. La instalación de serie debería proporcionar un punto de partida razonable para la mayoría de los usuarios. Indudablemente habrá ocasiones en las que quieras ajustar la configuración. Eso se puede afrontar cuando surja la necesidad.
  2. Con Privoxy activado puedes ver su documentación y los detalles de su configuración en http://config.privoxy.org/ o en http://p.p.

  3. Para habilitar los cambios en estas configuraciones primero tienes que cambiar el valor de habilitar-acciones-de-edición en /etc/privoxy/config a 1. Antes de hacerlo lee el manual con atención, especialmente:

    • No se puede controlar por separado el accesso al editor por "ACLs" o authenticación HTTP, así que cualquiera con acceso a Privoxy puede modificar la configuración de todos los usuarios. Esta opción no se recomienda para entornos con usuarios no confiables. Nota que un código de cliente malicioso (p.ej. Java) también puede usar el editor de acciones y no deberías habilitar estas opciones a no ser que entiendas las consecuencias y estés seguro de que los navegadores están correctamente configurados.

  4. Ahora encontrarás un botón EDITAR en la pantalla de configuración de http://config.privoxy.org/.

  5. La Guía rápida es un buen punto de partida para leer acerca de cómo definir reglas de bloqueo y filtrado propias.

21. Búsqueda Web (Searx)

21.1. Acerca de Searx

Searx es un metabuscador. Un metabuscador agrega los resultados de varios buscadores y los presenta en un interfaz unificado.

Lee más acerca de Searx en su sitio web oficial.

Disponible desde: versión 0.24.0

21.2. Captura de pantalla

Searx Screenshot

21.3. Vídeo

Searx installation and first steps (14 MB)

21.4. ¿Por qué usar Searx?

21.4.1. Personalización y Burbujas por Filtrado

Los buscadores tienen la capacidad de perfilar a sus usuarios y les sirven los resultados más relevantes para ellos, encerrandoles en burbujas por filtrado y distorsionando la visión que la gente tiene del mundo. Los buscadores tienen un incentivo financiero para servir publicidad interesante a sus usuarios, ya que incrementa la probabilidad de que hagan clic en los anuncios.

Un metabuscador es una solución posible a este problema, ya que agrega resultados de multiples buscadores puenteando así los intentos de personalización de los buscadores.

Searx evita almacenar cookies de buscadores para eludir traceos y perfilados de buscadores.

21.4.2. Filtrado de publicidad

Searx filtra anuncios de los resultados de búsqueda antes de servirlos al usuario, con lo que mejora la relevancia de tus resultados y te evita distracciones.

21.4.3. Privacidad

Searx usa por defecto HTTP POST en vez de GET para enviar tus consultas de búsqueda a los buscadores, así que si alguien espía tu tráfico no podrá leerlas. Tampoco se almacenarán las consultas en el histórico de tu navegador.

Nota: Searx usado desde la barra (omnibar) del navegador Chrome hará peticiones GET en vez de POST.

21.5. Searx en FreedomBox

  • En FreedomBox Searx usa las credenciales únicas de Single Sign On. Esto implica que tienes que haber ingresado en tu FreedomBox con el navegador en el que estás usando Searx.

  • Se puede acceder fácilmente a SearX a través de Tor.
  • Se puede añadir a Searx a la barra de buscadores del navegador Firefox. Mira la Ayuda de Firefox acerca de este asunto. Una vez esté Searx añadido también podrás establecerlo como tu buscador por defecto.

  • Searx también ofrece resultados de búsqueda en formatos csv, json y rss, que se pueden usar desde scripts para automatizar algunas tareas.

22. Wiki (MediaWiki)

22.1. Acerca de MediaWiki

MediaWiki es el software de base de la gama de wikis Wikimedia.

Lee más acerca de MediaWiki en Wikipedia

Disponible desde: versión 0.20.0

22.2. MediaWiki en FreedomBox

MediaWiki viene configurado en FreedomBox para ser públicamente legible y editable en privado. Sólo los usuarios ingresados pueden editar el wiki. Esta configuración evita publicidad indeseada (spam) y otros vandalismos en tu wiki.

22.2.1. Administración de Usuarios

Solo el administrador de MediaWiki (usuario "admin") puede crear los usuarios. El usuario "admin" puede usarse también para restablecer contraseñas de usuarios MediaWiki. Si se olvida la contraseña del administrador se puede restablecer desde la página de MediaWiki del interfaz Plinth.

22.2.2. Casos de uso

MediaWiki es muy versátil y se puede emplear para muchos usos creativos. También es áltamente adaptable y viene con un montón de extensiones (plugins) y estilos estéticos.

22.2.2.1. Repositorio Personal de Conocimiento

El MediaWiki de FreedomBox puede ser tu propio repositorio de conocimiento personal. Como MediaWiki tiene buen soporte multimedia puedes escribir notas, almacenar imágenes, crear listas de comprobación, guardar referencias y enlaces, etc. de manera organizada. Puedes almacenar el conocimiento de una vida en tu instancia de MediaWiki.

22.2.2.2. Wiki Comunitario

Una comunidad de usuarios podría usar MediaWiki como su repositorio común de conocimiento y material de referencia. Se puede emplear como un tablón de anunciós de universidad, como un servidor de documentación para una pequeña empresa, como un bloc de notas para grupos de estudio o como un wiki de fans al estilo de wikia.

22.2.2.3. Sitio Web Personal implementado mediante un Wiki

Varios sitios web de internet son sólo instancias de MediaWiki. El MediaWiki de FreedomBox es de solo lectura para visitantes. Se puede por tanto adaptar para servir como tu sitio web y/o blog personal. El contenido de MediaWiki es fácil de exportar y puede moverse después a otro motor de blogs.

22.2.3. Editar Contenido del Wiki

22.2.3.1. Editor Visual

Como su nombre indica, el nuevo Editor Visual de MediaWiki ofrece un interfaz de usuario visual (WYSIWYG) para crear páginas del wiki. Por desgracia aún no está disponible en la versión actual de MediaWiki en Debian. Una solución temporal posible sería escribir tu contenido con el Editor Visual del borrador de Wikipedia, cambiar el modo de edición a texto y copiarlo a tu wiki.

22.2.3.2. Otros Formatos

No es imprescindible que aprendas el lenguaje de formateo de MediaWiki. Puedes escribir en tu formato favorito (Markdown, Org-mode, LaTeX etc.) y convertirlo al formato de MediaWiki usando Pandoc.

22.2.3.3. Cargar Imágenes

Se puede habilitar la carga de imágenes desde FreedomBox versión 0.36.0. También puedes usar directamente imágenes de Wikimedia Commons mediante una funcionalidad llamada Instant Commons.

23. Wiki y Blog (Ikiwiki)

23.1. ¿Qué es Ikiwiki?

Ikiwiki convierte páginas wiki a páginas HTML listas para publicar en un sitio web. En particular, proporciona blogs, podcasts, calendarios y una amplia selección de extensiones (plugins).

23.2. Inicio rápido

Tras instalar la app en el interfaz de administración de tu FreedomBox:

  • Ve a la sección Crear y crea un wiki o un blog.

  • Vuelve a la sección Configurar y haz clic en el enlace /ikiwiki.

  • Haz clic en el nombre de tu nuevo wiki o blog bajo Directorio Padre.

  • Disfruta de tu nueva página de publicación.

23.3. Crear un wiki o blog

Puedes crear un wiki o blog para albergarlo en tu FreedomBox mediante la página Wiki y Blog (Ikiwiki) de Plinth. La primera vez que visites esta página te pedirá instalar paquetes requiridos por Ikiwiki.

Tras completar la instalación de paquetes selecciona la solapa Crear. Puedes elegir el tipo: Wiki o Blog. Teclea también un nombre para el wiki o blog, y el usuario y contraseña para su cuenta de administrador. Al hacer clic en Actualizar configuración verás el wiki/blog añadido a tu lista. Observa que cada wiki/blog tiene su propia cuenta de administrador.

ikiwiki: Create

23.4. Acceder a tu wiki o blog

Desde la página de Wiki y Blog (Ikiwiki) selecciona la solapa Administrar y verás una lista de tus wikis y blogs. Haz clic en un nombre para navegar a ese wiki o blog.

ikiwiki: Manage

Desde aquí, si le das a Editar o a Preferencias se te llevará a una página de ingreso. Para ingresar con la cuenta de administrador que creaste antes selecciona la solapa Otros, introduce el usuario y la contraseña y haz clic en Ingresar.

23.5. Ingreso único de usuarios (SSO)

Se puede dar permiso para editar a otros usuarios de FreedomBox además de al administrador del wiki/blog. Sin embargo no tendrán todos los permisos del administrador. Podrán añadir o editar páginas pero no podrán cambiar la configuración del wiki.

Para añadir a un usuario al wiki ve a la página Usuarios y Grupos de Plinth (bajo Configuración del Sistema, el icono del engranaje de la esquina superior derecha de la página). Crea o modifica un usuario y añádele al grupo wiki. (Los usuarios del grupo admin tendrán también acceso al wiki.)

Para ingresar como usuario FreedomBox ve a la página de ingreso del wiki/blog y selecciona la solapa Otros. Luego haz clic en el botón Ingresar con autenticación HTTP. El navegador mostrá un diálogo emergente en el que podrás introducir el usuario y la contraseña del usuario de FreedomBox.

23.6. Añadir usuarios FreedomBox como admnistradores de wiki

  1. Ingresa al wiki con su cuenta de administrador.
  2. Haz clic en Preferencias y luego en Configurar.

  3. Debajo de Principal, en usuarios administradores de algún wiki, añade el nombre de un usuario de FreedomBox.

  4. (Opcional) Desmarca la opción habilitar autenticación mediante contraseña de extensión de autenticación: autenticación mediante contraseña. (Nota: Esto deshabilitará el ingreso con la cuenta de administrador anterior. Solo se podrá ingresar mediante ingreso único usando autenticación HTTP.)

  5. Haz clic en Grabar Configuración.

  6. Pulsa Preferencias y a continuación Salir.

  7. Ingresa como el nuevo usuario administrador usando Ingresar con autenticación HTTP.

24. Red de Anonimato (I2P)

24.1. Acerca de I2P

El Proyecto Internet Invisible (I2P) es una capa anonimizadora de red concebida para protejer las comunicaciones de la censura y la vigilancia. I2P proporciona anonimato enviando tráfico cifrado a través de una red distribuída alrededor del mundo gestionada por voluntarios.

Más información acerca de I2P en la página principal del proyecto.

24.2. Servicios Ofrecidos

Los siguientes servicios se ofrecen en FreedomBox a través de I2P de serie. Se pueden habilitar más servicios desde la consola de enrutado I2P que se puede abrir desde el interfaz web de FreedomBox.

  • Navegación web anónima: I2P se puede usar para navegar por la web de forma anónima. Para ello configura tu navegador (preferíblemente un navegador Tor) para conectar al proxy I2P. Esto se puede hacer estableciendo los proxies HTTP y HTTPS a freedombox.local (o la IP local de tu FreedomBox) con sus respectivos puertos a 4444 y 4445. Este servicio está disponible sólo cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de navegación web anónima a través de I2P.

  • Acceso a eepsites: La red I2P puede albergar sitios web anónimos llamados eepsites cuyo nombre de dominio acaba en .i2p. Por ejemplo, http://i2p-projekt.i2p/ es el sitio web del proyecto I2P en la red I2P. Los eepsites son inaccesibles a un navegador normal a través de una conexión Internet normal. Para navegar a los eepsites tu navegador necesita configurarse para usar los proxies HTTP y HTTPS como se describió antes. Este servicio solo está disponible cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de acceso a eepsites a través de I2P.

  • Descargas anónima de torrentes: I2PSnark, una aplicación para descargar y compartir archivos anónimamente mediante la red BitTorrent está disponible y habilitada por defecto en FreedomBox. Esta aplicación se controla mediante un interfaz web que se puede abrir desde la sección Torrentes Anonimos de la app I2P en el interfaz web de FreedomBox o de la consola de enrutado I2P. Solo los usuarios ingresados pertenecientes al grupo Manage I2P application pueden usar este servicio.

  • Red IRC: La red I2P contiene una red IRC llamada Irc2P. Esta red alberga el canal IRC oficial del proyecto I2P, entre otros. Este servicio viene habilitdo de serie en FreedomBox. Para usarlo abre tu cliente IRC favorito y configuralo para conectar con freedombox.local (o la IP local de tu FreedomBox) en el puerto 6668. Este servicio solo está disponible cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de IRC a través de I2P.

  • Consola de enrutado I2P: Este es el interfaz central de administración de I2P. Muestra el estado actual de I2P, estadísticas de ancho de banda y permite modificar varias preferencias de configuración. Puedes adecuar tu participación en la red I2P y usar/editar una lista con tus sitios I2P (eepsites) favoritos. Solo los usuarios ingresados pertenecientes al grupo Manage I2P application pueden usar este servicio.

Sistema

1. Copias de respaldo (backups)

FreedomBox incluye la posibilidad de copiar y restaurar datos, preferencias, configuración y secretos de la mayoría de las aplicaciones. La funcionalidad de Backups se resuelve con el software de backup Borg. Borg es un programa de backup con deduplicación y compresión. Está diseñado para hacer backups eficientes y seguros. Esta funcionalidad de backups se puede emplear para respaldar y recuperar datos aplicación por aplicación. Las copias de respaldado se pueden almacenar en la propia máquina FreedomBox o en un servidor remoto. Cualquier servidor remoto con acceso por SSH se puede emplear como almacenamiento para los backups de la FreedomBox. Las copias remotas se pueden cifrar para que el servidor remoto no pueda leer los datos que alberga.

1.1. Funcionalidad de Estatdos de los Backups

App/Funcionalidad

Soporte en Versión

Notas

Avahi

-

no precisa backup

Backups

-

no precisa backup

Bind

0.41

Cockpit

-

no precisa backup

Coquelicot

0.40

incluye ficheros subidos

Datetime

0.41

Deluge

0.41

no incluye archivos descargados ni semillas

Diagnostics

-

no precisa backup

Dynamic DNS

0.39

ejabberd

0.39

incluye todos los datos y configuración

Firewall

-

no precisa backup

ikiwiki

0.39

incluye todos los wikis/blogs y sus contenidos

infinoted

0.39

incluye todos los datos y claves

JSXC

-

no precisa backup

Let's Encrypt

0.42

Matrix Synapse

0.39

incluye media y cargas

MediaWiki

0.39

incluye páginas de wiki y archivos adjuntos

Minetest

0.39

MLDonkey

19.0

Monkeysphere

0.42

Mumble

0.40

Names

-

no precisa backup

Networks

No

sin planes para implementar backup, de momento

OpenVPN

0.48

incluye a todos los usuarios y claves de servidor

Pagekite

0.40

Power

-

no precisa backup

Privoxy

-

no precisa backup

Quassel

0.40

incluye usuarios y registros de ejeución (logs)

Radicale

0.39

incluye calendario y datos de tarjetas de todos los usuarios

repro

0.39

incluye a todos los usuarios, datos y claves

Roundcube

-

no precisa backup

SearX

-

no precisa backup

Secure Shell (SSH) Server

0.41

incluye las claves del servidor

Security

0.41

Shadowsocks

0.40

solo secretos

Sharing

0.40

no incluye datos de las carpetas compartidas

Snapshot

0.41

solo configuración, no incluye datos de capturas (snapshots)

Storage

-

no precisa backup

Syncthing

0.48

no incluye datos de las carpetas compartidas

Tahoe-LAFS

0.42

incluye todos los datos y configuración

Tiny Tiny RSS

19.2

incluye base de datos con feeds, historias, etc.

Tor

0.42

includes configuración y secretos como las claves de servicios ocultos

Transmission

0.40

no incluye archivos descargados ni semillas

Upgrades

0.42

Users

No

sin planes para implementar backup, de momento

1.2. Cómo instalar y usar Backups

Paso 1

Backups: Paso 1

Paso 2

Backups: Paso 2

Paso 3

Backups: Paso 3

Paso 4

Backups: Paso 4

Paso 5

Backups: Paso 5

Paso 6

Backups: Paso 6

Paso 7

Backups: Paso 7

2. Configurar

Configurar tiene algunas opciones generales de configuración:

2.1. Hostname

  • Hostname es el nombre local por el que otros dispositivos pueden alcanzar tu FreedomBox desde la red local. El hostname por defecto es freedombox.

2.2. Nombre de Dominio

2.3. Página Principal (home) del Servidor Web

Una vez asignada como home otra aplicación, ya solo puedes navegar al servicio FreedomBox (Plinth) tecleando en el navegador https://myfreedombox.rocks/plinth/.
/freedombox también se puede usar como alias para /plinth

  • Consejo: Guarda la URL del servicio FreedomBox (Plinth) antes de asignar la home a otra app.

3. Administración de Servidor (Cockpit)

Cockpit es una aplicación que facilita administrar servidores GNU/Linux desde el navegador web. En una FreedomBox, hay disponibles controles para muchas funciones avanzadas que normalmente no se necesitan. También hay disponible un terminal web para operaciones de consola.

Cualquier usuario del grupo de administradores de to FreedomBox puede acceder a Cockpit. Cockpit solo se puede usar si tienes una configuración de nombre de dominio apropiada para tu FreedomBox y usas ese nombre de dominio para acceder a Cockpit. Para más información mira la sección de Resolución de Problemas.

Usa cockpit sólo si eres un administrador de sistemas GNU/Linux con habilidades avanzadas. FreedomBox intenta coexistir con los cambios al sistema que efectúan los administradores y sus herramientas, como Cockpit. Sin embargo, los cambios al sistema inadecuados pueden causar fallos en las funciones de FreedomBox.

3.1. Usar Cockpit

Instala Cockpit como cualquier otra aplicación de FreedomBox. Y a continuación asegúrate de que Cockpit está habilitado.

cockpit-enable.png

Asegúrate de que la cuenta de usuario de FreedomBox que se empleará con Cockpit es parte del grupo de administradores.

cockpit-admin-user.png

Arranca el interfaz web de Cockpit. Ingresa con la cuenta de usuario configurada.

cockpit-login.png

Empieza a usar cockpit.

cockpit-system.png

Cockpit también funciona con interfaces mobiles.

cockpit-mobile.png

3.2. Funcionalidades

Las siguientes funcionalidades de Cockpit pueden ser útiles para usuarios avanzados de FreedomBox.

3.2.1. Cuadro de Mando del Sistema

Cockpit tiene un cuadro de mando del sistema que

  • Muestra información detallada del hardware.

  • Muestra métricas básicas de rendimiento del sistema.
  • Permite cambiar la hora y el huso del sistema.
  • Permite cambiar el hostname. Por favor usa el interfaz de usuario de FreedomBox UI para hacer esto.

  • Muestra las huellas del servidor SSH.

cockpit-system.png

3.2.2. Visualización de los Registros de Ejecución (logs) del Sistema

Cockpit permite consultar los registros de ejecución (logs) del sistema y examinarlos a todo detalle.

cockpit-logs.png

3.2.3. Administración de Almacenamiento

Cockpit permite las siguientes funciones avanzadas de almacenamiento:

  • Visualización de llenado de discos.
  • Edición de particiones de disco.
  • Administración de RAID.

cockpit-storage1.png

cockpit-storage2.png

3.2.4. Redes

Tanto Cockpit como FreedomBox se apoyan en NetworkManager para configurar la red. No obstante, Cockpit ofrece alguna configuración avanzada no disponible en FreedomBox:

  • Configuración de rutas.
  • Configuración de enlaces, puentes y VLANs.

cockpit-network1.png

cockpit-network2.png

cockpit-network3.png

3.2.5. Servicios

Cockpit permite agendar servicios y tareas periódicas (como cron).

cockpit-services1.png

cockpit-services2.png

3.2.6. Terminal Web

Cockpit ofrece un terminal web que se puede usar para ejecutar tareas manuales de administración del sistema.

cockpit-terminal.png

3.3. Resolución de Problemas

Cockpit require un nombre de dominio adecuadamente configurado en tu FreedomBox y solo funcionará cuando accedas a él mediante una URL con ese nombre de dominio. Cockpit no funcionará con una dirección IP en la URL. Tampoco con freedombox.local como nombre de dominio. Por ejemplo, las URLs siguientes no funcionarán:

https://192.168.0.10/_cockpit/
https://freedombox.local/_cockpit/

A partir de la versión 19.15 funciona el dominio .local. Puedes acceder a Cockpit mediante la URL https://freedombox.local/_cockpit/. El dominio .local se basa en tu hostname. Si tu hostname es mifb tu nombre de dominio .local será mifb.local y la URL de Cockpit será https://mifb.local/_cockpit/.

Para acceder apropiadamente a Cockpit, usa el nombre de dominio configurado en tu FreedomBox. Cockpit también funcionará cuando se use un Servicio Oculto Tor. Las siguientes URLs funcionarán:

https://mybox.freedombox.rocks/cockpit/
https://exampletorhs.onion/cockpit/

La razón para este comportamiento es que Cockpit emplea WebSockets para conectar con el servidor de backend. Por seguridad se deben evitar las peticiones a WebSockets con servidores cruzados. Para implementar esto Cockpit maintiene una lista de todos los dominios desde los que se admiten peticiones. FreedomBox configura automaticamente esta lista cuando añades o borras un dominio. Sin embargo, como no podemos fiarnos de las direcciones IP, FreedomBox no las añade a esta lista. Puedes mirar la lista actual de dominios aceptados administrada por FreedomBox en /etc/cockpit/cockpit.conf. Puedes editarla pero hazlo solo si comprendes sus consecuencias para la seguridad web.

4. Fecha y hora

Este servidor de hora de red es un programa que mantiene el tiempo del sistema sincronizado con servidores de Internet.

Puedes seleccionar el huso horario

  • escogiendo una capital cercana (están ordenadas por Continente/Ciudad) o

  • seleccionando directamente el huso en relación a GMT (Greenwich Mean Time).

DateTime.png

5. Diagnósticos

La prueba de diagnóstico del sistema ejecutará varias verificaciones sobre tu sistema para confirmar que las aplicaciones y servicios están funcionando como se espera.

Sólo haz clic Ejecutar Diagnósticos. Esto puede llevar varios minutos.

6. Cliente de DNS Dinamico

6.1. ¿Qué es DNS Dinamico?

Para que se pueda llegar a un servidor desde Internet este necesita tener una dirección pública permanente, también conocida como dirección IP estática o fija. Muchos proveedores de servicio de Internet no otorgan IP fija a sus usuarios normales o la cobran. En su lugar les otorgan una IP temporal diferente cada vez que el usuario se conecta a internet. O una que cambia de vez en cuando. Si es tu caso los clientes que quieran contactar con tu servidor tendrán dificultades.

Los proveedores de servicio de DNS Dinamico ayudan a solventar este problema. Primero te dan un nombre de dominio, como 'miservidor.ejemplo.org' y te permiten asociar tu dirección IP temporal a este nombre de dominio cada vez que esta cambia. De este modo quien quiera llegar a tu servidor empleará el nombre de dominio 'miservidor.ejemplo.org' que siempre apuntará a la última dirección IP de tu servidor.

Para que esto funcione cada vez que te conectes a Internet tendrás que decirle a tu proveedor de servicio de DNS Dinamico cual es tu dirección IP provisional actual. Por esto necesitas tener un software especial en tu servidor que haga esto. La funcionalidad DNS Dinamico de tu FreedomBox permite a los usuarios sin dirección IP pública fija mantener su dirección IP pública temporal actualizada en el servicio de DNS Dinamico. Esto te permite exponer servicios de tu FreedomBox, como ownCloud, a Internet.

6.2. GnuDIP vs. Update URL

Eisten 2 mecanismos principales para notificar al the servicio de DNS Dinamico cual es tu dirección IP provisional actual: empleando el protocolo GnuDIP o empleando el mecanismo URL de actualización.

Si un servicio expuesto usando URL de actualización no se securiza apropiadamente mediante HTTPS, tus credenciales podrían quedar expuestas. Una vez que un atacante accede a tus credenciales podrá reproducir tus comunicaciones con el servicio de DNS Dinamico y suplantar tu dominio.

Por otra parte el protocolo GnuDIP solo transportará un valor MD5 salpimentado de tu contraseña de tal forma que es seguro contra ataques de este tipo.

6.3. Emplear el protocolo GnuDIP

  1. Registra una cuenta en cualquier proveedor de servicio de DNS Dinamico. Hay un servicio gratuito provisto por la comunidad FreedomBox disponible en https://gnudip.datasystems24.net .

  2. Habilita el Servicio de DNS Dinamico en el interfaz de usuario de FreedomBox.

  3. Selecciona GnuDIP como tipo de servicio, introduce la dirección de tu proveedor de servicio de DNS Dinamico (por ejemplo, gnudip.datasystems24.net) en el campo Dirección del servidor GnuDIP.

    Dynamic DNS Settings

  4. Completa la información que te ha dado tu proveedor en los campos correspondientes Nombre de Dominio, Usuario y Contraseña.

6.4. Emplear URL de actualización

Se implementa esta funcionalidad porque los proveedores de servicio de DNS Dinamico más populares están empleando el mecanismo URL de actualización.

  1. Registra una cuenta en el proveedor de servicio de DNS Dinamico que emplea el mecanismo Update URL. Se listan algunos proveedores de ejemplo en la propia página de configuración.
  2. Habilita el Servicio de DNS Dinamico en el interfaz de usuario de FreedomBox.

  3. Selecciona URL de actualización como tipo de servicio, introduce la URL de actualización que te ha dado tu proveedor de servicio de DNS Dinamico en el campo URL de actualización.

  4. Si vas a la URL de actualización con tu navegador de Internet y te muestra un aviso acerca de un certificado no confiable, activa aceptar todos los certificados SSL. AVISO: ¡Tus credenciales podrían quedar expuestas en este punto a un ataque MIM (man-in-the-middle)! Valora la posibilidad de elegir otro proveedor de servicio mejor.

  5. Si vas a la URL de actualización con tu navegador de Internet y te muestra la caja de usuario/contraseña, selecciona usar autenticación HTTP basica e introduce el usuario y la contraseña.

  6. Si la URL de actualización contiene tu dirección IP temporal actual reemplaza la dirección IP por la cadena de texto <Ip>.

6.5. Comprobar si funciona

  1. Asegúrate de que los servicios externos que has habilitado como /jwchat, /roundcube o /ikiwiki están disponibles en tu dirección de dominio.
  2. Ve a la página Estado y asegúrate de que el tipo de NAT se detecta correctamente. Si tu FreedomBox está detrás de un dispositivo NAT debería detectarse en este punto (Texto: Detrás de NAT). Si tu FreedomBox tiene una dirección IP pública asignada el texto debería ser "Conexión directa a Internet".

  3. Comprueba que el último estado de actualización no sea fallida.

6.6. Recap: How to create a DNS name with GnuDIP

  1. Access to GnuIP login page (answer Yes to all pop ups)

  2. Click on "Self Register"
  3. Fill the registration form (Username and domain will form the public IP address [username.domain])
  4. Take note of the username/hostname and password that will be used on the FreedomBox app.

  5. Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login).
  6. Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices).
  7. Leave the GnuDIP interface and open the Dynamic DNS Client app page in your FreedomBox.

  8. Click on "Set Up" in the top menu.
  9. Activate Dynamic DNS
  10. Choose GnuDIP service.
  11. Add server address (gnudip.datasystems24.net)
  12. Add your fresh domain name (username.domain, ie [username].freedombox.rocks)
  13. Add your fresh username (the one used in your new IP address) and password
  14. Add your GnuDIP password
  15. Fill the option with http://myip.datasystems24.de (try this url in your browser, you will figure out immediately)

7. Cortafuegos

Un cortafuegos es un sistema de seguridad de red que controla el tráfico de entrada y salida desde/a la red. Mantener un cortafuegos habilitado y apropiadamente configurado reduce el riesgo de amenazas a la seguridad desde Internet.

La operación del cortafuegos desde el interfaz web Plinth de FreedomBox es automática. Cuando habilitas un servicio se le abre automáticamente el cortafuegos y cuando lo deshabilitas sele cierra también automáticamente. Para servicios habilitados por defecto en FreedomBox los puertos se abren en el cortafuegos por defecto durante el proceso de la primera ejecución.

Firewall

La administración del cortafuegos en FreedomBox se hace empleando FirewallD.

7.1. Interfaces

Cada interfaz de red necesita asignarse a 1 (y sólo 1) zona. Las reglas que tenga activas la zona se aplicarán al interfaz. Por ejemplo, si se permite el trafico HTTP en una zona en particular las peticiones web se acceptarán en todas las direcciones configuradas para todos los interfaces asignados a esa zona.

Principalmente se emplean 2 zonas de cortafuegos. La zona interna está pensada para servicios ofrecidos a todas las máquinas de la red local. Esto podría incluir servicios como streaming multimedia o compartición simple de archivos. La zona externa está pensada para servicios públicamente expuestos a Internet. Esto podría incluir servicios como blog, sitio web, cliente web de correo electrónico etc.

Para más detalles acerca de como se configuran por defecto los interfaces de red mira la sección Networks.

7.2. Puertos/Servicios

La siguiente tabla trata de documentar los puertos, servicios y sus estados por defecto en FreedomBox. Si encuentras esta página desactualizada mira lib/freedombox/first-run.d/90_firewall en el código fuente de Plinth y la página de estado del cortafuegos en Plinth.

Servicio

Puerto

Externo

Habilitado por defecto

Estado mostrado en Plinth

Administrado por Plinth

Minetest

30000/udp

{*}

{X}

(./)

(./)

XMPP Client

5222/tcp

{*}

{X}

(./)

(./)

XMPP Server

5269/tcp

{*}

{X}

(./)

(./)

XMPP Bosh

5280/tcp

{*}

{X}

(./)

(./)

NTP

123/udp

{o}

(./)

(./)

(./)

Plinth

443/tcp

{*}

(./)

(./)

{X}

Quassel

4242/tcp

{*}

{X}

(./)

(./)

SIP

5060/tcp

{*}

{X}

(./)

(./)

SIP

5060/udp

{*}

{X}

(./)

(./)

SIP-TLS

5061/tcp

{*}

{X}

(./)

(./)

SIP-TLS

5061/udp

{*}

{X}

(./)

(./)

RTP

1024-65535/udp

{*}

{X}

(./)

(./)

SSH

22/tcp

{*}

(./)

(./)

{X}

mDNS

5353/udp

{o}

(./)

(./)

(./)

Tor (Socks)

9050/tcp

{o}

{X}

(./)

(./)

Obfsproxy

<random>/tcp

{*}

{X}

(./)

(./)

OpenVPN

1194/udp

{*}

{X}

(./)

(./)

Mumble

64378/tcp

{*}

{X}

(./)

(./)

Mumble

64378/udp

{*}

{X}

(./)

(./)

Privoxy

8118/tcp

{o}

{X}

(./)

(./)

JSXC

80/tcp

{*}

{X}

{X}

{X}

JSXC

443/tcp

{*}

{X}

{X}

{X}

DNS

53/tcp

{o}

{X}

{X}

{X}

DNS

53/tdp

{o}

{X}

{X}

{X}

DHCP

67/udp

{o}

(./)

{X}

{X}

Bootp

67/tcp

{o}

{X}

{X}

{X}

Bootp

67/udp

{o}

{X}

{X}

{X}

Bootp

68/tcp

{o}

{X}

{X}

{X}

Bootp

68/udp

{o}

{X}

{X}

{X}

LDAP

389/tcp

{o}

{X}

{X}

{X}

LDAPS

636/tcp

{o}

{X}

{X}

{X}

7.3. Operación Manual

Para completar información acerca de los conceptos basicos o más allá, mira la documentación de FirewallD.

7.3.1. Habilitar/deshabilitar el cortafuegos

Para deshabilitar el cortafuegos

service firewalld stop

o con systemd

systemctl stop firewalld

Para vover a habilitar el cortafuegos

service firewalld start

o con systemd

systemctl start firewalld

7.3.2. Modificar servicios/puertos

Puedes añadir o eliminar un servicio de una zona manualmente.

Para ver la lista de servicios habilitados:

firewall-cmd --zone=<zone> --list-services

Ejemplo:

firewall-cmd --zone=internal --list-services

Para ver la lista de puertos habilitados:

firewall-cmd --zone=<zone> --list-ports

Ejemplo:

firewall-cmd --zone=internal --list-ports

Para eliminar un servicio de una zona:

firewall-cmd --zone=<zone> --remove-service=<service>
firewall-cmd --permanent --zone=<zone> --remove-service=<interface>

Ejemplo:

firewall-cmd --zone=internal --remove-service=xmpp-bosh
firewall-cmd --permanent --zone=internal --remove-service=xmpp-bosh

Para eliminar un puerto de una zona:

firewall-cmd --zone=internal --remove-port=<port>/<protocol>
firewall-cmd --permanent --zone=internal --remove-port=<port>/<protocol>

Ejemplo:

firewall-cmd --zone=internal --remove-port=5353/udp
firewall-cmd --permanent --zone=internal --remove-port=5353/udp

Para añadir un servicio a una zona:

firewall-cmd --zone=<zone> --add-service=<service>
firewall-cmd --permanent --zone=<zone> --add-service=<interface>

Ejemplo:

firewall-cmd --zone=internal --add-service=xmpp-bosh
firewall-cmd --permanent --zone=internal --add-service=xmpp-bosh

Para añadir un puerto a una zona:

firewall-cmd --zone=internal --add-port=<port>/<protocol>
firewall-cmd --permanent --zone=internal --add-port=<port>/<protocol>

Ejemplo:

firewall-cmd --zone=internal --add-port=5353/udp
firewall-cmd --permanent --zone=internal --add-port=5353/udp

7.3.3. Modificar la zona de interfaces

Puedes cambiar la asignación de zona de cada interfaz de red manualmente tras la asignación automática del proceso de primer arranque.

Para ver la asignación actual de interfaces de red a las zonas.

firewall-cmd --list-all-zones

Para eliminar un interfaz de una zona:

firewall-cmd --zone=<zone> --remove-interface=<interface>
firewall-cmd --permanent --zone=<zone> --remove-interface=<interface>

Ejemplo:

firewall-cmd --zone=external --remove-interface=eth0
firewall-cmd --permanent --zone=external --remove-interface=eth0

Para añadir un interfaz a una zona:

firewall-cmd --zone=<zone> --add-interface=<interface>
firewall-cmd --permanent --zone=<zone> --add-interface=<interface>

Ejemplo:

firewall-cmd --zone=internal --add-interface=eth0
firewall-cmd --permanent --zone=internal --add-interface=eth0

8. Certificados (Let's Encrypt)

Un certificado digital permite a los usuarios de un servicio web verificar la identidad del servicio y comunicar con él de modo seguro. FreedomBox puede obtener y configurar automaticamente certificados digitales para cada dominio disponible. Lo hace probando a Let's Encrypt, una authoridad de certificación (CA) ser el dueño de un dominio.

Let's Encrypt es una autoridad de certificación abierta, automatizada, libre y gratuita administrada para beneficio público por el Internet Security Research Group (ISRG). Por favor, lee y acepta los términos del Acuerdo de Suscripción de Let's Encrypt antes de usar este servicio.

8.1. Por Qué Usar Certificados

La comunicación con tu FreedomBox se puede asegurar de modo que se imposibilite interceptar los contenidos que tus servicios intercambian con sus usuarios.

8.2. Cómo configurar

  1. Si tu FreedomBox está detrás de un router, necesitarás configurar la redirección de puertos en tu router. Debes redirigir los siguientes puertos:

    • TCP 80 (http)
    • TCP 443 (https)
  2. Publica tu nombre de dominio:
    • En Configurar inserta tu nombre de dominio, p.ej. MiWeb.com Let's Encrypt

  3. Verifica que se aceptó tu nombre de dominio
  4. Ve a la página de los Certificados (Let's Encrypt) y completa la instalación del modulo si hace falta. Entonces haz clic en el botón "Obtain" de tu nombre de dominio.
    • Tras algunos minutos estará disponible un certificado válido

      Let's Encrypt

  5. Verifica en tu navegador comprobando https://MiWeb.com

    • Let's Encrypt Certificate

Screencast: Let's Encrypt

8.3. Usar

El certificado es válido por 3 meses. Se renueva automáticamente y también se puede volcer a obtener o revocar manualmente.

Ejecutando diagnostics se puede también verificar el certificado.

9. Monkeysphere

Con Monkeysphere se puede generar una clave OpenPGP para cada dominio configurado para servir SSH. La clave pública OpenPGP se puede subir entonces a los servidores de claves OpenPGP. Los usuarios que se conecten mediante SSH podrán verificar que se están conectando a la máquina correcta. Para que los usuarios puedan confiar en la clave alguien (generalmente el dueño de la máquina) tiene que firmarla siguiendo el proceso normal de firmado de claves OpenPGP. Para más detalles, ver la documentación de Monkeysphere SSH.

Monkeysphere también puede generar una clave OpenPGP para cada certificado de servidor web seguro (HTTPS) instalado en esta máquina. La clave pública OpenPGP se puede subir entonces a los servidores de claves OpenPGP. Los usuarios que se conecten mediante SSH podrán verificar que se están conectando a la máquina correcta. Para validar el certificado el usuario deberá instalar cierto software disponible en el sitio web de Monkeysphere.

10. Servicios de Nombre

Los Servicios de Nombre proporcionan una vista general a las formas de acceder desde la Internet pública a tu !Freedombox: nombre de dominio, servicio oculto Tor y cometa (Pagekite). Para cada tipo de nombre se indica si los servicios HTTP, HTTPS, y SSH están habilitados o deshabilitados para conexiones entrantes.

11. Redes

Esta sección describe como se configura por defecto la red en FreedomBox y como se puede adaptar. Ver también la sección Cortafuegos para más información acerca de cómo funciona éste.

11.1. Configuración por defecto

En una imágen fresca de FreedomBox la red no está configurada. La configuración se realiza cuando la imágen se graba en una tarjeta SD y el dispositivo arranca. Durante el primer arranque el paquete FreedomBox setup detecta los interfaces (tarjetas) de red e intenta configurarlos automáticamente de modo que la FreedomBox quede disponible para seguir configurandola a través del interfaz web de otra máquina, sin necesidad de conectar un monitor a la FreedomBox. La configuración automática también procura dejar la FreedomBox operativa para sus escenarios de uso más importantes.

Trata 2 escenarios:

  • cuando hay 1 único interfaz (tarjeta) ethernet

  • cuando hay múltiples interfaces (tarjetas) ethernet

11.1.1. interfaz (tarjeta) ethernet único

Cuando el dispositivo hardware solo tiene 1 único interfaz (tarjeta) ethernet hay poco margen para que haga de router. En tal caso se asume que el dispositivo es solo una máquina más en la red. En consecuencia el único interfaz (tarjeta) disponible se configura para ser un interfaz interno en modo de configuración automática. Esto significa que se conecta a Internet empleando la configuración provista por un router de la red y que hace todos sus servicios (internos y externos) accesibles a todos los clientes que haya en esta red.

network_single.png

11.1.2. Múltiples interfaces (tarjetas) ethernet

Cuando el dispositivo hardware tiene múltiples interfaces (tarjetas) ethernet el dispositivo puede actuar como router. Entonces los interfaces se configuran para ejecutar esta función.

  • El primer interfaz (tarjeta) de red se configura para ser una WAN o interfaz externo en modo de configuración automático. Esto significa que se conecta a Internet empleando la configuración provista por el proveedor de servicio de internet (ISP). En este interfaz solo se expondrán los servicios concebidos para cosumo desde Internet (servicios externos). Tu conexión a Internet tiene que llegar por el puerto de este interfaz (tarjeta) ethernet. Si quieres que tu router de siempre siga administrando tu conexión por tí conecta un cable desde tu router al puerto de este interfaz.

  • Los demás interfaces de red se configuran como clientes de router, como LAN o interfaces internos en modo de configuración compartido. Esto significa que todos sus servicios (internos y externos) se exponen a todos los clientes que entren desde esta red. Compartido implica además que los clientes podrán recibir detalles conexión automática a la red. En concreto, la configuración DHCP y los servidores DNS se exponen en este interfaz. La conexión a Internet disponible para el dispositivo a través del primer interfaz se compartirá con los clintes que usen este interfaz. Todo esto implica que puedes conectar tus ordenadores a esta interfaz (tarjeta) de red y se configurarán automáticamente pudiendo acceder a Internet a través de tu FreedomBox.

Aunque el proceso de asignación es determinista actualmente no está muy claro qué interfaz será WAN (los demás serán LAN). Así que averiguar cual es cual conllevará un poco de prueba y error. En el futuro esto estará bien documentado para cada dispositivo.

11.1.3. Configuración de la Wi-Fi

Todos los interfaces Wi-Fi se configuran para ser LAN o interfaces internos en modo de configuración compartido. También se configuran para ser puntos de acceso Wi-Fi con los siguientes datos:

  • El nombre de cada punto de acceso será FreedomBox más el nombre del interfaz (para tratar el caso de que haya varios).

  • La contraseña para conectar a los interfaces será freedombox123.

11.2. Compartición de la Conexión a Internet

Aunque la principal obligación de FreedomBox es proporcionar servicios descentralizados también puede ejercer como router casero. Por tanto en la mayoría de los casos FreedomBox se conecta a Internet y proporciona a otras máquinas de la red la posibilidad de usar esa conexión a Internet. FreedomBox puede hacer esto de 2 formas: usando un modo de conexión compartido o empleando una conexión interna.

Cuando se configura un interfaz en modo compartido puedes conectarle tu máquina directamente, sea por cable desde este interfaz a tu máquina o conectando a través del punto de acceso Wi-Fi. Este caso es el más facil de usar porque FreedomBox automáticamente proporciona a tu máquina la configuración de red necesaria. Tu máquina conectará automáticamente a la red proporcionada por FreedomBox y podrá conectar a Internet ya que FreedomBox puede a su vez conectarse a Internet.

En ocasiones la configuración anterior podría no ser posible porque el dispositivo hardware tenga un único interfaz de red o por otros motivos. Incluso en este caso tu máquina puede todavía conectarse a Internet a través de la FreedomBox. Para que esto funcione asegúrate de que el interfaz de red al que se está conectando tu máquina esté en modo interno. Entonces conecta tu máquina a la red en la que está la FreedomBox. Después de esto configura la red de tu máquina indicando como puerta de enlace la dirección IP de la FreedomBox. FreedomBox aceptará entonces el tráfico de red de tu maquina y lo enviará a Internet. Esto funciona porque los interfaces de red en modo interno están configurados para enmascarar hacia Internet los paquetes que lleguen desde máquinas locales, así como para recibir paquetes desde Internet y reenviarlos hacia las máquinas locales.

11.3. Adaptaciones

La configuración por defecto anterior podría no servir para tu caso. Puedes adecuar la configuración para ajustarla a tus necesidades desde el área Redes de la sección Configuración del interfaz web de tu FreedomBox.

11.3.1. Conexiones PPPoE

Si tu ISP no proporciona configuración de red automática via DHCP y te obliga a conectar por PPPoE, para configurarlo elimina toda conexión de red existente en el interfaz y añade una de tipo PPPoE. Aquí, si procede, indica el usuario y la contraseña que te ha dado tu ISP y activa la conexión.

11.3.2. Conectar a Internet mdiante Wi-Fi

Por defecto durante el primer arranque los dispositivos Wi-Fi se configurarán como puntos de acceso. Sin embargo se pueden reconfigurar como dispositivos Wi-Fi normales para conectar a la red local o a un router WiFi existente. Para hacer esto haz clic en la conexión Wi-Fi para editarla. Cambia el modo a Infraestructura en vez de Punto de Acceso y Método de direccionamiento IPv4 a Automático (DHCP) en vez de Modo compartido. SSID proporcionado significa el nombre de la red Wi-Fi a la que quieres conectar. Rellena la frase clave.

11.3.2.1. Problemas con la Funcionalidad de Privacidad

El gestor de red que emplea FreedomBox para conectar con las redes Wi-Fi tienen una funcionalidad de privacidad que usa una identidad para buscar redes diferente de la que emplea para conectar con el punto de acceso Wi-Fi. Desafortunadamente esto causa problemas con algunos routers que rechazan estas conexiones. Tu conexión no se activará con éxito y se desconectará. Si tienes control sobre el comportamiento del router puedes desactivar esta funcionalidad. Si no la solución es desactivar la funcionalidad de privacidad:

Entra a la FreedomBox por SSH o Cockpit.

Edita el fichero /etc/NetworkManager/NetworkManager.conf:

$ sudo nano /etc/NetworkManager/NetworkManager.conf

Añade la linea wifi.scan-rand-mac-address=no en la sección [device]:

[device]
wifi.scan-rand-mac-address=no

Luego reinicia la FreedomBox.

11.3.3. Añadir un nuevo dispositivo de red

Al añadir un nuevo dispositivo de red network manager lo configurará automáticamente. En la mayoría de los casos esto no funcionará. Borra la configuración creada automáticamente en el interfaz y crea una conexión de red nueva. Selecciona tu interfaz recién creado en la página "añadir conexión".

  • Configura la zona del cortafuegos como corresponda.
  • Puedes configurar los interfaces para conectar a la red o proporcionar configuración de red a cualquier máquina que se le conecte.
  • De modo similar, si es un interfaz Wi-Fi puedes configurarlo para ser un punto de acceso Wi-FI o para conectarse a puntos de acceso existentes en la red.

11.3.4. Configurar una red Mesh

FreedomBox tiene un soporte rudimentario para participar en redes mesh basadas en BATMAN-Adv. Es posible unirse a una red existe en tu zona o crear una red mesh nueva y compartir tu conexión a Internet con el resto de nodos que se unan a tu red. Tanto para unirte a una red mesh como para crear otra, actualmente hay que crear 2 conexiones y activarlas manualmente.

11.3.4.1. Unirse a una red Mesh

Para unirse a una red mesh existente en tu zona primero consulta a sus organizadores y obtén información acerca de la red.

  1. Crea una conexión nueva y selecciona el tipo de conexión Wi-Fi. En el siguiente diálogo rellena los valores como se indica:

    Nombre del campo

    Valor de ejemplo

    Explicación

    Nombre de la Conexión

    Mesh Join - BATMAN

    El nombre tiene que acabar en BATMAN (con mayúsculas).

    Interfaz físico

    wlan0

    El dispositivo Wi-Fi que quieres usar para conectar a la red mesh.

    Zona del cortafuegos

    Externa

    Ya que no quieres que los participantes en la red mesh usen dispositivos internos de tu FreedomBox.

    SSID

    ch1.freifunk.net

    Tal como te lo hayan dado los operadores de la red mesh. Esta red debería mostrarse en Redes Wi-Fi accesibles.

    Modo

    Ad-hoc

    Porque esta red es una red de pares (peer-to-peer).

    Banda de Frecuencia

    2.4Ghz

    Tal como te lo hayan dado los operadores de la red mesh.

    Canal

    1

    Tal como te lo hayan dado los operadores de la red mesh.

    BSSID

    12:CA:FF:EE:BA:BE

    Tal como te lo hayan dado los operadores de la red mesh.

    Autenticación

    Abierta

    Déjala abierta salvo que sepas que tu red mesh necesite otro valor.

    Contraseña

    Déjala en blanco salvo que sepas el valor que necesite tu red mesh.

    Método de direccionamiento IPv4

    Deshabilitado

    Todavía no queremos pedir una configuración IP.

    Graba la conexión y únete a la red mesh activándola.

  2. Crea una segunda conexión nueva y selecciona el tipo Genérica. En el siguiente diálogo rellena los valores como se indica:

    Nombre del campo

    Valor de ejemplo

    Explicación

    Nombre de la Conexión

    Mesh Connect

    Cualquier nombre para identificar ésta conexión.

    Interfaz físico

    bat0

    Este interfaz solo aparecerá tras activar con éxito la conexión del paso anterior.

    Zona del cortafuegos

    Externa

    Ya que no quieres que los participantes en la red mesh usen dispositivos internos de tu FreedomBox.

    Método de direccionamiento IPv4

    Auto

    Generalmente las redes mesh tienen un servidor DHCP en algún sitio que le proporciona una configuración IP a tu máquina. Si no, consulta al operador y configura la dirección IP como te diga por el método manual.

    Graba la conexión. Configura tu maquina para participar en la red activando esta conexión. Actualmente hay que activarla manualmente cada vez que quieras unirte a la red. En el futuro FreedomBox lo hará automáticamente.

Ahora debieras poder llegar a otros nodos de la red. También podrás conectar a Internet a través de la red mesh si los operadores han instalado algúna puerta de enlace.

11.3.4.2. Crear una red Mesh

Para crear tu propia red mesh y compartir tu conexión a Internet con el resto de los nodos de la red:

  1. Sigue las instrucciones del paso 1 de Unirse a una red Mesh empleando los valores válidos para tu red en SSID (un nombre para tu red Mesh), Banda de Frecuencia (generalmente 2.4Ghz), Canal (entre 1 y 11 para la banda de 2.4Ghz) y BSSID (una secuencia hexadecimal como 12:CA:DE:AD:BE:EF). Crea esta conexión y actívala.

  2. Sigue las instrucciones del paso 2 de Unirse a una red Mesh seleccionando Compartido para Método de direccionamiento IPv4d. Esto proporcionará automáticamente una configuración IP a otros nodos de la red y compartirá la conexión a Internet de tu maquina (ya sea mediante un segudo interfaz Wi-Fi, Ethernet, etc.) con el otros nodos de la red mesh.

Corre la voz entre tus vecinos acerca de tu red mesh y pásales los parámetros que has empleado al crearla. Cuando otros nodos se conecten a esta red mesh tendrán que seguir las instrucciones del paso 1 de Unirse a una red Mesh empleando en SSID, Banda de Frecuencia y Canal los valores que has elegido para tu red mesh al crearla.

11.4. Operación de Red Manual

FreedomBox configura redes automáticamente por defecto y proporciona un interfaz simplificado para personalizar la configuración a necesidades específicas. En la mayoría de los casos la operación manual no es necesaria. Los siguientes pasos describen cómo operar la configuración de red a mano en caso de que el interfaz de FreedomBox le resulte insuficiente a un usuario para realizar una tarea o para diagnosticar un problema que FreedomBox no identifique.

En el interfaz de línea de comandos:

Para acceder a un interfaz de configuración de conexiones de red basado en texto:

nmtui

Para ver la lista de dispositivos de red disponibles:

nmcli device

Para ver la lista de conexiones configuradas:

nmcli connection

Para ver el estado actual de una conexión:

nmcli connection show '<nombre_de_la_conexión>'

Para ver la zona asignada actualmente en el cortafuegos a un interfaz de red:

nmcli connection show '<nombre_de_la_conexión>' | grep zone

o

firewall-cmd --zone=internal --list-all
firewall-cmd --zone=external --list-all

Para crear una conexión nueva:

nmcli con add con-name "<nombre_de_la_conexión>" ifname "<interfaz>" type ethernet
nmcli con modify "<nombre_de_la_conexión>" connection.autoconnect TRUE
nmcli con modify "<nombre_de_la_conexión>" connection.zone internal

Para cambiarle la zona a una conexión en el cortafuegos:

nmcli con modify "<nombre_de_la_conexión>" connection.zone "<internal|external>"

Para más información acerca del uso del comando nmcli mira su página man. Para obtener una lista completa de configuraciones y tipos de conexión que acepta Network Manager mira:

https://developer.gnome.org/NetworkManager/stable/ref-settings.html

Para ver el estado actual del cortafuegos y operarlo manualmente lee la sección Cortafuegos.

12. Apagado

Power proporciona un modo fácil de reiniciar o apagar tu FreedomBox. Después de seleccionar "Reiniciar" o "Apagar", se te pedirá confirmación. Se puede llegar también a las opciones "Reiniciar" y "Apagar" desde el menú desplegable del usuario en la esquina superior derecha.

13. Visibilidad Publica (PageKite)

13.1. ¿Qué es PageKite?

PageKite hace inmediata y públicamente accesibles desde internet a los sitios web y servicios locales sin tener que crear tu mismo una dirección IP pública. Lo hace tunelando protocolos como HTTPS o SSH a través de cortafuegos y NAT. Usar PageKite require ana cuenta en un servicio de repetidor de PageKite. https://pagekite.net es uno de de estos servicios.

Un servicio de repetidor de PageKite te permitirá crear cometas (kites). Las cometas son similares a los nombres de dominio pero con ventajas y desventajas diferentes. Una cometa puede tener varios servicios configurados. Se sabe que PageKite funciona con HTTP, HTTPS, y SSH, y muchas funcionan con otros servicios, pero no todas.

13.2. Usar PageKite

  1. Créate una cuenta en un servicio de repetidor de PageKite.

  2. Añade una cometa a tu cuenta. Anota el nombre y el sectreo de tu cometa.
  3. En Plinth, vé a la solapa "Configurar PageKite" de la página Visibilidad Publica (PageKite).

  4. Marca la caja "Habilitar PageKite" e introduce el nombre y el secreto de tu cometa. Haz clic en "Grabar propiedades".

  5. En la solapa "Servicios Estándar" puedes habilitar HTTP y HTTPS (recomendado) y SSH (opcional).
    • HTTP se necesita para obtener el certificado Let's Encrypt. Puedes deshabilitarlo (HTTPS) más tarde.

  6. En la página Certificados (Let's Encrypt) puedes obtener un certificado Let's Encrypt para el nombre de tu cometa.

14. Shell Segura

14.1. ¿Qué es Shell Segura?

FreedomBox ejecuta el servidor openssh-server por defecto permitiendo así accesos remotos desde todos los interfaces. Si tu dispositivo hardware está connectado a un monitor y un teclado, también puedes ingresar directamente. Para la operación habitual de FreedomBox no necesitas usar la shell. No obstante, algunas tareas o identificación de algún problema podrían requerirlo.

14.2. Configurando una Cuenta de Usuario

14.2.1. Primer ingreso a Plinth: Cuenta de Admin

Al crear una cuenta en Plinth por primera vez, el usuario tendrá automaticamente privilegios de administrador. Los usuarios Admin pueden ingresar mediante ssh (abajo se explica cómo) y escalar sus privilegios a superusuario mediante sudo.

14.2.2. Cuenta de Usuario por Defecto

  • Nota: Si puedes acceder a Plinth es que no necesitas hacer esto. Puedes usar la cuenta de usuario de Plinth para conectar por SSH.

Las imagenes precompiladas FreedomBox tienen una cuenta de usuario llamada fbx pero no tiene contraseña establecida, así que no se puede ingresar con esta cuenta.

Hay un script incluído en el programa freedom-maker que permite establecer la contraseña de esta cuenta si fuera necesario:

  1. Descomprime la imagen.
  2. Obtén una copia de freedom-maker en https://salsa.debian.org/freedombox-team/freedom-maker/.

  3. Ejecuta sudo ./bin/passwd-in-image <archivo_de_imagen> fbx.

  4. Copia el archivo de la imagen a la tarjeta SD e inicia el dispositivo.

El usuario "fbx" también tiene privilegios de superusuario mediante sudo.

14.3. Ingresando

14.3.1. Local

Para ingresar mediante SSH a tu FreedomBox:

$ ssh fbx@freedombox

Reemplaza fbx por el usuario con el que quieres ingresar. Hay que reemplazar freedombox por el hostname o dirección IP de tu dispositivo FreedomBox como se indica en el proceso de Inicio rápido.

fbx es el usuario de FreedomBox con privilegios de superusuario por defecto. Cualquier otro usuario creado con Plinth que pertenezca al grupo admin podrá ingresar. La cuenta root no tiene contraseña configurada y no podrá ingresar. A todos los demás usuarios se les denegará el acceso.

fbx y los otros usuarios del grupo admin podrán ingresar directamente por el terminal. A todos los demás usuarios se les denegará el acceso.

Si fallas repetidamente intentando ingresar se te bloqueará el acceso por algún tiempo. Esto se debe al paquete libpam-abl que FreedomBox instala por defecto. Para controlar este comportamiento consulta la documentación de libpam-abl.

14.3.2. SSH via Tor

Si tienes habilitados en Plinth los servicios ocultos mediante Tor puedes acceder a tu FreedomBox mediante ssh sobre Tor. Instala netcat-openbsd.

$ sudo apt-get install netcat-openbsd

Edita ~/.ssh/config para habilitar conexiones sobre Tor.

$ nano ~/.ssh/config

Añade lo siguiente:

Host *.onion
  user USUARIO
  port 22
  ProxyCommand nc -X 5 -x 127.0.0.1:9050 %h %p

Replace USUARIO por un usuario del grupo admin (ver arriba).

En algunos casos podrías necesitar reemplazar 9050 por 9150.

Ahora, para conectar a la FreedomBox abre un terminal y teclea:

$ ssh USUARIO@DIRECCION.onion

Reemplaza USUARIO por un usuario del grupo admin y DIRECCION por la dirección del servicio oculto de SSH de tu FreedomBox.

14.4. Escalar a Superusuario

Si después de ingresar quieres volverte superusuario para realizar actividades administrativas:

$ sudo su

Habitúate a ingresar como root solo cuando sea estrictamente necesario. Si no ingresas como root no puedes romperlo todo accidentalmente.

14.5. Cambiar Contraseñas

Para cambiar la contraseña de un usuario administrado en Plinth usa la página Cambiar contraseña. El usuario por debecto fbx no se administra en Plinth y su contraseña no se puede cambiar desde la interfaz web.

Para cambiar la contraseña en el terminal ingresa a tu FreedomBox con el usuario cuya contraseña quieres cambiar y ejecuta el siguiente comando:

$ passwd

Esto te preguntará tu contraseña actual antes de darte la oportunidad de establecer la nueva.

15. Seguridad

Cuando se habilita esta opción sólo los usuarios del grupo "admin" podrán entrar a la consola o mediante SSH. Los usuarios de consola podrán acceder a algunos servicios sin más autorización.

La sección Usuarios explica cómo definir grupos de usuarios.

Security.png

16. Detección de Servicios

La Detección de Servicios permite a otros dispositivos de la red detectar a tu FreedomBox y a los servicios que expone. Si un cliente de la red local soporta mDNS, puede encontrar tu FreedomBox en <hostname>.local (por ejemplo: freedombox.local).

También permite a FreedomBox detectar otros dispositivos y servicios que están funcionando en tu red local.

La Detección de Servicios no es esencial y solo funciona en redes internas. Se puede deshabilitar para mejorar la seguridad especialmente cuando la conectas a una red local hostil.

17. Instantáneas

Las Instantáneas te permiten crear instantáneas del sistema de archivos y devolver al sistema a un estado anterior.

  • Nota: Esta funcionalidad requier un sistema de archivos Btrfs. Todas las imágenes de disco de FreedomBox estables usan Btrfs.

Instantáneas

18. Almacenamiento

Almacenamiento te permite ver los dispositivos de almacenamiento conectados a tu FreedomBox y el uso de su espacio.

FreedomBox puede detectar y montar automáticamente medios extraíbles como unidades flash USB. Se muestran listados bajo la sección Dispositivos extraíbles junto con una opción para expulsarlos.

Si queda espacio libre detrás de la partición de root, se mostrará también la opción para expandirla. Normalmente no se muestra ya que en el primer arranque de la FreedomBox se produce automáticamente una expansión total de la partición de root.

Storage.png

19. Actualizaciones de Software

FreedomBox puede instalar actualizaciones de seguridad automaticamente. Esta funcionalidad viene activada por defecto y no hace falta ninguna acción manual. Puedes activar las actualizaciones automaticas desde Plinth en en la página Actualizaciones de la sección Preferencias. Se recomienda encarecidamente que tengas esta opción habilitada para mantener tu FreedomBox segura.

Las actualizaciones se efectúan cada noche. Si quieres apagar tu FreedomBox cada día después de usarla, déjala ejecutando una noche a la semana más o menos para permitir que ocurran las actualizaciones automaticas. Otra posibilidad es ejecutar actualizaciones manuales como se describe más adelante.

Nota que una vez comiencen las actualizaciones podría llevarles mucho tiempo completarse. Durante el proceso de actualización (ya sea el automático nocturno o el manual), no podrás instalar aplicaciones desde el interfaz web de FreedomBox.

upgrades.png

19.1. ¿Cuando obtendré las últimas funcionalidades?

Aunque las actualizaciones se efectúan a diario por razones de seguridad, las últimas funcionalidades no se propagan a todos los usuarios. A continuación se explica cómo llegan las novedades a los usuarios de las diferentes versiones de Debian:

  • Usuarios de versiones estables: Esta categoria de usuarios incluye a los usuarios que compraron la FreedomBox Pioneer Edition, a los que instalaron FreedomBox sobre una distribución estable de Debian y a los que descargaron las imágenes estables desde freedombox.org. Como regla general a estos usuarios solo se les proporciona actualizaciones de seguridad de determinados paquetes. Cuando una release obtiene la confianza de los desarrolladores el propio servicio FreedomBox se actualiza, lo que supone una excepción a esta regla. Esto implica que las últimas funcionalidades de FreedomBox estarán disponibles para estos usuarios aunque no tán inmediata- o frecuentemente como para los usuarios de las versiones en pruebas (testing). Si una app sólo está disponible en la distribución en pruebas (testing) pero no en la estable la app aparecerá en el interfaz web pero no será instalable para los usuarios de la distribución estable. Algunas apps se actualizan en excepción a la regla de "solo actualizaciones de seguridad" cuando la app esté seriamente rota por algún motivo. Debian libera cada bienio una entrega (release) con las últimas versiones estables de cada paquete de software y los desarrolladores de FreedomBox intentarán actualizar a estos usuarios a la nueva entrega (release) sin necesidad de intervención manual.

  • Usuarios de versiones en pruebas: Esta categoria de usuarios incluye a los usuarios que instalaron FreedomBox sobre una distribución en pruebas (testing) y a los que descargaron las imágenes en pruebas (testing) desde freedombox.org. Estos usuarios asumen la posibilidad de afrontar disrupciones ocasionales en los servicios e incluso tener que intervenir manualmente para arreglarlas. Como regla general estos usuarios reciben las últimas funcionalidades y actualizaciones de seguridad para todos los paquetes instalados. Cada quincena se libera una nueva versión de FreedomBox con todas las últimas funcionalidades y correcciones. Estas versiones llegan a los usuarios de la distribución en pruebas (testing) aproximadamente 2 o 3 días después de la liberación.

  • Usuarios de versiones inestables: Esta categoria de usuarios incluye a los usuarios que instalaron FreedomBox sobre una distribución inestable y a los que descargaron las imágenes inestables desde freedombox.org. Estos usuarios asumen la probabilidad de afrontar disrupciones en los servicios y tener que intervenir manualmente para arreglarlas. Como regla general estos usuarios reciben las últimas funcionalidades y actualizaciones de seguridad para todos los paquetes instalados. Cada quincena se libera una nueva versión de FreedomBox con todas las últimas funcionalidades y correcciones. Estas versiones llegan a los usuarios de la distribución inestable el mismo día de la liberación. Solo los desarrolladores, probadores y contribuyentes al proyecto FreedomBox debieran emplear la distribution inestable. Se advierte y exhorta a los usuarios finales de que no la usen.

19.2. Actualizaciones Manuales desde el Terminal

Algunos paquetes de software podrían requerir intervención manual para actualizarlos, generalmente por razones de configuración. En tales casos FreedomBox se actualiza a sí mismo y solicita información nueva necesaria para la actualización del paquete. Después de autoactualizarse FreedomBox actúa en nombre del usuario y actualiza los paquetes con la información recabada. Estos paquetes no se deben actualizar manualmente hasta que FreedomBox tenga a posibilidad de actualizarlos. La actualización que se dispara manualmente desde el interfaz web ya es consciente de estos paquetes y no los actualiza.

En situaciones muy extrañas, FreedomBox podría fallar o quedar a expensas de una intervención manual desde el terminal. Para esto, entra a FreedomBox por un terminal, ya sea físico, web (empleando Cockpit) o mediante SSH (ver sección Shell Segura) y ejecuta los siguientes comandos:

$ sudo su -
Password: <introduce la contraseña aquí>
# dpkg --configure -a
# apt update
# apt -f install
# unattended-upgrade --debug
# apt install freedombox
# apt update

Si apt-get update te pide confirmación para algo responde que . Si durante la actualización del paquete freedombox te pregunta acerca de los archivos de configuración responde que instale los archivos de configuración nuevos que vienen con la última versión del paquete. Este proceso solo actualizará los paquetes que no necesitan preguntar (excepto el paquete freedombox). Después, deja que FreedomBox se encargue de la actualización de los demás paquetes. Sé paciente mientras se crean nuevas versiones de FreedomBox para tratar los paquetes que necesitan intervención manual.

Si quieres ir más allá de la recomendación e instalar todos los paquetes en tu FreedomBox y realmente estás muy seguro de poder tratar los cambios de configuración de paquetes por tí mismo, ejecuta el siguiente comando:

$ apt dist-upgrade

20. Usuarios y Grupos

Puedes otorgar acceso a tu FreedomBox a otros usuarios. Proporciona el nombre del usuario y su contraseña y asignale un grupo. Actualmente se soportan los grupos

  • admin
  • wiki

El usuario podrá ingresar a los servicios que soporten ingreso único (single-sign-on) mediante LDAP si figuran en el grupo apropriado.

Los usuarios del grupo admin podrán ingresar en todos los servicios. También pueden ingresar al sistema por SSH y escalar a privilegios administrativos (sudo).

Estas características se pueden cambiar más tarde.

Asimismo es posible establecer una clave pública SSH que permitirá al usuario ingresar al sistema de modo seguro sin emplear su contraseña. Pueder dar de alta varias claves, una en cada línea. Las líneas en blanco o que comiencen por # se ignoran.

Se pueden desactivar temporalmente las cuentas de usuarios.

20.1. Reparos Conocidos

  • Actualmente Plinth not distingue entre usuarios y administradores. Todo usuario añadido mediante Plinth tendrá accesso completo al interfaz de Plinth.

Hardware

FreedomBox está diseñado para ser el software de un dispositivo electrónico de consumo que sea fácil de configurar, mantener y usar. El proyecto no pretende crear un dispositivo hardware propio, sino asociarse con fabricantes de hardware para construir dispositivos FreedomBox y también soportar hardware existente.

Además de soportar varios SBC's (single board computers) y otros dispositivos, FreedomBox también contempla ser instalado en una máquina virtual. Y cualquier máquina Debian se puede convertir en FreedomBox instalando el paquete freedombox-setup. Para más detalles, ver el manual.

1. Hardware Recomendado

El 22 de Abril de 2019, la FreedomBox Foundation anunció que los kits Pioneer Edition FreedomBox Home Server salían a la venta. Este es el hardware preinstalado recomendado para todos los usuarios que no quieran construirse su propia (máquina) FreedomBox eligiendo los componentes adecuados, descargando la imagen y preparando una tarjeta SD con (el software) FreedomBox.

El kit incluye todo el hardware necesario para arrancar un servidor casero FreedomBox sobre una placa Olimex A20-OLinuXino-LIME2. Este producto proporciona la combinación perfecta de hardware de fuentes abiertas y software libre. Al comprar este producto, soportas también los esfuerzos de la FreedomBox Foundation para crear y promover su software de servidor libre.

Pioneer Edition FreedomBox Home Server Kits
Kits de Servidor Casero FreedomBox Pioneer Edition

2. Hardware Soportado

Usa este hardware si quieres y eres capaz de descargar imágenes FreedomBox y preparar una tarjeta SD siguiendo el manual. Si quieres un proceso más simple de configuración compra por favor los kits FreedomBox con el hardware recomendado. Si usas una placa con tarjetas SD te recomendamos que al grabar la imagen de FreedomBox en tu tarjeta, ésta tenga al menos una capacidad de 8GB.

A20 OLinuXino Lime2
A20 OLinuXino Lime2

A20 OLinuXino MICRO
A20 OLinuXino MICRO

PC Engines APU
PC Engines APU

Cubietruck
Cubietruck

Cubieboard 2
Cubieboard2

BeagleBone Black
BeagleBone Black

pcDuino3
pcDuino3

Debian
Debian

VirtualBox
VirtualBox

Pine A64+
Pine A64+

Banana Pro
Banana Pro

2.1. Comparativa de Hardware

Nombre

Velocidad CPU (GHz)

Arquitectura

RAM (GB)

disco (GB)

batería

SATA

Velocidad Ethernet

OSHW

APU.1D

1x2

amd64

2

-

-

(./)

1000x3

{X}

APU.1D4

1x2

amd64

4

-

-

(./)

1000x3

{X}

BeagleBone Black C

1

armhf/omap

½

4

-

-

100

(./)

Cubieboard2

1x2

armhf/sunxi

1

4

(./)

(./)

100

{X}

Cubieboard2-Dual

1x2

armhf/sunxi

1

-

(./)

(./)

100

{X}

Cubieboard3/Cubietruck

1x2

armhf/sunxi

2

8

(./)

(./)

1000

{X}

OLinuXino A20 LIME

1x2

armhf/sunxi

½

-

(./)

(./)

100

(./)

OLinuXino A20 LIME2

1x2

armhf/sunxi

1

-

(./)

(./)

1000

(./)

OLinuXino A20 MICRO

1x2

armhf/sunxi

1

-

(./)

(./)

100

(./)

pcDunino3

1x2

armhf/sunxi

1

4

(./)

(./)

100

{X}

Pine A64+

1.2x4

arm64/sunxi

½,1,2

-

-

-

1000

{X}

Banana Pro

1.2x2

armhf/sunxi

1

-

-

(./)

10/100/1000

{X}

3. Más Hardware Operativo

Freedombox funciona en este hardware. Pero no se recomienda porque (el hardware) no funciona empleando únicamante software libre:

Raspberry Pi 2
Raspberry Pi 2

Raspberry Pi 3 Model B
Raspberry Pi 3 Model B

Raspberry Pi 3 Model B+
Raspberry Pi 3 Model B+

4. Hardware Obsoleto

Este hardware estuvo soportado anteriormente pero ya no. Si descargaste una imagen anterior y ejecutas FreedomBox sobre algún hardware de estos, seguirás obteniendo actualizaciones de software. Sin embargo, no se publicarán imagenes nuevas. Se recomienda que migres a hardware nuevo y soportado generando una copia de seguridad y restaurándola.

DreamPlug
DreamPlug

Raspberry Pi
Raspberry Pi

Note: Como FreedomBox está actualmente en desarrollo, hardware soportado significa que las imágenes de FreedomBox se construyen para este hardware y al menos un desarrollador ha informado que las funciones básicas funcionan.

5. Añadir Soporte a más Hardware

Aunque el proyecto se enfoque en soportar determinados dispositivos queremos soportar la mayor cantidad de hardware posible, mientras se adecúe a las necesidades de FreedomBox. Echa un vistazo a la lista de objetivos hardware para más información.

Si eres desarrollador, considera añadir soporte a hardware para tu dispositivo modificando Freedom Maker. Si tienes acceso a algún dispositivo de hardware objeto y quisieras trabajar con nosotros para hacer que funcione con FreedomBox ¡contactanos, por favor!

6. FreedomBox Pioneer Edition

Los servidores caseros FreedomBox Pioneer Edition los fabrica y vende Olimex, una compañía epecializada en hardware de fuentes abiertas. El Kit incluye hardware de servidor tamaño bolsillo, una tarjeta SD con el sistema operativo preinstalado, y una batería de respaldo que puede alimentar el hardware durante 4-5 horas en casos de indisponibilidad de la red eléctrica. Se vende por 82 €. Al comprar este producto contribuyes a los esfuerzos de la FreedomBox Foundation's para crear y promover su software de servidor libre.

Pioneer Edition FreedomBox Home Server Kit

7. Características del Producto

7.1. HW Recomendado

Éste es el hardware recomendado para los usuarios que quieran simplemente una FreedomBox llave en mano, y no quieran construirse una.

(Construir tu propia FreedomBox implica algunos tecnicismos como elegir y comprar los componentes adecuados, descargar la imágen y preparar una tarjeta SD).

7.2. Este Kit

Este producto proporciona la combinación perfecta de hardware de fuentes abiertas y software libre y open source. Comprando este producto, soportas también los edfuerzos de la FreedomBox Foundation para crear y promover su software libre y open source de servidor.

El Kit de Servidor Casero FreedomBox Pioneer Edition incluye todo el hardware necesario para arrancar un servidor FreedomBox casero sobre una placa Olimex A20-OLinuXino-LIME2:

  • la A20-OlinuXino-LIME2,

  • su carcasa de metal con el logo de FreedomBox grabado mediante laser,

  • una tarjeta micro SD de alta velocidad y 32GB con el software FreedomBox preinstalado,

  • una batería de respaldo,
  • un transformador, y
  • un cable Ethernet.

7.3. Disponibilidad

El servidor casero FreedomBox Pioneer Edition es la primera versión comercial disponible de FreedomBox.

7.4. Especificaciones del Hardware

  • Hardware de fuentes abiertas (OSHW):

  • CPU: Allwinner A20, ARM Cortex-A7 dual-core a 1GHz
  • RAM: 1 GiB DDR3
  • Almacenamiento: tarjeta microSD de 32GB de clase 10+ precargada con FreedomBox

  • Batería: Li-Po, 3.3V y 1400mAh (4-5 horas de respaldo si no hay dispositivos adicionales conectados al puerto USB)
  • Ethernet: 10/100/1000, RJ45 (cable de 1 m incluído)
  • Transformador: Entrada a 110-220V, salida a 5V, estilo UE (enchufes opcionales para el Reino Unido o EE.UU)
  • Carcasa: Metálica con la marca FreedomBox

Los kits ejecutan sólo Software Libre. Funcionan con núcleo (kernel) y u-boot de los repositorios Debian. Incluso el firmware de arranque de la ROM, llamado BROM es software libre (GPLV2+).

7.5. Descarga

Los kits vienen con una tarjeta SD precargada con FreedomBox. NO hace ninguna falta descargar imágenes.

No obstante, si deseas restablecer tus dispositivos a un estado virginal puedes hacerlo con la imágen provista. Sigue las instrucciones de la página de descargas para crear una tarjeta SD de FreedomBox y arrancar tu dispositivo. Asegúrate de descargar imágenes para la Pioneer Edition. Estas imágenes de tarjeta SD se usan en la ranura SD de la propia placa y no funcionarán si se insertan en un lector SD externo conectado por USB.

Una alternativa a descargar estas imágenes es instalar Debian en el dispositivo y luego instalar FreedomBox sobre él.

7.6. Construcción de una Imágen

Las imágenes de FreedomBox para este hardware se pueden construir usando Freedom Maker.

7.7. Reparos conocidos

8. Obtener el Código Fuente

FreedomBox es 100% software libre y puedes obtener el código fuente para estudiarlo, modificarlo y distribuir mejoras.

8.1. Desde (dentro de) FreedomBox

FreedomBox se compone de diferentes programas de software y puedes obtener el código fuente de cualquiera de ellos. Estas instrucciones son similares a obtener y construír código fuente de Debian ya que FreedomBox es una variante pura de Debian. Usando este procedimiento puedes obtener el código fuente de la misma versión del paquete que estás usando actualmene en FreedomBox.

  1. Para ver la lista de paquetes software instalados en tu FreedomBox, ejecuta lo siguiente en un terminal:

    dpkg -l
  2. Para obtener el código fuente de cualquiera de esos programas ejecuta:
    apt source <nombre_del_paquete>

    Esto requiere que el archivo /etc/apt/sources.list contenga información acerca de los repositorios de código fuente. Esto es así por defecto en todas las imágenes FreedomBox. Pero si has instalado FreedomBox desde Debian necesitas asegurarte de que los repositorios de código fuente figuren en este archivo.

  3. Para construir el paquete desde su código fuente, primero instala sus dependencias
    apt build-dep <nombre_del_paquete>

    Cambia al directorio fuente creado con el comando apt source:

    cd <directorio_fuente>
    Y construye el paquete
     dpkg-buildpackage -rfakeroot -uc
  4. Instala el paquete:
     dpkg -i ../<paquete_construído>.deb

8.2. Otras Maneras de Obtener el Código Fuente

  1. El código fuente de cualquier paquete se puede ver y buscar usando el interfaz web de sources.debian.org. Por ejemplo, mira el paquete plinth.

  2. El código fuente y el binario precompilado de cualquier version de un paquete, incluyendo versiones antigüas, se pueden obtener de snapshot.debian.org. Por ejemplo, mira el paquete plinth.

  3. También puedes obtener los enlaces a la web del proyecto original, al control de versiones del proyecto original, al control de versiones de Debian, registro de cambios, etc. desde la página de control Debian para el proyecto en tracker.debian.org. Por ejemplo, mira la página de control para el paquete plinth.

  4. Puedes compilar e instalar un paquete desde el control de versiones de Debian. Por ejemplo,
     git clone https://salsa.debian.org/freedombox-team/plinth
     cd plinth
     apt build-dep .
     dpkg-buildpackage -rfakeroot -uc
     dpkg -i ../plinth*.deb

8.3. Construyendo Imágenes de disco

También puedes construír imágenes de disco FreedomBox para varias platformas de hardware usando la herramienta freedom-maker. Esta también está disponible como paquete Debian y su código fuente se puede obtener empleando los métodos anteriores. Hay disponibles Instrucciones de Construcción para generar imágenes de disco incluídas en el código fuente del paquete freedom-maker.

Las imágenes de disco de FreedomBox se construyen y suben a los servidores oficiales empleando la infraestructura de integración contínua automatizada. Esta infraestructura está disponible también como código fuente y proporciona información precisa acerca de como se contruyen las imágenes de FreedomBox.

8.3.1. Imágenes U-boot sobre Pioneer Edition

Hay una excepción menor en el paquete u-boot que viene con el hardware que se vende como Kits de Servidor Casero FreedomBox Pioneer Edition. Contiene un parche pequeño pero importante que no está en el código fuente de Debian. Tanto el repositorio fuente de Debian u-boot como el parche de FreedomBox están disponibles como un repositorio aparte. Esperamos que en algún momento este parche esté integrado en u-boot de serie y este repositorio ya no sea necesario. Este paquete se puede compilar en una máquina Debian armhf como sigue (también se puede hacer compilación cruzada, simplemente sigue las instrucciones para compilación cruzada de paquetes Debian):

apt install git git-buildpackage
git clone https://salsa.debian.org/freedombox-team/u-boot.git
cd u-boot
pbuilder create --distribution=buster
gbp buildpackage --git-pbuilder

El paquete u-boot Debian estará en u-boot-sunxi*.deb. Este paquete contendrá

mkdir temp
dpkg -x u-boot-suxi*.deb temp
unxz <lime2_image_built_with_freedom_maker>
dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=<lime2.img> seek=8 bs=1k conv=notrunc

La imagen resultante tendrá el u-boot modificado.

9. Cubietruck

9.1. FreedomBox Danube Edition

FreedomBox Danube Edition

FreedomBox Danube Edition is a custom casing around Cubietruck and an SSD-hard drive.

9.2. Cubietruck / Cubieboard3

Cubietruck (Cubieboard3) is a single board computer with very good performance compared to many other boards. FreedomBox images are built for this device. To use this board as FreedomBox, a separate USB WiFi device that does not require non-free firmware is recommended.

Recommendation: If you are using a board that uses SD cards, when you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space.

9.3. Download

FreedomBox SD card images are provided for this hardware. These SD card images are meant for use with the on-board SD card slot and do not work when used with a separate SD card reader connected via USB.

An alternative to downloading these images is to install Debian on the Cubietruck and then install FreedomBox on it.

9.4. Build Image

FreedomBox images for this hardware can be built using Freedom Maker.

9.5. Availability

FreedomBox Danube Edition

  • A limited number of units are planned to be shipped along with the release of FreedomBox. If you wish to get one, express your interest.

Cubietruck / Cubieboard3

9.6. Hardware

  • Open Hardware: No
  • CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core
  • RAM: 2 GiB DDR3 @ 480 MHz
  • Storage: 8 GB NAND flash built-in, 1x microSD slot
  • Architecture: armhf
  • Ethernet: 10/100/1000, RJ45
  • WiFi: Broadcom BCM4329/BCM40181 (no free WiFi drivers + firmware available)

  • SATA: 1x 2.0 port

9.7. Non-Free Status

  • Non-free blobs required: ?
  • WiFi: no free WiFi drivers + firmware available

  • Works with stock Debian kernel: yes

9.8. Known Issues

  • The on-board WiFi does not work with free software. A separate USB WiFi device is recommended.

10. Beagle Bone Black

Beagle Bone Black

Beagle Bone Black (Revision C.1) is an Open Source Hardware (OSHW) single board computer. This means that the designer is actively helping people using the platform for their own designs, and supports them in adding hardware functionality and production advice. This is a part of freedom that is often overlooked, but very much aligned with the FreedomBox goals. FreedomBox images are built and tested for this device. To use this device as a FreedomBox, a separate USB WiFi device that does not require non-free firmware is recommended.

Recommendation: If you are using a board that uses SD cards, when you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space.

10.1. Download

FreedomBox SD card images are available for this device. Follow the instructions on the download page to create a FreedomBox SD card and boot the device.

Note: This image is for BeagleBone Black (Revision C.1) only. It will not work on the BeagleBone Green, and also not on the Revisions A&B. If you have such a device and would like to help getting FreedomBox to run on it, contact us!

An alternative to downloading these images is to install Debian on the BeagleBone and then install FreedomBox on it.

10.2. Build Image

FreedomBox images for this hardware can be built using Freedom Maker.

10.3. Availability

10.4. Hardware

  • Open Source Hardware (OSHW): Yes

  • CPU: AM335x 1GHz ARM Cortex-A8

  • RAM: 512MB DDR3L 800 Mhz
  • Storage: Onboard 4GB, 8bit Embedded MMC and microSD
  • Architecture: armhf
  • Ethernet: 10/100, RJ45
  • WiFi: None, use a USB WiFi device

  • SATA: None

10.5. Non-Free Status

  • Non-free blobs required: No
  • WiFi: Not available

  • Works with stock Debian kernel: Yes

10.6. Known Issues

None

11. A20 OLinuXino Lime2

A20 OLinuXino Lime2

Olimex's A20 OLinuXino Lime2 is a fully Open Source Hardware (OSHW) single board computer. This means that the designer is actively helping people using the platform for their own designs, and supports them in adding hardware functionality and production advice. This is a part of freedom that is often overlooked, but very much aligned with the FreedomBox goals. It uses the Allwinner A20 Dual Core ARM processor. FreedomBox images are built and tested for this device starting with version 0.7. To use this device as a FreedomBox, a separate USB WiFi device that does not require non-free firmware is recommended.

Recommendation: If you are using a board that uses SD cards, when you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space.

11.1. Similar Hardware

The following similar hardware will also work well with FreedomBox.

11.2. Download

FreedomBox SD card images are available for this device. Follow the instructions on the download page to create a FreedomBox SD card and boot the device. These SD card images are meant for use with the on-board SD card slot and won't work when used with a separate SD card reader connected via USB.

An alternative to downloading these images is to install Debian on the device and then install FreedomBox on it.

11.3. Build Image

FreedomBox images for this hardware can be built using Freedom Maker.

11.4. Availability

  • Price: 45 EUR (A20 OLinuXino Lime2)
  • Price: 55 EUR (A20 OLinuXino Lime2 4GB)
  • Olimex Store

11.5. Hardware

  • Open Source Hardware (OSHW): Yes

  • CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core
  • RAM: 1 GiB DDR3
  • Storage: 4 GB NAND flash built-in (only on 4GB model), 1x microSD slot
  • Architecture: armhf
  • Ethernet: 10/100/1000, RJ45
  • WiFi: None, use a USB WiFi device

  • SATA: 1x port

11.6. Non-Free Status

  • Non-free blobs required: No
  • WiFi: Not available

  • Works with stock Debian kernel: Yes
  • Boot Firmware: BROM (GPLV2+)

11.7. Known Issues

12. A20 OLinuXino MICRO

A20 OLinuXino MICRO

Olimex's A20 OLinuXino MICRO is a fully Open Source Hardware (OSHW) single board computer. This means that the designer is actively helping people using the platform for their own designs, and supports them in adding hardware functionality and production advice. This is a part of freedom that is often overlooked, but very much aligned with the FreedomBox goals. It uses the Allwinner A20 Dual Core ARM processor. FreedomBox images are built and tested for this device starting with version 0.7. To use this device as a FreedomBox, a separate USB WiFi device that does not require non-free firmware is recommended.

Recommendation: If you are using a board that uses SD cards, when you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space.

12.1. Similar Hardware

The following similar hardware will also work well with FreedomBox.

12.2. Download

FreedomBox MicroSD card images are available for this device. Follow the instructions on the download page to create a FreedomBox MicroSD card and boot the device. These MicroSD card images are meant for use with the on-board MicroSD card slot and won't work on the SD card slot or when using a separate MicroSD card reader connected via USB.

An alternative to downloading these images is to install Debian on the device and then install FreedomBox on it.

12.3. Build Image

FreedomBox images for this hardware can be built using Freedom Maker.

12.4. Availability

  • Price: 50 EUR (A20 OLinuXino MICRO)
  • Price: 63 EUR (A20 OLinuXino MICRO 4GB)
  • Olimex Store

12.5. Hardware

  • Open Source Hardware (OSHW): Yes

  • CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core
  • RAM: 1 GiB DDR3
  • Storage: 4 GB NAND flash built-in (only on 4GB model), 1x microSD slot
  • Architecture: armhf
  • Ethernet: 10/100, RJ45
  • WiFi: None, use a USB WiFi device

  • SATA: 1x port

12.6. Non-Free Status

  • Non-free blobs required: No
  • WiFi: Not available

  • Works with stock Debian kernel: Yes
  • Boot Firmware: BROM (GPLV2+)

12.7. Known Issues

  • Not visible on local network
  • When booting the 'stable' image (made on 2017-06-18) the board does not automatically get an IP address from the router's DHCP server over ethernet. Booting the 'testing' image (2018-06) the board does get an IP address. Tested on MICRO hardware revision J. see also: https://www.olimex.com/forum/index.php?topic=5839.msg24167#msg24167

13. APU

PC Engines APU 1D

PC Engines APU 1D is a single board computer with 3 Gigabit ethernet ports, a powerful AMD APU and Coreboot firmware. FreedomBox images built for AMD64 machines are tested to work well for it. For using this board as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended.

Recommendation: If you are using a board that uses SD cards, when you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space.

13.1. Similar Hardware

Although untested, the following similar hardware is also likely to work well with FreedomBox.

13.2. Download

FreedomBox disk images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card, USB disk, SSD or hard drive and boot into FreedomBox. Pick the image meant for all amd64 machines.

An alternative to downloading these images is to install Debian on the APU and then install FreedomBox on it.

13.3. Networking

The first network port, the left most one in the above picture, is configured by FreedomBox to be an upstream Internet link and the remaining 2 ports are configured for local computers to connect to.

13.4. Build Image

FreedomBox images for this hardware, which is for all amd64 machines, can be built using Freedom Maker.

13.5. Availability

13.6. Hardware

  • Open Hardware: No
  • CPU: AMD G series T40E

  • RAM: 2 GB DDR3-1066 DRAM
  • Storage: SD card, External USB
  • Architecture: amd64
  • Ethernet: 3 Gigabit Ethernet ports
  • WiFi: None, use a USB WiFi device

  • SATA: 1 m-SATA and 1 SATA

13.7. Non-Free Status

  • Non-free blobs required: No
  • WiFi: Not available

  • Works with stock Debian kernel: Yes
  • Boot firmware: Coreboot

13.8. Known Issues

None

14. pcDuino3

LinkSprite pcDuino3S

LinkSprite pcDuino3S is a single board computer running on Allwinner A20 and sold with a good case. FreedomBox images are built and tested for this device for images built after June 2017. For using this board as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended.

Note: The FreedomBox logo is simply a sticker on top of device brought from store.

Recommendation: If you are using a board that uses SD cards, when you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space.

14.1. Similar Hardware

Although untested, the following similar hardware is also likely to work well with FreedomBox.

14.2. Download

FreedomBox disk images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card, USB disk, SSD or hard drive and boot into FreedomBox. Pick the image meant for pcduino3.

An alternative to downloading these images is to install Debian on the APU and then install FreedomBox on it.

14.3. Build Image

FreedomBox images for this hardware can be built using Freedom Maker.

14.4. Availability

14.5. Hardware

  • Open Hardware: No
  • CPU: AllWinner A20 SoC, 1GHz ARM Cortex A7 Dual Core

  • RAM: 1 GB
  • Storage: SD card, 4 GB onboard flash
  • Architecture: armhf
  • Ethernet: 10/100 Mbps
  • WiFi: Built-in WiFi requires non-free firmware, use a USB WiFi device instead

  • SATA: 1 SATA host socket

14.6. Non-Free Status

  • Non-free blobs required: No
  • WiFi: Requires non-free firmware

  • Works with stock Debian kernel: Yes
  • Boot Firmware: BROM (GPLV2+)

14.7. Known Issues

None

15. Pine A64+

Pine 64+

Pine A64+ is an affordable single board computer with good performance.

Recommendation: Pine A64+ series of boards do not have built-in storage. If installing to a microSD card, it is recommended to choose a microSD card of class 10 or better with at least 8 GB of storage.

15.1. Similar Hardware

  • Both 1GB and 2GB versions of Pine A64+ are supported with the same FreedomBox image.

  • Pine A64-LTS is not supported yet.

15.2. Download

FreedomBox SD card images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. Pick the image meant for Pine A64+.

An alternative to downloading these images is to install Debian on the device and then install FreedomBox on it.

15.3. Build Image

FreedomBox images for this hardware can be built using freedom-maker.

15.4. Availability

15.5. Hardware

  • Open Source Hardware (OSHW): No
  • CPU: Allwinner A64, Quad-core ARM Cortex A53 64-bit processor
  • RAM: 3 variants - 512 MB (not recommended), 1 GB and 2 GB (recommended)
  • Storage: SD card, eMMC (module sold separately but not tested with FreedomBox)

  • Architecture: arm64
  • Ethernet: Gigabit Ethernet port
  • Battery: Supports battery backup using a Li-Po battery
  • WiFi: None, use a USB WiFi device

  • SATA: None

15.6. Non-Free Status

  • Non-free blobs required: No
  • WiFi: Not available

  • Works with stock Debian kernel: Yes

15.7. Known Issues

None

16. VirtualBox

VirtualBox

This page will help you get started with using FreedomBox on a virtual machine using VirtualBox. While VirtualBox images are primarily used for testing and development, they can also be used for regular use if you have spare resources on one of your machines. This setup is useful if:

  • You don't own one of the supported hardware devices.

  • You don't use Debian GNU/Linux as your operating system.
  • You don't want to disturb your Debian installation to try out FreedomBox.

Prebuilt FreedomBox images for VirtualBox are routinely made available in VirtualBox's own VDI image file format. They contain a Debian GNU/Linux operating system and an installation of FreedomBox with all dependencies ready to run on any OS supported by VirtualBox (Windows, Linux, Macintosh, and Solaris).

A more adventurous alternative to downloading one of these images is to install Debian on VirtualBox and then install FreedomBox on it.

VirtualBox itself is available from https://www.virtualbox.org/ (or your distribution's package manager).

16.1. Download

Follow the instructions on the download page to download and verify a VirtualBox image. The latest images are available on freedombox.org.

16.2. Creating a Virtual Machine

  1. Decompress the downloaded VDI image (tool for Windows, Mac).

  2. Create a new VM in the VirtualBox UI with OS type Linux and Version Debian (32/64-bit according to the downloaded image).

VirtualBox Name and OS dialog

  1. In the Hard disk dialog choose Use an existing virtual hard disk file and select the .vdi file you extracted in step 1.

VirtualBox Hard disk dialog

  1. When created, go to the virtual machine's Settings -> [Network] -> [Adapter 1]->[Attached to:] and choose the network type your want the machine to use according to the explanation in Network Configuration below. The recommended type is the Bridged adapter option, but be aware that this exposes the FreedomBox's services to your entire local network.

VirtualBox recommended network setting

Note: It is important to make sure that you have provided the correct network interface in the above step. For example, if the virtual machine is running on a laptop connected to a Wi-Fi network, then the wireless interface (starts with wlp) must be chosen as shown in the screenshot.

16.3. First Boot

When satisfied with the VM settings click the start button in the VirtualBox UI and your new FreedomBox will boot.

The console of the VM will show the textual screen below when finished booting, from here most interaction with FreedomBox will be through the web interface (aka. Plinth) in a browser.

FreedomBox console after booting successfully

If everything went well so far, you should be able to access the web interface of FreedomBox by pointing a browser on the host machine to https://freedombox.local.

In case freedombox.local cannot be resolved, you need to find out your FreedomBox's IP address as described in Finding out the IP address of the virtual machine. Then access this IP from a web browser which is on the same network as the VM (f.ex. the host). If all is well, you are now presented with a welcome message and invited to complete the first boot process.

FreedomBox welcomes you to the first boot

This mainly consist of creating an administrative user for the system.

16.4. Using

See the FreedomBox usage page for more details.

You can log in to the Debian GNU/Linux system as the user created during Plinth first boot on the VirtualBox console or remotely via ssh.

After logging in, you can become root with the command sudo su.

16.5. Build Image

If you wish to build your own images instead of downloading available images, it can be done using Freedom Maker.

16.6. Tips & Troubleshooting

16.6.1. Network Configuration

VirtualBox provides many types of networking options. Each has its advantages and disadvantages. For more information about how various networking types work in VirtualBox, see VirtualBox's networking documentation. https://www.virtualbox.org/manual/ch06.html

For a simple setup, it is recommended that you use a single network interface in your guest machine. This will make the first boot script automatically configure that interface as an internal network with automatic network configuration. Inside the guest machine, the networking is configured automatically and all the services are made available on this network interface. For more information on how networks are configured by default in FreedomBox, see Networks section.

What remains is to make those services available to the host machine or to other machines in the network. You must then choose one of the following types of networking for the network interface on your guest machine. To set a particular type of network for the guest's network adapter, go to the guest VM's settings then the network options and then select the adapter you wish to configure. There, set the network type from the available list of networks.

  1. First and the recommended option is to use the Bridged type of network. This option exposes the guest machine to the same network that host network is connected to. The guest obtains network configuration information from a router or DHCP server on the network. The guest will appear as just another machine in the network. A major advantage of this of setup is that the host and all other machines in the network will be able to access the services provided by guest without requiring any further setup. The only drawback of this approach is that if the host is not connected to any network, the guest's network will remain unconfigured making it inaccessible even from the host.

  2. Second method is Host only type of networking. With a guest's network interface configured in this manner, it will only be accessible from the host machine. The guest will not able access any other machine but the host, so you do not have internet access on the guest. All services on the guest are available to the host machine without any configuration such as port forwarding.

  3. The third option is to use the NAT type of network. This the networking type that VirtualBox assigns to a freshly created virtual machine. This option works even when host is not connected to any network. The guest is automatically configured and is able to access the internet and local networks that host is able to connect to. However, the services provided by the guest require port forwarding configuration setup to be available outside.

    To configure this go to VM settings -> [Network] -> [Adapter] -> [Port Forwarding]. Map a port such as 2222 from host to guest port 22 and you will be able to ssh into FreedomBox from host machine as follows:

     ssh -p 2222 fbx@localhost

    Map 4443 on host to 443 on the guest. This make FreedomBox HTTPS service available on host using the URL https://localhost:4443/ You will need to add a mapping for each such services from host to guest.

  4. The final option is to create two network interfaces, one host only and one NAT type. This way you can access the guest without any additional configuration, and you have internet access on the guest. The guest will be invisible to any other machines on the network.

Summary of various network types:

-

Guest accessible from other machines

Guest accessible from host

Works without port forwarding

Works without host connected to network

Guest has internet access

Bridged

(./)

(./)

(./)

{X}

(./)

Host only

{X}

(./)

(./)

(./)

{X}

NAT

(./)

(./)

{X}

(./)

(./)

NAT and Host

{X}

(./)

(./)

(./)

(./)

16.6.2. Finding out the IP address of the virtual machine

This depends on the network configuration you chose. With a bridged adapter, your virtual machine gets its IP address from the DHCP server of your network, most likely of your Router. You can try the first couple of IP addresses or check your router web interface for a list of connected devices.

If you chose host-only adapter, the IP address is assigned by the DHCP server of your VirtualBox network. In the VirtualBox Manager, go to File -> Preferences -> Network -> Host-only Networks. You can see and edit the DHCP address range there, typically you get assigned addresses close to the Lower Address Bound.

Another possibility of finding the IP address is to login via the Virtualbox Manager (or similar software). The FreedomBox images do not have any default user accounts, so you need to set an initial user and password using the passwd-in-image script.

See also QuickStart for instructions on how to scan your network to discover the IP of the VM.

16.6.3. Networking Problems with macchanger

The package macchanger can cause network problems with VirtualBox. If you have a valid IP address on your guest's host network adapter (like 192.168.56.101) but are not able to ping or access the host (like 192.168.56.1), try uninstalling macchanger:

$ dpkg --ignore-depends=freedombox-setup --remove macchanger 

You might have to manually remove the script /etc/network/if-prep-up/macchanger. If Debian complains about unmet dependencies when you use a package manager (apt-get, aptitude, dpkg), try to remove 'macchanger' from the dependencies of 'freedombox-setup' in the file /var/lib/dpkg/status.

16.6.4. Mounting Images Locally

If you want to mount images locally, use the following to copy built images off the VirtualBox:

$ mkdir /tmp/vbox-img1 /tmp/vbox-root1
$ vdfuse -f freedombox-unstable_2013.0519_virtualbox-i386-hdd.vdi /tmp/vbox-img1/
$ sudo mount -o loop /tmp/vbox-img1/Partition1 /tmp/vbox-root1
$ cp /tmp/vbox-root1/home/fbx/freedom-maker/build/freedom*vdi ~/
$ sudo umount /tmp/vbox-root1
# $ sudo umount /tmp/vbox-img1 # corruption here.

16.6.5. Fixing the time after suspend and resume

The virtual machine loses the correct time/date after suspending and resuming. One way to fix this is to create a cron-job that restarts the time service ntp. You can add a crontab entry as root to restart ntp every 15 minutes by typing 'crontab -e' and adding this line:

*/15 * *   *   *     /etc/init.d/ntp restart

Do not restart this service too often as this increases the load of publicly and freely available NTP servers.

17. Debian

FreedomBox is a pure blend of Debian. This means that all the work on FreedomBox is available in Debian as packages. It also means that any machine running Debian can be turned into a FreedomBox.

This page describes the process of installing FreedomBox on a Debian system. Currently, FreedomBox works in Debian Stable (Buster), Testing (Bullseye), and Unstable (Sid).

Use a fresh Debian installation

Installing FreedomBox changes your Debian system in many important ways. This includes installing a firewall and regenerating server certificates. It is hence recommended that you install FreedomBox on a fresh Debian installation instead of an existing setup.

17.1. Installing on Debian 10.0 (Buster) or newer

Check the Troubleshooting section below, for any tips or workarounds that might help during the install.

  1. Install Debian 10.0 (Buster), or Unstable (Sid) on your hardware.

  2. Update your package list.
    $ sudo apt-get update
  3. Install freedombox package.

    $ sudo DEBIAN_FRONTEND=noninteractive apt-get install freedombox
    • The "DEBIAN_FRONTEND=noninteractive" will avoid several configuration prompts that would otherwise appear during the install.
  4. During the installation, you will be provided a secret key that needs to be entered during the initial configuration process. Note this down. The secret can also be read at a later time from the file /var/lib/plinth/firstboot-wizard-secret.

  5. You can start using FreedomBox. During initial wizard, you will need to enter the secret noted above.

17.2. Installing on Debian 9 (Stretch)

Check the Troubleshooting section below, for any tips or workarounds that might help during the install.

  1. Install Debian 9 (Stretch) on your hardware.

  2. Update your package list.
    $ sudo apt-get update
  3. Install freedombox-setup package.

    $ sudo DEBIAN_FRONTEND=noninteractive apt-get install freedombox-setup
    • The "DEBIAN_FRONTEND=noninteractive" will avoid several configuration prompts that would otherwise appear during the install.
  4. Run FreedomBox setup program. This installs further packages and sets up basic configuration.

    $ sudo /usr/lib/freedombox/setup | tee freedombox-setup.log
    You may have to clear your existing network configuration. See Troubleshooting note #2 below.
  5. Reboot the system. This is necessary to trigger the first-run script.
    $ sudo reboot
  6. After the system boots up, wait for it to reboot again. The first-run scripts sets up a few things and initiates a reboot.
  7. After the second reboot you can start using FreedomBox.

17.3. Tips and Troubleshooting

  1. There is a bug in policykit-1 package that causes errors and hangs during installation of freedombox-setup package. This bug is only applicable to Debian 9 (Stretch) and older. A workaround is to first install policykit-1 package and then reboot. After that, follow the above setup procedure.

    $ sudo apt-get update
    $ sudo apt-get install policykit-1
    $ sudo reboot
  2. FreedomBox uses NetworkManager to manage network configuration. If you have configured your network interfaces using Debian installer or by editing /etc/network/interfaces, FreedomBox will not manage those interfaces. (See bug #797614.) To let FreedomBox/NetworkManager manage your network interfaces, edit the /etc/network/interfaces manually and ensure that it contains only the following:

    auto lo
    iface lo inet loopback

    If you have already completed the setup process without doing this step, you will need to clear out the /etc/network/interfaces file keeping only the above lines. Then perform a reboot. On Debian 9 (Stretch), after this network connections configured by the setup step above will configure your network. Network interfaces will then be in the internal or external firewall zone. This is essential for the FreedomBox's web interface to be reachable from other machines in the network. You can tweak network manager connections with the nmtui command if you wish.

  3. FreedomBox will use an automatically configured IP address by default. You can assign a static IP address if necessary. Network configuration changes can be done using FreedomBox web interface or by using the nmtui or nmcli commands. nmcli can be used as follows:

      nmcli con mod "Ethernet connection 1"  \
      ipv4.addresses A.A.A.A/X  \
      ipv4.gateway G.G.G.G  \
      ipv4.dns N.N.N.N  \
      ipv4.dns-search somedomain.com  \
      ipv4.method "manual"  \
      ipv4.ignore-auto-dns yes  \
      ipv6.method ignore

...with the block capitals and somedomain.com replaced with your actual address, mask description, gateway and dns server details.

18. DreamPlug

DreamPlug

Deprecated Hardware

This hardware was supported earlier but is no longer supported. If you downloaded an earlier image and are running FreedomBox on this hardware, you will keep getting software updates. You can stay secure and up-to-date. However, no new images will be provided for this hardware. It is recommended that you migrate to newer, supported hardware using backup and restore.

DreamPlug is the hardware for which FreedomBox has been originally targeted. FreedomBox images are built and tested for it. For using this device as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended.

You can find more support and discussion for DreamPlug on the official forum.

Recommendation: If you are using a board that uses SD cards, when you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space.

18.1. Download

FreedomBox SD card images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. See also instructions for using an internal micro-SD with DreamPlug.

An alternative to downloading these images is to install Debian on DreamPlug and then install FreedomBox on it.

18.2. Networking

The network port towards the middle of the box, is configured by FreedomBox to be an upstream Internet link. The remaining port is configured for a local computer to connect to.

18.3. Firmware

Note that the factory firmware configurations may vary between revisions of the hardware, and render some images incompatible. See the DreamPlug firmware page for information on what images are compatible and how to update your DreamPlug firmware.

18.4. Build Image

FreedomBox images for this hardware can be built using Freedom Maker.

18.5. Testing

Instructions on how to test this hardware are available.

18.6. Availability

18.7. Hardware

  • Open Hardware: No
  • CPU: Marvell Kirkwood 88F6281 @ 1.2GHz
  • RAM: 512MB 16bit DDR2-800 MHz
  • Storage: 4 GB on board micro-SD
  • Architecture: armel
  • Ethernet: 2x 10/100/1000, RJ45
  • WiFi: SD8787, 802.11 b/g/n

  • SATA: eSATA 2.0 port

18.8. Non-Free Status

  • Non-free blobs required: built-in WiFi

  • WiFi: no free WiFi drivers + firmware available

  • Works with stock Debian kernel: yes

18.9. Known Issues

  • WiFi does not work with free software. A separate USB WiFi device is recommended.

19. Raspberry Pi Model B+

Raspberry Pi (Model B+)

Deprecated Hardware

This hardware was supported earlier but is no longer supported. If you downloaded an earlier image and are running FreedomBox on this hardware, you will keep getting software updates. You can stay secure and up-to-date. However, no new images will be provided for this hardware. It is recommended that you migrate to newer, supported hardware using backup and restore.

Raspberry Pi (Model B+) is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. FreedomBox images are built and tested for it. For using this board as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended.

Note: The Debian architecture used for this device is armel. This means floating point computations are done in software and most operations are slower than what Raspberry Pi is capable of.

Recommendation: When you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space.

19.1. Download

FreedomBox SD card images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox.

19.2. Build Image

FreedomBox images for this hardware can be built using Freedom Maker.

19.3. Availability

19.4. Hardware

  • Open Hardware: No
  • CPU: ARM1176JZF-S (ARMv6k) 700 MHz
  • RAM: 512 MB
  • Storage: MicroSD card slot
  • Architecture: armel
  • Ethernet: 10/100, RJ45
  • WiFi: None, use a USB WiFi device

  • SATA: None

19.5. Non-Free Status

  • Non-free blobs required: boot firmware
  • WiFi: Not available

  • Works with stock Debian kernel: No

19.6. Known Issues

  • The Debian architecture used for this device is armel. This means floating point computations are done in software and generally most operations are slower than what Raspberry Pi is capable of.

20. Raspberry Pi 2 Model B

Raspberry Pi 2

Raspberry Pi 2 (Model B ) is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi Model B+ with much faster processor and more RAM. FreedomBox images are built and tested for it. For using this board as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended.

Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the Quick Start page to access and control your FreedomBox from network.

Recommendation: If you are using a board that uses SD cards, when you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space.

20.1. Download

FreedomBox SD card images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox.

20.2. Build Image

FreedomBox images for this hardware can be built using Freedom Maker.

20.3. Availability

20.4. Hardware

  • Open Hardware: No
  • CPU: 900 MHz quad-core ARM Cortex-A7
  • RAM: 1 GB
  • Storage: MicroSD card slot
  • Architecture: armhf
  • Ethernet: 10/100, RJ45
  • WiFi: None, use a USB WiFi device

  • SATA: None

20.5. Non-Free Status

  • Non-free blobs required: boot firmware
  • WiFi: Not available

  • Works with stock Debian kernel: Yes

21. Raspberry Pi 3 Model B

Raspberry Pi 3 Model B

Raspberry Pi 3 Model B is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi 2 Model B with a 64-bit processor and on-board Wi-Fi. A FreedomBox "testing" image is available for Raspberry Pi 3 Model B. For using this board as FreedomBox, a USB WiFi device, that does not require non-free firmware, is recommended instead of the on-board Wi-Fi.

Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the Quick Start page to access and control your FreedomBox from network.

Recommendation: If you are using a board that uses SD cards, when you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space.

21.1. Download

FreedomBox SD card images for this hardware are available. Download the "testing" image for Raspberry Pi 3 Model B. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox.

21.2. Build Image

FreedomBox images for this hardware can be built using Freedom Maker. Use the target 'raspberry3' with distribution 'testing' to build the image for this board.

21.3. Availability

21.4. Hardware

  • Open Hardware: No
  • CPU: 1.2GHz 64-bit quad-core ARMv8 CPU
  • RAM: 1 GB
  • Storage: MicroSD card slot
  • Architecture: armhf
  • Ethernet: 10/100, RJ45
  • WiFi: 802.11n but requires non-free firmware, instead use a USB WiFi device

  • SATA: None

21.5. Non-Free Status

  • Non-free blobs required: boot firmware
  • WiFi: Requires non-free firmware

  • Works with stock Debian kernel: Yes

22. Raspberry Pi 3 Model B+

Raspberry Pi 3 Model B+

Raspberry Pi 3 Model B+ is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi 3 Model B with better Ethernet and a 5Ghz Wi-Fi. A FreedomBox "testing" image is available for Raspberry Pi 3 Model B+. For using this board as FreedomBox, a USB WiFi device, that does not require non-free firmware, is recommended instead of the on-board Wi-Fi.

Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the Quick Start page to access and control your FreedomBox from network.

Recommendation: If you are using a board that uses SD cards, when you flash the FreedomBox image onto your SD card, we recommend that you use an SD card with at least 8GB of storage space.

22.1. Download

FreedomBox SD card images for this hardware are available. Download the "testing" image for Raspberry Pi 3 Model B+. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox.

22.2. Build Image

FreedomBox images for this hardware can be built using Freedom Maker. Use the target 'raspberry3-b-plus' with distribution 'testing' to build the image for this board.

22.3. Availability

22.4. Hardware

  • Open Hardware: No
  • CPU: 1.4GHz 64-bit quad-core ARMv8 CPU
  • RAM: 1 GB
  • Storage: MicroSD card slot
  • Architecture: armhf
  • Ethernet: 10/100/1000, RJ45
  • WiFi: 802.11ac but requires non-free firmware, instead use a USB WiFi device

  • SATA: None

22.5. Non-Free Status

  • Non-free blobs required: boot firmware
  • WiFi: Requires non-free firmware

  • Works with stock Debian kernel: Yes

23. USB Wi-Fi

FreedomBox works on many single board computers. However, many of these boards do not have built-in Wi-Fi capabilities. Even when Wi-Fi capability is available, non-free proprietary firmware is required to make them work.

A solution to the problem is to plug-in a USB Wi-Fi device into one of the available USB ports. There are many such devices available which do not require non-free firmware to work. The following is a list of such devices that work with FreedomBox devices. Some devices based on these chips have tested to work well with FreedomBox including functions such as access point mode.

23.1. Firmware Installation

The free firmware for these devices is not packaged in Debian yet. You can manually download and install the firmware as follows:

sudo su [enter password]
cd /lib/firmware
wget https://www.thinkpenguin.com/files/ath9k-htc/version-1.4-beta/htc_9271.fw
wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw

23.2. Resources

Release Notes

The following are the release notes for each FreedomBox version.

1. FreedomBox 19.16 (2019-09-09)

  • backups: Allow adding backup repositories on multiple disks
  • help: Add buttons for contribute, support, and feedback
  • action_utils: Workaround problem with setting debconf answers
  • views: Fix failure in redirecting from language selection page
  • manual: Move PDF download link to HTML manual page
  • help: Convert help icon in the navbar to dropdown
  • ejabberd: Fix listen port configuration for ejabberd 19.x
  • cockpit, ejabberd: Prevent restart on freedombox startup
  • ejabberd: Perform host/domain name operations only when installed
  • logging: Improve formatting and reduce noise
  • translations: Update Hungarian, German, Italian, French, and Norwegian Bokmål

2. FreedomBox 19.15 (2019-08-26)

  • security: Hide vulnerability table by default
  • names: Perform better layout of domain names table on small screens
  • cockpit: Apply domain name changes immediately
  • ejabberd: Prevent processing empty domain name
  • config: Send hostname change signal only after fully processing it
  • letsencrypt: Don't try to obtain certificates for .local domains
  • avahi: Expose .local domain as a proper domain
  • cockpit: Make essential and install by default
  • tt-rss: Force upgrade to 18.12-1.1 and beyond
  • updates: Allow matrix-synapse 1.3 to be installed for buster users
  • javascript: Don't resubmit when refreshing the page
  • storage: Fix regression with restoring backups with storage
  • matrix-synapse: Use recommended reverse proxy configuration
  • Update translations for German, Hungarian, and Norwegian Bokmål

3. FreedomBox 19.14 (2019-08-12)

  • storage: Handle all device paths during eject
  • storage: Fix incorrect internationalization when throwing an error
  • upgrades: Use collapsible-button style for logs
  • firewall: Allow automatic upgrade to 0.7.x
  • upgrades: Handle release info change
  • frontpage: Fix regression with loading custom shortcuts
  • names: Add dynamic domain name
  • names: Add button to configure each type of name
  • names: Update page layout for clearer presentation
  • names: Introduce new API for domain name handling
  • api: Fix regression with listing only enabled apps in mobile app
  • Update translations for Czech, Hungarian, French, Chinese (Simplified), Turkish, Polish, and Norwegian Bokmål

4. FreedomBox 19.13 (2019-07-29)

  • backups: Make UI more consistent with other apps
  • backups: Make backup location tables collapsible
  • Updated translations for Chinese (Simplified), German, and Norwegian Bokmål
  • help: Show security notice when backports are in use
  • security: Show vulnerability counts

5. FreedomBox 19.12 (2019-07-22)

  • sharing: Allow directories to be publicly shared
  • backups: Add option to select/deselect all apps for backup or restore
  • dbus: Allow plinth user to own FreedomBox DBus service

  • letsencrypt: Simplify renewal hooks implementation
  • cockpit: Don't handle domains if app is not installed
  • dynamicdns: Send domain added signal properly during init
  • ejabberd: Backup and restore TLS certificates
  • Started new Galician translation on Weblate
  • Updated translations for Czech, Norwegian Bokmål, Hungarian, Spanish, Telugu, Chinese (Simplified), German, Turkish, and Russian

6. FreedomBox 19.2.2 (2019-07-17)

This release does not contain any functional changes, but fixes test failures when building the package.

7. FreedomBox 19.2.1 (2019-07-09)

This is a bugfix release for 19.2.

  • dbus: Allow plinth user to own FreedomBox DBus service

8. FreedomBox 19.11 (2019-07-08)

  • backups: Fixes to issues while adding SSH remotes:
    • Improve UX of adding ssh remote
    • Avoid creating duplicate SSH remotes
    • Fix issue with repository not being initialized
    • Verify SSH hostkey before mounting
    • Allow SSH directory paths with : in them
    • Require passphrase for encryption in add repository form
    • Don't send passphrase on the command line
    • Un-mount SSH repositories before deleting them
  • matrixsynapse: Fix missing translation mark
  • Started new Greek translation on Weblate
  • Updated translations for Chinese (Simplified), Hungarian, Spanish, and Russian

9. FreedomBox 19.10 (2019-06-24)

  • syncthing: Open firewall ports for listening and discovery
  • radicale: Workaround issue with creating log directory
  • Update translations for Turkish, German, Czech, Norwegian Bokmål, and Portuguese
  • Introduce components for firewall, webserver, uwsgi, and daemons

10. FreedomBox 19.9 (2019-06-10)

  • config: Add option to show advanced apps, which are hidden by default
  • monkeysphere: Hide by default
  • searx: Add option to allow public access to the application
  • Introduce component architecture for apps, with components for menus and shortcuts
  • Start new translation for Bulgarian
  • Update translations for Turkish and Norwegian Bokmål

11. FreedomBox 19.8 (2019-05-27)

  • Switch to using SVG icons for all apps.
  • Updated translations for Czech, Norwegian Bokmål, Hungarian, German, Turkish, and Spanish.

12. FreedomBox 19.7 (2019-05-13)

  • i2p: Include default favorites.
  • Separate enabled and disabled apps.
  • Display port forwarding info for apps.
  • Added Slovenian translation.
  • Updated translations for Dutch, German, Hungarian, Norwegian Bokmål, Polish, Portuguese, Telugu.

13. FreedomBox 19.6 (2019-04-29)

  • i2p: Enable new application for I2P Anonymity Network.
  • Updated translations for Czech, German, Norwegian Bokmål, and Turkish.
  • letsencrypt: Provide link to configure domain if not configured.
  • firewall: Show port numbers and types.

14. FreedomBox 19.5 (2019-04-15)

  • storage: Use more reliable method to list disks and disk space usage.
  • Updated translations for Russian and German.

15. FreedomBox 19.4 (2019-04-01)

  • clients: Open web app in a new browser tab
  • matrix-synapse: Change client diagnostics url
  • minetest: Fix duplicate domain names being displayed in UI
  • storage: Do not show an eject button on /boot partitions
  • letsencrypt: Call letsencrypt manage_hooks with correct arguments
  • dynamicdns: Install module by default
  • storage: Don't check type of the disk for / and /boot
  • storage: Don't log error when checking if partition is expandable
  • Updated translations for Norwegian Bokmål, Czech, German, Hungarian, Spanish, German, and Russian.

16. FreedomBox 19.3 (2019-03-18)

  • UI: Move tabs below descriptions.
  • firewall: Style heading
  • names: Add description
  • pagekite: Change heading text
  • ikiwiki: Consistent styling for delete warning page
  • main: Show service version in logs
  • setup: Organize data files into various apps
  • Updated translations for Czech, Hungarian, Norwegian Bokmål, Spanish, German, French, Italian, and Turkish.

17. FreedomBox 19.2 (2019-03-02)

  • config: Fix Ikiwiki entries not showing up as default apps
  • config: Migrate default app configuration to new conf file
  • config: Rename Default App to Webserver Home Page
  • config: Add option to use Apache's default home page as home page
  • config: Fix error when setting JSXC as the home page
  • Disable Coquelicot for Buster release
  • matrix-synapse: Fix LDAP login issue
  • config: Revert changes in freedombox.conf to avoid conffile prompt
  • openvpn: Migration from easy-rsa 2 to 3 for existing installations
  • tor: Use fixed 9001 port for relaying
  • package: Implement identifying packages that need conffile prompts
  • setup: Trigger force upgrade for app that implement it
  • bind: Handle conffile prompt during upgrade
  • apache: Pre-enable necessary apache modules
  • apache: Use cgid module instead of cgi
  • openvpn: Make frontpage shortcut appear after an upgrade
  • openvpn: Work around firewalld bug 919517
  • firewalld: Implement upgrading from 0.4.x to 0.6.x
  • ttrss: Implement upgrade from 17.4 to 18.12
  • radicale: Add description of web interface
  • ttrss: Add backup support
  • security: Migrate access config to new file
  • Updated translations for Czech, Hungarian, Norwegian Bokmål, Spanish, German, Telugu.

18. FreedomBox 19.1 (2019-02-14)

  • radicale: Increment module version to trigger upgrade handling
  • radicale: Remove obsolete diagnostics
  • radicale: Fix server URLs in client info
  • Updated translations for Czech, Norwegian Bokmål, and Spanish.
  • setup: Add option to handle configuration prompts during install
  • radicale: Simplify upgrading to newer packages
  • matrixsynapse: Use Let's Encrypt certificates

19. FreedomBox 19.0 (2019-02-09)

  • mldonkey: Add some more clients to the module page
  • mldonkey: Add to the description the three available front-ends
  • monkeysphere: Fix handling of multiple domains and keys
  • monkeysphere: Fix regression with reading new apache domain config
  • apache: Switch to mod_ssl from mod_gnutls
  • mldonkey: Enable app
  • upgrades: Fix priority for buster-backports version
  • upgrades: Fix premature adding of buster-backports sources
  • Updated translations for Czech, German, and Spanish
  • Switched to a new version number scheme: YY.N
    • YY is the year of release.
    • N is the release number within that year.

20. Version 0.49.1 (2019-02-07)

  • ui: Fix regression with configure button in home page.
  • backups: Rename 'Abort' buttons to 'Cancel'.
  • backups: Use icon for add repository button.
  • backups: Move subsubmenu below description.
  • backups: Add title and description to other pages.
  • backups: Add link to manual page.
  • backups: Fix styling for upload size warning.
  • backups: Increase timeout for SSH operations to 30 seconds.
  • letsencrypt: UI: Fix checkbox disabling.
  • datetime: Switch from chrony to systemd-timesyncd.
  • Updated translations for Czech, Norwegian Bokmål, and Spanish.

21. Version 0.49.0 (2019-02-05)

  • security: Update javascript for Content Security Policy.
  • help: Use correct package to determine available version.
  • repro: Disable app due to issues with Debian package.
  • ui: Fix regression with card icon style in front page.
  • js: Support full librejs compatibility.
  • js: Remove javascript license link from footer.
  • backups: Remove incorrectly set buffer size during download.
  • backups: Fix incomplete download archives.
  • backups: Improve performance of backup download.
  • radicale: Handle migration from 1.x to 2.x.
  • datetime: Switch from ntp to chrony.
  • backports: Add buster-backports to apt sources list.
  • Updated translations for Czech, Norwegian Bokmål, and Hungarian.

22. Version 0.48.0 (2019-01-28)

  • Updated translations for Czech, Hungarian, German, and Norwegian Bokmål.
  • UI improvements:
    • Fix top margin for content containers.
    • Fix setting width of card-list at various page sizes.
    • Show help nav item text when navbar is collapsed.
    • Hide restart/shutdown items when navbar is collapsed.
    • Compact pages on extra small screen sizes.
  • Backups improvements:
    • Add backup/restore support for syncthing and openvpn.
    • Upgrade apps before restoring them
    • Fix showing not-installed apps in create backup page
    • Automatically install required apps before restore.
    • Add a loader to the restore button to indicate progress.
  • Serve default favicon for apps that don't provide one.
  • radicale: Fix issue with configuration changes not applying.
  • storage: Fix false error message in log when visiting home page.
  • infinoted: Handle timeout issue when stopping daemon during setup.
  • matrix-synapse: Fix startup error caused by bind_address setting.
  • radicale: Avoid changes to conffile for radicale 2.x.
  • help: Fix showing status logs when an error occurs.
  • fail2ban: Enable bans for apache auth failures.
  • mldonkey: Initial work on new module for the eDonkey network.
    • Not available yet, due to bug in package.

23. Version 0.47.0 (2019-01-14)

  • Show Gujarati in the list of languages.
  • Replace glyphicons with forkawesome icons.
  • Snapshots:
    • Change configuration to avoid filling up disk.
    • Handle "Config in use" error.
    • Update descriptions and configuration options.
  • Firewall: Fix issue with transition from iptables.
  • Security: Switch to Argon2 password hash.
  • Cockpit: Add link to manual page and update description.
  • Radicale: Add initial support for radicale 2.x.
  • Setup:
    • Handle showing setup page after app completes installation.
    • Optimize installation in-progress checks and refresh time.

24. Version 0.46.0 (2018-12-31)

  • Updated translations for Czech, German, Spanish, Ukrainian, and Norwegian Bokmål.
  • Use systemd journal for logging.
  • Rename plinth binary package to "freedombox", and merge freedombox-setup package into it.

25. Version 0.45.0 (2018-12-17)

  • Storage: Merge list of removable media into existing table.
  • Backups: Allow remote backups to SSH servers using sshfs.
  • Backups: Removed asking for backup archive name.
  • Automatically handle future versions of PHP.
  • Updated translations for Hungarian, Czech, Spanish, Chinese (Simplified), Italian, Norwegian Bokmål, French, and German.

26. Version 0.44.0 (2018-12-03)

  • UI: Add card style and gray noise background to apps pages.
  • UI: Fix distortion of the client apps buttons.
  • ejabberd: Handle BOSH port change from TCP 5280 to 5443.
  • Minetest: Update mods list to available Debian packages.
  • Firewall: Use nftables instead of iptables.
  • Snapshots: Fix default snapshot listing.
  • Snapshots: Show description above either tab.
  • Snapshots: Allow snapshots to be selected for deletion.
  • Translations: Updated Czech, Norwegian Bokmål, Spanish, German, and Portuguese.

27. Version 0.43.0 (2018-11-19)

  • Backups improvements:
    • Allow backups to be downloaded directly, without export step.
    • Restore directly from uploaded backup.
    • Avoid error for apps with no data to backup.
    • Show free disk space on upload and restore page.
    • Do not limit maximum upload size.
  • openvpn: Migrate to easy-rsa 3 and fix setup issues.
  • Make single sign-on tickets valid for 12 hours.
  • Use consistent terminology for updates.
  • Updated translations for Czech and Portuguese.

28. Version 0.42.0 (2018-11-05)

  • Fix wrong color in mobile menu
  • snapshot: Fix broken snapshot management after snapper update
  • Enable backup/restore for tor, upgrades, monkeysphere, letsencrypt, tahoe
  • monkeysphere: Handle importing new OpenSSH format keys
  • udiskie: unmount drive as superuser
  • Updated translations for Telugu, Indonesian, and Italian

29. Version 0.41.0 (2018-10-22)

  • Enable backup/restore for datetime, deluge, avahi, backups, bind, security, snapshot, ssh, firewall, diagnostics, names, power, and storage.
  • snapshot: Fix issue with setting configuration.
  • backups: Fix backup archives ownership issue.
  • backups: Fix issue with showing exports from disks without labels.
  • backups: Don't rely on disk labels during export/restore.
  • backups: Fix downloading extracted archive files.
  • Updated translations for Norwegian Bokmål, French, Russian, and Spanish.

30. Version 0.40.0 (2018-10-08)

  • Backups
    • Enable backup/restore for mumble, privoxy, roundcube, searx, jsxc, coquelicot, transmission, quassel, shadowsocks, sharing, pagekite, and cockpit.
    • Allow backup archives to be downloaded/uploaded through browser.
    • mediawiki: Backup/restore settings as well as data.
  • User Interface
    • Change card text style and position.
    • Change maximum cards per row.
    • Add tint effect on card icons under "Apps".
  • mediawiki: Run update script for 1.31 upgrade.
  • customization: Show custom shortcuts on frontpage.
  • Updated translations for Norwegian Bokmål, Portuguese, Spanish, Czech, German, French, and Italian.

31. Version 0.39.0 (2018-09-24)

  • Updated translations for Hungarian and Norwegian Bokmål.
  • Merge Removable Media (udiskie) into Storage module.
  • Add Backups module for backing up apps data.

32. Version 0.38.0 (2018-09-10)

  • mediawiki: Enable SVG support for MediaWiki

  • upgrades: Clean up old kernel packages during automatic upgrades
  • Make the progress bar at the top of the page more visible.
  • Updated translations for Norwegian Bokmål, Czech, Russian, German, Hungarian, and Spanish.

33. Version 0.37.0 (2018-08-27)

  • Updated translations for Czech, Norwegian Bokmål, Russian, Spanish, Hungarian, and Dutch.
  • install: Use Post/Response/Get pattern for reloads.

34. Version 0.36.0 (2018-08-13)

  • Updated translations for Hindi, Spanish, Russian, Telugu, German, Hungarian, Czech, and French
  • ejabberd: Remove deprecated settings from already existing config files
  • mediawiki: Fix issue with re-installation
  • mediawiki: Enable Instant Commons
  • mediawiki: Fix images throwing 403s
  • turbolinks: Reload page using JavaScript

  • Add Lato woff2 fonts
  • Disable launch button for web client when not installed

35. Version 0.35.0 (2018-07-30)

  • configuration: Add an option to set a default app for FreedomBox. The root URL path (https://domainname/) will redirect to the selected app.

  • ejabberd: Remove deprecated iqdisc setting. To apply this fix, disable and then re-enable the Message Archive Management setting.

  • ejabberd: Replace logo with original version.
  • mediawiki: Enable short URLs, which look like https://domainname/mediawiki/ArticleName.

  • radicale: Clarify description for shared calendar/addressbook.
  • storage: Handle mount points with spaces.
  • udiskie: Add button to eject drives.
  • udiskie: Also show read-only filesystems.
  • udiskie: Remove internal networks warning.
  • udiskie: Show special message when no storage device available.
  • Add turbolinks library for smoother navigation.
  • Removed extra text from icons for mediawiki, radicale, and tahoe-lafs.
  • Updated translations for Russian, Spanish, Dutch, Hungarian, Hindi, Italian, Telugu, German, and Norwegian Bokmål.

36. Version 0.34.0 (2018-07-16)

  • Prompt for secret during firstboot welcome
    • (Does not apply to downloadable FreedomBox images, but only when installed using freedombox-setup package.)

  • Updated translations for Italian, Dutch, Hindi, Hungarian

37. Version 0.33.1 (2018-07-04)

  • Fix issue where editing a user would remove them from admin group
  • Updated translations for Hungarian, Czech, Spanish, Russian, Hindi

38. Version 0.33.0 (2018-07-02)

  • Updated translations for Hungarian, Norwegian Bokmål, Spanish, Russian, Czech, Hindi, Dutch, Italian
  • firewall: Display information that a service is internal only
  • users: Don't show Create User link to non-admin users
  • users: Redirect to users list on successful user creation
  • packages: Show button to refresh package lists when a package is not available for install
  • Only show front page shortcuts that a user is allowed to access
  • Restrict removal of last admin user
  • Use logos instead of icons in the apps page
  • udiskie: New module for automatic mounting of removable media

39. Version 0.32.0 (2018-06-18)

  • Apply new card based design
  • Fix client info table size and flickering
  • first-setup: Automatically expand root partition
  • mediawiki: Enable image uploads
  • mediawiki: Make private mode and public registrations mutually exclusive
  • mediawiki: Hide frontpage shortcut when private mode is enabled
  • Updated translations for Norwegian Bokmål, Czech, Spanish, Russian, Hindi, Telugu, Italian, Dutch, German, and Hungarian

40. Version 0.31.0 (2018-06-04)

  • Updated translations for Czech, Spanish, Russian, German, Italian, Hindi, Telugu, and Norwegian Bokmål
  • mediawiki: Added private mode option
  • users: Fix user permissions not being saved
  • users: internationalize a string
  • mediawiki: Run update script for 1.30 upgrade
  • shortcuts: Fix urls for ikiwiki shortcuts

41. Version 0.30.0 (2018-05-21)

  • Updated translations for Russian, Italian, Norwegian Bokmål, Hungarian, and Hindi
  • setup: Remove unavailable as a state in setup_helper

42. Version 0.29.1 (2018-05-08)

  • security: Fix issue with Plinth locked out from sudo
  • Updated translations for Czech and Spanish

43. Version 0.29.0 (2018-05-07)

  • security: Allow console login access to user plinth
  • Add an option to enable/disable public registrations in mediawiki
  • tt-rss: Skip the check for SELF_URL_PATH
  • searx: Fix issue with uwsgi crashing
  • Updated translations for Czech, Spanish, German, Norwegian Bokmål, and Italian

44. Version 0.28.0 (2018-04-23)

  • setup: disable install button for currently unavailable apps
  • Add locale for Lithuanian (lt)
  • Translation updates for Italian, Czech, Russian, Spanish, German, Norwegian Bokmål, Telugu, and Dutch

45. Version 0.27.0 (2018-04-09)

  • middleware: Skip 'installed' message for essential apps
  • users: Fix admin group appearing twice in permissions
  • apps: Fix app names and short descriptions not being translated
  • snapshots: Move manual page link to the index page
  • UI: Fix progress bar not appearing
  • snapshots: Fix for permissions issue when updating configuration
  • snapshots: Add option to enable/disable software installation snapshots
  • Translation updates for Italian, Czech, Russian, Spanish, Dutch, German, Norwegian Bokmål, and Ukrainian

46. Version 0.26.0 (2018-03-26)

  • snapshots: Update description
  • searx: Rewrite url from /searx to /searx/
  • manual: Link to manual from each service
  • Workaround security issues in django-axes
  • apache: Only regenerate snake oil cert when needed
  • apache: Explicitly enable the latest version of PHP module
  • apache: Increase module version number to fix php7.2
  • Update translations for Chinese (Simplified), Russian, Czech, German, Norwegian Bokmål, Hungarian, Spanish, and Italian

47. Version 0.25.0 (2018-03-12)

  • sharing: Add app for sharing disk folders.
  • ttrss: Update list of client apps.
  • infinoted: Allow setup to recover after timeout issue.
  • snapshots: Add configuration tab with settings for time-based snapshots.

48. Plinth v0.24.0 (2018-02-26)

  • Add file-sharing application Coquelicot.
  • Add metasearch engine application Searx.
  • Add locale for Hungarian (hu).
  • mediawiki: Allow shortcut to be publicly visible on front page.
  • clients: Add and correct Client Apps.
  • locale: Preferred language can be set in each user's profile.
  • locale: Anonymous users can select preferred language.
  • config: Remove language selection from config page.
  • matrixsynapse: Fix mail attribute for ldap login.

49. Plinth v0.23.0 (2018-02-12)

  • snapshots: Modify configurations to reduce disk usage.
  • snapshots: Skip currently active snapshot when deleting all snapshots.
  • jsxc: Use consistent url format.
  • sso: Increase timeout to 60 minutes.
  • theme: Change font from Helvetica to Lato.
  • Translation updates for Czech, German, Gujarati, and Telugu.

50. Plinth v0.22.0 (2018-01-30)

  • matrix-synapse: Make sure configuration file does not get corrupted.
  • tor: Show enabled status properly.
  • first_setup: Fix not showing admin user creation step.
  • Migrate from GitHub to Salsa

  • Migrate from CirceCI to GitLab CI on Salsa.

  • Translation updates for Czech, Dutch, Gujarati, Hindi, Russian and Telugu.
  • Started new translation for Ukrainian.

51. Plinth v0.21.0 (2018-01-15)

  • navigation bar: Change label from 'Configuration' to 'System'.
  • storage: Removed beta warning for expanding partition.
  • groups: Consistently show available user groups, even before applications are installed.
  • syncthing: Restrict administration to users in "syncthing" group.
  • help: Show menu on smaller screens also.
  • diagnostics: Enable the "Run Diagnostics" button when applications are enabled but not running.

52. Plinth v0.20.0 (2018-01-01)

  • bind: Don't use forwarders by default
  • ejabberd: Remove redundant button Client Apps
  • mediawiki: Add wiki application
  • users: Make sure first run actually works
  • bind: Add information about current utility

53. Plinth v0.19.0 (2017-12-18)

  • ejabberd: Use dynamic reload instead of restart when changing configuration.
  • manual: Make manual available as a PDF download.
  • minetest: Show domain information for users to connect to minetest.
  • snapshots: Add button to delete all snapshots.
  • snapshots: Add option to enable/disable automatic timeline snapshots.
  • users: Add groups for bit-torrent and feed-reader, available when these applications are installed.

54. Plinth v0.18.0 (2017-12-04)

  • Add Shadowsocks client with socks5 proxy.
  • Fix SSO regressions and conflict with captcha.
  • transmission: Fix sso not being enabled on upgrade.
  • avahi: Add service for FreedomBox discovery.

  • Add client information for modules.

55. Plinth v0.17.0 (2017-11-20)

  • transmission: Enable Single Sign On.
  • cockpit: Add short description to frontpage shortcut.
  • fail2ban: Fix spelling and sentence structure.

56. Plinth v0.16.0 (2017-11-06)

56.1. Added

  • Add mobile, web and desktop client info for modules.
  • Enable django SecurityMiddleware to improve security ratings.

  • cockpit: New module for server administration and web terminal.

56.2. Fixed

  • letsencrypt: Fix internal server error when obtaining a certificate.
  • ejabberd: Fix LDAP server entry in config file during setup.
  • jsxc: Fix outdated URLs for connecting to local ejabberd server.

57. Plinth v0.15.3 (2017-10-20)

57.1. Changed

  • Rename Disks to Storage.
  • Rename Snapshot to Storage Snapshots.
  • tt-rss: Enable API access by default.
  • Allow access to Plinth from outside the LAN.
  • matrix-synapse: Disable public registration by default.
  • power: Merge actions into the user dropdown.

57.2. Added

  • Add locales for Kannada (kn) and for Bengali (bn).
  • ejabberd: Use Let's Encrypt certificate, also across renewals.
  • matrix-synapse: Add enable/disable public registrations.
  • Add captcha validation on 3 failed attempts.
  • matrix-synapse: Enable LDAP integration.
  • letsencrypt: Automatically obtain and revoke SSL certificates.

57.3. Fixed

  • Fix front page label names.
  • Fix vertical alignment of shortcut icons.
  • storage: Fix issue with locales that use other decimal separators.
  • Make tt-rss api accessible using Apache basic auth.
  • letsencrypt: Handle case where current domain is empty.
  • Handle both admin and non-admin user names in update user template.

58. Plinth v0.15.2 (2017-09-24)

58.1. Added

  • letsencrypt: Show more info on cert validity status.
  • letsencrypt: Add option to delete certificates.
  • letsencrypt: Add option to let Plinth manage certbot's renewal hooks.
  • power: Warn if a package manager is running before shutdown/restart.
  • security: Install and manage fail2ban.
  • names: Include domain and services from dynamicdns.
  • disks: Add low disk space warning to system and disks page.
  • ssh: New application to manage SSH server.
  • Add api module to get enabled services and access info.
  • Add Django password validators.
  • ejabberd, ikiwiki, ttrss: Add user login descriptions.

58.2. Removed

  • diaspora: Disable for this release due to issues affecting package.
  • Remove help from navbar before firstboot complete.

58.3. Fixed

  • i18n: Don't use backslash-newline for wrapping long lines.
  • radicale: Update link to documentation.
  • sso: Upgrade crypto to 4096-bit RSA and SHA-512.
  • Users: Allow non-admin users to log out.

58.4. Changed

  • letsencrypt: Make Let's Encrypt an essential module.
  • UI: Make apps and configure pages responsive on small screens.
  • Make help accessible for logged-in non-admin users.

59. Plinth v0.15.0 (2017-07-01)

  • Added Tahoe-LAFS module for distributed file storage.
  • Added Diaspora* module for federated social networking.
    • Currently only available in "contrib" repository.
  • New Locales for Czech (cs) and Tamil (ta).
  • Added SSO using auth_pubtkt for Syncthing, TT-RSS, and the Repro admin panel.
    • If you are logged in to Plinth, you will be automatically logged in to these web apps.
  • ejabberd: Added option to enable/disable Message Archive Management.
  • help: Added Debian release name to about page.
  • firstboot: De-bloat first welcome screen.
  • Pinned footer to the bottom of the viewport.
  • disks: Restrict precision of reported available space on root partition.
  • diagnostics: Disable button if app/service is not running.
  • help: Only show help pages if user is logged in.
  • navbar: Moved logout to user drop-down and added a new power drop-down.
  • disks: Show disabled partition resize option if no space is available.
  • Added line break to titles to fix frontpage layout.
  • syncthing: Fixed typos and clarity in description.
  • firewall: Fix 500 error when firewalld is not running.
  • setup: Disable install/upgrade when dpkg/apt is running.
  • disks: Use information from lsblk for more accuracy.
  • datetime: Show timezone properly when it not in expected list.

60. Plinth v0.14.0 (2017-04)

  • tor: Added option to use upstream bridges.
  • openvpn: Added shortcut to front page, shown only when logged-in.
  • openvpn: Non-admin users can download their own profiles.
  • Added new locales for Hindi (hi) and Gujarati (gu).
  • Added Syncthing module for file synchronization.
  • Added Matrix Synapse as chat server with groups, audio and video.
  • Require admin access for all system configuration pages.
  • Changed appearance of topbar and footer.
  • openvpn: Regenerate user key or certificate if empty.
  • disks: Workaround issue in parted during resize.

61. Plinth v0.13.1 (2017-01-22)

  • Two new apps were added:
    • Gobby Server (infinoted) for collaborative editing of text documents
    • Domain Name Server (BIND), in system menu
  • Added JavaScript license web labels to provide partial support for LibreJS.

  • Added basic configuration form for Minetest server.
  • Added indicator to Help->About page if new Plinth version is available.

  • Show app logos on front page instead of generic icons.
  • Prevent anonymous users from accessing setup pages.
  • Split Chat Server (XMPP) app into Chat Server (ejabberd) and Chat Client (jsxc).

62. Plinth v0.12.0 (2016-12-08)

  • Open up RTP ports in the firewall for repro (SIP server).
  • Front page shortcuts for services show a Configure button in the details box for logged-in users.
  • Add mods packages to be installed with Minetest server.
  • Fix issue with reading Dynamic DNS status as non-root user.
  • After the hostname is changed, ensure the domain name is still set correctly.
  • Allow the domain name to be cleared, and properly set the configuration in this case.
  • On the Certificates (Let's Encrypt) page, show a more informative message when no domains are configured.
  • On the Chat Server (XMPP) page, show more clearly if domain is not set.
  • Apps that require login will not be shown on the front page, unless the user is logged in.
  • Show status block for News Feed Reader (Tiny Tiny RSS).
  • Change appearance of front page with larger icons and repositioned text.
  • Firewall page only lists services that have been setup. The port lists are collapsible under each service.
  • Support configuring IPv6 networks.
  • Make it less likely to accidentally delete the only Plinth user.
  • Updated to work with JSXC 3.0.0 (XMPP web client).

63. Plinth v0.11.0 (2016-09-29)

  • Added loading icon for additional busy operations.
  • Added basic front page with shortcuts to web apps, and information about enabled services.
  • networks: Add batctl as dependency, required for batman-adv mesh networking.
  • users:
    • Fixed checking restricted usernames.
    • Display error message if unable to set SSH keys.
    • Flush nscd cache after user operations to avoid some types of errors.
  • monkeysphere:
    • Adopted to using SHA256 fingerprints.
    • Sort items for consistent display.
    • Handle new uid format of gpg2.
    • Fixed handling of unavailable imported domains.
  • minetest: Fixed showing status block and diagnostics.
  • Fixed stretched favicon.
  • Switched base template from container-fluid to container. This will narrow the content area for larger displays.
  • Plinth is now able to run as "plinth" user instead of root user.
  • xmpp: Replaced jwchat with jsxc.
  • ikiwiki: Allow only alphanumerics in wiki/blog name to avoid invalid paths.

64. Plinth v0.10.0 (2016-08-21)

  • Updated Plinth to support Django 1.10.
  • Added a page to display recent status log from Plinth. It is accessible from the 500 error page.
  • Tor: Added options to toggle relay and bridge relay modes.
  • Radicale: Added access rights control.
  • Ikiwiki: Updated suggested packages.
  • Users and Groups: Fixed editing users without SSH keys.
  • Networks: Added basic support for configuring batman-adv mesh networking.
  • Networks: Fixed incorrect access for retrieving DNS entries.
  • New languages:
    • Persian (50% translated)
    • Indonesian (not started, contributions needed)
  • New modules added to Plinth:
    • Disks: Shows free space of mounted partitions, and allows expanding the root partition.
    • Security: Controls login restrictions.
    • Snapshots: Manages Btrfs snapshots.

65. Version 0.9.4 (2016-06-24)

  • Added Polish translation.
  • Fixed issue preventing access to Plinth on a non-standard port.
  • Dealt with ownCloud removal from Debian. The ownCloud page in Plinth will be hidden if it has not been setup. Otherwise, a warning is shown.
  • Fixed issue in Privoxy configuration. Two overlapping listen-addresses were configured, which prevented privoxy service from starting.
  • Fixed issue that could allow someone to start a module setup process without being logged in to Plinth.
  • Fixed issues with some diagnostic tests that would show false positive results.
  • Added check to Diagnostics to skip tests for modules that have not been setup.
  • Fixed some username checks that could cause errors when editing the user.
  • Added sorting of menu items per locale.
  • Moved Dynamic DNS and Pagekite from Applications to System Configuration.
  • Allowed setting IP for shared network connections.
  • Switched Dreamplug image from "non-free" to "free". This means that we no longer include the non-free firmware for the built-in wifi on Dreamplug.
  • Added the "userdir" module for the Apache web server. This allows users in the "admin" group to create a folder called "public_html" under their home folder, and to publicly share files placed in this folder.
  • New wiki and manual content licence: Creative Commons Attribution-ShareAlike 4.0 International (from June 13rd 2016).

  • Switched to using apt-get for module setup in Plinth. This fixes several issues that were seen during package installs.

66. Version 0.9 (2016-04-24)

  • Fixed Wi-Fi AP setup.
  • Prevent lockout of users in 'sudo' group after setup is complete.
  • Improved setup mechanism for Plinth modules. Allows users to see what a module is useful for, before doing the setup and package install. Also allows essential modules to be setup by default during FreedomBox install.

  • Added HTTPS certificates to Monkeysphere page. Reorganized so that multiple domains can be added to a key.
  • Added Radicale, a CalDAV and CardDAV server.
  • Added Minetest Server, a multiplayer infinite-world block sandbox.
  • Added Tiny Tiny RSS, a news feed reader.

67. Version 0.8 (2016-02-20)

  • Added Quassel, an IRC client that stays connected to IRC networks and can synchronize multiple frontends.
  • Improved first boot user interface.
  • Fixed Transmission RPC whitelist issue.
  • Added translations for Turkish, Chinese, and Russian. Fixed and updated translations in other languages.
  • Added Monkeysphere, which uses PGP web of trust for SSH host key verification.
  • Added Let's Encrypt, to obtain certificates for domains, so that browser certificate warnings can be avoided.
  • Added repro, a SIP server for audio and video calls.
  • Allow users to set their SSH public keys, so they can login over SSH without a password.

68. Version 0.7 (2015-12-13)

  • Translations! Full translations of the interface in Danish, Dutch, French, German and Norwegian Bokmål, and partial Telugu.
  • Support for OLinuXino A20 MICRO and LIME2
  • New Plinth applications: OpenVPN, reStore
  • Improved first-boot experience
  • Many bugfixes and cleanups

69. Version 0.6 (2015-10-31)

  • New supported hardware target: Raspberry Pi 2
  • New modules in Plinth:
    • Shaarli: Web application to manage and share bookmarks
    • Date & Time: Configure time zone and NTP service

    • Service Discovery: Configure Avahi service
  • Documentation revamp including new user manual and developer guide
  • Improved diagnostic tests, available in Plinth
  • Avoid unnecessary changes when installing on existing Debian system
  • Network configuration supports PPPoE connections
  • Debian packages can be download over Tor

70. Version 0.5 (2015-08-07)

  • New targets: CubieTruck, i386, amd64

  • New apps in Plinth: Transmission, Dynamic DNS, Mumble, ikiwiki, Deluge, Roundcube, Privoxy
  • NetworkManager handles network configuration and can be manipulated through Plinth.

  • Software Upgrades (unattended-upgrades) module can upgrade the system, and enable automatic upgrades.
  • Plinth is now capable of installing ejabberd, jwchat, and privoxy, so they are not included in image but can be installed when needed.
  • User authentication through LDAP for SSH, XMPP (ejabberd), and ikiwiki.
  • Unit test suite is automatically run on Plinth upstream. This helps us catch at least some code errors before they are discovered by users!
  • New, simpler look for Plinth.
  • Performance improvements for Plinth.

71. Version 0.3 (2015-01-20)

  • Tor Bridges: All boxes now act as non-exit Tor bridges, routing traffic for the Tor network.
  • Firewall: firewall is on by default and is automatically managed.

  • Add BeagleBone support. We now have images for BeagleBone, RaspberryPi, VirtualBox i386/amd64, and DreamPlug.

  • Ability to enable and use Tor Hidden Services. Works with Ejabberd/JWChat and ownCloud services.
  • Enable Tor obfsproxy with scramblesuit.
  • Drop well-known root password (an account with sudo capabilities still exists for now but will be removed soon).
  • Switch to unstable as suite of choice for easier development.
  • Newer images are built with systemd by default (due to Debian change).
  • Install and operate firewall automatically (uses firewalld).
  • Major restructuring of Plinth UI using Python3, Django web development framework and Bootstrap3. Code quality is much better and UI is more polished.
  • Introduced packaging framework in Plinth UI for on-demand application installation.

72. Version 0.2 (2014-03-16)

  • Support for Raspberry Pi and VirtualBox (x86) in addition to the ?DreamPlug.

  • New Services:
    • Configuration Management UI.
    • Instant Messaging.
    • OwnCloud.

    • dnsmasq.
    • Low-Level Configuration Management.
    • Service Announcement.
    • LDAP Server.
    • LXC Support.
    • Source Packages.
  • The privoxy setup is now the default from Debian.

73. Version 0.1 (2013-02-26)

  • First FreedomBox software release (0.1 image, developer release).

  • Full hardware support in Debian
  • Support for DreamPlug.

  • Basic software tools selected as common working environment:
    • User interface system "plinth"
    • Cryptography tools: gpg or "monkeysphere"
    • Box-to-box communication design: Freedom-buddy (uses TOR network)

    • Web cleaning: "privoxy-freedombox".

Contribuir

Desde la codificación, el diseño y la traducción hasta la divulgación y las donaciones he aquí varias formas de contribuir a FreedomBox.

1. Enlaces Rápidos

Reuniones de revisión de avance
Página de trabajos pendientes
Página de Donaciones

2. Bienvenida a los recién llegados

Como nuevo contribuyente, eres más que bienvenido a presentarte a otros en el foro de debate, la lista de correo o el canal de IRC de FreedomBox. Además de hacer contactos útiles, puedes empezar a informar fallos y traducir (ver abajo) el wiki y el interfaz de FreedomBox.

3. Prioridades de Desarrollo

Las prioridades se discuten regularmente. Encontrarás el avance del Servicio FreedomBox (Plinth) con sus prioridades aquí: panel de tareas e hitos.

Por favor, asiste a las próximas reuniones de avance para mantenerte al día y tratar con los miembros del equipo de publicación (release). La Página de trabajos pendientes recopila la lista completa de los elementos en los que trabajar para FreedomBox.

4. Se necesitan Contribuciones

4.1. Añadir una Aplicación

Si eres desarrollador y quieres ver disponible en FreedomBox alguna aplicación, puedes contribuir añadiéndola a FreedomBox. Mira el Manual de Desarrollo de FreedomBox.

4.2. Defectos

Las listas de defectos, peticiones de funcionalidad y mejoras se controlan en el gestor de tiquets de FreedomBox. Mira también la lista de defectos para ayudar al paquete Debian del que dependemos y el cuadro de mando del equipo de paquetizado de FreedomBox para ver el estado los paquetes que usamos.

4.3. Codificar

Si eres desarrollador puedes contribuir código a algún sub-proyecto de FreedomBox. Éste es el procedimiento paso a paso para contribuir código.

  • Servicio FreedomBox (Plinth): un interfaz web para administrar las funciones de FreedomBox.

  • Freedom Maker: un script para construir imágenes de disco de FreedomBox para usarlas en dispositivos de hardware variados o en máquinas virtuales.

Puedes tomar una tarea de la Página de trabajos pendientes. Las páginas de cada proyecto contienen información acerca de acceso al código, cómo construir y listas de trabajos pendientes.

4.4. Diseño

4.4.1. Diseño de Experiencia de Usuario (UX)

Si eres diseñador de UX, puedes ayudar a FreedomBox con esto:

4.4.2. Diseño Técnico

FreedomBox necesita tu conocimiento técnico para elaborar planes de implementación de nuevas funcionalidades. Puedes contribuir a los debates acerca de varios aspectos de diseño técnico e implementación de FreedomBox. Mira la sección de desarrollo de los foros de discusión.

4.5. Donar

La FreedomBox Foundation es una corporación federal 501(c)(3) reconocida por el IRS. El proyecto FreedomBox lo llevan voluntarios. Puedes ayudar a su financiación donando mediante PayPal, Bitcoin o enviando un cheque. Mira por favor la página de donación para más detalles acerca de cómo donar.

4.6. Documentar: Manual de Usuario, Sitio Web y Wiki

FreedomBox necesita mejor documentación para usuarios y contribuyentes. El manual de FreedomBox se prepara agregando diferentes páginas del wiki y exportando a various formatos. El manual se usa en el Servicio FreedomBox (Plinth) y en otros sitios.

Si quieres contribuir al wiki (y por extensión al manual) de FreedomBox, puedes crear una cuenta en el wiki y empezar a editar.

Para contribuir al sitio web por favor inicia un debate en la sección de desarrollo del foro de FreedomBox.

4.7. Asegurar la Calidad

  • FreedomBox ya funciona sobre muchas plataformas y a los desarrolladores les resulta imposible probar en todas. Si tienes algún hardware soportado puedes ayudar probando FreedomBox en tu platforma.

  • Cuando se integra una nueva aplicación en FreedomBox, el desarrollador que hace el trabajo no prueba toda la functionalidad en el mundo real. Desplegar la aplicación y probarla ayudará a tener aplicaciones de alta calidad en FreedomBox.

Mira en la página de aseguramiento de la calidad la lista de casos de prueba que hay que verificar y la información acerca de cómo informar defectos.

4.8. Localizar (l10n)

Todo texto visible por los usuarios de FreedomBox necesita ser localizado a varios idiomas. Este trabajo de traducción incluye:

Puedes contribuir al esfuerzo de localización usando la herramienta web Weblate o directamente en el repositorio de código mediante Salsa.

Si quieres ver a FreedomBox disponible en alguno de tus idiomas, por favor abre un debate en la sección de desarrollo del foro de FreedomBox para trabajar con otros traduciendo para ese idioma.

Para más información, por favor visita la página de traductores.

4.9. Correr la Voz

Cuenta a tu familia, amistades, comunidad local o en conferencias globales la importancia de FreedomBox. Para ser un proyecto exitoso necesitamos muchos más participantes, ya sean usuarios o contribuyentes. Comenta tus esfuerzos de divulgación en la página de charlas y en el wiki.

Guía del Desarrollador

This manual is meant for developers intending to develop applications for FreedomBox. It provides a step by step tutorial and an API reference.

1. Writing Applications - Tutorial

This tutorial covers writing an application for FreedomBox. FreedomBox is a pure blend of Debian with a web interface, known as Plinth, that configures its applications. We shall discuss various aspects of building an application for FreedomBox, by creating an example application.

There are two parts to writing a FreedomBox application. First is to make sure that the application is available as a Debian package uploaded to the repositories. This is the majority of the work involved. However, if an application is already available in Debian repositories, it is trivial to build a FreedomBox UI for it. The second part of writing an application for FreedomBox is to provide a thin web interface layer for configuring the application. This is done by extending Plinth's user interface to provide visibility to the application and to let the user control its operations in a highly simplified way. This layer is referred to as 'Plinth application'.

Plinth applications can either be distributed as part of Plinth source code by submitting the applications to the Plinth project or they can distributed independently. This tutorial covers writing an application that is meant to be distributed as part of Plinth. However, writing independent Plinth applications is also very similar and most of this tutorial is applicable.

Note

The term application, in this tutorial, is used to mean multiple concepts. FreedomBox application is a combination of Debian package and a web interface layer. The web interface layer is also called a Plinth application which is very similar to and built upon a Django application.

1.1. Before we begin

Plinth is a web interface built using Python3 and Django. FreedomBox applications are simply Django applications within the Plinth project. Hence, for the most part, writing a FreedomBox application is all about writing a Django application.

You should start by reading the Django tutorial. All the concepts described there are applicable for how plinth and its applications are be built.

1.2. Picking an application

We must first, of course, pick an application to add to FreedomBox. For the purpose of this tutorial, let us pick Tiny Tiny RSS. The project description reads as, Tiny Tiny RSS is an open source web-based news feed (RSS/Atom) reader and aggregator, designed to allow you to read news from any location, while feeling as close to a real desktop application as possible.

Choosing an application

When choosing an application we must make sure that the application respects users' freedom and privacy. By choosing to use FreedomBox, users have explicitly made a choice to keep the data with themselves, to not provide privacy compromising data to centralized entities and to use Free Software that respects their Software Freedom. These are not properties of some of the applications in FreedomBox but all applications must adhere to these principles. Applications should not even ask the users questions to this effect, because users have already made a choice.

1.3. Packaging the application

Majority of the effort in creating an application for FreedomBox is to package it for Debian and get it uploaded to Debian repositories. Going through the process of packaging itself is outside the scope of this tutorial. It is, however, well documented elsewhere. You should start here.

Debian packaging might seem like an unnecessary process that takes time with its adherence to standards, review process, legal checks, etc. However, upon close examination, one will find that without these steps the goals of the FreedomBox project cannot be met. Some of the advantages of Debian packaging are listed below:

  • Legal check ensures that proprietary licensed code or code with bad licenses does not inadvertently creep in.
  • Libraries have to be packaged separately easing security handling. When a security vulnerability is identified in a library, just the library will have to be updated and not all the applications that depend on it.
  • Upgrades become smoother. The dependency handling of the packaging system, configuration handling tools, tools to deal with various types of well known files help with ensuring a proper upgrade.
  • Collaborative maintenance teams ensure that the package is well cared for even if you get busy with other work and can't spend time on your package. Following standards and using common infrastructure is critical to enable this development methodology.

1.4. Creating the project structure

Create a directory structure as follows with empty files. We will fill them up in a step-by-step manner.

+- <plinth_root>/
  |
  +- plinth/
  | |
  | +- modules/
  |   |
  |   +- ttrss/
  |     |
  |     +- __init__.py
  |     |
  |     +- forms.py
  |     |
  |     +- urls.py
  |     |
  |     +- views.py
  |     |
  |     +- templates/
  |     | |
  |     | +- ttrss.html
  |     |
  |     +- tests
  |       |
  |       +- __init__.py
  |
  +- actions/
  | |
  | +- ttrss
  |
  +- data/
    |
    +- etc/
      |
      +- plinth/
        |
        +- modules-enabled/
          |
          +- ttrss

The __init__.py indicates that the directory in which it is present is a Python module. For now, it is an empty file.

Plinth's setup script setup.py will automatically install the plinth/modules/ttrss directory (along with other files described later) to an appropriate location. If you are creating an application that stays independent and outside of Plinth source tree, then your setup.py script will need to install it a proper location on the system. The plinth/modules/ directory is a Python3 namespace package. So, you can install it with the plinth/modules/ directory structure into any Python path and still be discovered as plinth.modules.*.

1.5. Tell Plinth that we exist

The first thing to do is tell Plinth that our application exists. This is done by writing a small file with the Python import path to our application and placing it in data/etc/plinth/modules-enabled/. Let us create this file ttrss:

plinth.modules.ttrss

This file is automatically installed to /etc/plinth/modules-enabled/ by Plinth's installation script setup.py. If we are writing a module that resides independently outside the Plinth's source code, the setup script will need to copy it to the target location. Further, it is not necessary for the application to be part of the plinth.modules namespace. It can, for example, be plinth_ttrss.

1.6. Writing the URLs

For a user to visit our application in Plinth, we need to provide a URL. When the user visits this URL, a view is executed and a page is displayed. In urls.py write the following:

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^apps/ttrss/$', views.index, name='index'),
]

This routes the /apps/ttrss/ URL to a view called index defined in plinth/modules/ttrss/views.py. This is no different than how routing URLs are written in Django. See Django URL dispatcher for more information.

1.7. Adding a menu item

We have added a URL to be handled by our application but this does not yet show up to be a link in Plinth web interface. Let us add a link in the applications list. In __init__.py add the following:

from django.utils.translation import ugettext_lazy as _
from plinth.menu import main_menu

def init():
    """Initialize the module."""
    menu = main_menu.get('apps')
    menu.add_urlname(_('Tiny Tiny RSS'), 'glyphicon-bullhorn',
                     'ttrss:index', _('News Feed Reader'))

As soon as Plinth starts, it will load all the enabled modules into memory. After this, it gives a chance to each of the modules to initialize itself by calling the init() method if there is such a method available as <app>.init(). Here we have implemented this method and added our menu item to the applications menu as part of the initialization process.

We wish to add our menu item to the list of applications which is why we have retrieved the applications menu which is available under the main menu. After this we add our own menu item to this menu. There are several parameters during this process that are important:

  • In the first parameter we are providing the display name to use for our application when showing the menu item.
  • In the second parameter we are providing the icon to show for this menu item. This is an icon from the Twitter Bootstrap library. See

    the Twitter Bootstrap library documentation for a list of available icons. We can pick an icon from the available list of icons and just mention its glyphicon class as name here.

  • The third parameter is the name of the URL we have created for our application. Note that when including this application's URLs, Plinth will automatically set the name of the module as the Django

    URL namespace. Hence it is ttrss:index and not just index.

  • The final parameter is a short description of the application.

We have used the application menu item to insert our own menu item as a child. To be able to use the application menu item, we need to make sure that the module providing the application menu is loaded before our application is loaded. We will do that in the next step.

1.8. Specifying module dependencies

Specifying a simple list of applications to be loaded before our application provided to Plinth is sufficient. Add this in __init__.py.

depends = ['plinth.modules.apps']

Plinth will now make sure that the apps module is loaded before our module is loaded. Application initialization is also ensured to happen in this order. We can safely use any features of this module knowing that they have been initialized.

Circular dependencies

Circular dependencies are not possible among Plinth applications. Attempting to add them will result in error during startup.

1.9. Writing the enable/disable form

We wish to provide a user interface to the user to enable and disable the application. Complex modules may require more options but this is sufficient for our application. Add the following forms.py.

from django import forms

class TtrssForm(forms.Form):
    """Tiny Tiny RSS configuration form."""
    enabled = forms.BooleanField(
        label='Enable Tiny Tiny RSS',
        required=False)

This creates a Django form that shows a single option to enable/disable the application. It also shows its current state. This is how a regular Django form is built. See Django Forms documentation for more information.

Too many options

Resist the temptation to create a lot of configuration options. Although this will put more control in the hands of the users, it will make FreedomBox less usable. FreedomBox is a consumer product. Our target users are not technically savvy and we have make most of the decisions on behalf of the user to make the interface as simple and easy to use as possible.

1.10. Writing a view

In views.py, let us add a view that can handle the URL we have provided above.

from .forms import TtrssForm

def index(request):
    """Serve configuration page."""
    status = get_status()

    form = None

    if request.method == 'POST':
        form = TtrssForm(request.POST, prefix='ttrss')
        if form.is_valid():
            _apply_changes(request, status, form.cleaned_data)
            status = get_status()
            form = TtrssForm(initial=status, prefix='ttrss')
    else:
        form = TtrssForm(initial=status, prefix='ttrss')

    return TemplateResponse(request, 'ttrss.html',
                            {'title': 'News Feed Reader (Tiny Tiny RSS)',
                             'status': status,
                             'form': form})

This view works with the form we created in the previous step. It shows the current status of the service in form. This status is retrieved with the help of get_status() helper method. When the form is posted, again this view is called and it verifies whether the form's input values are correct. If so, it will apply the actions necessary for changed form values using the _apply_changes() method.

1.11. Getting the current status of the application

The view in the previous setup requires the status of the application to be retrieved using the get_status() method. Let us implement that method in views.py.

from plinth.modules import ttrss

def get_status():
    """Get the current status."""
    return {'enabled': ttrss.is_enabled()}

This method retrieves the various statuses of the application for display in the view. Currently, we only need to show whether the application is enabled or disabled. So, we retrieve that using a helper method defined in __init__.py.

from plinth import action_utils

def is_enabled():
    """Return whether the module is enabled."""
    return action_utils.webserver_is_enabled('50-tt-rss')

This method uses one of the several action utilities provided by Plinth. This method checks whether a webserver configuration named 50-tt-rss is enabled.

1.12. Displaying the application page

The view that we have written above requires a template file known as ttrss.html to work. This template file controls how the web page for our application is displayed. Let us create this template file in templates/ttrss.html.

{% extends "base.html" %}

{% load bootstrap %}

{% block content %}

<h2>News Feed Reader (Tiny Tiny RSS)</h2>

<p>Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator,
  designed to allow you to read news from any location, while feeling
  as close to a real desktop application as possible.</p>

<h3>Configuration</h3>

<form class="form" method="post">
  {% csrf_token %}

  {{ form|bootstrap }}

  <input type="submit" class="btn btn-primary" value="Update setup"/>
</form>

{% endblock %}

This template extends an existing template known as base.html. This template is available in Plinth core to provide all the basic layout, styling, menus, JavaScript and CSS libraries. We will override the content area of the base template and keep the rest.

Yet again, there is nothing special about the way this template is written. This is a regular Django template. See Django Template documentation.

For styling and UI components, Plinth uses the Twitter Bootstrap project. See Bootstrap documentation for reference.

1.13. Applying the changes from the form

The view we have created displays the form and processes the form after the user submits it. It used a helper method called _apply_changes() to actually get the work done. Let us implement that method in views.py.

from django.contrib import messages

from plinth import actions

def _apply_changes(request, old_status, new_status):
    """Apply the changes."""
    modified = False

    if old_status['enabled'] != new_status['enabled']:
        sub_command = 'enable' if new_status['enabled'] else 'disable'
        actions.superuser_run('ttrss', [sub_command])
        modified = True

    if modified:
        messages.success(request, 'Configuration updated')
    else:
        messages.info(request, 'Setting unchanged')

We check to make sure that we don't try to disable the application when it is already disabled or try to enable the application when it is already enabled. Although Plinth's operations are idempotent, meaning that running them twice will not be problematic, we still wish avoid unnecessary operations for the sake of speed.

We are actually perform the operation using Plinth actions. We will implement the action to be performed a bit later.

After we perform the operation, we will show a message on the response page showing that the action was successful or that nothing happened. We use the Django messaging framework to accomplish this. See Django messaging framework for more information.

1.14. Installing packages required for the application

Plinth takes care of installing all the Debian packages required for our application to work. All we need to do is specify the list of the Debian packages required using a decorator on our view as follows:

from plinth import package

@package.required(['tt-rss'])
def index(request):
    """Serve configuration page."""
    ...

The first time this application's view is accessed, Plinth shows a package installation page and allows the user to install the required packages. After the package installation is completed, the user is shown the application's configuration page.

If there are configuration tasks to be performed immediately before or after the package installation, Plinth provides hooks for it. The before_install= and on_install= parameters to the @package.required decorator take a callback methods that are called before installation of packages and after installation of packages respectively. See the reference section of this manual or the plinth.package module for details. Other modules in Plinth that use this feature provided example usage.

1.15. Writing actions

The actual work of performing the configuration change is carried out by a Plinth action. Actions are independent scripts that run with higher privileges required to perform a task. They are placed in a separate directory and invoked as scripts via sudo. For our application we need to write an action that can enable and disable the web configuration. We will do this by creating a file actions/ttrss.

import argparse

from plinth import action_utils


def parse_arguments():
    """Return parsed command line arguments as dictionary."""
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(dest='subcommand', help='Sub command')

    subparsers.add_parser('enable', help='Enable Tiny Tiny RSS')
    subparsers.add_parser('disable', help='Disable Tiny Tiny RSS')

    return parser.parse_args()


def subcommand_enable(_):
    """Enable web configuration and reload."""
    action_utils.webserver_enable('50-tt-rss')


def subcommand_disable(_):
    """Disable web configuration and reload."""
    action_utils.webserver_disable('50-tt-rss')


def main():
    """Parse arguments and perform all duties."""
    arguments = parse_arguments()

    subcommand = arguments.subcommand.replace('-', '_')
    subcommand_method = globals()['subcommand_' + subcommand]
    subcommand_method(arguments)


if __name__ == '__main__':
    main()

This is a simple Python3 program that parses command line arguments. While Python3 is preferred, it can be written in other languages also. It uses a helper utility provided by Plinth to actually enable and disable Apache2 web server configuration.

This script is automatically installed to /usr/share/plinth/actions by Plinth's installation script setup.py. Only from here will there is a possibility of running the script under sudo. If you are writing an application that resides indenpendently of Plinth's source code, your setup.py script will need to take care of copying the file to the target location.

1.16. Creating diagnostics

Plinth provides a simple API for showing diagnostics results. The application has to implement a method for actually running the diagnostics and return the results as a list. Plinth then takes care of calling the diagnostics method and displaying the list in a formatted manner.

To implement the diagnostics method, method called diagnose() has to be available as <app>.diagnose(). It must return a list in which each item is the result of a test performed. The item itself is a two-tuple containing the display name of the test followed by the result as passed, failed or error.

def diagnose():
    """Run diagnostics and return the results."""
    results = []

    results.extend(action_utils.diagnose_url_on_all(
        'https://{host}/ttrss', extra_options=['--no-check-certificate']))

    return results

There are several helpers available to implement some of the common diagnostic tests. For our application we wish to implement a test to check whether the /ttrss URL is accessible. Since this is a commonly performed test, there is a helper method available and we have used it in the above code. The {host} tag replaced with various IP addresses, hostnames and domain names by the helper to produce different kinds of URLs and they are all tested. Results for all tests are returned which we then pass on to Plinth.

The user can trigger the diagnostics test by going to System -> Diagnostics page. This runs diagnostics for all the applications. If we want users to be able to run diagnostics specifically for this application, we can include a button for it in our template immediately after the application description.

{% include "diagnostics_button.html" with module="ttrss" enabled=True %}

1.17. Logging

Sometimes we may feel the need to write some debug messages to the console and Plinth log file. Doing this in Plinth is just like doing this any other Python application.

import logging

logger = logging.getLogger(__name__)

def example_method():
    logger.debug('A debug level message')

    logger.info('Showing application page - %s', request.method)

    try:
        something()
    except Exception as exception:
        # Print stack trace
        logger.exception('Encountered an exception - %s', exception)

For more information see Python logging framework documentation.

1.18. Adding a License

Plinth is licensed under the GNU Affero General Public License Version 3 or later. FreedomBox UI applications, which run as modules under Plinth, also need to be under the same license or under a compatible license. The license of our application needs to clear for our application to be accepted by users and other developers. Let us add license headers to our application.

#
# This file is part of FreedomBox.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

The above header needs to be present in every file of the application. It is suitable for Python files. However, in template files, we need to modify it slightly.

{% extends "base.html" %}
{% comment %}
#
# This file is part of FreedomBox.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
{% endcomment %}

...

1.19. Internationalization

Every string message that is visible to the user must be localized to user's native language. For this to happen, our application needs to be internationalized. This requires marking the user visible messages for translation. Plinth applications use the Django's localization methods to make that happen.

from django.utils.translation import ugettext as _

def index(request):
    ...
    return TemplateResponse(request, 'ttrss.html',
                            {'title': _('News Feed Reader (Tiny Tiny RSS)'),
                             'status': status,
                             'form': form})

Notice that the page's title is wrapped in the _() method call. Let us do that for the menu item of the application too.

from django.utils.translation import ugettext_lazy as _

def init():
    """Initialize the module."""
    menu = cfg.main_menu.get('apps:index')
    menu.add_urlname(_('News Feed Reader (Tiny Tiny RSS)'), 'glyphicon-envelope',
                     'ttrss:index', 600)

Notice that in this case, we have used the ugettext_lazy and in the first case we have used the regular ugettext. This is because in the second case the gettext lookup is made once and reused for every user looking at the interface. These users may each have a different language set for their interface. Lookup made for one language should not be used for other users. The _lazy method provided by Django makes sure that the return value is an object that will actually be converted to string at the final moment when the string is being displayed. In the first case, the looked is made and string is returned immediately.

All of this is the usual way internationalization is done in Django. See Django internationalization and localization documentation for more information.

1.20. Coding standards

For readability and easy collaboration it is important to follow common coding standards. Plinth uses the Python coding standards and uses the pylint and flake8 tools to check if the there are any violations. Run these tools on our application and fix any errors and warnings. Better yet, integrate these tools into your favorite IDE for on-the-fly checking.

For the most part, the code we have written so far, is already compliant with the coding standards. This includes variable/method naming, indentation, document strings, comments, etc. One thing we have to add are the module documentation strings. Let us add those. In __init__.py add the top:

"""
FreedomBox app to configure Tiny Tiny RSS.
"""

2. Reference Guide

This section describes Plinth API that is most frequently used by application. Note that since Plinth is under development and has not yet declared a stable API, this API is subject to change. This is not usually a problem because all the Plinth applications currently reside in Plinth source repository itself and are updated when the API is updated.

2.1. Applications

These methods are optionally provided by the application and Plinth calls/uses them if they are present.

2.1.1. <application>.init()

Optional. This method is called by Plinth soon after all the applications are loaded. The init() call order guarantees that other applications that this application depends on will be initialized before this application is initialized.

2.1.2. <application>.diagnose()

Optional. Called when the user invokes system-wide diagnostics by visiting System -> Diagnositcs. This method must return an array of diagnostic results. Each diagnostic result must be a two-tuple with first element as a string that is shown to the user as name of the test and second element is the result of the test. It must be one of passed, failed, error. Example return value:

[('Check http://localhost/app is reachable', 'passed'),
 ('Check configuration is sane', 'passed')]

2.1.3. <appliation>.depends

Optional. This module property must contain a list of all applications that this application depends on. The application is specified as string containing the full module load path. For example, plinth.modules.apps.

2.1.4. plinth.package.required(package_list, before_install=None, on_install=on_install)

Make sure that a set of Debian packages are installed before a view can be accessed. If the packages are not currently installed on the system, a special installation view is displayed showing the list of packages to be installed. If the user chooses to proceed, package installation will start and an installation progress screen will be shown. After completion of the installation process, the original view is shown.

The package_list must be an iterable containing the Debian package names as strings. If provided, the before_install callable is called just before the installation process starts. Similarly, on_install callable is called just after the package installation completes.

2.2. Actions

Plinth's web front does not directly change any aspect of the underlying operating system. Instead, it calls upon Actions, as shell commands. Actions live in /usr/share/plinth/actions directory. They require no interaction beyond passing command line arguments or taking sensitive arguments via stdin. They change the operation of the services and applications of the FreedomBox and nothing else. These actions are also directly usable by a skilled administrator.

The following methods are provided by Plinth to run actions and to implement them easily by reusing code for common tasks.

2.2.1. plinth.actions.run(action, options=None, input=None, async=False)

Run an action command present under the actions/ directory. This runs subprocess.Popen() after some checks. The action must be present in the actions/ directory.

options are a list of additional arguments to pass to the command. If input is given it must be bytearray containing the input to pass on to the executed action. If async is set to True, the method will return without waiting for the command to finish.

2.2.2. plinth.actions.superuser_run(action, options=None, input=None, async=False)

This is same as plinth.actions.run() except the command is run with superuser privelages.

2.2.3. plinth.action_utils

Several utilities to help with the implementation of actions and diagnostic tests are implemented in this module. Refer to the module source code for a list of these methods and their documentation.

2.3. Menus

2.3.1. plinth.cfg.main_menu

This is a reference to the global main menu. All menu entries in Plinth are descendents of this menu item. See Menu.add_item() and Menu.add_urlname() for adding items to this menu or its children.

2.3.2. plinth.menu.Menu.get(self, urlname, url_args=None, url_kwargs=None)

Return a child of this menu item. urlname must be the name of a URL as configured in Django. django.core.urlresolvers.reverse() is called before the lookup for child menu item is performed. url_args and url_kwargs are passed on to reverse().

2.3.3. plinth.menu.Menu.add_item(self, label, icon, url, order=50)

Add a menu item as a child to the current menu item. label is the user visible string shown for the menu item. icon must be a glyphicon class from the Twitter Bootstrap library. url is the relative URL to which this menu item will take the user to.

2.3.4. plinth.menu.Menu.add_urlname(self, label, icon, urlname, order=50, url_args=None, url_kwargs=None)

Same as plinth.menu.Menu.add_item() but instead of URL as input it is the name of a URL as configured in Django. django.core.urlresolvers.reverse() is called before it is added to the parent menu item. url_args and url_kwargs are passed on to reverse().

2.4. Services

2.4.1. plinth.service.Service.__init__(self, service_id, name, ports=None, is_external=False, enabled=True)

Create a new Service object to notify all applications about the existence and status of a given application. service_id is a unique identifier for this application. name is a display name of this application that is shown by other applications such as on the firewall status page. ports is a list of names recognized by firewalld when enabling or disabling firewalld services. If is_external is true, the ports for this service are accessible from external interfaces, that is, from the Internet. Otherwise, the service is only available for client connected via LAN. enabled is the current state of the application.

2.4.2. plinth.service.Service.is_enabled(self)

Return whether the service is currently enabled.

2.4.3. plinth.service.Service.notify_enabled(self, sender, enabled)

Notify other applications about the change of status of this application. sender object should identify which application made the change. enabled is a boolean that signifies whether the application is enabled (= True) or disabled (= False).

This is typically caught by the firewall application to enable or disable the ports corresponding to an application.

Cacharreo

FreedomBox consiste de 2 sub-proyectos principales:

1. Servicio FreedomBox (Plinth)

El servicio FreedomBox (Plinth) es un interfaz web para administrar las funciones de FreedomBox.

El servicio FreedomBox (Plinth) es Software Libre bajo la versión 3 o posterior (a tu elección) de la Licencia Pública General GNU Affero.

1.1. Uso

  • El servicio FreedomBox (Plinth) viene instalado en todas las imágenes de FreedomBox. Puedes descargar imágenes de FreedomBox y ejecutarlas en cualquier hardware soportado. El servicio FreedomBox (Plinth) estará accesible visitando la URL http://freedombox/plinth o https://freedombox.local/plinth.

  • Si estás en una máquina Debian puedes instalar el servicio FreedomBox (Plinth) desde el archivo de paquetes de Debian. Actualmente solo se soportan Stretch (estable), Buster (en pruebas) y Sid (inestable). Para instalar el servicio FreedomBox (Plinth) ejecuta:

$ sudo apt-get install plinth

1.2. Capturas de pantalla

Home Page Apps Page System Page

Enabling Tor Hidden Services Newsfeed from anywhere Email Client

Manual Pages About Page

1.3. Soporte

Puedes solicitar soporte en

1.4. Contribuir

Buscamos ayuda para mejorar el servicio FreedomBox (Plinth). Puedes contribuir al servicio FreedomBox (Plinth) no solo codificando sino también traduciendo, documentando, diseñando, empaquetando o dando soporte.

1.4.1. Paquete Debian

  • El servicio FreedomBox (Plinth) está empaquetado para Debian como paquete nativo y el código fuente de empaquetado es parte del código fuente del paquete principal.

  • Las incidencias relacionadas con el empaquetado se listan en el BTS de Debian.

2. Freedom Maker

Freedom Maker es un script para generar imágenes de disco FreedomBox adaptadas a diferentes dispositivos hardware o máquinas virtuales.

Actualmente Freedom Maker puede generar imágenes de disco FreedomBox para el siguiente hardware:

Si una platforma de hardware puede ejecutar Debian no debería llevar mucho esfuerzo adaptar Freedom Maker para que le genere imágenes FreedomBox.

Freedom Maker es Software Libre licenciado bajo la versión 3 o posterior (a tu elección) de la Licencia Pública General GNU.

2.1. Generar Imágenes FreedomBox

2.2. Soporte

Puedes solicitar soporte en

2.3. Contribuir

Buscamos ayuda para mejorar Freedom Maker.

  • Hay instrucciones disponibles para contribuir código fuente.

  • Freedom Maker se aloja en el Proyecto Salsa de FreedomBox. El repositorio Git principal está alojado allí.

  • Puedes contribuir a FreedomBox añadiendo soporte para más platformas de hardware. Freedom Maker se puede adaptar fácilmente a más platformas si ya soportan ejecutar Debian.

  • Puedes crear y probar imágenes con Freedom Maker regularmente para probar las funcionalidades nuevas y comprobar que no hay regresiones.
  • Las listas de defectos, tareas pendientes y solicitudes de funcionalidad están en el gestor de incidencias.

  • Puedes solicitar asistencia al desarrollo en el foro de debate, la lista de correo o el canal IRC #freedombox.

Cuéntaselo a tu gente