HDA-SERV: Configuración

hda

#60 / @RA_MeSiAs @RusTu @TRON @Hades13

Aprovechando este call: el texto de la noticia en la portada no es correcto. En realidad en este hilo no estamos configurando un NAS, ¡si no un homelab/servidor casero!

Yngve

cyberbunker 3.0

sasher

Si quieres trastear, te recomiendo que le metas node-red (nativo, no sobre Docker). Nativo porque de otra forma no vas a poder ejecutar scripts sobre el server sin hacer alguna ñapa con tuberías de entrada/salida entre tu contenedor Docker y el host.

Yo lo tengo para definir las cron de forma visual, un bot de telegram con algunos comandos y para notificaciones del server. Es muy cómodo, y ya antes de ponerme a picar ningún script tiro directamente por node-red. Además que para copias de seguridad es bastante simple: te copias los flows.json y a tirar millas.

Un ejemplillo chorra para reproducir canciones de navidad estos días en el salón automáticamente :sweat_smile:

3
Uriel246

hda: "...debo comentar que no soy ningún experto..."
el servidor casero:

9 1 respuesta
hda

#64 jaja, buena esa. Pero ya sabes, cuanto más sabes más consciente eres de lo poco que sabes. Hay peña que controla muchísimo en lo salvaje. De hecho, al final estamos limitados por lo que conocemos. El mundo de la informática es tan amplio, tan grande, que hay caminos de los que desconozco su existencia. Porque si al menos sabes qué no sabes, puedes informarte sobre ello. Pero si no sabes qué no sabes... para uno aquello no existe.

Por ejemplo, gracias a #16 me he estado informando y valorando mucho si migrar a podman. En este caso podman me sonaba pero nunca me puse a leer sobre ello.
Otro ejemplo, gracias a #9 he conocido wireward. Que ni sabía de su existencia (y seguro que es algo básico para alguien que controle). Lo más probable es que meta wireward en este servidor.
O... #51, que habla en turcosueco para mí (a excepción de kubernetes y grafana xD)


Hey, #59, revisando los comentarios me he dado cuenta de que me he saltado el tuyo, disculpa. Desde que estoy en la asociación de homelabs, que es algo reciente, he conocido proxmox y esxi, porque esos tíos sí controlan un montón y los usan. Como estaban todo el día hablando de ello busqué un poco de info. Hasta donde sé, para lo que pretendo con mi homelab, sus servicios y jugueteos, se me escapa un poco montar un entorno de virtualización. No veo el caso de uso para mí. Pero sí molaría montarlo por montarlo. Solo que ahora tengo otras prioridades.

1
Lecherito

Fua, esto se me habia pasado el hilo completamente, incluso con la mencion! (Me habian hecho otra mencion y ni me di cuenta).

Muy top el currazo, ya sabes que lo hemos hablado bastante y aunque yo no haria tantas cosas como has hecho tu por aqui, me va a servir mucho para cuando haga yo el mio. Tristemente va a tardar bastante porque estoy a medias de la casa pero tengo alguna que otra cosa que hacer con el que tengo actualmente.

Me molaria tambien ver mas sobre la configuracion de las aplicaciones etc no solo del servidor a tan bajo nivel :D

1
carracho

#29 De este año: https://blog.jarrousse.org/2023/03/18/how-to-use-ufw-firewall-with-docker-containers/

  • Podrías automatizar cosillas con: unattended-upgrades y watchtower
  • Para una terminal mas 'potente' a mi me gusta emplear "byobu"
  • Puedes mejorar el desempeño de docker toqueteando los parámetros del sistema como 'vm.max_map_count' ... tienes un tutorial de Cisco por youtube que explica un poco de que va la historia.
  • La configuración ssh podría mejorar impidiendo que se usen protocolos ya marcados como "desfasados" y alguna otra cosilla que te interese deshabilitar por no usarla...
  • Habilitar journalctl para docker
  • Usar un proxy inverso, si usas algo como traefik seguramente te interese usar 'logrotate' para no tener un macro archivo de log (si es que lo activas en traefik).

*** No se para que usar Samba...¿en windows no se puede usar sshfs? Yo es que con sshfs y scp ¿para que más? xDD pero tampoco uso windows :/

1 respuesta
FlameThrower

scp es bastante lento, rsync por ssh mucho mejor.

2 1 respuesta
carracho

#68 rsync es sin duda una gran herramienta.

A raíz de tu comentario me ha dado por investigar un poco y me he topado con https://www.psc.edu/hpn-ssh-home pinta interesante.
Además, he visto un estudio de Google sobre TCP: https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36640.pdf . Respecto a este tema no me queda claro si linux ya aplica un valor de 10 por defecto a 'initcwnd'... pero según la documentación de "ip-route" se están usando los valores propuestos en el RFC2414: https://www.rfc-editor.org/rfc/rfc2414 . Donde se dice claramente "A study involving simulations of a large number of HTTP transactions over hybrid fiber coax (HFC) indicates that the use of larger initial windows decreases the time required to load WWW pages".

