Cover Image

Servidor Casero en Netbook

Julio 5, 2025 - Tiempo de lectura: 7 minutos

Servidor_Gopher-Gemini-HTML-Static

En esta oportunidad vengo a mostrar y a dejar como resumen lo hecho en mi servidor local, autohosteado sobre una netbook Atom 455 con 2gb de RAM y del año 2011.-

Gran parte de la Info, la obtuve de sugerencias de amigos y servidores amigos como el caso de Texto-plano, uno de los mejores servidores autoalojados en habla hispana.

En principio, probé e instalé en una netbook parecida marca Olivertti, con 1gb de RAM, y probé OpenBSD y anduvo a las maravillas, pero se me rompió el botón de encendido y no pude volver a prenderla, entonces como plan B salió la netbook que se encuentra actualmente y la misma no pude instalar ahí el mismo SO, tengo entendido que no en todos los hardware funciona OpenBSD.

Me gusto el OpenBSD en cuanto a lo fácil, liviano y seguro que es, pero como en la netbook nueva no pude lograr instalarlo, opté por instalar un Debian 12 netinstall y con openbox y tint2 como entorno gráfico, aunque la mayoría de las veces lo hice por terminal, fish y tmux. Aquí los pasos que realice:

Un punto importante es que separé los directorios **/ /var y /home ** para tener seguridad y mejor manejo del disco que no es grande y además mecánico, esto me permite ver como estoy usando los espacios y que los logs no me saturen el servidor.


1. Instalación de Debian 12

Durante la instalación:

  • Seleccioné "Servidor SSH" en las tareas de software

  • Configuré solo la interfaces de red cable (el Wi-Fi no pienso usar)

  • Eligo la IP estática de mi red local (esto es importante, acá pongo un ejemplo, yo elegí una más alta para que del DHCP de mi red no intente tomar la que le puse como fija a la netbook que hace de servidor):

IP: 192.168.1.100 (ejemplo)
Máscara: 255.255.255.0
Gateway: 192.168.1.1
DNS: 8.8.8.8, 8.8.4.4

2. Configuración Post-Instalación - Acá pongo el Firewall (ufw) y utilidades para bajar si necesito programas y como tengo nano por defecto como editor por las dudas puse vim

sudo apt update && sudo apt upgrade -y
sudo apt install ufw vim curl

3. Configurar Red Wi-Fi (si es necesario) esto lo pongo por si necesitan, en mi caso no configuré la red wifi, como tengo tanto el router como la netbook detras de un pequeño UPS, espero sirva como ayuda ante costes de luz (tan común por estos lados).

Editá /etc/network/interfaces:

auto wlan0
iface wlan0 inet dhcp
  wpa-ssid "Tu_SSID"
  wpa-psk "Tu_contraseña"

Reinicia red: sudo systemctl restart networking


4. Servidor Web Estático (Nginx)

Usé Nginx en vez de apache2 porque me resultó más comodo, (no aclaré pero también alojo un blog stático en la misma netbook)

sudo apt install nginx
sudo systemctl enable nginx

Luego cree mi sitio en /var/www/html ,esto es por defecto, yo puse otro nombre a esa carpeta.

Luego de crearlo probé si llegaba en local con esto : curl http://localhost


5. Servidor Gopher

El servidor que utilice es gophernicus, había probado uno hecho en python, pero este que lo había hecho en la instalación anterior sobre OpenBSD me pareción mas sencillo, lo que si usa algo llamado socket para implementar y no lo tengo muy en claro como funciona, pero siguiendo las guías de instalación salió andando, pongo los pasos y parámetros que usé:

cabe aclarar que como no tengo IP estática, use el servicio gratuido de duckdns.org que me permite apuntar hasta 5 dominios de esa forma, otra aclaración, no tengo registrado ningún dominio por ahora así que use uno que por ahora es "elprofejuan", veré mas adelante usar otro porque ese ya está registrado, pero para no demorar más utilice ese servicio y nombre, tanto para mi blog como los demás plataformas.

Usé gophernicus:

sudo apt install gophernicus

Su archivo de Configuración es:

sudo nano /etc/gophernicus.conf

Contenido

hostname = tu-dominio.duckdns.org
port = 70
sudo systemctl restart gophernicus

6. Servidor Gemini

El protocolo gemini (más moderno que el gopher) también lo autoalojo en mi net, uso el mismo duckdns.org para mantener la ip conectada a mi ip cambiante.

Instalé gmnisrv (no está en repos oficiales (al menos en Debian 12), asi que acompilaremos) como servidor:

