docker compose.yaml
services:
outline:
container_name: outline
image: outlinewiki/outline:1.1.0
restart: unless-stopped
hostname: outline
ports:
- 9900:9900
volumes:
- outline_vol:/var/lib/outline/data
environment:
- FORCE_HTTPS=false
- PORT=9900
- NODE_ENV=production
- DATABASE_HOST=postgres
- DATABASE_PORT=5432
- DATABASE_NAME=outline
- DATABASE_USER=outline
- DATABASE_PASSWORD=$DB_PASSWD
- DEFAULT_LANGUAGE=en_US
- SECRET_KEY=$SECRET_KEY
- UTILS_SECRET=$UTILS_SECRET
- REDIS_URL=redis://redis:6379
- REDIS_COLLABORATION_URL=redis://redis:6379
- PGSSLMODE=disable
- URL=https://outline.abitacc.com
- OIDC_CLIENT_ID=outline
- OIDC_CLIENT_SECRET=outline
- OIDC_AUTH_URI=https://auth.abitacc.com/api/oidc/authorization
- OIDC_TOKEN_URI=https://auth.abitacc.com/api/oidc/token
- OIDC_USERINFO_URI=https://auth.abitacc.com/api/oidc/userinfo
- OIDC_USERNAME_CLAIM=preferred_username
- OIDC_DISPLAY_NAME=Authelia
- OIDC_SCOPES=openid offline_access profile email
networks:
- default
depends_on:
- postgres
- redis
deploy:
resources:
limits:
memory: 5G
reservations:
memory: 1G
redis:
container_name: outline_redis
image: redis:8.2.1
restart: unless-stopped
hostname: redis
volumes:
- redis_vol:/data
networks:
- default
command:
- redis-server
- --maxmemory
- 2gb
- --maxmemory-policy
- allkeys-lru
postgres:
container_name: outline_db
image: postgres:18
restart: unless-stopped
hostname: postgres
volumes:
- outline_pg:/var/lib/postgresql
environment:
- POSTGRES_USER=outline
- POSTGRES_DB=outline
- POSTGRES_PASSWORD=$DB_PASSWD
networks:
- default
healthcheck:
test:
- CMD-SHELL
- pg_isready -d outline -U outline
interval: 30s
timeout: 20s
retries: 3
volumes:
outline_vol:
name: outline_data
external: true
outline_pg:
external: true
name: outline_pgdata
redis_vol:
name: outline_redis
networks:
default:
name: caddy_default
external: true