Un tema interesante al que darle un vistazo en profundidad!

** Si, ya por defecto se usa 10 desde hace tiempo.

hda

#67 respecto a ufw, como te decía antes, yo no he tenido ningún conflicto. Tengo que abrir los puertos en UFD para hacerlo accesible. Pero mil gracias por el enlace, seguro que si falla algo puede ser muy conveniente.

#67carracho:

Podrías automatizar cosillas con: unattended-upgrades y watchtower

Dockerizo watchtower. No conozco unnatended-upgrades. Lo ojearé.

#67carracho:

Para una terminal mas 'potente' a mi me gusta emplear "byobu"

Qué chula la terminal. Hay unas cuantas para X11 muy chulas. Una que mola es bspwm, aunque últimamente en linux voy con kitty. De todos modos, el con lo que trabajo día a día es con windows terminal (aquí un gist con mi config de wt).

#67carracho:

Puedes mejorar el desempeño de docker toqueteando los parámetros del sistema como 'vm.max_map_count' ... tienes un tutorial de Cisco por youtube que explica un poco de que va la historia.

¡Mil gracias!, lo buscaré.

#67carracho:

La configuración ssh podría mejorar impidiendo que se usen protocolos ya marcados como "desfasados" y alguna otra cosilla que te interese deshabilitar por no usarla...

Ehm... buscaré sobre esto también. ¿Es tirar de ssh config, no? La clave es saber qué protocolos son los ya desfasados para bloquearlos. ¿Tienes más info sobre esto?

#67carracho:

Habilitar journalctl para docker

No tengo ni idea de lo que es esto. Buscaré.

#67carracho:

Usar un proxy inverso, si usas algo como traefik seguramente te interese usar 'logrotate' para no tener un macro archivo de log (si es que lo activas en traefik).

Todo lo expuesto a inet lo tengo a través de traefik2, con varios middlewares, entre otros authy. Pero eso lo trataré en el siguiente hilo. Respecto a logrotate no lo conozco, ¡buscaré! Nunca me he enfrentado a leer los logs de traefik, así que pinta interesante.

#67carracho:

No se para que usar Samba...¿en windows no se puede usar sshfs? Yo es que con sshfs y scp ¿para que más? xDD pero tampoco uso windows :/

Por la comodidad completa para windows. Montar unidades de red con sencillez. Además, según lo tengo configurado, puedo compartir carpetas de solo lectura (podría ser un vector de ataque, si me comprometen windows que me borren el servidor, por ejemplo). Vamos, por comodidad.

También te digo que no he explorado sshfs, scp ni rsync para windows.


Muchas gracias por el comentario, @carracho.

1 1 respuesta
carracho

#70

  • Para el tema de la configuración de ssh puedes echar un ojo aquí: https://www.ssh.com/academy/ssh/sshd_config
  • journalctl es el demonio de logging de systemd ... puedes engancharlo con otro tipo de software y/o usarlo directamente con sus múltiples opciones de filtrado. Es algo que te ayuda a ver que ha pasado cuando algo sale mal.
  • El tema de logrotate te lo recomienda el mismo proyecto de traefik, ellos delegan en que usarás dicha herramienta... sino eso, lo que obtienes es un archivo de 'access.log' que va creciendo sin control... y te puedes encontrar un día con gigas de datos consumidos por el archivo xD (todo depende del traqueteo que tenga el servidor claro...)
  • scp es eso, 'cp' por ssh... rsync es más potente... por ejemplo, solo mueve contenido nuevo y en caso de mover muchos archivos pequeños también tiene ventaja, entre otras cosejas que permite hacer. Por poder puedes levantar un servicio rsync y usar su propio protocolo.

De nada! espero que te sea de ayuda y de paso yo también aprender algo nuevo si cae :) igual tu ves algo a raíz de lo que yo te pueda comentar que nos termine siendo útil a ambos.

2
hda

Versión 1.1R0 (12/12/2023)

Changelog

  • Corregidas un montón de erratas
  • Añadido el comando para deshacer los privilegios para escuchar puertos bajos
  • Añadida la instalación de Network Time Protocol
  • Añadida la instalación y configuración de pi-hole
  • Añadido Unattended-Upgrades
  • Incrementada la memoria virtual de los contenedores
  • Configurado docker para usar journald system
  • Añadida una configuración de logrotate para traefik en avance

Gracias @carracho por el feedback. Por cierto, no he sido capaz de encontrar el vídeo de cisco y docker que mencionas.

3 1 respuesta
carracho