sudo apt install build-essential libssl-dev
git clone https://git.sr.ht/~sircmpwn/gmnisrv
cd gmnisrv
make
sudo make install

Configuración (/etc/gmnisrv.ini) del servidor gemini:

[server]


[static:/var/gemini]
cert = /etc/ssl/certs/gemini.pem

Genero el certificado en local:

sudo openssl req -x509 -newkey rsa:4096 -nodes -out /etc/ssl/certs/gemini.pem -keyout /etc/ssl/certs/gemini.pem -days 365 -subj "/CN=tu-dominio.duckdns.org"

Creo el directorio donde alojaré los archivos y carpetas de mi cápsula Gemini: sudo mkdir /var/gemini


7. Configurar DuckDNS

Ahora pongo como configurar (la verdad es muy fácil y lo hago como recordatorio para mí) el script de duckdns que servirá para tener apuntado a la ip dinámica de mi proveedor de internet, tengo la ventaja que no estó detrás de un NAT sino que salgo directo al proveedor.

Instalo tambipen cron para que lo haga cada un determinado tiempo.

Creo el directorio duckdns en mi home

Con nano creo el script que lo saco de la página de duckdns.org

sudo apt install cron
mkdir ~/duckdns
nano ~/duckdns/duck.sh
#!/bin/bash
echo url="https://www.duckdns.org/update?domains=TU_DOMINIO&token=TU_TOKEN&ip=" | curl -k -o ~/duckdns/duck.log -K -

Lo hago ejecutable y ejecuto por primer vez el script de duckdns.org:

chmod +x ~/duckdns/duck.sh
~/duckdns/duck.sh

Programo cron (crontab -e) para que se ejecute cada 5 munitos el script:

*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

8. Configurar Firewall (UFW)

El firewall que elijo es ufw, aunque podría usar iptables pero usé este porque me resultó mas fácil de entender lo que hace, importante cuando no función o no llegás a las direcciones que querés.

Ahí están los comandos, el primero lo cambie y lo cerré para internet (telnet) por seguridad, además cambié el puerto, son medidas de seguridad que me recomdaron y están piola. me acuerdo que en un chat de xmpp, me pusieron, "no habrás dejado abierto el telnet en 22 a root no?" y si lo había dejado, jajaja, así eso es una correción posterior pero lo aclaro acá para otros y para mi yo del futuro, jajaja.

sudo ufw allow 22/tcp
sudo ufw allow 80,443/tcp
sudo ufw allow 70/tcp
sudo ufw allow 1965/tcp
sudo ufw enable

9. Configurar SSH Seguro

Estos son los pasos para cambiar de puertos, del ssh (telnet), yo usé otro pero como ejemplo está bien. Y pongo la parte que tengo que modificar en el archivo sshd_config, Aclaración para otros y para mi yo del futuro, hay dos archivos parecidos en /etc/ssh/ uno es ssh_config que se refiere al usuario/s del mismo servidor (en las pruebas modificaba éste :( ) y otro es el que hay que modificar que es el del demonio que gobierna el ssh como servidor propiamente dicho, fijarse que ese tiene una d agregada.

Edito el archivo /etc/ssh/sshd_config:

Port 2222  # Cambia el puerto
PermitRootLogin no
PasswordAuthentication no

Reinicio el servicio: sudo systemctl restart sshd


10. Port Forwarding en el Router

En mi router de Movistar argentina puedo redireccionar los puertos y ip de mi red interna y lo hago con esos datos (el del 22 tiene otro valor), el resto son 80 web 442 websegura 70 gopher y 1965 gemini

Redirige estos puertos a la IP local de tu netbook:

TCP: 22 (o 2222), 80, 443, 70, 1965


Si querés un resumen de lo visto:

  • Estos datos son de tener en cuenta

    1. Para acceder desde fuera de mi red uso: gemini://tu-dominio.duckdns.org:1965
  1. Monitoreo logs (esto todavía no lo tengo muy claro y estoy haciendo un resumen, es interesante y muy sorprendente lo que voy descubriendo):

    • Nginx: /var/log/nginx/access.log

    • Gopher: journalctl -u gophernicus

  2. Para contenido estático:

    • Web: /var/www/html

    • Gopher: /var/gopher

    • Gemini: /var/gemini


Falta todavía documentar:

Configuarar https con letś encrypt

Cargar un blog con bashblog

como monitoriar el servidor de forma remota.

cuales son los comando por tty mas usados para el servidor.

y muchos etc.

Acerca de

Blog del Profe Juan.

Contador de Visitas Diarias

40