【Outline】純Docker部署指南

本文介紹了使用Docker部署Outline知識管理系統的完整流程。
主要內容包括:

  1. 部署PostgreSQL 12數據庫并創建用戶;
  2. 安裝Redis 6緩存服務;
  3. 配置Minio對象存儲服務替代AWS S3;
  4. 搭建SSO單點登錄服務器;
  5. 準備Outline容器鏡像和環境變量配置。

這里直接使用純 Docker 的方式進行部署。

Outline依賴 PostgreSQL (v9.5+)Redis (v4+)Minio, S3, or S3 兼容對象存儲服務

還要另外配置一個登錄授權的服務器,這里我采用的是自建的服務器

這個部署起來還真是麻煩,不過用起來是很舒服了,有種 Typora 的在線版的感覺

  1. 安裝 Docker
  2. 部署 postgres 12
docker run -d \--name postgres_12 \--restart=always \-e POSTGRES_PASSWORD=mysecretpassword \-e PGDATA=/var/lib/postgresql/data/pgdata \-v postgres_12:/var/lib/postgresql/data \-p 5432:5432 \postgres:12.10

創建用戶和數據庫

# 進入數據庫命令行
docker exec -it --user postgres postgres_12 psql -U postgres# 創建用戶
CREATE USER outline WITH PASSWORD '123456';# 創建數據庫
CREATE DATABASE outline OWNER outline;
CREATE DATABASE outline_test OWNER outline;# 退出
\q
  1. 部署 Redis
docker run -d \--name redis_6 \--restart=always \-p 6379:6379 \redis:6.2.7
  1. 部署 minio,用來代替 AWS S3

參考

# 創建容器
docker run -d \--name minio \--restart=always \-p 9000:9000 \-p 9001:9001 \-e MINIO_ROOT_USER="6m2lx2ffmbr9ikod" \-e MINIO_ROOT_PASSWORD="2k78fpraq7rs5xlrti5p6cvb767a691h3jqi47ihbu75cx23twkzpok86sf1aw1e" \-e MINIO_REGION_NAME="cn-homelab-1" \-e MINIO_BROWSER="on" \-e MINIO_SERVER_URL="http://192.168.100.155:9000/" \-e MINIO_BROWSER_REDIRECT_URL="http://192.168.100.155:9001/" \--volume minio:/data \minio/minio:RELEASE.2021-09-03T03-56-13Z server /data --console-address ":9001"

MINIO_ROOT_USER 使用小寫字母加數字長度為16位的隨機數

MINIO_ROOT_PASSWORD 使用小寫字母加數字長度為64位的隨機數

MINIO_SERVER_URL 是API地址,反向代理請務必開啟 proxy_pass,否則會無法連接,導致附件及圖片無法上傳

比如說使用了 Nginx Proxy Manager,就要在代理的高級選項中加入以下字段(IP需要使用自己的)

location / {proxy_pass              http://192.168.100.155:9000;proxy_set_header        Host            $http_host;proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header        X-Scheme        $scheme;proxy_set_header        X-Script-Name   /;
}

MINIO_BROWSER_REDIRECT_URL 是管理地址,即反代后的地址比如 https://file-admin.lab.com/,不反代就老老實實用原始訪問的地址

這邊還需要訪問這個頁面,創建一個新的 Buckets,名稱為 outline,不創建的話到時候上傳不了圖片,也導出不了文件

  1. 搭建 OIDC 服務器(sso-server),用于代替 slack 或 google 登錄

項目地址

docker run -d \--name=sso-server \-e CLIENT_NAME="My SSO Service" \-e CLIENT_ID="b8c40013-cc03-4bc5-b3a5-6a31046fa415" \-e CLIENT_SECRET="26272010-37d9-4bea-a58e-6b0a382d7626" \-e USER_PASS="password" \-p 3000:80 \soulteary/sso-server:1.1.5

CLIENT_NAME 是隨機的

