コンテンツにスキップ

Hyperkitty

提供: ArchWiki
2023年10月28日 (土) 13:59時点におけるKgx (トーク | 投稿記録)による版 (他言語へのリンクを追加)

Hyperkitty は、Django ベースのアーカイバおよび Mailman のアーカイブインターフェイスです。

インストール

Hyperkitty を使用するには、動作する ウェブサーバー のセットアップが必要です (たとえば、Apache HTTP Server を使用して WSGI に直接転送するか、Nginx を使用してリクエストを転送します) UWSGI などのアプリケーションサーバー)

hyperkitty パッケージを インストール します。

警告 Hyperkitty には TLS 経由でのみアクセスしてください (テスト目的でハイパーキティを実行しているマシンから直接アクセスする場合を除く)。そうしないと、パスワードやユーザー データがネットワークに公開されてしまいます。

設定

Web アプリケーションは、/etc/webapps/hyperkitty/settings_local.py で設定されます (これは、/usr/share/webapps/hyperkitty/settings.py のデフォルト設定に含まれています)

ノート Hyperkitty は、ユーザーの機密データ (sqlite データベースなど) を /var/lib/hyperkitty/data/ に保存する必要があります。このディレクトリには root とアプリケーション自体だけがアクセスできるためです。

アプリケーションのデフォルトのシークレットを変更します。

/etc/webapps/hyperkitty/settings_local.py
SECRET_KEY = 'something-very-secret'

運用環境で実行する場合は、必ずデバッグを無効にしてください。

/etc/webapps/hyperkitty/settings_local.py
DEBUG = False

有効な電子メール設定を追加します (Django アプリケーションが購読者を確認できるようにします)

/etc/webapps/hyperkitty/settings_local.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 25
EMAIL_HOST_USER = username
EMAIL_HOST_PASSWORD = password
ノート DEFAULT_FROM_MAIL 設定オプションと SERVER_MAIL 設定オプションを使用して、それぞれ内部認証とエラー報告のために送信されるメールの From: ヘッダーを定義できます。

実行中の mailman インスタンスの REST API に接続するには、設定オプションを hyperkitty の構成に追加する必要があります。

/etc/webapps/hyperkitty/settings_local.py
MAILMAN_REST_API_URL = 'http://localhost:8001'
MAILMAN_REST_API_USER = 'rest_admin'
MAILMAN_REST_API_PASS = 'rest_admin_password'

mailman インスタンスとのアーカイブ統合を構成するには、Mailman 側で integration with hyperkitty をセットアップし、次にそれらの接続を受け入れるように hyperkitty を設定します。

/etc/webapps/hyperkitty/settings_local.py
MAILMAN_ARCHIVER_KEY = 'SecretArchiverAPIKey'
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')

アプリケーションの有効なホスト名またはドメイン名を定義する必要があります。

/etc/webapps/hyperkitty/settings_local.py
ALLOWED_HOSTS = [
    'localhost',
    'lists.example.com'
]

ホスティング

