Cómo instalar Mastodon en Docker - Red social descentralizada en Docker

Imagen
Mastodon | Fediverse | Docker Mastodon: Red social descentralizada y autohospedada en Docker Alternativa open source a Twitter con federación. Crea tu propia instancia de Mastodon completamente descentralizada, sin anuncios, sin algoritmos secretos, en tu propio servidor. ¿Qué es Mastodon? Mastodon es una red social descentralizada y de código abierto basada en ActivityPub, el protocolo federado de redes sociales. Es una alternativa completa a Twitter donde tú eres el dueño de tu instancia, tus datos, y tu comunidad. No hay anuncios, no hay algoritmo oculto, no hay tracking corporativo. La magia de Mastodon es la federación : múltiples servidores independientes funcionan como una red conectada. Puedes seguir a usuarios de otros servidores, interactuar con ellos, y formar comunidades. Es como correo electrónico: tu email está en Gmail pero puedes escribir a usuarios en Outlook. Con Mastodon, tú hospeadas tu propia insta...

Cómo instalar Gotify en Docker - Servidor de notificaciones push en Docker

Gotify | Push Notifications | Docker

Gotify: Servidor de notificaciones push autohospedado en Docker

Envía notificaciones a tu teléfono desde scripts, monitoreo y aplicaciones. Completamente autohospedado, sin dependencias externas, sin mensualidades. Alternativa open source a Pushover y Firebase.

¿Qué es Gotify?


Gotify es un servidor de notificaciones push autohospedado escrito en Go. Permite enviar mensajes en tiempo real a Android, web y aplicaciones de escritorio usando WebSocket, sin depender de servicios terceros como Firebase Cloud Messaging o Apple Push Notifications.

La filosofía de Gotify es simple pero poderosa: notificaciones sin intermediarios, sin comisiones, sin límites. Perfecto para alertas de monitoreo (Prometheus, Grafana, Zabbix), fallos de backup, errores de cron jobs, deploys de CI/CD, y cualquier situación donde necesites notificar rápidamente a tu teléfono desde cualquier script o aplicación.

Ventajas clave: Sin costo, sin límite de mensajes, toda tu infraestructura centralizada, WebSocket para entrega instantánea, prioridades configurables, incluso funciona sin Internet si los dispositivos están en la misma red local.

Características principales

API REST simple

Envía notificaciones con un simple curl. No necesita SDK ni librerías complejas.

WebSocket para tiempo real

Notificaciones llegan al teléfono en menos de 100ms. Mejor que polling.

Aplicaciones con tokens

Crea aplicaciones separadas (Backup, Monitoreo, Deploy) con tokens únicos.

Niveles de prioridad

Prioridad 1-3: silencioso, 4-7: normal, 8-10: vibración/sonido urgente.

App Android oficial

Disponible en F-Droid, Google Play y GitHub. Notificaciones con sonido/vibración.

Web app con notificaciones

Acceso desde navegador con notificaciones push en navegadores compatibles.

Base de datos SQLite

Almacenamiento local de mensajes, sin servicios externos.

Interfaz limpia

Dashboard simple para gestionar aplicaciones, clientes y historial de mensajes.

Sin dependencias

Binario único. No necesita base de datos externa, Redis, o servicios.

Multi-aplicación

Un servidor para monitoreo, backups, deploys con tokens separados.

URLs en notificaciones

Notificaciones pueden incluir URLs clicables para ir directamente a dashboards.

Markdown soportado

Mensajes pueden incluir formato Markdown para textos enriquecidos.

Requisitos del sistema

  • Docker instalado (usa menos de 50 MB de RAM)
  • 128 MB de RAM mínimo (funciona en Raspberry Pi, VPS pequeños)
  • 10-100 MB de espacio en disco según cantidad de mensajes
  • Puerto 80 o 8080 disponible (configurable)
  • Opcional: HTTPS con reverse proxy (Nginx, Caddy)

Instalación rápida

Opción 1: Docker Run (30 segundos)

docker run -d \ --name gotify \ -p 8080:80 \ -v gotify-data:/app/data \ -e GOTIFY_DEFAULTUSER_PASS="admin-password" \ gotify/server:latest

Accede a http://localhost:8080 con credenciales admin / admin-password

Opción 2: Docker Compose (recomendado)