CLIENT_ID 是隨機的,格式如上面所示

CLIENT_SECRET 是隨機的,格式如上面所示

USER_PASS 是默認的密碼

啟動后就可以有一個挺好看的登錄頁可訪問:http://localhost:3000/login

默認的用戶名是 username,密碼是 USER_PASS 字段所設置的

  1. 先拉取一下 outline
docker pull outlinewiki/outline:0.63.0
  1. 編輯一個 .env 的本地文件

參考 .env.sample

# –––––––––––––––– REQUIRED ––––––––––––––––# 生成一個十六進制編碼的 32 字節隨機密鑰。你應該使用`openssl rand -hex 32`
# 在你的終端中生成一個隨機值。
SECRET_KEY=6697a4fc3c47d879f42d73e4ed00cda076c79e845257acfab8661b2241532ea7# 生成唯一的隨機密鑰。格式并不重要,您仍然可以使用 `openssl rand -hex 32` 
# 在你的終端中生成。
UTILS_SECRET=9fb6973a0e562ca592999436c2f5ed4326a81e2fdff8c996b27cb58b5abff79a# 對于生產點這些在您的數據庫中,在開發中默認應該開箱即用。
# 這里的 postgres_12 是上面創建的數據庫容器的默認 Hostname,需要建立單獨的網絡或使用 --link
# outline:123456 是上面創建的數據庫賬戶
DATABASE_URL=postgres://outline:123456@postgres_12:5432/outline
DATABASE_URL_TEST=postgres://outline:123456@postgres_12:5432/outline_test
DATABASE_CONNECTION_POOL_MIN=
DATABASE_CONNECTION_POOL_MAX=
# 取消注釋以禁用 SSL 連接到 Postgres
PGSSLMODE=disable# 對于 redis,你可以像這樣指定一個 ioredis 兼容的 url
# 這里的 redis_6 是上面創建的數據庫容器的默認 Hostname,需要建立單獨的網絡或使用 --link
REDIS_URL=redis://redis_6:6379
# 或者,如果您想提供額外的連接選項,
# 使用 base64 編碼的 JSON 連接選項對象。參考 ioredis 文檔獲取可用選項的列表。
# 示例:使用 Redis Sentinel 實現高可用性
# {"sentinels":[{"host":"sentinel-0","port":26379},{"host":"sentinel-1","port":26379}],"name":"mymaster"}
# REDIS_URL=ioredis://eyJzZW50aW5lbHMiOlt7Imhvc3QiOiJzZW50aW5lbC0wIiwicG9ydCI6MjYzNzl9LHsiaG9zdCI6InNlbnRpbmVsLTEiLCJwb3J0IjoyNjM3OX1dLCJuYW1lIjoibXltYXN0ZXIifQ==# URL 應指向完全限定的、可公開訪問的 URL。
# 如果使用代理 URL 和 PORT 中的端口可能不同。
# 簡單的說就是第一個是反代后訪問的地址
# PORT 是服務器默認打開的端口,是需要本地開放的端口
URL=http://192.168.100.155:13090
PORT=3000# 參見 [文檔](docs/SERVICES.md) 運行單獨的協作服務器,正常操作不需要設置。
COLLABORATION_URL=# 支持上傳頭像和文檔附件的圖片必須提供與 s3 兼容的存儲。建議使用 AWS S3 進行冗余
# 但是,如果您想將所有文件存儲保持在本地,則可以使用替代方法,例如
# minio (https://github.com/minio/minio) can be used.# 有關設置 S3 的更詳細指南可在此處獲得:
# => https://wiki.generaloutline.com/share/125de1cc-9ff6-424b-8415-0d58c809a40f
# AWS_ACCESS_KEY_ID 對應上面的 MINIO_ROOT_USER
# AWS_SECRET_ACCESS_KEY 對應上面的 MINIO_ROOT_PASSWORD
# AWS_REGION 對應上面的 MINIO_REGION_NAME
# AWS_S3_UPLOAD_BUCKET_URL 是 MINIO 的API地址,注意是API地址,不是管理地址 
AWS_ACCESS_KEY_ID=6m2lx2ffmbr9ikod
AWS_SECRET_ACCESS_KEY=2k78fpraq7rs5xlrti5p6cvb767a691h3jqi47ihbu75cx23twkzpok86sf1aw1e
AWS_REGION=cn-homelab-1
AWS_S3_ACCELERATE_URL=
AWS_S3_UPLOAD_BUCKET_URL=http://192.168.100.155:9000
AWS_S3_UPLOAD_BUCKET_NAME=outline
AWS_S3_UPLOAD_MAX_SIZE=26214400
AWS_S3_FORCE_PATH_STYLE=true
AWS_S3_ACL=private# –––––––––––––– 認證 ––––––––––––––# 第三方登錄憑據,工作安裝至少需要Google、Slack或Microsoft中的一個,否則您將沒有登錄選項。# 要配置 Slack 身份驗證,您需要在
# => https://api.slack.com/apps
#
# 配置Client ID時,在“OAuth & Permissions”下添加重定向URL:
# https://<URL>/auth/slack.callback
SLACK_KEY=
SLACK_SECRET=# 要配置 Google 身份驗證,您需要在以下位置創建 OAuth 客戶端 ID
# => https://console.cloud.google.com/apis/credentials
#
# 配置Client ID時,添加Authorized redirect URI:
# https://<URL>/auth/google.callback
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=# 要配置 Microsoft/Azure 身份驗證,您需要創建一個 OAuth 客戶端。
# 查看有關設置 Azure 應用程序的詳細信息的指南:
# => https://wiki.generaloutline.com/share/dfa77e56-d4d2-4b51-8ff8-84ea6608faa4
AZURE_CLIENT_ID=
AZURE_CLIENT_SECRET=
AZURE_RESOURCE_APP_ID=# 要配置通用 OIDC 身份驗證,您需要某種身份提供者。
# 請參閱文檔,了解您用于獲取以下信息的任何 IdP:
# 重定向 URI 是 https://<URL>/auth/oidc.callback
# 此處的參數對應上面 OIDC 服務器的配置
# OIDC_CLIENT_ID 對應上面的 OIDC 服務器的 CLIENT_ID
# OIDC_CLIENT_SECRET 對應上面的 OIDC 服務器的 CLIENT_SECRET
# OIDC_AUTH_URI 是上面的 OIDC 服務器的對公網開放的地址
# OIDC_TOKEN_URI 和 OIDC_USERINFO_URI 應該是用 OIDC 服務器的對公網不開放的地址,當然用開放的也能用,不安全,我這里用開放的地址
OIDC_CLIENT_ID=b8c40013-cc03-4bc5-b3a5-6a31046fa415
OIDC_CLIENT_SECRET=26272010-37d9-4bea-a58e-6b0a382d7626
OIDC_AUTH_URI=http://192.168.100.155:3000/dialog/authorize
OIDC_TOKEN_URI=http://192.168.100.155:3000/oauth/token
OIDC_USERINFO_URI=http://192.168.100.155:3000/api/outline/oidc# 指定要從中派生用戶信息的聲明支持使用JWT負載的任何有效JSON路徑
OIDC_USERNAME_CLAIM=preferred_username# OIDC 認證的顯示名稱
OIDC_DISPLAY_NAME=SZC_SSO# 空格分隔的身份驗證范圍。
OIDC_SCOPES=openid profile email# –––––––––––––––– 可選 ––––––––––––––––# 用于 HTTPS 終止的 Base64 編碼私鑰和證書。This is only
# required if you do not use an external reverse proxy. See documentation:
# https://wiki.generaloutline.com/share/1c922644-40d8-41fe-98f9-df2b67239d45
SSL_KEY=
SSL_CERT=# If using a Cloudfront/Cloudflare distribution or similar it can be set below.
# This will cause paths to javascript, stylesheets, and images to be updated to
# the hostname defined in CDN_URL. In your CDN configuration the origin server
# should be set to the same as URL.
CDN_URL=# 在生產中自動重定向到https。
# 默認值為true,但如果可以確保SSL在外部負載平衡器處終止,則可以將其設置為false。
FORCE_HTTPS=false# 通過向維護人員發送匿名統計信息,讓安裝人員檢查更新情況
ENABLE_UPDATES=false# 應該產生多少進程。作為一個合理的規則,將服務器的可用內存除以512進行粗略估計
WEB_CONCURRENCY=1# 如果有嵌入圖像的特別大的Word文檔,可能需要覆蓋文檔導入的最大大小
MAXIMUM_IMPORT_SIZE=5120000# 如果您的反向代理已經記錄了傳入的http請求,并且結果是重復的,則可以刪除這一行
DEBUG=http# 允許登錄wiki的域的逗號分隔列表。如果未設置,則在使用Google OAuth登錄時默認允許所有域
ALLOWED_DOMAINS=# 為了實現與搜索和發布到渠道的完整集成,還需要以下配置,以及更多詳細信息
# => https://wiki.generaloutline.com/share/be25efd1-b3ef-4450-b8e5-c4a4fc11e02a
#
SLACK_VERIFICATION_TOKEN=your_token
SLACK_APP_ID=A0XXXXXXX
SLACK_MESSAGE_ACTIONS=true# 還可以選擇啟用google analytics來跟蹤知識庫中的頁面瀏覽量
GOOGLE_ANALYTICS_ID=# 可選地啟用Sentry(Sentry.io)來跟蹤錯誤和性能
SENTRY_DSN=# 要支持發送“文檔更新”或“您已被邀請”等傳出事務性電子郵件,您需要為SMTP服務器提供身份驗證
SMTP_HOST=
SMTP_PORT=
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_FROM_EMAIL=
SMTP_REPLY_EMAIL=
SMTP_TLS_CIPHERS=
SMTP_SECURE=true# 顯示在認證屏幕上的自定義徽標,縮放至高度:60px
# TEAM_LOGO=https://example.com/images/logo.png# 默認的接口語言。有關可用語言代碼及其大致翻譯百分比的列表,請參見 translate.getoutline.com 。
DEFAULT_LANGUAGE=zh_CN

