アウトラインは、オープンソースの協調的なナレッジベースソフトウェアです。ドキュメントやファンページをホストしたり、メモの共有に使用したりするために使用できます。マークダウンエディターが含まれており、Slack、Figma、Airtable、Google Docs、Trello、Zapier、Codepen、Spotify、Youtubeなどの複数のサービスと統合されています。個別の読み取りおよび書き込み権限を持つユーザーグループなどのセキュリティ機能があり、パブリック共有が可能です13言語の翻訳でRTLをサポートしています。 ReactとNode.jsを使用して構築されています。アウトラインの使用方法は2つあります。 1つはクラウドでホストされているバージョンですが、サーバーでホストすることもできます。
このチュートリアルでは、Dockerを使用してUbuntuベースのサーバーにOutlineWikiをインストールする方法を説明します。
-
1GB以上のRAMを搭載したUbuntu20.04を実行しているサーバー。
-
sudo権限を持つroot以外のユーザー。
-
サーバーを指すドメイン名。
https://outline.example.com
を使用します チュートリアル用です。 -
始めるために必要なアプリはほとんどありません。
$ sudo apt install nano curl wget unzip gnupg
最初のステップは、ファイアウォールを構成することです。 Ubuntuにはデフォルトでufw(Uncomplicated Firewall)が付属しています。
ファイアウォールが実行されているかどうかを確認します。
$ sudo ufw status
次の出力が得られるはずです。
ステータス:非アクティブ
SSHポートを許可して、ファイアウォールが有効にしたときに現在の接続を切断しないようにします。
$ sudo ufw allow OpenSSH
HTTPポートとHTTPSポートも許可します。
$ sudo ufw allow 80 $ sudo ufw allow 443
ファイアウォールを有効にします。
$ sudo ufw enableCommandは、既存のssh接続を中断する可能性があります。操作を続行しますか(y | n)? yFirewallはアクティブであり、システムの起動時に有効になります
ファイアウォールのステータスをもう一度確認してください。
$ sudo ufw status
同様の出力が表示されるはずです。
ステータス:activeTo Action From-- ------ ---- OpenSSH ALLOW Anywhere80 ALLOW Anywhere443 ALLOW AnywhereOpenSSH(v6)ALLOW Anywhere(v6)80(v6)ALLOW Anywhere(v6)443(v6)ALLOW Anywhere (v6)
公式リポジトリを使用してDockerをインストールする必要があります。 Dockerの公式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 --versionDockerバージョン20.10.14、ビルドa224086
Dockerコマンドを実行するためにsudoを使用する必要がないように、次のコマンドを実行します。
$ sudo usermod -aG docker $ {USER} $ su-$ {USER}
次のコマンドを実行して、Dockercomposeをインストールします。 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
DockerComposeが正しくインストールされているかどうかを確認します。
$ docker-compose --versiondocker-composeバージョン1.29.2、ビルド5becea4c
Dockercomposeのコマンド補完をインストールします。
$ sudo curl \ -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \ -o /etc/bash_completion.d/docker-compose $ソース〜/ .bashrc
これで、チュートリアルのDockerとDocker構成のインストールセクションが完了しました。
アウトラインでは、認証プロバイダーを構成する必要があります。このチュートリアルでは、Slackベースのログインを構成します。
Slackアカウントでサインインし、SlackのAPIアプリページにアクセスします。
アプリの作成をクリックします ボタンをクリックして続行します。 最初からをクリックします アプリを作成するためのリンク。
アプリの名前を選択し、アプリを表示するワークスペースを選択します。アプリを既存のワークスペースに関連付けたくない場合は、別のワークスペースを作成して、この手順に戻ることができます。
アプリの作成をクリックします 終了したらボタン。次に、ページの一番下までスクロールして、アプリに説明、アイコン、背景色を入力します。
変更を保存をクリックします 終了したらボタン。 OAuthと権限を選択します 左側のサイドバーからのオプション。
リダイレクトURLを追加しますhttps://outline.example.com/auth/slack.callback
表示されたボックスで、追加をクリックします ボタン。
URLの保存をクリックします ボタンをクリックして続行します。 ユーザートークンスコープまで下にスクロールします ページのセクションで、ドロップダウンメニューから次のスコープを選択します。
-
identity.avatar
-
identity.basic
-
identity.email
-
identity.team
基本情報に戻ります 左側のサイドバーからのページ。値をコピーしますクライアントID およびクライアントシークレット アプリの認証情報の下のボックスから 。
スラッシュコマンドにアクセスします 左側のサイドバーからのオプション。
新しいコマンドをクリックします 結果のページのボタン。 /outline
と入力します コマンドとして。 https://outline.example.com/api/hooks.slack
と入力します リクエストURLとして 。コマンドの説明とヒントとして単語を入力します。 保存をクリックします 終了したら下部にあるボタン。
メニューを開きます機能>>インタラクティブ機能とショートカット 左側のサイドバーから。 双方向性を有効にする トグルボタンを切り替えて、https://outline.example.com/api/hooks.interactive
を貼り付けます リクエストURLとして。 変更を保存をクリックします ボタンを押して終了します。
設定>>アプリのインストールを開きます 左側のサイドバーからページを表示し、WorkSpaceにインストールをクリックします。 ボタンをクリックして、Slackワークスペース用のアプリをインストールします。
基本情報にアクセスしてください 左側のサイドバーからページを作成し、アプリIDをコピーします および検証トークン Slackアプリ統合の値。
S3クレデンシャルを作成する
AWSまたはS3互換サービスにOutlineをインストールするためのS3バケットを作成します。バケットを作成した後、クロスオリジンリソースシェアリング(CORS)を構成するための次のポリシーJSONを追加します。 AllowedOrigins
の値を置き換えます アウトラインURLを使用します。
[{"AllowedHeaders":["*"]、 "AllowedMethods":["PUT"、 "POST"]、 "AllowedOrigins":["https://docs.mycompany.com"]、 "ExposeHeaders" :[]}、{"AllowedHeaders":[]、 "AllowedMethods":["GET"]、 "AllowedOrigins":["*"]、 "ExposeHeaders":[]}]
次のポリシーを使用してIAMユーザーを作成します。 my-bucket-name
を置き換えます アウトライン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ユーザーを作成したので、バケットユーザーのアクセスキーとシークレットを生成します。
環境ファイルには、秘密鍵とユーティリティシークレットが必要です。次のコマンドを2回実行して、両方のキーを生成します。
$ openssl rand -hex 32
これらの値をコピーして保存します。
アウトラインのDocker設定用のディレクトリを作成します。
$ mkdir〜/outline
ディレクトリに切り替えます。
$ cd〜/outline
docker.env
を作成します ファイルを開き、編集用に開きます。このファイルには、インストールに必要なすべての環境変数が保存されます。
$ nano docker.env
次のコードを貼り付けます。以前に作成した秘密鍵とutils秘密を入力します。認証とアプリ統合のために以前に作成したSlackクレデンシャルをコピーします。以下に指定されているようにAmazonS3クレデンシャルを入力します。
Google Analyticsを使用してOutlineアプリケーションの統計を追跡する場合は、下のフィールドにAnalyticsIDを入力します。現在、OutlineはGA4タグをサポートしていないため、古いトラッキングIDを入力する必要があります。
WEB_CONCURRENCY
の場合 変数、システムRAMを512で除算し、概算値を入力します。 FORCE_HTTPS
Nginxをプロキシサーバーとして使用しているため、変数はfalseに設定されています。
#––––––––––––––––必須–––––––––––––––– SECRET_KEY =generate_a_new_keyUTILS_SECRET =generate_a_new_keyPOSTGRES_USER =outlinepgPOSTGRES_PASSWORD =yourpasswordPOSTGRES_DB =outlineDATABASE_URL =post // =3000AWS_ACCESS_KEY_ID =get_a_key_from_awsAWS_SECRET_ACCESS_KEY =get_the_secret_of_above_keyAWS_REGION =us-east-2AWS_S3_UPLOAD_BUCKET_URL =https://my-bucket-name.s3.US-east-2.amazonaws.comAWS_S3_UPLOAD_BU –––––––––認証–––––––––––––– SLACK_KEY =SLACK_SECRET = #––––––––––––––– –オプション–––––––––––––––– GOOGLE_ANALYTICS_ID =UA-XXXXXXX-1SLACK_VERIFICATION_TOKEN =your_tokenSLACK_APP_ID =A0XXXXXXXSLACK_MESSAGE_ACTIONS =trueFORCE_HTTPS =falseENABLE_UPDATES =trueWEB_CONCURRENCY =2 pre> 上記のファイルは、OutlineのGithubリポジトリのサンプルファイルに基づいています。追加の設定を構成する必要がある場合は、それらをファイルにコピーできます。
Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。
ステップ5-アウトライン用のDocker作成ファイルを作成する
docker-compose.yml
を作成します ファイルを開いて編集します。$ nano docker-compose.yml次のコードを貼り付けます。
version: "3" services:outline:image:outlinewiki / overlay:latest restart:always command:sh -c "yarn sequelize:migrate --env =Production-ssl-disabled &¥ start --env =Production- ssl-disabled "env_file:./docker.envポート:-" 3000:3000 "depends_on:-postgres --redis redis:image:redis restart:常にenv_file:./docker.envポート:-" 6379:6379 "ボリューム: --./redis.conf:/redis.confコマンド:["redis-server"、 "/redis.conf"] postgres:image:postgres restart:常にenv_file:./docker.envポート:-"5432:5432"ボリューム:-database-data:/ var / lib / postgresql / datavolumes:database-data:Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。
ステップ6-インストールの概要 コンテナを起動してアウトラインをインストールします。
$ docker-compose up -dコンテナのステータスを確認してください。
$ docker psステップ7-SSLをインストールする Let's Encryptを使用してSSL証明書をインストールするには、Certbotツールをダウンロードする必要があります。そのためにSnapdパッケージインストーラーを使用します。
Snapインストーラーをインストールします。
$ sudo apt install snapdSnapdのバージョンが最新であることを確認してください。
$ sudo snap install core &&sudo snap refresh coreCertbotをインストールします。
$ sudo snap install --classic certbot次のコマンドを使用して、
/usr/bin
へのシンボリックリンクを作成してCertbotコマンドを実行できるようにします。 ディレクトリ。$ sudo ln -s / snap / bin / certbot / usr / bin / certbotSSL証明書を生成します。
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -doutline.example.com上記のコマンドは、証明書を
/etc/letsencrypt/live/outline.example.com
にダウンロードします。 サーバー上のディレクトリ。Diffie-Hellmanグループを生成します 証明書。
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048Let'sEncryptの自動更新用のチャレンジWebルートディレクトリを作成します。
$ sudo mkdir -p / var / lib /letsencryptCronジョブを作成してSSLを更新します。毎日実行され、証明書を確認し、必要に応じて更新します。そのためには、まず、ファイル
/etc/cron.daily/certbot-renew
を作成します。 開いて編集します。$ sudo nano /etc/cron.daily/certbot-renew次のコードを貼り付けます。
#!/ bin / shcertbot renew --cert-nameoutline.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 / nullNginxの安定バージョンのリポジトリを追加します。
$ 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 updateNginxをインストールします。
$ sudo apt install nginxインストールを確認します。
$ nginx -vnginxバージョン:nginx / 1.20.2Nginxサービスを有効にします。
$ sudo systemctl enable nginxステップ9-Nginxを構成する これまで、Shlinkはポート8080を介してローカルシステムで実行されていました。Nginxを使用して、そのドメインで実行するリバースプロキシとして機能します。
/etc/nginx/conf.d
にShlinkサーバーの構成ファイルを作成します ディレクトリ。$ sudo nano /etc/nginx/conf.d/outline.conf次のコードを貼り付けます。
サーバー{server_nameoutline.example.com; 443sslhttp2をリッスンします。リッスン[::]: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-POLY -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;場所/{proxy_passhttp:// localhost:3000; proxy_set_headerアップグレード$http_upgrade; proxy_set_header接続"アップグレード"; proxy_set_header Host $ host; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_set_header Host $ host; proxy_set_headerホスト$http_host; proxy_set_header X-Real-IP $ remote_addr; proxy_set_headerX-スキーム$scheme; proxy_set_header X-Forwarded-Proto $ schema; proxy_redirect off; }} ## HTTPS Redirectserver {listen 80;聞く[::]:80; server_nameoutline.example.com;戻り値301https:// $ 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 -tnginx:構成ファイル/etc/nginx/nginx.conf構文はoknginx:構成ファイル/etc/nginx/nginx.confテストは成功しましたNginxサーバーを起動します。
$ sudo systemctl start nginxステップ10-アクセスの概要 ドメイン
https://outline.example.com
を起動します ブラウザで、次のページが表示されます。
Slackを続行をクリックします ボタンをクリックしてSlackでログインし、ワークスペースに接続します。
ログインすると、アウトラインホームページが開き、作業を開始できます。
Slackのアウトラインアプリを使用すると、ワークスペース内から任意のドキュメントへのリンクを検索して貼り付けることができます。これを行うには、Slackワークスペースを開き、
/outline <searchterm>
と入力します。 メッセージに入れて投稿してください。
検索語に関連するドキュメントが自動的に検索され、メッセージに投稿されます。
ステップ11-アウトラインの更新 アウトラインWikiを更新するには、次のコマンドを実行します。最初のコマンドは、コンテナーをシャットダウンして削除します。 2つ目は、Outlineやその他のツール用の最新バージョンのDockerイメージを取得します。 Docker構成ファイルまたは環境ファイルに変更を加える必要がある場合は、同じコマンドを実行できます。
$ docker-compose down --remove-orphans $ docker-compose pull次のコマンドを実行して、データベースをアップグレードします。
$ docker-compose run --rmoutlineyarn db:migrate --env =Production-ssl-disabledデータをそのまま維持しながら、新しいコンテナで新しいコンテナを起動します。
$ docker-compose up -d結論 これで、Dockerを使用してUbuntu20.04サーバーにOutlineKnowledgebaseWikiをインストールするためのチュートリアルは終了です。アウトラインについて詳しく知りたい場合は、公式ドキュメントに従ってください。ご不明な点がございましたら、下のコメント欄に投稿してください。
Ubuntu