メインコンテンツまでスキップ

OutlineをUbuntuにインストールする

Outlineを自分用のプライベートWikiに使えないかテストだけしました。(2025年12月)
dockerです。
メモです。
ChromeだとWikiのURLによってはブラウザ更新時に警告がでました。
警告ページから解除申請したら1日後に消えたので問題はなさそう。

私にはささらなかったのでサイトは消しましたがCore Ultra5搭載とかRyzen 7搭載のNASが出ればほしいので買ったらそこでは使いたいです。
使い勝手はよかったです。
QnapかSynologyからの発売を待ってます・・・

アップデートとか

sudo apt update && sudo apt upgrade -y

ポート開放(必要なら)

sudo ufw allow 80
sudo ufw allow 443
sudo ufw reload

Dockerのインストール

パッケージの更新をする

sudo apt -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release

Docker公式のGPG鍵を追加する

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

最新の安定版(stable)を取得する。 最新版(nightly)が欲しい場合はstableの文字をnightlyへ変更する。

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

インストールする(バージョンを指定したい場合は少し下を見てください)

sudo apt -y update
sudo apt -y install docker-ce docker-ce-cli containerd.io

自動起動とか

sudo systemctl enable docker --now

フォルダとファイルの作成

optに今回は作成,ファイルは別にviとかで新規作成してもいいです。

cd /opt
sudo mkdir outline
cd outline
sudo touch docker-compose.yml docker.env

docker-compose.yml の編集

sudo vi docker-compose.yml

以下を貼り付け
postgresが公式だと18ですが新しすぎるので17に変更してます。
必要があれば変更してください。

services:
outline:
image: outlinewiki/outline:latest
env_file: ./docker.env
ports:
- "127.0.0.1:3000:3000"
environment:
- FILE_STORAGE=local
volumes:
- storage-data:/var/lib/outline/data
depends_on:
- postgres
- redis
restart: always

redis:
image: redis:7
expose:
- "6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 30s
retries: 3
restart: always

postgres:
image: postgres:17
env_file: ./docker.env
expose:
- "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'
restart: always

volumes:
storage-data:
database-data:

docker.env の編集

sudo vi docker.env

以下を貼り付ける SECRET_KEY等はopenssl rand -hex 32で生成して置き換えてください

# --- 基本設定 ---
NODE_ENV=production
# あなたのドメインに変更 (必ず https)
URL=https://wiki.momijiina.tech
PORT=3000

# --- セキュリティキー (コマンドで生成した乱数を貼る) ---
SECRET_KEY=5eb2e59bd2eca6369c32b7d301e5f771c4eea27ec7d09524594f8f247ed67fb8 #変更して
UTILS_SECRET=5eb2e59bd2eca6369c32b7d301e5f771c4eea27ec7d09524594f8f247ed67fb8 #変更して

# --- データベース接続 ---
# ymlに合わせてあります (user:pass)
DATABASE_URL=postgres://user:pass@postgres:5432/outline
DATABASE_CONNECTION_POOL_MIN=5
DATABASE_CONNECTION_POOL_MAX=20
REDIS_URL=redis://redis:6379
# データベースのSSL接続を無効化する(エラーがでた為、要確認)
PGSSLMODE=disable

# --- ローカルストレージ設定 ---
# yml側で指定していますが、念のためこちらにも記載(上書きはされません)
FILE_STORAGE=local
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data
FILE_STORAGE_UPLOAD_MAX_SIZE=26214400

# --- 認証設定 (Googleログインの例ですが使ってないのでよくわからぬ) ---
GOOGLE_CLIENT_ID=GoogleCloudで取得したID
GOOGLE_CLIENT_SECRET=GoogleCloudで取得したシークレット

DEFAULT_LANGUAGE=ja_JP
WEB_CONCURRENCY=1

OIDCの場合の設定

コールバックURLの例(Redirect URI)

必ず/auth/oidc.callbackで登録してください

https://wiki.momijiina.tech/auth/oidc.callback

docker.env

sudo vi docker.env

Googleを消して以下を追加

# 以下を追記
OIDC_CLIENT_ID=あなたのクライアントID
OIDC_CLIENT_SECRET=あなたのシークレット
OIDC_AUTH_URI=認証エンドポイント (Authorization URL)
OIDC_TOKEN_URI=トークンエンドポイント (Token URL)
OIDC_USERINFO_URI=ユーザー情報エンドポイント (Userinfo URL)

# 取得する情報の範囲 (通常はそのまま)
OIDC_SCOPES=openid profile email

# ユーザー名として使う項目 (email または preferred_username が一般的)
OIDC_USERNAME_CLAIM=email

Dockerの起動

Docker起動して全ての構築に時間がかかる

sudo docker compose up -d

エラーの確認をする

sudo docker compose logs -f outline

envとか更新があった場合

今は不要

sudo docker compose down
sudo docker compose up -d

証明書取得

Certbotをインストールする

sudo apt -y install certbot

証明書を取得する

注意 ポート80が必須です。 nginx等で使われている場合は停止してください。

sudo certbot certonly --standalone -d wiki.momijiina.tech

Nginxのインストール

Nginxの最新版をインストールする

最新のNginx取得に必要なものをインストール

sudo apt -y install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

nginx の署名鍵をインポート

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

署名確認(面倒なら不要)

gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

最新の安定板を取得する

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

インストール

sudo apt update
sudo apt -y install nginx

Nginx の自動起動設定

 systemctl enable nginx --now

Nginx設定(confの例)

 cd /etc/nginx/conf.d/
sudo vi outline.conf

調整してください。
とりあえず動くやつにしてます。
使いまわしてます。

server {
listen 80;
listen [::]:80;
server_name wiki.momijiina.tech;

# Let's Encrypt用のみ許可
location /.well-known/acme-challenge {
root /var/www/html/;
}

# それ以外は全てHTTPSへリダイレクト
location / {
return 301 https://$host$request_uri;
}
}

server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name wiki.momijiina.tech;

# SSL証明書
ssl_certificate /etc/letsencrypt/live/wiki.momijiina.tech/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wiki.momijiina.tech/privkey.pem;

# SSL設定
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
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_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets off;

# セキュリティヘッダー
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
#add_header X-Frame-Options "SAMEORIGIN" always;
#add_header X-Content-Type-Options "nosniff" always;
#add_header X-XSS-Protection "1; mode=block" always;
#add_header Referrer-Policy "strict-origin-when-cross-origin" always;
client_max_body_size 100M;

location /.well-known/acme-challenge {
root /var/www/html/;
}

location / {
# プロキシバッファ設定
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;

proxy_pass http://127.0.0.1:3000;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

}

sudo nginx -tで問題がなければリロードする

sudo systemctl reload nginx