請注意:該文件沒寫完整,補充可以參考

該配置文件適用于版本 0.63.0,新版可能需要重新進行更改

  1. 運行前需要先遷移數據庫
docker run --rm \--env-file=.env \--link postgres_12 \--link redis_6 \outlinewiki/outline:0.63.0 \yarn db:migrate --env production-ssl-disabled
  1. 運行
docker run -d \--restart=always \--name=outline \--env-file=.env \--link postgres_12 \--link redis_6 \-p 13090:3000 \outlinewiki/outline:0.63.0docker logs outline
  1. 訪問瀏覽器 http://192.168.100.155:13090

來自: 【Outline】純Docker部署指南 - BitEax

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86575.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86575.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

終止分區表變更操作時誤刪數據字典緩存導致MySQL崩潰分析

終止分區表變更操作時誤刪數據字典緩存導致MySQL崩潰分析 1. 問題簡述 在 MySQL 中&#xff0c;當終止一個處于 committing alter table to storage engine 階段的分區表操作時&#xff0c;InnoDB 會嘗試進行回滾并清理數據字典緩存。不幸的是&#xff0c;過程中發生了誤刪表…

進程關系與守護進程全解析

進程關系和守護進程 進程組 每一個進程除了有一個進程ID(PID)之外還屬于一個進程組。進程組是一個或者多個進程的集合&#xff0c; 一個進程組可以包含多個進程&#xff0c;每一個進程組也有一個唯一的進程組ID(PGID)&#xff0c; 并且這個PGID 類似于進程ID&#xff0c; 同樣…