version: '3.8' services: gotify: image: gotify/server:latest container_name: gotify restart: unless-stopped ports: - "8080:80" volumes: - gotify-data:/app/data environment: - GOTIFY_DEFAULTUSER_PASS=tu-password-segura - GOTIFY_DEFAULTUSER_NAME=admin - TZ=Europe/Madrid volumes: gotify-data:
docker compose up -d

Primeros pasos

Paso 1: Cambiar contraseña admin

  1. Accede a http://localhost:8080
  2. Inicia sesión con admin / admin-password
  3. Ve a Users en el menú derecha
  4. Haz clic en el usuario admin y cambia la contraseña

Paso 2: Crear aplicación para notificaciones

  1. Ve a Applications en el panel
  2. Haz clic en Create Application
  3. Nombre: Server Alerts
  4. Se genera automáticamente un token (ej: Axxxxxxxxxxxxxxxxxx)
  5. Guarda el token, lo usarás para enviar mensajes

Paso 3: Instalar app Android

  1. Descarga desde F-Droid o Google Play
  2. Abre la app y entra la URL: http://tu-servidor:8080
  3. Usa las credenciales admin
  4. La app se conectará y recibirá notificaciones en tiempo real

Enviar notificaciones desde scripts

Ejemplo básico con curl

# Cambiar TOKEN y URL según tu configuración curl -X POST "http://localhost:8080/message" \ -H "X-Gotify-Key: Axxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "title": "Backup completado", "message": "Backup de base de datos finalizado exitosamente", "priority": 5 }'

Con prioridad y URL

curl -X POST "http://localhost:8080/message" \ -H "X-Gotify-Key: Axxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "title": "Error crítico", "message": "Disco lleno en /var/log - 95% utilizado", "priority": 10, "extras": { "client::notification": { "click": { "url": "https://grafana.tudominio.com/d/disk-usage" } } } }'

Niveles de prioridad

  • 1-3: Bajo (silencioso, solo aparece en app)
  • 4-7: Normal (notificación estándar)
  • 8-10: Urgente (vibración + sonido)

Integraciones con herramientas populares

Monitoreo con Prometheus/Alertmanager

receivers: - name: 'gotify' webhook_configs: - url: 'http://gotify:8080/message?token=Axxxxxxxxxx' send_resolved: true

Script de backup

#!/bin/bash # Hacer backup mysqldump -u user -p password database > backup.sql # Enviar notificación if [ $? -eq 0 ]; then curl -X POST "http://gotify:8080/message" \ -H "X-Gotify-Key: Axxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{"title": "Backup OK", "message": "Database backup completado", "priority": 2}' else curl -X POST "http://gotify:8080/message" \ -H "X-Gotify-Key: Axxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{"title": "Backup FAILED", "message": "Error en backup de database", "priority": 10}' fi

GitHub Actions

- name: Send Gotify notification run: | curl -X POST "http://gotify.tudominio.com/message" \ -H "X-Gotify-Key: ${{ secrets.GOTIFY_TOKEN }}" \ -H "Content-Type: application/json" \ -d '{ "title": "Deploy completado", "message": "Version ${{ github.ref }} deployed", "priority": 5 }'

Configurar HTTPS con Caddy

gotify.tudominio.com { reverse_proxy localhost:8080 }

Con WebSocket (importante para tiempo real)

location / { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }

Gestión y mantenimiento

Ver logs

docker compose logs -f gotify

Crear usuario adicional (CLI)

docker compose exec gotify \ /app/gotify -create-user admin2 -pass "new-password"

Reiniciar Gotify

docker compose restart gotify

Detener Gotify

docker compose down

Actualizar a la última versión

docker compose pull docker compose up -d

Backup de datos

docker run --rm \ -v gotify-data:/data \ -v $(pwd):/backup \ alpine tar czf /backup/gotify-backup-$(date +%Y%m%d).tar.gz -C /data .

Casos de uso

  • Monitoreo de servidores: Alertas de Prometheus, Grafana, Zabbix
  • Backups: Notificación cuando backups completan o fallan
  • Cron jobs: Alertas de cron jobs fallidos a las 3 AM
  • CI/CD: Notificación de deploys completados o fallos en tests
  • Sistemas de alertas: Temperatura de servidores, uso de disco
  • Home automation: Alertas de IoT, intrusiones, automatizaciones
  • Desarrollo: Notificaciones de errores en logs, aplicaciones

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.