このプロジェクトについて

このリポジトリは、単一のDocker Composeスタックとしてパッケージ化されたセルフホスト型のXWiki展開を提供します。エンタープライズウィキプラットフォームであるXWikiは、リバースプロキシとして機能するTraefikの背後に実行され、構成されたホスト名に対してLet's Encrypt証明書が自動的に発行されます。PostgreSQL 15がウィキデータを保存します。 セットアップは短い手順に従います:リポジトリをクローンし、2つの予想されるDockerネットワーク(traefik-networkとxwiki-network)を作成し、.env.exampleを.envにコピーして必要な値を入力(XWIKI_DB_PASSWORD、XWIKI_HOSTNAME、TRAEFIK_HOSTNAME、TRAEFIK_ACME_EMAIL、TRAEFIK_BASIC_AUTH)し、docker composeでスタックを起動します。READMEには、XWikiがスキーマとコアページを初期化するため、最初の起動には数分かかること、およびDNSが伝播していない、またはポート80が到達できないことによる証明書発行の失敗、ネットワーク作成ステップをスキップしたことによるネットワークエラー、変数が見つからないことによる失敗など、一般的な最初の展開の問題が記載されています。 update.shスクリプトは、チェックアウトを最新のリリースタグに移動し、docker compose upを再実行します。これは、メジャーバージョンを無人で跨ぐことを拒否し、ローカルの変更を上書きすることを拒否し、インストールされたバージョン以降に必須となった変数を報告します。--dry-runフラグはアクションをプレビューします。 3つのDocker Hub公式イメージ(traefik、xwiki、postgres)は、補間デフォルトとしてtag@sha256ダイジェストに固定されているため、単純なgit pullでテストされた組み合わせが提供されます。イメージごとのオーバーライドレベルは文書化されています:バージョン変数はダイジェストなしでタグのみを交換し、タグ変数は参照全体を置き換えます。ネストされたデフォルトには、Docker Compose v2.5以降が必要です。毎日のCIジョブは、レジストリに対してピンを再解決し、固定されたXWikiとTraefikのバージョンをアップストリームのリリースと比較します。GitHub ActionsはコミットSHAで固定され、Dependabotによって最新に保たれます。 バックアップは、専用のコンテナによって処理されます。このコンテナは、gzipを介してパイプされたpg_dumpとウィキデータのtar.gzアーカイブを実行し、古いバックアップを削除してスリープします。デフォルトは、30分のウォームアップ、24時間のインターバル、7日間の保持です。2つの対話型復元スクリプトは、データベースとアプリケーションデータをカバーします。リポジトリは、XWikiがバージョンジャンプ時にスキーマを移行するため、バックアップボリュームをホストマウントし、アップグレード前にバックアップすることを推奨しています。 ハードニングは一様に適用されます:すべてのサービスはno-new-privilegesを設定し、インフラストラクチャコンテナはすべての機能をドロップし、エントリポイントに必要なものだけを戻します(TraefikのNET_BIND_SERVICE、データベースイメージのCHOWN/SETUID/SETGID)。アプリケーションコンテナは、デフォルトの機能セットを意図的に保持します。各サービスは、composeのデフォルトとしてメモリとCPUの制限と予約を持ち、.env変数を通じてオーバーライド可能です。 展開検証ワークフローは、すべてのプッシュ、プルリクエスト、および毎日06:00 UTCに実行され、shellcheck、actionlint、3つの固定されたイメージのTrivyスキャン、新鮮さチェック、および一時的な資格情報でスタックを起動し、ウィキUIがTraefikを介して応答することを要求する展開・テストジョブをカバーします。エンドツーエンドのバックアップ/復元スクリプトは、マーカー行を挿入し、最も古いバックアップを復元し、マーカーがなくなったことを確認します。これは、失敗検出を証明するためにデータベースコンテナを一時的に停止し、本番環境ではなくステージングを対象としています。 セキュリティノートは、資格情報がデプロイ時にgitignoredされた.envから読み取られ、PostgreSQLは内部ネットワークでのみリスニングし、v1.0.0より前のリリースは、再利用された場合はローテーションする必要がある、生成されたように見えるデータベースパスワードを含む追跡された.envを出荷したことを述べています。