この記事またはセクションは加筆を必要としています。
理由: Example for a setup using Apache HTTP Server. (議論: トーク:Hyperkitty#)
ノート
  • Hyperkitty は独自のユーザーおよびグループ (すなわち hyperkitty) として実行する必要があります。/etc/webapps/hyperkitty//var/lib/hyperkitty//run/hyperkitty/ をそれぞれ設定、静的キャッシュ、(潜在的な) ソケットに使用します。
  • 静的ファイルはデフォルトではトップレベルの static/ ディレクトリから提供され、同じ (サブ) ドメイン上の postorius と衝突するため、/etc/webapps/hyperkitty/settings_local.py 内の STATIC_URL 変数をユニークなもの (例えば'/hyperkitty_static/') に設定することを推奨します。

Nginx と uWSGI

Hyperkitty には、/etc/uwsgi/hyperkitty.ini に動作する uWSGI 設定ファイルが付属しています。

nginxuwsgi-plugin-pythonインストール し、uWSGI 用のアプリケーションごとのソケットを作成し (UWSGI#uWSGIソケットのアクセシビリティ を参照)、uwsgi-secure@hyperkitty.socket ユニットを activate します。

ローカルのテストセットアップでは、Hyperkitty を http://localhost/hyperkitty/、以下の Nginx を設定に追加してください:

/etc/nginx/hyperkitty.conf
server {
  listen 80;
  server_name localhost;
  charset utf-8;
  client_max_body_size 75M;
  root /usr/share/webapps/hyperkitty;
  access_log /var/log/nginx/access.hyperkitty.log;
  error_log /var/log/nginx/error.hyperkitty.log;

  location /hyperkitty_static {
    alias /var/lib/hyperkitty/static;
  }

  location ~^/(hyperkitty|user-profile)/(.*)$ {
    include /etc/nginx/uwsgi_params;
    uwsgi_pass unix:/run/hyperkitty/hyperkitty.sock;
  }
}

セットアップ

ノート hyperkitty ユーザーとして次のコマンドを実行します (例: sudo または su を使用)

最初のインストール後、必ずデータベースを生成してください。

[hyperkitty]$ django-admin migrate --pythonpath /usr/share/webapps/hyperkitty/ --settings settings

その後、アプリケーションの静的データを収集する必要があります。

[hyperkitty]$ django-admin collectstatic --pythonpath /usr/share/webapps/hyperkitty/ --settings settings

データを圧縮するには、次のコマンドを実行します。

[hyperkitty]$ django-admin compress --pythonpath /usr/share/webapps/hyperkitty/ --settings settings

Web アプリケーションで必要な非同期操作のための hyperkitty-qcluster.service systemd サービスを 有効化 および 起動 します。

データベースにデフォルトデータを入力します (初めてセットアップする場合)

[hyperkitty]$ django-admin loaddata --pythonpath /usr/share/webapps/hyperkitty/ --settings settings first_start

Django アプリケーションのスーパーユーザーアカウントを作成します。

[hyperkitty]$ django-admin createsuperuser --pythonpath /usr/share/webapps/hyperkitty --settings settings

http://localhost/hyperkitty/admin にある Django アプリケーションの管理インターフェイスにログインして、デフォルトの example.com 以外に Sites を追加できるようにするか、さらに Mail ドメイン を追加します。

ノート 新しい site を追加した後、/etc/webapps/hyperkitty/settings_local.pySITE_ID 変数をそれぞれの ID に設定してください。

ヒントとテクニック

mailman2 アーカイブのインポート

Hyperkitty は、mailman 3.0 より前のバージョンからアーカイブをインポートできます。

ノート 次のコマンドを hyperkitty ユーザーとして実行します (例: sudo または su を使用)
[hyperkitty]$ django-admin hyperkitty_import --pythonpath /usr/share/webapps/hyperkitty --settings settings -l ADDRESS mbox_file [mbox_file ...]

ここで、ADDRESS は完全修飾リスト名 (例: list@example.com) で、引数 mbox_file は既存のアーカイブを表します。(mbox 形式) でインポートします (通常は {{ic|/var/lib/mailman/archives/private/LIST_NAME.mbox/LIST_NAME.mbox} にあります) })

その後、全文検索インデックスを手動で更新します。

[hyperkitty]$ django-admin update_index_one_list --pythonpath /usr/share/webapps/hyperkitty --settings settings ADDRESS
ノート 全文検索インデックスは、分単位で実行される cron ジョブによって自動的に作成されます。

Content-Security-Policy ヘッダー

HyperKitty の [1] HTTP 応答ヘッダーを定義できます。これにより、指定された場所からのコンテンツとリソースのみが許可されます。

nginx を使用する場合は、HyperKitty がセットアップされている server ディレクティブに以下を追加します。

/etc/nginx/hyperkitty.conf
[..]
add_header Content-Security-Policy "default-src 'self'; connect-src 'self'; img-src 'self' https://secure.gravatar.com; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'";
[..]

Gravatar サポートの無効化

組み込みの Gravatar サポートは、設定で無効にすることができます。

/etc/webapps/hyperkitty/settings_local.py
HYPERKITTY_ENABLE_GRAVATAR = False

このオプションは Hyperkitty 1.3.4 で導入されました。以前のバージョンでは、代わりにこれを使用してください。

/etc/webapps/hyperkitty/settings_local.py
GRAVATAR_SECURE_URL = ''

メールの添付ファイルをディスクに保存する

デフォルトでは、Hyperkitty はメールの添付ファイルをデータベースに保存します。ただし、代わりに添付ファイルをディスクに保存するように構成できます。

/etc/webapps/hyperkitty/settings_local.py
HYPERKITTY_ATTACHMENT_FOLDER = /var/lib/hyperkitty/data/attachments
ノート この場所には、hyperkitty ユーザーがアクセスおよび書き込みできる必要があります。

テンプレートのカスタマイズ

DjangoTEMPLATES-DIRS 機能を使用すると、次のテンプレートをオーバーライドすることができます。アプリケーションの外観を変更します。

  • hyperkitty/headers.html: the content will appear before the </head> tag
  • hyperkitty/top.html: the content will appear before the <body> tag
  • hyperkitty/bottom.html: the content will appear before the </body> tag

Xapian 検索バックエンド

Hyperkitty は、Xapian ベースの検索バックエンドを利用できます。python-xapian-haystack パッケージを インストール してバックエンドを設定します。

/etc/webapps/hyperkitty/settings_local.py
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'xapian_backend.XapianEngine',
        'PATH': "/var/lib/hyperkitty/data/xapian_index",
    },
}

その後、必ずすべてのリストの検索インデックスを作成してください。次のコマンドを hyperkitty ユーザーとして実行します (例: sudo または su を使用)

[hyperkitty]$ django-admin update_index --pythonpath /usr/share/webapps/hyperkitty --settings settings

トラブルシューティング

SMTP AUTH 拡張子はサーバーでサポートされていません

管理者ユーザーとして初めてログインしたときに、SMTNotSupportedError がスローされた場合 (/var/log/hyperkitty/hyperkitty.log に記録されます)、必ず /etc/webapps/hyperkitty/settings_local.pyEMAIL_* 設定を確認してください

デフォルトでは、たとえば EMAIL_USE_TLSFalse に設定されており、SMTP 経由でのログイン失敗がトリガーされる可能性があります。

参照