準備するもの#
- 公開サーバー
- ドメイン名
- 安定したネットワーク
- 器用な手
健康で正常な頭
docker を使用してインストールすることをお勧めします。設定の問題を回避できます。
docker#
Ubuntu の例#
- ワンクリックスクリプトを使用してインストールすることもできます
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run
- 手動インストール
- まず古いバージョンをアンインストールします
sudo apt-get remove docker docker-engine docker.io containerd runc
- apt パッケージインデックスを更新し、apt パッケージをインストールします
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
- Docker の公式 GPG キーを追加します
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
- リポジトリを設定します
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- apt インデックスを更新します
sudo apt-get update
- Docker Engine、containerd、および Docker Compose をインストールします
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- テスト
sudo docker run --rm hello-world
正常に出力され、エラーが表示されなければインストール成功です。
- 後処理
現在のユーザーを docker グループに追加して sudo を省略します
sudo usermod -aG docker $USER
exit
Alist#
インストール#
docker run -d --restart=always \
--name="alist" \
-v /etc/alist:/opt/alist/data \ #'/etc/alist'のローカルマッピングパスは自分の慣れた位置に設定できます
-p 5244:5244 \ #公開にマッピングしたくない場合は、-p 127.0.0.1:5244:5244を使用できます。Rcloneもdocker内にあるため、-p 172.17.0.1:5244:5244を追加する必要があるかもしれません
xhofe/alist:latest
設定#
ジャンプ公式ドキュメントは十分に詳細です。
Rclone#
- 最初に fuse をインストールする必要があるかもしれません
sudo apt-get install fuse
インストール#
設定ファイルを生成します#
docker run -it --rm \
-v /etc/rclone:/config/rclone \
rclone/rclone \
config
- 新しい設定を作成します
- 設定名を設定します
他の後の rclone を実行する 中のmount Rclone
と一致させる必要があります。 - プロトコルを選択します
一般的には webdav です。 - ホストアドレスを設定します
一般的には docker ゲートウェイを指します。 - webdav サービスの種類を選択します
Alist は nextcloud を選択することを推奨しています。 - ユーザー名を入力します
- 入力します
一般的には y を選択して自分のパスワードを使用します。
その後、パスワードを 2 回入力しますが、入力時に提示はありません。 - トークンと高度な設定
空白のままでデフォルトで大丈夫です。 - 確認
間違いがなければ y を押して保存します。 - 完了
作成が完了したら q で終了します。
rclone を実行します#
docker run -itd --name rclone \
# cpu数の制限は必須ではありませんが、rcloneが異常にリソースを占有する場合は制限を使用できます。
--cpuset-cpus="1" \
-v /etc/rclone:/config/rclone \
-v /mnt/rclone:/data:shared \
--device /dev/fuse \
--cap-add SYS_ADMIN \
--security-opt apparmor:unconfined \
rclone/rclone \
mount Rclone:/ /data --umask 0000 --vfs-cache-mode full --default-permissions --allow-non-empty --allow-other --buffer-size 1G --dir-cache-time 6h --vfs-read-chunk-size 64M --vfs-read-chunk-size-limit 1G --vfs-cache-max-size 20G
--vfs-cache-max-size 20G 最大キャッシュサイズは自分のディスクスペースに応じて変更してください。
マウントを解除します#
一般的には docker stop rclone の後、デフォルトでマウントが解除されますが、解除に失敗した場合は、fusermount -qzu /mnt/マウントパス
を使用して強制的に解除できます。
動画サイト#
Emby のインストール#
docker run -itd \
--restart always \
--name emby \
-v /etc/emby:/config \
-v /mnt/rclone:/rclone \
-p 8096:8096 \
-e TZ=Etc/UTC+8 \
--device /dev/dri:/dev/dri \
linuxserver/emby:latest
Jellyfin のインストール#
docker run -itd \
--name=jellyfin \
-e TZ=Etc/UTC+8 \
-p 8096:8096 \
-v /etc/jellyfin:/config \
-v /mnt/rclone:/rclone \
--restart always \
--device /dev/dri:/dev/dri \
linuxserver/jellyfin:latest
設定#
基本設定は省略します
主にいくつかの自動スキャン機能がクラウドストレージのリスク管理や高いネットワーク使用を引き起こすことがあります。
- 概要マーク
- スケジュールタスク
この 5 つの中で自動的にスケジュールタスクが生成され、大量のリソースを長時間占有しますので、手動で削除することをお勧めします。
公開マッピング#
Nginx または他のリバースプロキシサーバーの使用をお勧めします。emby や jellyfin 内部の https サービスの使用はお勧めしません。
TLS 証明書の取得#
- acme.sh をインストールします
公式ドキュメント
curl https://get.acme.sh | sh -s [email protected]
- acme.sh を使用して TLS 証明書を cloudflare バージョンで取得します
export CF_Token="token"
export CF_Account_ID="ID"
export CF_Zone_ID="ID"
cd ~/.acme.sh
./acme.sh --issue -d ex.com -d *.ex.com --server letsencrypt --dns dns_cf
Account_ID と Zone_ID は
Token はテンプレートをそのまま使用します:DNS の領域を編集するだけです;領域は自分のドメイン名を選択します。
Nginx#
設定ファイルの作成#
sudo mkdir /etc/nginx
sudo vi /etc/nginx/nginx.conf
i
を押して編集モードに入ります。
pid /var/run/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 512;
}
http {
ssl_certificate /etc/ssl/let/fullchain.pem;
ssl_certificate_key /etc/ssl/let/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
resolver 8.8.8.8 1.1.1.1 valid=60s;
# gzip
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
real_ip_header CF-Connecting-IP;
real_ip_recursive on;
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name emby.ex.com;
# server_name emby4.ex.com; # デフォルトでは必要ありません
# server_name emby6.ex.com; # デフォルトでは必要ありません
error_page 497 =301 https://$host:$server_port$request_uri;
location / {
proxy_pass http://127.0.0.1:8096/;
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}
Esc を押して :wq
を入力して終了します。
インストール#
sudo touch /etc/nginx/nginx.conf
docker run -itd --restart always --name nginx --network host \
-v /path/fullchain.cer:/etc/ssl/let/fullchain.pem:ro \
-v /path/ex.com.key:/etc/ssl/let/privkey.pem:ro \
-v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx
/path
と/path/ex.com.key
を acme.sh が教えてくれたパスに変更する必要があります。
メディアファイルの直接接続#
Cloudflare の設定#
- ルールの中のリダイレクトルールを選択します
- v4、v6 の分流が必要ない場合は、1 つのルールを作成するだけで、赤枠で囲まれた部分は必要ありません。
- 以下は v4
- 以下は v6
Nginx の設定#
ぐぐぐ