Bring order to your internal documentation, product specs, and meeting notes with a modern, blazing-fast knowledge base. This platform eliminates the chaos of scattered documents by centralizing your company's collective knowledge.
Enjoy a seamless writing experience with an intuitive markdown editor supporting slash commands and interactive embeds. Work together effortlessly using real-time multiplayer collaboration, complete with inline comments to keep conversations organized.
Key features include:
services:
outline:
image: outlinewiki/outline:latest
command: sh -c "yarn db:migrate && yarn start"
environment:
- NODE_ENV=production
- URL=${URL}
- PORT=3000
- DATABASE_URL=${DATABASE_URL}
- REDIS_URL=${REDIS_URL}
- SECRET_KEY=${SECRET_KEY}
- UTILS_SECRET=${UTILS_SECRET}
- AWS_ACCESS_KEY_ID=${MINIO_ACCESS_KEY}
- AWS_SECRET_ACCESS_KEY=${MINIO_SECRET_KEY}
- AWS_REGION=us-east-1
- AWS_S3_UPLOAD_BUCKET_URL=http://minio:9000
- AWS_S3_UPLOAD_BUCKET_NAME=outline
- AWS_S3_FORCE_PATH_STYLE=true
- FILE_STORAGE_UPLOAD_MAX_SIZE=26214400
# SMTP Settings (Optional but recommended for Magic Links)
- SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=${SMTP_PORT}
- SMTP_USERNAME=${SMTP_USERNAME}
- SMTP_PASSWORD=${SMTP_PASSWORD}
- SMTP_FROM_EMAIL=${SMTP_FROM_EMAIL}
- SMTP_SECURE=true
ports:
- "3000:3000"
depends_on:
- postgres
- redis
- minio
postgres:
image: postgres:15-alpine
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:alpine
volumes:
- ./data/redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
minio:
image: minio/minio
command: server /data --console-address ":9001"
environment:
- MINIO_ROOT_USER=${MINIO_ACCESS_KEY}
- MINIO_ROOT_PASSWORD=${MINIO_SECRET_KEY}
ports:
- "9000:9000"
- "9001:9001"
volumes:
- ./data/minio:/data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
# Automatically create the bucket in MinIO
minio-create-bucket:
image: minio/mc
depends_on:
minio:
condition: service_healthy
entrypoint: >
/bin/sh -c "
/usr/bin/mc alias set myminio http://minio:9000 ${MINIO_ACCESS_KEY} ${MINIO_SECRET_KEY};
/usr/bin/mc mb myminio/outline;
/usr/bin/mc anonymous set public myminio/outline;
exit 0;
"# General Configuration
URL=http://localhost:3000
# Secrets (Generate 32-byte hex strings for these)
SECRET_KEY=generate_a_32_byte_hex_secret_here
UTILS_SECRET=generate_another_32_byte_hex_secret_here
# Database Configuration
POSTGRES_USER=outline
POSTGRES_PASSWORD=strong_postgres_password
POSTGRES_DB=outline
DATABASE_URL=postgres://outline:strong_postgres_password@postgres:5432/outline
# Redis Configuration
REDIS_URL=redis://redis:6379
# Object Storage (MinIO)
MINIO_ACCESS_KEY=minio_access_key
MINIO_SECRET_KEY=minio_secret_key
# SMTP Configuration (Required for email login if OIDC is not used)
SMTP_HOST=smtp.example.com
SMTP_PORT=465
SMTP_USERNAME=your_smtp_username
SMTP_PASSWORD=your_smtp_password
SMTP_FROM_EMAIL=outline@example.comAuto-fetched about 22 hours ago
Auto-fetched about 22 hours ago