What Is Outline and Why Self-Host It
Outline is an open-source knowledge base and wiki platform designed for team collaboration. Its clean, Notion-like interface supports real-time editing, Markdown formatting, nested collections, and a rich search experience powered by PostgreSQL full-text search.
Self-hosting Outline gives you full control over your documentation data — no per-user SaaS pricing, no data leaving your infrastructure, and no feature-gating behind expensive enterprise tiers. For homelab operators, Outline solves the recurring problem of keeping infrastructure docs, runbooks, and network diagrams in one searchable place instead of scattered across text files and chat messages.
Compared to other self-hosted documentation tools:
- BookStack — structured, book-and-shelf hierarchy, simpler auth (LDAP/SAML)
- Docusaurus — static site generator, great for public docs, requires builds
- Outline — real-time collaborative editor, Markdown-native, OIDC/SAML/SSO, Slack integration
Outline works best as an internal team wiki where multiple people contribute and edit collaboratively.
Prerequisites and Architecture
Before deploying, you need:
- Docker Engine 24+ and Docker Compose v2 installed
- A domain name pointing to your homelab (e.g.,
outline.yourlab.com) - An OIDC-compatible identity provider — this guide uses Authentik, but Google, Azure AD, Keycloak, or any OpenID Connect provider works
- Optional: S3-compatible object storage (MinIO) — Outline defaults to local disk for file uploads
Minimum hardware: 1 GB RAM, 2 vCPUs, 10 GB disk. At idle, the stack consumes about 500 MB of RAM.
The architecture is straightforward:
User → Traefik (SSL termination) → Outline (container)
├── PostgreSQL 16 (documents, users, metadata)
├── Redis 7 (session cache, rate limiting)
└── MinIO (optional — file attachments)
Environment and Directory Setup
Create the project directory and set up the environment file:
|
|
Generate secret keys for Outline:
|
|
Create .env in /opt/outline:
|
|
Docker Compose Configuration
Create docker-compose.yml:
|
|
Expose Outline only on localhost port 3000 — Traefik handles external access. The traefik-net network must exist before deploying; create it if needed:
|
|
OIDC Authentication with Authentik
Outline does not include a built-in user database — it requires an external OIDC, SAML, or Slack/Google OAuth provider. Authentik works well for this in a homelab.
Creating the OIDC Provider in Authentik
- Navigate to Applications → Providers → Create Provider
- Select OAuth2/OpenID Provider and configure:
- Name:
Outline - Client Type:
Confidential - Redirect URIs:
https://outline.yourlab.com/auth/oidc.callback - Signing Key: Select a key or create one
- Name:
- Navigate to Applications → Applications → Create Application
- Name:
Outline - Slug:
outline - Provider: select the Outline provider just created
- Name:
- From the provider details page, copy the Client ID and Client Secret
Place these values in the .env file as OIDC_CLIENT_ID and OIDC_CLIENT_SECRET. Update the URIs to match your Authentik domain.
Understanding the OIDC Flow
- User visits
outline.yourlab.com - Outline redirects to Authentik’s authorize endpoint
- User authenticates (password, WebAuthn, TOTP — Authentik-enforced MFA works transparently)
- Authentik redirects back to Outline with an authorization code
- Outline exchanges the code for tokens and creates/logs in the user
No user provisioning is needed — Outline auto-creates accounts on first login via OIDC. The first user to log in becomes the admin by default when DEFAULT_ACCESS=members.
S3 Storage with MinIO (Optional)
For production use, switch from local disk to S3-compatible object storage. Deploy MinIO alongside Outline:
|
|
Access the MinIO console at port 9001, create a bucket named outline-attachments, and create an access key. Then update FILE_STORAGE in .env:
|
|
AWS_S3_FORCE_PATH_STYLE=true is required for MinIO. If using AWS S3, set it to false and use a proper region.
Traefik Reverse Proxy Configuration
If you already run Traefik, add a new router and service for Outline. With dynamic config file (or Docker labels):
|
|
Or via a Traefik dynamic configuration file:
|
|
If Outline is on a different host than Traefik, replace the url in the service definition with the actual Docker host IP.
First Launch and Validation
Start the stack:
|
|
Wait for the health check to pass:
|
|
You should see all three services in Up (healthy) status.
Migration and Initial Setup
Outline runs database migrations automatically on startup. Watch the logs for:
Migrations up to date
Listening on port 3000
Visit https://outline.yourlab.com. You will be redirected to Authentik for login. On first successful login, Outline creates your account. The first user gets admin privileges by default when DEFAULT_ACCESS=members.
Verification Checklist
- Login via OIDC redirects back to Outline without errors
- Collections page loads with
Getting Startedcollection - Create a document with Markdown formatting
- Upload an image attachment
- Search returns results from document titles and content
Troubleshooting
| Issue | Likely Cause | Fix |
|---|---|---|
| OIDC redirect loop | Redirect URI mismatch | Verify Authentik redirect URI exactly matches https://outline.yourlab.com/auth/oidc.callback |
| File uploads fail (local) | Volume permissions | chown -R 1000:1000 /opt/outline/data |
| 502 Bad Gateway (Traefik) | Network mismatch | Ensure Outline is on traefik-net network |
| Database connection refused | PostgreSQL not ready | Check depends_on healthcheck: docker compose logs postgres |
| Blank page after login | CORS or URL mismatch | Verify APP_URL in .env matches the access URL exactly |
Backup and Maintenance
Automate daily PostgreSQL backups with a systemd timer:
|
|
Create the systemd service and timer:
|
|
For Docker image updates, add Outline to your Watchtower setup:
|
|
Conclusion
Outline fills the gap for homelab documentation that is collaborative, real-time, and always searchable. With OIDC authentication via Authentik, you get SSO with MFA enforcement across all your self-hosted services in one identity layer. The Docker Compose setup runs comfortably alongside other services on a single homelab host.
Start populating your Outline wiki with infrastructure documentation, network diagrams, service runbooks, and configuration references. Over time it becomes the single source of truth for your homelab operations.
For full configuration options, see the Outline self-hosting documentation.