PyAutoGUI 測試框架

??親愛的技術愛好者們,熱烈歡迎來到 Kant2048 的博客!我是 Thomas Kant,很開心能在CSDN上與你們相遇~?? 本博客的精華專欄: 【自動化測試】 【測試經驗】 【人工智能】 【Python】

Git安裝避坑指南

Git高速下載 程序員面試資料大全&#xff5c;各種技術書籍等資料-1000G 一、安裝前準備&#xff1a;避免環境沖突 1. 檢查系統殘留&#xff08;Windows&#xff09; # 檢查舊版Git殘留 where git where git.exe# 檢查環境變量 $env:PATH -split ; | Select-String git# 清理…

MATLAB中的并行加速技術與工具

文章目錄 MATLAB中的并行加速技術與工具1. 多線程計算&#xff08;隱式并行&#xff09;2. Parallel Computing Toolbox (并行計算工具箱)2.1 parfor (并行for循環)2.2 spmd (單程序多數據)2.3 parfeval (異步并行執行) 3. GPU計算4. 分布式計算 (MATLAB Parallel Server)5. 批…

GR00T N1.5 技術報告 -- Nvidia -- 2025.6.11 -- 開源

0. 前言 GR00T N1 的詳細介紹 Isaac-GR00T 在6.11 進行了全面升級&#xff0c;從 N1 進化為 N1.5&#xff0c;但基本還是基于之前的架構&#xff0c;官方發布了一個技術報告&#xff0c;并更新了github庫&#xff0c;之前的N1也做了獨立版本 N1 N 1.5 github 技術報告 model…

