====== Servidor Casero de Investigación con Debian, Docker y Taguette ======
===== Especificaciones del Hardware =====
El nodo principal de la red doméstica opera sobre un equipo reciclado y optimizado como servidor *headless* (sin entorno gráfico):
* **Modelo de Referencia:** HP Pavilion x360
* **Procesador (CPU):** Intel Pentium N3710 (diseñado para bajo consumo energético)
* **Memoria RAM:** 4 GB
* **Almacenamiento:** Disco duro mecánico (HDD) adaptado
* **Sistema Operativo:** Debian 13 (Trixie) en modo *headless* para maximizar la estabilidad y eficiencia de los contenedores Docker
===== 1. Preparación del Sistema e Identidad =====
Tras realizar una instalación limpia de Debian, procedemos a configurar la identidad y los servicios básicos del sistema.
==== Configuración del Hostname ====
Bautizamos al servidor con un nombre distintivo (por ejemplo, **diogenes.lan**):
sudo hostnamectl set-hostname diogenes
==== Corrección del Tiempo del Sistema (Problema de Batería CMOS) ====
Si el equipo posee una batería CMOS agotada, la hora del sistema se desincronizará al reiniciar, provocando fallos en la validación de firmas (`apt`) y certificados TLS. Se soluciona instalando y habilitando `systemd-timesyncd`:
sudo apt update
sudo apt install systemd-timesyncd -y
sudo systemctl enable --now systemd-timesyncd
==== Creación de Identidad y Permisos ====
Se añade al usuario principal al grupo de administración y al grupo de contenedores Docker:
sudo usermod -aG sudo,docker tu_usuario
==== Bienvenida y Conmemoración (MOTD Personalizado) ====
Es posible configurar un banner ASCII personalizado y dedicatorias editando el archivo del sistema:
sudo nano /etc/motd
---
===== 2. Configuración de Red (IP Estática) =====
Para garantizar que los servicios siempre sean accesibles en la red doméstica bajo la misma dirección, se recomienda asignar una IP estática (por ejemplo, `192.168.1.100` o la que corresponda a tu segmento de red local) mediante el gestor de red del sistema.
---
===== 3. Instalación del Motor Docker y Docker Compose =====
Para levantar los servicios de investigación de forma aislada y ligera, instalamos Docker Engine:
sudo apt install docker.io docker-compose-v2 -y
sudo systemctl enable --now docker
---
===== 4. Despliegue de Taguette con Docker Compose =====
Taguette is una herramienta web de código abierto para análisis cualitativo de textos. Utilizaremos un despliegue contenerizado combinando una base de datos PostgreSQL y la aplicación corriendo en paralelo.
==== Estructura del Proyecto ====
Creamos la carpeta de trabajo:
mkdir -p ~/taguette
cd ~/taguette
nano docker-compose.yml
==== Contenido de `docker-compose.yml` ====
*(Nota: Reemplaza `un_password_seguro` por una contraseña robusta de tu elección).*
yaml
services:
db:
image: postgres:15-alpine
container_name: taguette_db
restart: unless-stopped
environment:
POSTGRES_USER: taguette
POSTGRES_PASSWORD: un_password_seguro
POSTGRES_DB: taguette
volumes:
- pgdata:/var/lib/postgresql/data
taguette:
build: https://github.com/remram44/taguette.git#master
container_name: taguette_app
restart: unless-stopped
ports:
- "0.0.0.0:8080:7465"
environment:
- DATABASE_URL=postgresql://taguette:un_password_seguro@db/taguette
depends_on:
- db
volumes:
pgdata:
==== Arranque del Servicio ====
Para poner en marcha los contenedores en segundo plano:
sudo docker compose up -d --build
==== Obtención del Token de Seguridad ====
En su primer arranque, Taguette genera un token alfanumérico único por seguridad. Para consultarlo y obtener el enlace de acceso:
sudo docker compose logs taguette --tail=15
El sistema arrojará una línea de este tipo:
> `http://localhost:7465/?token=abc123xyz...`
Para entrar desde cualquier dispositivo en la red doméstica, se reemplaza `localhost:7465` por la IP fija de tu servidor y el puerto expuesto:
👉 **`http://:8080/?token=abc123xyz...`**
---
===== 5. Herramientas Auxiliares: OpenCode CLI =====
Para contar con asistencia directa en la terminal del servidor, podemos instalar OpenCode mediante su script oficial:
curl -fsSL https://opencode.ai/install | bash
source ~/.bashrc
Verificamos la correcta instalación ejecutando:
opencode --version