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設定を分けて考える必要があります。
| モード | ブラウザー → Cloudflare | Cloudflare → オリジン |
|---|---|---|
| Flexible | HTTPS | HTTP |
| Full | HTTPS | HTTPS。ただし証明書を厳密には検証しない |
| Full (strict) | HTTPS | HTTPS。信頼できる証明書を検証する |
可能であれば、オリジンサーバーにも有効な証明書を設定し、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-pager6. 注意点#
certbotの綴りを確認する。cerbotではない。- CloudflareのFull (strict)では、オリジン証明書の期限とホスト名が一致している必要がある。
- 直接接続のDNSレコードでは、サーバーのIPアドレスが公開される。
- 証明書の秘密鍵をGitリポジトリや記事へ貼り付けない。
- ドメインやレコードを変更した場合、古いDDNSキャッシュやログを削除する前に、必要な情報をバックアップする。