SRS WebRTC 入門

什么是 SRS WebRTC? SRS (Simple Realtime Server) 是一個支持 WebRTC 流媒體的開源媒體服務器。它允許你建立基于 WebRTC 的低延遲直播和實時通信應用。 快速開始 1. 安裝 SRS bash # 使用 Docker 快速安裝 docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080…

從手機隨拍到標準掃描件:AI如何智能校正證件照片(Python+OpenCV)

目錄 一、概述二、解決方案2.1 核心挑戰&#xff1a;AI眼中的“三座大山”2.2 設計思路&#xff1a;給AI一個“智能提示”2.3 實現流程&#xff1a;四步搞定 三、代碼實現3.1 依賴庫3.2 代碼 四、結語 一、概述 在當今的線上業務中&#xff0c;要求用戶上傳身份證、駕駛證等證…

基于OpenCV圖像分割與PyTorch的增強圖像分類方案

在圖像分類任務中&#xff0c;背景噪聲和復雜場景常常會對分類準確率產生負面影響。為了應對這一挑戰&#xff0c;本文介紹了一種結合OpenCV圖像分割與PyTorch深度學習框架的增強圖像分類方案。通過先對圖像進行分割提取感興趣區域&#xff08;Region of Interest&#xff0c;R…

華為云對象存儲OBS 支持安卓/iOS/鴻蒙UTS組件

華為云對象存儲OBS 支持安卓/iOS/鴻蒙UTS組件 介紹使用前須知vue代碼調用示例權限說明API調用說明初始化配置&#xff08;openClient&#xff09;創建桶&#xff08;createBucket&#xff09;列舉桶&#xff08;listBuckets&#xff09;刪除桶&#xff08;deleteBucket&#xf…

Buildroot 2025.05 中文手冊【AI高質量翻譯】

譯文在 Github 倉庫 和 Gitee 倉庫 保持最新&#xff0c;其它平臺發的文檔可能不會與之同步。 希望能夠共同維護這個 倉庫的 Buildroot 手冊 中文譯文&#xff0c;幫助更多人真正深入學習理解&#xff0c;更好的工作、生活和創造。 關于 AI 提示詞 以及 更多工具 的收集&#…

