メインコンテンツへスキップ
  1. ノート/
  2. ツールとデプロイ/

Alistの設定メモ

·1247 文字·3 分· loading · loading · · ·
ICE345
著者
ICE345
CS Student | System | Linux | OCaml

Alistの設定ファイルは、インストール方法やバージョンによって異なります。まずサービスの定義と実際のデータディレクトリを確認してください。ここでは、/opt/alistへインストールした例を使います。

1. 設定ファイルの場所
#

sudo find /opt/alist -maxdepth 3 -type f \( -name 'config.yaml' -o -name 'config.json' \)
sudo systemctl status alist

よく変更する項目は、待ち受けポート、HTTPS、管理者設定、ストレージ設定です。パスワードを平文で設定ファイルへ保存せず、Alistのバージョンが提供する管理コマンドや管理画面を利用してください。

2. Cloudflareをプロキシとして使う場合
#

Cloudflare DNSのプロキシを有効にすると、ブラウザーとCloudflare間、Cloudflareとオリジンサーバー間のTLS設定を分けて考える必要があります。

モードブラウザー → CloudflareCloudflare → オリジン
FlexibleHTTPSHTTP
FullHTTPSHTTPS。ただし証明書を厳密には検証しない
Full (strict)HTTPSHTTPS。信頼できる証明書を検証する

可能であれば、オリジンサーバーにも有効な証明書を設定し、Full (strict)を使います。TunnelでHTTPSを終端し、AlistへローカルHTTPで接続する場合は、Alist側のforce_httpsによるリダイレクトループがないか確認します。

3. DNSのみで直接接続する場合
#

Cloudflareのプロキシを使わず、DNSのみでサーバーへ接続する場合は、サーバー自身がHTTPSを提供する必要があります。証明書の保存先は、Certbotを使うと一般に次のようになります。

/etc/letsencrypt/live/example.com/fullchain.pem
/etc/letsencrypt/live/example.com/privkey.pem
/etc/letsencrypt/archive/example.com/
/etc/letsencrypt/renewal/example.com.conf
/var/log/letsencrypt/

privkey.pemは秘密鍵なので、Alistのプロセスだけが読めるよう権限を設定します。

4. Certbotで証明書を取得する
#

80番ポートを一時的にCertbotへ渡せる場合、standalone方式を使えます。

sudo certbot certonly --standalone -d alist.050626.xyz

この間、80番ポートを使うWebサーバーやAlistを停止する必要があります。証明書の更新が可能か、次のコマンドで事前に確認します。

sudo certbot renew --dry-run

更新後にAlistへ証明書を再読み込みさせる必要がある場合は、systemdのtimerやCertbotのdeploy hookを使います。単純なcronで無条件にサービスを再起動するより、更新があった場合だけ再読み込みする設計が安全です。

5. Alistへ証明書を指定する例
#

設定形式はAlistのバージョンを確認してください。JSON形式の例は次のとおりです。

{
  "cert_file": "/etc/letsencrypt/live/alist.050626.xyz/fullchain.pem",
  "key_file": "/etc/letsencrypt/live/alist.050626.xyz/privkey.pem"
}

設定変更後は、構文とサービスログを確認して再起動します。

sudo systemctl restart alist
sudo systemctl status alist
journalctl -u alist -n 100 --no-pager

6. 注意点
#

  • certbotの綴りを確認する。cerbotではない。
  • CloudflareのFull (strict)では、オリジン証明書の期限とホスト名が一致している必要がある。
  • 直接接続のDNSレコードでは、サーバーのIPアドレスが公開される。
  • 証明書の秘密鍵をGitリポジトリや記事へ貼り付けない。
  • ドメインやレコードを変更した場合、古いDDNSキャッシュやログを削除する前に、必要な情報をバックアップする。

评论