Replace Nuxt wiki with Outline deployment config

Strip the Nuxt 4 static site and replace with Docker Compose config
for self-hosted Outline wiki (Outline + PostgreSQL 16 + Redis 7).
Adds nginx reverse proxy with WebSocket support and CSS injection,
migration script for existing markdown articles, backup script,
and starter theme CSS.
This commit is contained in:
Jennie Robinson Faber 2026-03-01 15:45:44 +00:00
parent e521ca02ca
commit 289e673cbc
91 changed files with 414 additions and 17714 deletions

View file

@ -1,64 +1,62 @@
version: '3.8'
services:
# MongoDB Database
mongodb:
image: mongo:7
container_name: wiki-mongodb
outline:
image: docker.getoutline.com/outlinewiki/outline:latest
container_name: outline
restart: unless-stopped
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: changeme
MONGO_INITDB_DATABASE: wiki-ghostguild
volumes:
- mongodb_data:/data/db
- ./docker/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
networks:
- wiki-network
# Wiki Application (for local development)
# Uncomment to run the app in Docker
# wiki:
# build: .
# container_name: wiki-app
# restart: unless-stopped
# ports:
# - "3000:3000"
# environment:
# MONGODB_URI: mongodb://admin:changeme@mongodb:27017/wiki-ghostguild?authSource=admin
# NODE_ENV: development
# depends_on:
# - mongodb
# networks:
# - wiki-network
# volumes:
# - ./app:/app/app
# - ./server:/app/server
# - ./content:/app/content
# Optional: Mongo Express for database management
mongo-express:
image: mongo-express:latest
container_name: wiki-mongo-express
restart: unless-stopped
ports:
- "8081:8081"
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: admin
ME_CONFIG_MONGODB_ADMINPASSWORD: changeme
ME_CONFIG_MONGODB_URL: mongodb://admin:changeme@mongodb:27017/
ME_CONFIG_BASICAUTH: false
- "127.0.0.1:3100:3000"
env_file: ./outline.env
depends_on:
- mongodb
networks:
- wiki-network
postgres:
condition: service_healthy
redis:
condition: service_healthy
volumes:
- outline-storage:/var/lib/outline/data
postgres:
image: postgres:16-alpine
container_name: outline-postgres
restart: unless-stopped
environment:
POSTGRES_USER: outline
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: outline
volumes:
- postgres-data:/var/lib/postgresql/data
command:
- "postgres"
- "-c"
- "shared_buffers=128MB"
- "-c"
- "max_connections=20"
- "-c"
- "work_mem=4MB"
- "-c"
- "maintenance_work_mem=64MB"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U outline"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
container_name: outline-redis
restart: unless-stopped
command: >
redis-server
--maxmemory 64mb
--maxmemory-policy allkeys-lru
volumes:
- redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
volumes:
mongodb_data:
driver: local
networks:
wiki-network:
driver: bridge
outline-storage:
postgres-data:
redis-data: