Creación de un servidor doméstico completo-lo básico

Publicado por Oliver en 06.09.202106.09.2021

El software y los datos importantes de auto-alojamiento en su propio servidor doméstico tienen muchas ventajas, pero puede ser una tarea desalentadora para comenzar. He estado ejecutando mi propio servidor durante un par de años y describiré las opciones de hardware y software aquí. Esta será una guía completa sobre cómo configurar su propio servidor.

¿Por qué debería construir su propio servidor?

En algunos casos no debe hacerlo. Algunos servicios muy costosos, especializados o difíciles de configurar (como el correo electrónico) podrían ser mejores con un proveedor externo. Si solo usa sus servicios muy raramente o no está dispuesto a sumergirse en algunos de los conocimientos necesarios para hospedar, este también podría no ser el lugar adecuado para usted.

Sin embargo, no se asuste, el software de alojamiento por su cuenta nunca ha sido tan simple como lo es hoy y viene con muchas ventajas. Quizás lo más importante es que te hace un poco más independiente. Los gigantes tecnológicos no tienen un tiempo tan fácil para obtener sus datos y algún problema en la nube o con su proveedor de Internet no le impide acceder a sus datos y servicios (localmente).

En un momento en el que los servicios controlan partes cada vez más importantes de su vida (como un sistema de hogar inteligente), este control e independencia pueden ser invaluables. A largo plazo, incluso puede ser más rentable a largo plazo. Seguro que comprar hardware es una inversión, pero alojar terabytes de datos en la nube también le costará mucho, para siempre.

Por último, pero no menos importante, puede ser un proyecto muy divertido que te ayuda a aprender mucho sobre tecnología y siempre eres libre de probar software nuevo. ¡Hay tanto software libre & de código abierto por ahí!

¿Qué desea con su servidor?

Antes de construir algo, es importante preguntarse: ¿qué estoy planeando hacer con este servidor? Si está buscando alojar un par de pequeños servicios localmente sin muchos datos, el resultado se verá muy diferente de un servidor de almacenamiento completo.

Si solo necesita servicios locales, en la mayoría de los casos, recomiendo obtener una Raspberry Pi más nueva y, posiblemente, una SSD externa para datos. Son baratos, eficientes energéticamente y fáciles de configurar. He descrito mi pequeño servidor y concentrador doméstico inteligente basado en Raspberry Pi 4 en profundidad en este artículo. Agregar un SSD para el almacenamiento de datos pequeños también es bastante fácil.

Si está buscando una solución más potente o necesita almacenar muchos datos, le recomiendo usar una plataforma diferente. Algunas personas usan un NAS o hardware de servidor antiguo (que puede funcionar muy bien), pero recomiendo el hardware normal del cliente con un enfoque en algunas características especiales.

  • Asegúrese de tener una buena conexión de red (1 Gbit/s o tal vez incluso 10)
  • Use componentes de bajo consumo y, dependiendo de dónde desee colocar los silenciosos del servidor
  • Obtenga una CPU lo suficientemente potente sin perder energía en inactividad
  • Generalmente no necesita una tarjeta gráfica
  • Obtenga suficiente RAM, esto puede ser muy importante para su servidor
  • Obtenga una placa base y una carcasa que puedan contener suficientes discos duros & SSD para el almacenamiento y tenga una buena refrigeración
  • Obtenga medios de almacenamiento de calidad. He usado mucho la serie WD red (solo tenga cuidado con las versiones SMR) y también he escuchado cosas buenas sobre la serie Ironwolf de Seagate
  • Asegúrese de que sus componentes se enfríen correctamente y de que todo esté lo suficientemente bien conectado. Usted querrá que esto se construya & olvídese de
  • ¡Obtenga un adaptador de corriente de calidad!
  • Personalmente evitaría controladores RAID de hardware

Si está buscando construir un servidor doméstico, considere comprar a través de estos enlaces de afiliados para apoyar el blog
Western Digital Red Plus series
Seagate IronWolf Series
Raspberry Pi 4 8GB para un servidor más pequeño

La editorial alemana Heise tiene algunos excelentes artículos sobre la construcción de su propio servidor. También puedes encontrar muchos artículos internacionales sobre esto. Mi aprendizaje personal después de construir varias versiones del servidor es planificar siempre lo que necesita en este momento y en un futuro muy cercano. No construya para algo que podría necesitar en 10 años. Para entonces habrá mejor hardware disponible. La única excepción a esto podría ser el almacenamiento. Siempre es una buena idea tener un par de puertos SATA a la izquierda para que pueda agregar más almacenamiento más adelante.

La pila de software

Hay una gran cantidad de software hecho para servidores y cada elección dependerá de sus preferencias y caso de uso. La siguiente es mi opinión personal después de un par de años trabajando en este problema en mi tiempo libre.

En primer lugar, comencemos con lo que no usaría en un servidor: Windows. Las actualizaciones son difíciles, una gran cantidad de software no es compatible correctamente y es costoso. En su lugar, vaya con una solución Unix/Linux. Hay soluciones completas para esto como FreeNAS, OpenMediaVault o Unraid, pero Unraid cuesta dinero y las otras soluciones también restringen lo que puede hacer. Pueden ser una buena opción para ti, pero decidí ir por el camino del bricolaje y construir mi propia solución basada en tecnología probada.

