Sistema de documentación interna, desplegado en Dokploy junto al resto de la infraestructura.
| Campo | Valor |
|---|---|
| URL | https://doc.managuanetworks.com |
| Imagen Docker | ghcr.io/requarks/wiki:2 |
| Base de datos | PostgreSQL 16 (contenedor separado, wikijs-db) |
services:
db:
image: postgres:16-alpine
container_name: wikijs-db
restart: unless-stopped
environment:
POSTGRES_DB: wiki
POSTGRES_USER: wikijs
POSTGRES_PASSWORD: <ver gestor de contraseñas>
logging:
driver: "none"
volumes:
- wikijs_db:/var/lib/postgresql/data
networks:
- dokploy-network
wiki:
image: ghcr.io/requarks/wiki:2
container_name: wikijs
restart: unless-stopped
depends_on:
- db
environment:
DB_TYPE: postgres
DB_HOST: wikijs-db
DB_PORT: 5432
DB_USER: wikijs
DB_PASS: <ver gestor de contraseñas>
DB_NAME: wiki
networks:
- dokploy-network
volumes:
wikijs_db:
networks:
dokploy-network:
external: true
Nota: sin sección ports: — el acceso es 100% vía Traefik/dominio (ver página de Dokploy, sección "Conflicto de puertos"), ya que el puerto 3000 del host ya lo usa el propio Dokploy.
Configurado vía Traefik/Dokploy (Estrategia A, ver página de Cloudflare) — no requiere el manejo manual de certificados que usa Omada, porque Wiki.js no tiene SSL propio ni conflictos de WebSocket con Traefik.
doc.managuanetworks.com3000wiki (no db)Respaldo de la base de datos Postgres (contiene todo el contenido de las páginas):
# /opt/backup-wikijs-r2.sh
#!/bin/bash
docker exec wikijs-db pg_dump -U wikijs wiki > /opt/wikijs-backup/wiki_$(date +%Y%m%d).sql
rclone sync /opt/wikijs-backup r2:wiki-backups --log-file=/var/log/wikijs-backup-r2.log
find /opt/wikijs-backup -name "*.sql" -mtime +7 -delete
Cron:
sudo crontab -e
# 0 4 * * * /opt/backup-wikijs-r2.sh
(Bucket wiki-backups en R2 — crear con token de alcance limitado, siguiendo la misma convención que omada-backups y dok-bk.)
port is already allocated en el puerto 3000 → causado por publicar el puerto al host en el compose, mientras Dokploy ya lo usa. Solución: quitar la sección ports:.ports: → el compose no tenía la red dokploy-network declarada, así que Traefik no encontraba el contenedor. Solución: agregar networks: [dokploy-network] (externa) a ambos servicios.