「Hyperkitty」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(一部翻訳)
105行目: 105行目:
 
== セットアップ ==
 
== セットアップ ==
   
{{Note| Run the following commands as the {{ic|hyperkitty}} user (e.g. using [[sudo]] or [[su]]).}}
+
{{Note| {{ic|hyperkitty}} ユーザーとして次のコマンドを実行します (例: [[sudo]] または [[su]] を使用)}}
   
  +
最初のインストール後、必ずデータベースを生成してください。
After first installation make sure to generate a database:
 
   
 
[hyperkitty]$ django-admin migrate --pythonpath /usr/share/webapps/hyperkitty/ --settings settings
 
[hyperkitty]$ django-admin migrate --pythonpath /usr/share/webapps/hyperkitty/ --settings settings
   
  +
その後、アプリケーションの静的データを収集する必要があります。
Afterwards, the static data for the application needs to be collected:
 
   
 
[hyperkitty]$ django-admin collectstatic --pythonpath /usr/share/webapps/hyperkitty/ --settings settings
 
[hyperkitty]$ django-admin collectstatic --pythonpath /usr/share/webapps/hyperkitty/ --settings settings
   
  +
データを圧縮するには、次のコマンドを実行します。
To compress the data, run the following:
 
   
 
[hyperkitty]$ django-admin compress --pythonpath /usr/share/webapps/hyperkitty/ --settings settings
 
[hyperkitty]$ django-admin compress --pythonpath /usr/share/webapps/hyperkitty/ --settings settings
   
[[Enable]] and [[start]] the {{ic|hyperkitty-qcluster.service}} [[systemd]] service for required asynchronous operations on the web application.
+
Web アプリケーションで必要な非同期操作のための {{ic|hyperkitty-qcluster.service}} [[systemd]] サービスを [[有効化]] および [[起動]] します。
   
  +
データベースにデフォルトデータを入力します (初めてセットアップする場合)
Populate the database with default data (when setting up for the first time):
 
   
 
[hyperkitty]$ django-admin loaddata --pythonpath /usr/share/webapps/hyperkitty/ --settings settings first_start
 
[hyperkitty]$ django-admin loaddata --pythonpath /usr/share/webapps/hyperkitty/ --settings settings first_start
   
  +
[[Django]] アプリケーションのスーパーユーザーアカウントを作成します。
Create a superuser account for the [[Django]] application:
 
   
 
[hyperkitty]$ django-admin createsuperuser --pythonpath /usr/share/webapps/hyperkitty --settings settings
 
[hyperkitty]$ django-admin createsuperuser --pythonpath /usr/share/webapps/hyperkitty --settings settings
   
  +
http://localhost/hyperkitty/admin にある [[Django]] アプリケーションの管理インターフェイスにログインして、デフォルトの {{ic|example.com}} 以外に {{ic|Sites}} を追加できるようにするか、さらに {{ic|Mail ドメイン}} を追加します。
Log in to the admin interface of the [[Django]] application at http://localhost/hyperkitty/admin to be able to add more {{ic|Sites}} besides the default {{ic|example.com}} or to add additional {{ic|Mail domains}}.
 
   
{{Note|After adding a new {{ic|site}} make sure to set the {{ic|SITE_ID}} variable in {{ic|/etc/webapps/hyperkitty/settings_local.py}} to the respective ID!}}
+
{{Note|新しい {{ic|site}} を追加した後、{{ic|/etc/webapps/hyperkitty/settings_local.py}} {{ic|SITE_ID}} 変数をそれぞれの ID に設定してください。}}
   
 
== ヒントとテクニック ==
 
== ヒントとテクニック ==

2023年10月28日 (土) 13:44時点における版

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 に設定してください。

ヒントとテクニック

Importing mailman2 archives

Hyperkitty can import archives from mailman < 3.0.

ノート: Run the following commands as the hyperkitty user (e.g. using sudo or su).
[hyperkitty]$ django-admin hyperkitty_import --pythonpath /usr/share/webapps/hyperkitty --settings settings -l ADDRESS mbox_file [mbox_file ...]

Here ADDRESS is the fully-qualified list name (e.g. list@example.com) and the mbox_file argument represents existing archives (in mbox format) to import (usually found in /var/lib/mailman/archives/private/LIST_NAME.mbox/LIST_NAME.mbox).

Afterwards the full-text search index can be updated manually:

[hyperkitty]$ django-admin update_index_one_list --pythonpath /usr/share/webapps/hyperkitty --settings settings ADDRESS
ノート: The full-text search index should be created by the minutely running cron-job automatically.

Content-Security-Policy Header

It is possible to define a Content-Security-Policy HTTP response header for HyperKitty. This allows content and resources only from specified locations.

When using nginx add the following to the server directive in which HyperKitty is setup in:

/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'";
[..]

Disabling Gravatar support

The builtin Gravatar support can be disabled in the configuration:

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

This option was introduced in Hyperkitty 1.3.4. In earlier versions, use this instead:

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

Saving mail attachments to disk

By default Hyperkitty stores mail attachments in its database. However, it can be configured to save the attachments to disk instead:

/etc/webapps/hyperkitty/settings_local.py
HYPERKITTY_ATTACHMENT_FOLDER = /var/lib/hyperkitty/data/attachments
ノート: The location needs to be accessible and writable by the hyperkitty user.

Template customization

Using Django's TEMPLATES-DIRS capabilities, it is possible to override the following templates to change the looks of the application:

  • 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 search backend

Hyperkitty can make use of a Xapian based search backend. Install the python-xapian-haystack package and configure the backend:

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

Make sure to create the search index for all lists afterwards. Run the following command as the hyperkitty user (e.g. using sudo or su):

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

Troubleshooting

SMTP AUTH extension not supported by server

If upon first login with the admin user a SMTNotSupportedError is thrown (logged to /var/log/hyperkitty/hyperkitty.log), make sure to verify the EMAIL_* settings in /etc/webapps/hyperkitty/settings_local.py.

By default e.g. EMAIL_USE_TLS is set to False which might trigger a failed login via SMTP.

See also