采用ArcGIS10.8.2 進行插值圖繪制

一、最終成果圖展示 二、軟件下載 鏈接: 百度網盤 請輸入提取碼 密碼:azay 三、軟件安裝 1、在安裝之前需要關閉電腦的防火墻及殺毒軟件 設置-隱私和安全性-Windows安全中心-防火墻和網絡保護 2、軟件解壓 (1)【ArcGIS_Desktop_1082_180......】“以管理員身份運行”…

Python網安-zip文件暴力破解(僅供學習)

目錄 源碼在這里 需要的模塊 準備一個密碼本和需要破解的ZIP文件 一行一行地從密碼文件中讀取每個密碼。 核心部分 注意&#xff0c;需要修改上段代碼注釋里的這段具有編碼問題的代碼&#xff1a; 源碼在這里 https://github.com/Wist-fully/Attack/tree/cracker 需要的…

如何讓ChatGPT模仿人類寫作,降低AIGC率?

在AI技術日益普及的當下&#xff0c;ChatGPT 等大語言模型已成為許多學術與寫作任務中的得力助手。然而&#xff0c;學境思源&#xff0c;隨著各類“AI檢測系統”的出現&#xff0c;一鍵生成論文初稿&#xff01;我們也遇到一個新的問題&#xff1a;如何讓AI寫作看起來不像AI寫…

科大訊飛2025AI開發者大賽-用戶新增賽道時間規則解析

根據訓練集中的時間規則&#xff0c;對測試集中的數據推斷用戶標簽&#xff08;新用戶或老用戶&#xff09;。 時間規則如下: 針對訓練集和測試集中都存在的did&#xff1a; 找到在訓練集中標記為新用戶最晚的時間點&#xff0c;則測試集中對應did的數據在此時間點前全部為新用…

.NET C# async/定時任務的異步線程池調度方案最大線程數? = 處理器核心數 × 250

關于.NET中Threading.Timer的線程機制&#xff0c;結合線程池特性和異步協作原理分析如下&#xff1a; 一、線程復用機制 ?共享進程級線程池? Threading.Timer的回調任務?不會每次新建線程?&#xff0c;而是提交到.NET進程全局線程池統一調度&#xff0c;該線程池與async/…

Redis 高可用分片集群:主從模式與哨兵機制詳解

一、為何需要分片集群&#xff1f; 在討論具體方案之前&#xff0c;我們先明確分片集群要解決的問題&#xff1a; 單節點瓶頸&#xff1a;無論是內存容量還是處理能力&#xff08;QPS&#xff09;&#xff0c;單個 Redis 實例都有物理上限。高可用性需求&#xff1a;單點故障…

Qt readyRead信號避坑:不產生readyRead信號的解決方法

Qt readyRead信號避坑&#xff1a;不產生readyRead信號的解決方法 引言一、QSerialport的readyRead1.1 版本問題1.2 緩存問題1.3 阻塞問題 二、Q(Tcp)Socket的readyRead2.1 阻塞問題2.2 運行一段時間&#xff0c;突然不發信號2.3 和具體數據有關&#xff1f; 引言 目前沒遇到相…

大事件項目記錄10-文章分類接口開發-更新文章分類

四、更新文章分類。 CategoryController.java&#xff1a; PutMappingpublic Result update(RequestBody Validated Category category){categoryService.update(category);return Result.success();} CategoryService&#xff1a; //更新分類void update(Category category); …

AI接口使用–阿里云百煉

原文地址&#xff1a;AI接口使用–阿里云百煉 – 無敵牛 歡迎參觀我的個人博客&#xff1a;無敵牛 – 技術/著作/典籍/分享等 最近開發了一個抖音AI起名小程序&#xff0c;已經在抖音上線了&#xff0c;歡迎大家來使用。其中用到了 AI文本生成 功能&#xff0c;我用的是 阿里云…