Mi servidor doméstico se ejecuta en un SO Ubuntu server mínimo (una versión LTS) con acceso SSH para administración. Utilizo el sistema de archivos ZFS para agrupar las unidades en un grupo de big data a la vez que proporciono funcionalidades como cachés, instantáneas, RAID y copias de seguridad simples. En este grupo, creé varios sistemas de archivos para diferentes casos de uso, algunos de los cuales están disponibles a través de la red para que otros clientes los usen. En el servidor se ejecuta un demonio Docker y uso varios archivos docker-compose para alojar un conjunto de servicios como openHAB, Grafana, Bitwarden/Vaultwarden y Nextcloud. Un proxy inverso (Traefik en este momento) permite llegar a determinados servicios desde cualquier lugar de la web.

hardware de apilamiento de servidor mi hogar basado en ZFS y un sistema de archivos de grupo de almacenamiento con instantáneas y sharesDocker de samba y Traefik para software

Las copias de seguridad externas se realizan a través de unidades adicionales conectadas a través de USB y giradas regularmente. Un par de scripts y un monitor de tiempo de actividad comprueban regularmente si todo sigue funcionando correctamente y envían alarmas de lo contrario. La instalación es en su mayoría automatizada y se puede volver a hacer en hardware nuevo rápidamente (si los datos todavía están disponibles, por supuesto).

Cómo configurar el servidor: instalación automatizada

Antes de configurar el servidor, decidí automatizar este proceso. Esto hace que sea más fácil, más rápido, menos propenso a errores y también actúa como una especie de documentación. Tener una plataforma base que se pueda configurar de forma fiable de forma rápida y sencilla es una gran ventaja. De esta manera, todo lo demás, los datos y los servicios reales, se pueden configurar de forma independiente desde este sistema. Si quiero cambiar a otra cosa, debería ser relativamente fácil.

Para la automatización elegí Ansible. Ansible es un software que le permite escribir los llamados libros de jugadas: scripts cortos que definen los pasos que debe realizar para configurar su servidor. Estos libros de jugadas se pueden invocar con un simple comando y automatizarán todos los pasos manuales necesarios para el proceso de configuración. He aprendido Ansible yo mismo mientras configuraba el servidor, por lo que estoy seguro de que los libros de jugadas podrían ser mejores, pero los compartiré, así como todo lo demás necesario para la configuración del servidor, a través de GitHub en las siguientes partes de esta serie.

Ejecuté estos scripts en una máquina virtual un par de veces antes de la instalación real para asegurarme de que todo funciona según lo previsto. Desde entonces, he agregado un par de características nuevas y reelaborado partes de las existentes. La instalación real en el servidor fue bastante simple.

Primero necesita instalar su sistema operativo Linux favorito. Elegí Ubuntu Server LTS y lo instalé a través de una memoria USB. El sistema está instalado en una SSD para tiempos de inicio más rápidos. Después de la instalación sólo he configurado la red (recomiendo una IP estática), SSH habilitado y se trasladó el servidor a su posición física. A partir de ahora no se necesita pantalla/teclado/ratón, se puede administrar a través de la red (a menos que algo salga mal).

Los siguientes pasos también son simples: descargue los scripts que necesita, instale Ansible y ejecute los libros de jugadas.

sudo apt install git ansiblegit clone https://github.com/OliverHi/zfs-homeserver.gitcd zfs-homeserver/ansibleansible-playbook setup_playbook.yml -K

Esto ejecutará un libro de jugadas llamado setup_playbook.yml que configurará el servidor. Por supuesto, puedes usar cualquier libro de jugadas Ansible aquí, pero el mío es bastante simple y se ve así.

--- - name: "Setting up the home server" hosts: localhost connection: local # become root user, which is needed for most tasks become: yes become_user: root vars_files: - vars/main_vars.yml tasks: - name: Install the needed packages apt: name: - samba - software-properties-common #- linux-headers - dkms - zfsutils-linux - samba-vfs-modules - zfs-auto-snapshot state: latest cache_valid_time: 3600 - import_tasks: tasks/setupZFStask.yml - import_tasks: tasks/setupUsersTask.yml - import_tasks: tasks/setupFoldersTask.yml - import_tasks: tasks/setupSambaTask.yml - import_tasks: tasks/setupDocker.yml # and more tasks if needed

Básicamente está trabajando en el servidor local, ejecutándose como root y utilizando variables que he definido en un main_vars separado.archivo yml. Comenzará instalando un par de paquetes que necesito para mi configuración y luego ejecutará un conjunto de tareas que escribí para las diferentes partes de la pila de software. Configurará el sistema de archivos ZFS, creará usuarios y carpetas, configurará Docker y algo más. Siempre puedes personalizarlos a tu gusto.

En las siguientes publicaciones de esta serie explicaré cómo configuré el sistema de archivos, los usuarios, los recursos compartidos de samba, así como Docker y el proxy inverso Traefik. En cada parte también agregaré los archivos Ansible necesarios para instalarlos automáticamente. Todo el código estará disponible en mi cuenta de GitHub.

El siguiente post sobre la configuración de ZFS y un sistema de copia de seguridad se puede encontrar aquí.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.