如何使用 Docker 在 Ubuntu 上安装 Outline Knowledgebase Wiki如何使用 Docker 在 Ubuntu 上安装 Outline Knowledgebase Wiki如何使用 Docker 在 Ubuntu 上安装 Outline Knowledgebase Wiki如何使用 Docker 在 Ubuntu 上安装 Outline Knowledgebase Wiki
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何使用 Docker 在 Ubuntu 上安装 Outline Knowledgebase Wiki

在此页

  1. 先决条件
  2. 第 1 步 - 配置防火墙
  3. 第 2 步 - 安装 Docker
  4. 第 3 步 - 安装 Docker Compose
  5. 第 4 步 - 为 Docker 创建环境文件
    1. 配置 Slack 身份验证
    2. 配置 Slack 集成
    3. 创建 S3 凭证
    4. 创建密钥
    5. 创建和编辑环境文件

    Outline 是一种开源、协作、知识库软件。您可以使用它来托管文档和粉丝页面,甚至可以将其用于笔记共享。它包括一个 markdown 编辑器,并与 Slack、Figma、Airtable、Google Docs、Trello、Zapier、Codepen、Spotify、Youtube 等多种服务集成。它具有安全功能,如用户组具有单独的读写权限,允许公开共享并有 13 种语言翻译的 RTL 支持。它是使用 React 和 Node.js 构建的。有两种使用大纲的方法。一种是他们的云托管版本,或者您可以将其托管在您的服务器上。

    本教程将教您如何使用 Docker 在基于 Ubuntu 的服务器上安装 Outline Wiki。

    先决条件

    • A server running Ubuntu 20.04 with a minimum of 1GB of RAM.

    • A non-root user with sudo privileges.

    • A domain name pointing to the server. We will use https://outline.example.com for our tutorial.

    • Few essential apps to get started.

      $ sudo apt install nano curl wget unzip gnupg
      

    第 1 步 - 配置防火墙

    第一步是配置防火墙。 Ubuntu 默认带有 ufw (Uncomplicated Firewall)。

    检查防火墙是否正在运行。

    $ sudo ufw status
    

    您应该得到以下输出。

    Status: inactive
    

    允许 SSH 端口,以便防火墙在启用时不会中断当前连接。

    $ sudo ufw allow OpenSSH
    

    也允许 HTTP 和 HTTPS 端口。

    $ sudo ufw allow 80
    $ sudo ufw allow 443
    

    启用防火墙。

    $ sudo ufw enable
    Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
    Firewall is active and enabled on system startup
    

    再次检查防火墙的状态。

    $ sudo ufw status
    

    您应该会看到类似的输出。

    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    80                         ALLOW       Anywhere
    443                        ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    80 (v6)                    ALLOW       Anywhere (v6)
    443 (v6)                   ALLOW       Anywhere (v6)
    

    第 2 步 - 安装 Docker

    我们需要使用其官方存储库安装 Docker。添加 Dockers 官方 GPG 密钥。

    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    

    将 Docker 存储库添加到系统中。

    $ echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    

    更新 APT 存储库列表并安装 Docker。

    $ sudo apt update
    $ sudo apt install docker-ce
    

    验证 Docker 引擎是否安装正确。

    $ docker --version
    Docker version 20.10.14, build a224086
    

    执行以下命令,这样您就不需要使用 sudo 来运行 Docker 命令。

    $ sudo usermod -aG docker ${USER}
    $ su - ${USER}
    

    第 3 步 - 安装 Docker Compose

    运行以下命令来安装 Docker compose。 Docker Compose 最近更新到 v2.0,其中引入了许多重大更改。我们将使用其 Github 发布页面上提供的最新 1.x 版本。

    $ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    

    将可执行权限应用于 Docker 组合二进制文件。

    $ sudo chmod +x /usr/local/bin/docker-compose
    

    验证 Docker Compose 是否安装正确。

    $ docker-compose --version
    docker-compose version 1.29.2, build 5becea4c
    

    为 Docker compose 安装命令补全。

    $ sudo curl \
    	-L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \
        -o /etc/bash_completion.d/docker-compose
    $ source ~/.bashrc
    

    本教程的 Docker 和 Docker compose 安装部分到此结束。

    第 4 步 - 为 Docker 创建环境文件

    配置松弛身份验证

    Outline 要求您配置身份验证提供程序。对于我们的教程,我们将配置基于 Slack 的登录。

    使用您的 Slack 帐户登录并访问 Slacks API 应用页面。

    单击“创建应用程序”按钮继续。单击 From Scratch 链接以创建应用程序。

    为您的应用选择一个名称,然后选择您希望您的应用出现的工作区。如果您不想将您的应用程序与现有工作区相关联,您可以创建另一个并返回到此步骤。

    完成后单击创建应用程序按钮。接下来,向下滚动到页面底部并为您的应用程序提供描述、图标和背景颜色。

    完成后单击“保存更改”按钮。从左侧边栏中选择 OAuth 和权限选项。

    在提供的框中添加重定向 URL https://outline.example.com/auth/slack.callback,然后单击“添加”按钮。

    单击“保存 URL”按钮继续。向下滚动到页面的用户令牌范围部分,然后从下拉菜单中选择以下范围。

    • identity.avatar
    • identity.basic
    • identity.email
    • identity.team

    从左侧边栏返回基本信息页面。从 App Credentials 下的框中复制值 Client ID 和 Client Secret。

    配置 Slack 集成

    从左侧边栏访问 Slash Commands 选项。

    单击结果页面上的“新建命令”按钮。输入 /outline 作为命令。输入 https://outline.example.com/api/hooks.slack 作为请求 URL。输入您的命令的描述和一个词作为提示。完成后点击底部的保存按钮。

    从左侧边栏打开菜单功能>>交互性和快捷方式。通过切换切换按钮启用交互并粘贴 https://outline.example.com/api/hooks.interactive 作为请求 URL。单击保存更改按钮完成。

    从左侧边栏打开设置 >> 安装应用程序页面,然后单击安装到工作区按钮为您的 Slack 工作区安装应用程序。

    从左侧边栏访问“基本信息”页面,并复制应用程序 ID 和验证令牌值以用于 slack 应用程序集成。

    创建 S3 凭证

    为您在 AWS 或任何 S3 兼容服务上安装的 Outline 创建一个 S3 存储桶。创建存储桶后,添加以下策略 JSON 以配置跨域资源共享 (CORS)。将 AllowedOrigins 的值替换为您的大纲 URL。

    [
        {
            "AllowedHeaders": [
                "*"
            ],
            "AllowedMethods": [
                "PUT",
                "POST"
            ],
            "AllowedOrigins": [
                "https://docs.mycompany.com"
            ],
            "ExposeHeaders": []
        },
        {
            "AllowedHeaders": [],
            "AllowedMethods": [
                "GET"
            ],
            "AllowedOrigins": [
                "*"
            ],
            "ExposeHeaders": []
        }
    ]
    

    使用以下策略创建 IAM 用户。将 my-bucket-name 替换为您的 Outline S3 存储桶的实际名称。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor",
                "Effect": "Allow",
                "Action": [
                    "s3:GetObjectAcl",
                    "s3:DeleteObject",
                    "s3:PutObject",
                    "s3:GetObject",
                    "s3:PutObjectAcl"
                ],
                "Resource": "arn:aws:s3:::my-bucket-name/*"
            }
        ]
    }
    

    现在您已经创建了 IAM 用户,为您的存储桶用户生成一个访问密钥和秘密。

    创建密钥

    环境文件需要一个秘密密钥和一个实用程序秘密。运行以下命令两次以生成两个密钥。

    $ openssl rand -hex 32
    

    复制并保存这些值。

    创建和编辑环境文件

    为 Outline 的 docker 设置创建一个目录。

    $ mkdir ~/outline
    

    切换到目录。

    $ cd ~/outline
    

    创建 docker.env 文件并打开它进行编辑。该文件将存储安装所需的所有环境变量。

    $ nano docker.env
    

    将以下代码粘贴到其中。输入之前创建的秘钥和utils secret。复制之前为身份验证和应用程序集成创建的 Slack 凭据。按照以下指定输入您的 Amazon S3 凭据。

    如果您想使用 Google Analytics 跟踪您的 Outline 应用程序的统计信息,请在下面的字段中输入您的 Analytics ID。目前,Outline 不支持 GA4 标签,因此您必须输入旧的跟踪 ID。

    对于 WEB_CONCURRENCY 变量,将系统内存除以 512,然后输入近似值。 FORCE_HTTPS 变量设置为 false,因为我们使用 Nginx 作为代理服务器。

    # –––––––––––––––– REQUIRED ––––––––––––––––
    SECRET_KEY=generate_a_new_key
    UTILS_SECRET=generate_a_new_key
    
    POSTGRES_USER=outlinepg
    POSTGRES_PASSWORD=yourpassword
    POSTGRES_DB=outline
    DATABASE_URL=postgres://outlinepg::5432/outline
    DATABASE_URL_TEST=postgres://outlinepg::5432/outline-test
    PGSSLMODE=disable
    REDIS_URL=redis://localhost:6379
    
    URL=https://docs.example.com
    PORT=3000
    
    AWS_ACCESS_KEY_ID=get_a_key_from_aws
    AWS_SECRET_ACCESS_KEY=get_the_secret_of_above_key
    AWS_REGION=us-east-2
    AWS_S3_UPLOAD_BUCKET_URL=https://my-bucket-name.s3.us-east-2.amazonaws.com
    AWS_S3_UPLOAD_BUCKET_NAME=my-bucket-name
    AWS_S3_UPLOAD_MAX_SIZE=26214400
    AWS_S3_FORCE_PATH_STYLE=true
    
    # –––––––––––––– AUTHENTICATION ––––––––––––––
    SLACK_KEY=<slackclientid>
    SLACK_SECRET=<slackclientsecret>
    
    # –––––––––––––––– OPTIONAL ––––––––––––––––
    GOOGLE_ANALYTICS_ID=UA-XXXXXXX-1
    
    SLACK_VERIFICATION_TOKEN=your_token
    SLACK_APP_ID=A0XXXXXXX
    SLACK_MESSAGE_ACTIONS=true
    
    FORCE_HTTPS=false
    ENABLE_UPDATES=true
    WEB_CONCURRENCY=2
    

    以上文件基于 Outlines Github 存储库中的示例文件。如果您需要配置任何其他设置,您可以将它们从它复制到您的文件中。

    通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    第 5 步 - 为大纲创建 Docker Compose 文件

    创建 docker-compose.yml 文件并打开它进行编辑。

    $ nano docker-compose.yml
    

    将以下代码粘贴到其中。

    version: "3"
    services:
    
      outline:
        image: outlinewiki/outline:latest
        restart: always
        command: sh -c "yarn sequelize:migrate --env=production-ssl-disabled && yarn start --env=production-ssl-disabled"
        env_file: ./docker.env
        ports:
          - "3000:3000"
        depends_on:
          - postgres
          - redis
    
      redis:
        image: redis
        restart: always
        env_file: ./docker.env
        ports:
          - "6379:6379"
        volumes:
          - ./redis.conf:/redis.conf
        command: ["redis-server", "/redis.conf"]
    
      postgres:
        image: postgres
        restart: always
        env_file: ./docker.env
        ports:
          - "5432:5432"
        volumes:
          - database-data:/var/lib/postgresql/data
    
    volumes:
      database-data:
    

    通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    第 6 步 - 安装大纲

    通过启动容器来安装 Outline。

    $ docker-compose up -d
    

    检查容器的状态。

    $ docker ps
    

    第 7 步 - 安装 SSL

    要使用 Lets Encrypt 安装 SSL 证书,我们需要下载 Certbot 工具。为此,我们将使用 Snapd 包安装程序。

    安装快照安装程序。

    $ sudo apt install snapd
    

    确保您的 Snapd 版本是最新的。

    $ sudo snap install core && sudo snap refresh core
    

    安装 Certbot。

    $ sudo snap install --classic certbot
    

    使用以下命令通过创建指向 /usr/bin 目录的符号链接来确保可以运行 Certbot 命令。

    $ sudo ln -s /snap/bin/certbot /usr/bin/certbot
    

    生成 SSL 证书。

    $ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d outline.example.com
    

    上面的命令会将证书下载到服务器上的 /etc/letsencrypt/live/outline.example.com 目录。

    生成 Diffie-Hellman 组证书。

    $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    

    为 Lets Encrypt 自动更新创建一个挑战 webroot 目录。

    $ sudo mkdir -p /var/lib/letsencrypt
    

    创建 Cron 作业以更新 SSL。它将每天运行以检查证书并在需要时更新证书。为此,首先,创建文件 /etc/cron.daily/certbot-renew 并打开它进行编辑。

    $ sudo nano /etc/cron.daily/certbot-renew
    

    粘贴以下代码。

    #!/bin/sh
    certbot renew --cert-name outline.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
    

    通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    更改任务文件的权限以使其可执行。

    $ sudo chmod +x /etc/cron.daily/certbot-renew
    

    第 8 步 - 安装 Nginx

    Ubuntu 附带旧版本的 Nginx。您需要下载官方 Nginx 存储库以安装最新版本。

    导入 Nginx 签名密钥。

    $ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    	| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
    

    添加 Nginx 稳定版本的存储库。

    $ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
    http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
        | sudo tee /etc/apt/sources.list.d/nginx.list
    

    更新系统存储库。

    $ sudo apt update
    

    安装 Nginx。

    $ sudo apt install nginx
    

    验证安装。

    $ nginx -v
    nginx version: nginx/1.20.2
    

    启用 Nginx 服务。

    $ sudo systemctl enable nginx
    

    第 9 步 - 配置 Nginx

    至此,Shlink一直通过8080端口运行在本地系统,我们将使用Nginx作为反向代理在其域上运行。

    在 /etc/nginx/conf.d 目录中为 Shlink 服务器创建一个配置文件。

    $ sudo nano /etc/nginx/conf.d/outline.conf
    

    将以下代码粘贴到其中。

    server {
            server_name outline.example.com;
    
            listen 443 ssl http2;
            listen [::]:443 ssl http2;
    
            access_log /var/log/nginx/outline.access.log;
            error_log /var/log/nginx/outline.error.log;
    
            ssl_certificate /etc/letsencrypt/live/outline.example.com/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/outline.example.com/privkey.pem;
            ssl_trusted_certificate /etc/letsencrypt/live/outline.example.com/chain.pem;
            ssl_session_timeout 1d;
            ssl_session_cache shared:MozSSL:10m;
            ssl_session_tickets off;
    
            ssl_protocols TLSv1.2 TLSv1.3;
            ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    
            ssl_stapling on;
            ssl_stapling_verify on;
            ssl_dhparam /etc/ssl/certs/dhparam.pem;
     
            location / {
                    proxy_pass http://localhost:3000;
                    
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "Upgrade";
                    proxy_set_header Host $host;
            
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $host;
                    proxy_set_header Host $http_host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Scheme $scheme;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_redirect off;
            }
    }
    
    ## HTTPS Redirect
    server {
            listen 80; 
            listen [::]:80;
            server_name outline.example.com;
            return 301 https://$host$request_uri;
    }
    

    完成后,按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    打开文件 /etc/nginx/nginx.conf 进行编辑。

    $ sudo nano /etc/nginx/nginx.conf
    

    在行 include /etc/nginx/conf.d/*.conf; 之前添加以下行。

    server_names_hash_bucket_size  64;
    

    通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。再次验证 Nginx。

    验证 Nginx 配置文件语法。

    $ sudo nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    启动 Nginx 服务器。

    $ sudo systemctl start nginx
    

    第 10 步 - 访问大纲

    在浏览器中启动域 https://outline.example.com,您将看到以下页面。

    单击继续使用 Slack 按钮以使用 Slack 登录并连接您的工作区。

    登录后,Outline 主页将打开,您可以开始使用它。

    Slack 的 Outline 应用程序允许您从工作区内搜索并粘贴指向任何文档的链接。为此,请打开您的松弛工作区并在消息中键入 /outline 并发布它们。

    它会自动找到与搜索词相关的文档并将其发布在您的消息中。

    第 11 步 - 更新大纲

    要更新 Outline wiki,请运行以下命令。第一个命令关闭并删除容器。第二个为 Outline 和其他工具拉取最新版本的 Docker 镜像。如果您需要在 Docker 组合文件或环境文件中进行任何更改,您可以运行相同的命令。

    $ docker-compose down --remove-orphans
    $ docker-compose pull 
    

    运行以下命令升级数据库。

    $ docker-compose run --rm outline yarn db:migrate --env=production-ssl-disabled
    

    使用新图像启动新容器,同时保持数据完好无损。

    $ docker-compose up -d
    

    结论

    我们关于使用 Docker 在 Ubuntu 20.04 服务器上安装 Outline Knowledgebase Wiki 的教程到此结束。如果想深入了解Outline,可以关注其官方文档。如果您有任何问题,请在下面的评论中发表。

©2015-2025 艾丽卡 support@alaica.com