#72 Yo tampoco lo encuentro... la nota que tengo apuntada es de hace 13 meses. Recuerdo que el dato se presentaba en un 'powerpoint' mientras el tipo comentaba un poco el asunto. Se que es de cisco porque en otro archivo lo tengo en el comentario... pero no enlacé el vídeo :/
Yo lo que tengo en mis notas (trilium, un servicio que recomiendo levantar):

  • Ampliar el tamaño de la 'Virtual Memory Area':
    vm.max_map_count=262144
    El kernel utiliza áreas de memoria virtual para mantener un registro de las asignaciones de memoria de los procesos
    Info Adicional: https://www.suse.com/support/kb/doc/?id=000016692
  • Kernel virtual memory accounting mode (1 = always overcommit, never check)
    vm.overcommit_memory=1
    En este modo cuando un proceso utiliza, por ejemplo, malloc, no se comprobará por parte del sistema operativo si tiene espacio... lo que terminará en un crasheo

Entender vm.overcommit_memory:

Setting overcommit_ratio to 80 is likely not the right action. Setting the value to anything less than 100 is almost always incorrect.

The reason for this is that linux applications allocate more than they really need. Say they allocate 8kb to store a couple character string of text. Well thats several KB unused right there. Applications do this a lot, and this is what overcommit is designed for.

So basically with overcommit at 100, the kernel will not allow applications to allocate any more memory than you have (swap + ram). Setting it at less than 100 means that you will never use all your memory. If you are going to set this setting, you should set it higher than 100 because of the fore-mentioned scenario, which is quite common.
However, while setting it greater than 100 is almost always the correct answer, there are some use cases where setting it less than 100 is correct. As mentioned, by doing so you wont be able to use all your memory. However the kernel still can. So you can effectively use this to reserve some memory for the kernel (e.g. the page cache).

Now, as for your issue with the OOM killer triggering, manually setting overcommit will not likely fix this. The default setting (heuristic determination) is fairly intelligent.

If you wish to see if this is really the cause of the issue, look at /proc/meminfo when the OOM killer runs. If you see that Committed_AS is close to CommitLimit, but free is still showing free memory available, then yes you can manually adjust the overcommit for your scenario. Setting this value too low will cause the OOM killer to start killing applications when you still have plenty of memory free. Setting it too high can cause random applications to die when they try to use memory they were allocated, but isnt actually available (when all the memory does actually get used up).

1
1 mes después
n40k1

No sé si es el post adecuado, pero a raíz de este hilo quiero compartir un par de tonterías que me configuré para Plex. Yo lo tengo en una VM pero por si le sirve a alguien :wink:

Actualizar automáticamente Plex Server: https://github.com/rafa-ga/auto-update-plex

Descargar vídeo o audio (solo, en plan podcast) de YouTube vía yt-dlp.

Audio: yt-dlp --extract-audio --audio-format mp3 --audio-quality 0 --embed-thumbnail --parse-metadata "%(uploader)s:%(album)s" --embed-metadata -o "/mnt/western_digital/Podcasts/%(uploader)s - %(title)s.%(ext)s" https://youtu.be/R83W2XR3IC8

Vídeo: yt-dlp -4 I :1 -w --remux-video "mkv" -f "bv+ba/b" -o "/mnt/western_digital/YouTube/%(uploader)s - %(title)s.%(ext)s" https://youtu.be/R83W2XR3IC8

Esto último lo uso desde el móvil mediante un atajo de iOS. En YT Compartir » Copiar enlace y luego ejecutar atajo.

1 1 respuesta
hda

#74 Hey, genial aporte. Interesante el autoupdater de plex y el uso del yt-dlp. Cuando monte el tercer hilo, con los microservicios, ahí estaría guay que volvieses a repetir este comentario, para los que se puedan acercar a sacar ideas.

1 1 respuesta
n40k1

#75 ¡Gracias! :wink: Estaré al loro para repostear.

29 días después
jilker

Ayer seguí tu guía al pie de la letra y puedo decir que tengo un servidor montado en casa. Muchas gracias por el curro de documentar y compartir todo.
No he utilizado nunca docker, ¿Alguna recomendación de por donde empezar? Me gustaría desplegar cositas básicas como plex, un transmission...
Esperando con ganas la última parte.

1 1 respuesta
hda

#77 ¡Hey! Me alegro mucho porque a alguien le haya servido.

Respecto a desplegar en docker (no dockerizar), la verdad es que es bastante sencillo. Yo te recomendaría buscar por internet cualquier guía básica de despliegue en docker para luego tirar ya por docker compose (un orquestador para gestionar varios despliegues). Empieza, por ejemplo, con un microservicio como transmisión.

Tengo el server un poco parado por problemas familiares, en tanto recupere fuerzas me pondré con la última parte :)

2

Usuarios habituales

  • hda
  • carracho
  • FlameThrower
  • Urien
  • preguntitas
  • Hipnos
  • Zireael

Tags