SourceHutのセットアップ

概要

このガイドでは、Windows Subsystem for Linux 2 (WSL2) 上で SourceHut サーバーをホスティングし、DevSecOps のベストプラクティスを適用するための手順を詳細に説明します。SourceHut は、柔軟でセキュアな自動化可能な Git サービスとして知られています。このガイドは、SourceHut のインストール、設定、SSL 証明書の統合、データベース権限の管理、アップグレード、バックアップの手順を含む、サーバーの完全なセットアップをカバーします。

はじめに

SourceHut は、ソースコード管理とプロジェクトホスティングを提供するオープンソースのプラットフォームです。これは、高いカスタマイズ性、セキュリティ、および自動化の機能を備えています。WSL2 上での SourceHut のホスティングは、Windows 上で Linux の機能をフルに活用しながら、軽量かつ効率的な開発環境を提供します。このガイドでは、SourceHut サーバーをセットアップし、DevSecOps のベストプラクティスを適用して、セキュアなソフトウェア開発環境を構築する方法を解説します。

方法

前提条件

  1. WSL2 が有効な Windows 10/11
    • WSL2 をインストールし、Linux ディストリビューション (例: Ubuntu) をセットアップします。
  2. Linux コマンドラインインターフェース (CLI) の基本的な理解
    • gitcurlnanovimsystemctl などのツールに慣れていること。
  3. PostgreSQL データベース
    • SourceHut は PostgreSQL をバックエンドとして使用します。
  4. SSL 証明書
    • セキュリティのため、SSL 証明書を取得して設定します。
  5. 管理者権限
    • システムにソフトウェアをインストールおよび設定するための必要な権限があることを確認してください。

手順

1. WSL2 環境のセットアップ

  1. WSL2 をインストール:
    wsl --install
  2. Linux ディストリビューションを更新およびアップグレード:
    sudo apt update && sudo apt upgrade -y
  3. 必要なツールをインストール:
    sudo apt install -y git curl nano wget

2. PostgreSQL のインストールと設定

  1. PostgreSQL をインストール:
    sudo apt install postgresql postgresql-contrib
  2. PostgreSQL サービスを起動して自動起動を有効化:
    sudo systemctl start postgresql
    sudo systemctl enable postgresql
  3. SourceHut 用のデータベースとユーザーを作成:
    sudo -u postgres psql
    CREATE DATABASE sourcehut;
    CREATE USER srht_user WITH PASSWORD 'password';
    GRANT ALL PRIVILEGES ON DATABASE sourcehut TO srht_user;

3. SourceHut のインストール

  1. SourceHut の依存関係をインストール:
    sudo apt install python3 python3-pip python3-venv libpq-dev
  2. 仮想環境を作成して有効化:
    python3 -m venv srht-env
    source srht-env/bin/activate
  3. SourceHut をクローンしてインストール:
    git clone https://git.sr.ht/~sircmpwn/builds.sr.ht
    cd builds.sr.ht
    pip install -r requirements.txt
    python setup.py install

4. SourceHut の設定

  1. 設定ファイルを作成:

    cp example-config.ini config.ini
    nano config.ini
  2. 設定例:

    [database]
    uri = postgresql://srht_user:password@localhost/sourcehut
     
    [server]
    listen_addr = 0.0.0.0:5000
  3. サービスとして SourceHut を設定:

    sudo nano /etc/systemd/system/sourcehut.service
  4. SourceHut を起動して自動起動を有効化:

    sudo systemctl start sourcehut
    sudo systemctl enable sourcehut

設定ファイル

a) SourceHut 設定ファイル: config.ini

[database]
uri = postgresql://srht_user:password@localhost/sourcehut
 
[server]
listen_addr = 0.0.0.0:5000

b) SourceHut サービスファイル: /etc/systemd/system/sourcehut.service

[Unit]
Description=SourceHut
After=network.target
 
[Service]
User=$(whoami)
WorkingDirectory=/path/to/builds.sr.ht
ExecStart=/path/to/srht-env/bin/python /path/to/builds.sr.ht/main.py
Restart=always
 
[Install]
WantedBy=multi-user.target

SSL 証明書の設定

  1. certbot を使用して SSL 証明書を取得:
    sudo apt install certbot
    sudo certbot certonly --standalone -d yourdomain.com
  2. SourceHut を SSL 使用に設定:
    [server]
    listen_addr = 0.0.0.0:5000
    tls_cert_path = /etc/letsencrypt/live/yourdomain.com/fullchain.pem
    tls_key_path = /etc/letsencrypt/live/yourdomain.com/privkey.pem

データベースの権限管理

  1. PostgreSQL データベースに対する適切な権限を設定:
    GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO srht_user;

アップグレード

  1. SourceHut のコードベースをバックアップ:
    tar -czvf sourcehut-backup-$(date +%F).tar.gz /path/to/builds.sr.ht
  2. 最新のコードを取得し、インストールを更新:
    cd /path/to/builds.sr.ht
    git pull
    pip install -r requirements.txt --upgrade
    sudo systemctl restart sourcehut

バックアップ

  1. cron ジョブを使用してデータベースをバックアップ:
    crontab -e
  2. 毎日バックアップするために次の行を追加:
    0 3 * * * pg_dump -U srht_user sourcehut > /var/backups/sourcehut-$(date +\%F).sql

Next Steps

  1. プロジェクトのセットアップ: SourceHut上で新しいプロジェクトを作成し、Gitリポジトリを初期化します。リポジトリはSSH経由で操作し、公開鍵認証を設定することが推奨されます。

  2. コードのホスティング: プロジェクトにコードをプッシュし、リポジトリの設定を行います。SourceHutでは、リポジトリの管理に関して細かい設定が可能ですので、必要に応じて設定をカスタマイズしてください。

  3. パッチの管理: SourceHutのメールベースのワークフローを使用して、パッチを送受信します。メールでのパッチ送信は、細かいレビューと共同作業に適しています。

  4. CI/CDの設定: SourceHutのBuildsサーバーを使用して、継続的インテグレーションと継続的デプロイメント(CI/CD)のワークフローを設定します。これにより、自動化されたテストやビルドプロセスを容易に構築できます。

  5. プロジェクトの管理: SourceHutのタスク管理ツールを使用して、プロジェクトの進行状況を追跡します。シンプルで直感的なインターフェースを活用し、タスクやマイルストーンを効率的に管理しましょう。

  6. 自動化

  7. メーリングリスト

参考