自托管 Outline 维基
最近,我发现了 Outline,这是一个协作知识库。我想在我的服务器上自托管它,但强制要求身份验证提供程序让我有些反感。我的服务器位于一个私有加密网络(Tailscale)中,只有我批准的设备才能访问该网络,因此对于我个人使用的单用户应用程序,我不需要身份验证。我找到了一些使用 Authelia/Keycloak 的指南,但这些是重量级应用程序,会消耗大量资源(数据库、缓存、代理等),仅仅为了给
自托管 Outline 维基
最近,我发现了 Outline,这是一个协作知识库。我想在我的服务器上自托管它,但强制要求身份验证提供程序让我有些反感。我的服务器位于一个私有加密网络(Tailscale)中,只有我批准的设备才能访问该网络,因此对于我个人使用的单用户应用程序,我不需要身份验证。我找到了一些使用 Authelia/Keycloak 的指南,但这些是重量级应用程序,会消耗大量资源(数据库、缓存、代理等),仅仅为了给 Outline 提供一个 OIDC 提供程序。
一定有更简单的方法,对吧?Dex 出现了。正如我的朋友和同事 Chinmay 推荐的那样,事实证明这非常容易。
以下是您需要的完整 docker-compose.yml 设置,以便在本地实例上运行 Outline!
services:
outline:
image: docker.getoutline.com/outlinewiki/outline:latest
env_file: ./docker.env
ports:
- "3000:3000"
volumes:
- storage-data:/var/lib/outline/data
depends_on:
- postgres
- redis
environment:
PGSSLMODE: disable
redis:
image: redis
env_file: ./docker.env
ports:
- "6379:6379"
healthcheck:
test: [ "CMD", "redis-cli", "ping" ]
interval: 10s
timeout: 30s
retries: 3
postgres:
image: postgres
env_file: ./docker.env
ports:
- "5432:5432"
volumes:
- database-data:/var/lib/postgresql/data
healthcheck:
test: [ "CMD", "pg_isready", "-d", "outline", "-U", "user" ]
interval: 30s
timeout: 20s
retries: 3
environment:
POSTGRES_USER: 'user'
POSTGRES_PASSWORD: 'pass'
POSTGRES_DB: 'outline'
dex:
image: dexidp/dex:v2.35.3
ports:
- "5556:5556"
volumes:
- ./dex:/etc/dex
command: [ "dex", "serve", "/etc/dex/config.yaml" ]
volumes:
storage-data:
database-data:
您还需要添加以下环境变量:
NODE_ENV=production
SECRET_KEY=your-key
UTILS_SECRET=your-key
DATABASE_URL=postgres://user:pass@postgres:5432/outline
PGSSLMODE=disable
REDIS_URL=redis://redis:6379
URL=http://localhost:3000
PORT=3000
FILE_STORAGE=local
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data
FILE_STORAGE_UPLOAD_MAX_SIZE=262144000
OIDC_CLIENT_ID=outline
OIDC_CLIENT_SECRET=outline-secret
OIDC_AUTH_URI=http://localhost:5556/dex/auth
OIDC_TOKEN_URI=http://dex:5556/dex/token
OIDC_USERINFO_URI=http://dex:5556/dex/userinfo
OIDC_USERNAME_CLAIM=preferred_username
OIDC_DISPLAY_NAME=Dex
OIDC_SCOPES=openid profile email
FORCE_HTTPS=false
ENABLE_UPDATES=true
WEB_CONCURRENCY=1
DEBUG=http
LOG_LEVEL=info
最后,为了配置 Dex,我们需要以下配置:
issuer: http://localhost:5556/dex
storage:
type: sqlite3
config:
file: /var/dex/dex.db
web:
http: 0.0.0.0:5556
staticClients:
- id: outline
redirectURIs:
- "http://localhost:3000/auth/oidc.callback"
name: "Outline"
secret: outline-secret
oauth2:
skipApprovalScreen: true
enablePasswordDB: true
staticPasswords:
- email: "admin@example.com"
hash: "$2a$10$2b2cU8CPhOTaGrs1HRQuAueS7JTT5ZHsHSzYiFPm1leZck7Mc8T4W"
username: "admin"
userID: "08a8684b-db88-4b73-90a9-3cd1661f5466"
瞧!使用 docker compose up,您将拥有一个准备就绪的 Outline 服务器。您可以使用 admin 用户登录。


火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)