アップロード管理

アップロードは、GitLabに単一のファイルとして送信することができるすべてのユーザーデータを表します。 例として、アバターやノートの添付ファイルはアップロードです。 アップロードはGitLabの機能に不可欠であるため、無効にすることはできません。

ローカルストレージの使用

注:これはデフォルトの設定です

アップロードがローカルに保存される場所を変更するには、以下の手順に従ってください。

オムニバスのインストールで:

注意:歴史的な理由から、アップロードはベースディレクトリに保存されます。デフォルトはuploads/-/systemです。既存の GitLab インストールでこの設定オプションを変更することは強く推奨されません。

アップロードはデフォルトで/var/opt/gitlab/gitlab-rails/uploadsに保存されます。

  1. 例えばストレージパスを/mnt/storage/uploadsに変更するには、/etc/gitlab/gitlab.rb を編集し、以下の行を追加します:

    gitlab_rails['uploads_storage_path'] = "/mnt/storage/"
    gitlab_rails['uploads_base_dir'] = "uploads"
    
  2. ファイルを保存し、変更を有効にするために GitLab を再設定します。

ソースからのインストールで:

アップロードはデフォルトで/home/git/gitlab/public/uploads/-/systemに保存されます。

  1. 保存パスを例えば/mnt/storage/uploadsに変更するには、/home/git/gitlab/config/gitlab.yml を編集し、以下の行を追加または修正します:

    uploads:
      storage_path: /mnt/storage
      base_dir: uploads
    
  2. ファイルを保存し、GitLabを再起動して変更を有効にします。

オブジェクトストレージの使用

注:

GitLab がインストールされているローカルディスクをアップロードの保存に使いたくない場合は、代わりに AWS S3 のようなオブジェクトストレージプロバイダを使うことができます。 この設定は、有効な AWS 認証情報がすでに設定されていることに依存します。

GitLabでのオブジェクトストレージの使用についてはこちらをご覧ください。

オブジェクトストレージの設定

ソースのインストールでは、以下の設定はuploads: の下にネストされ、次にobject_store:となります。Omnibus GitLab のインストールでは、これらの設定の前にuploads_object_store_が付きます。

設定 説明 デフォルト
enabled オブジェクトストレージの有効化/無効化 false
remote_directory アップロードが保存されるバケット名  
direct_upload アップロードパスからPumaを削除するにはtrueを設定します。 Workhorseはオブジェクトストレージへの実際のアーティファクトアップロードを処理し、Pumaはアップロードを追跡するための最小限の処理を行います。 ローカルの共有ストレージは必要ありません。 すべてのファイルに単一のストレージタイプをサポートするようになった場合、このオプションは削除される可能性があります。直接アップロードの詳細を読む。 false
background_upload 自動アップロードを無効にするにはfalseに設定します。 S3への直接アップロードが完了すると、このオプションは削除されます(direct_uploadtrue に設定されている場合は、background_uploadが上書きされます)。 true
proxy_download 送信されたすべてのファイルのプロキシを有効にするには、true を設定します。 このオプションは、すべてのデータをプロキシする代わりに、クライアントがリモートストレージから直接ダウンロードできるようにするため、イグレストラフィックを減らすことができます。 false
connection 以下の様々な接続オプション  

S3互換接続設定

接続設定はフォグが提供するものと同じで、以下の通りです:

設定 説明 デフォルト
provider 常に互換性のあるホストに対してAWS AWS
aws_access_key_id AWSクレデンシャル、または互換性のあるもの  
aws_secret_access_key AWSクレデンシャル、または互換性のあるもの  
aws_signature_version 使用するAWS署名のバージョン。2 または4 が有効なオプションです。Digital Ocean Spacesやその他のプロバイダでは、2が必要な場合があります。 4
enable_signature_v4_streaming AWS v4 署名でHTTP チャンク転送を有効にするには、true に設定します。 Oracle Cloud S3 では、falseに設定する必要があります。 true
region AWSリージョン 米東1
host AWSを使用しない場合のS3互換ホスト(例:localhost またはstorage.example.com s3.amazonaws.com
endpoint MinIOなどのS3互換サービスを設定する際に、以下のようなURLを入力することで使用できます。http://127.0.0.1:9000 (オプション)
path_style bucket_name.host/objectの代わりにhost/bucket_name/object スタイルのパスを使用する場合はtrue に設定します。 AWS S3 の場合はfalse のままにします。 false
use_iam_profile アクセスキーの代わりに IAM プロファイルを使用するには、true に設定します。 false

オムニバスのインストールで:

アップロードはデフォルトで/var/opt/gitlab/gitlab-rails/public/uploads/-/systemに保存されます。

  1. /etc/gitlab/gitlab.rb を編集し、以下の行を必要な値に置き換えて追加します:

    gitlab_rails['uploads_object_store_enabled'] = true
    gitlab_rails['uploads_object_store_remote_directory'] = "uploads"
    gitlab_rails['uploads_object_store_connection'] = {
      'provider' => 'AWS',
      'region' => 'eu-central-1',
      'aws_access_key_id' => 'AWS_ACCESS_KEY_ID',
      'aws_secret_access_key' => 'AWS_SECRET_ACCESS_KEY'
    }
    
    注意:AWS IAMプロファイルを使用している場合は、AWSアクセスキーとシークレットアクセスキー/値のペアを必ず省略してください。
    gitlab_rails['uploads_object_store_connection'] = {
      'provider' => 'AWS',
      'region' => 'eu-central-1',
      'use_iam_profile' => true
    }
    
  2. ファイルを保存し、変更を有効にするために GitLab を再設定します。
  3. gitlab:uploads:migrate Rakeタスクを使って、既存のローカルアップロードをオブジェクトストレージに移行します。

ソースからのインストールで:

アップロードはデフォルトで/home/git/gitlab/public/uploads/-/systemに保存されます。

  1. /home/git/gitlab/config/gitlab.yml を編集し、以下の行を追加または修正してください:

    uploads:
      object_store:
        enabled: true
        remote_directory: "uploads" # The bucket name
        connection:
          provider: AWS # Only AWS supported at the moment
          aws_access_key_id: AWS_ACESS_KEY_ID
          aws_secret_access_key: AWS_SECRET_ACCESS_KEY
          region: eu-central-1
    
  2. ファイルを保存し、GitLabを再起動して変更を有効にします。
  3. gitlab:uploads:migrate Rakeタスクを使って、既存のローカルアップロードをオブジェクトストレージに移行します。

Oracle Cloud S3接続設定

Oracle Cloud S3は以下の設定を必ず使用する必要があることに注意してください:

設定
enable_signature_v4_streaming false
path_style true

enable_signature_v4_streamingtrueに設定されている場合、以下のエラーが表示されることがあります:

STREAMING-AWS4-HMAC-SHA256-PAYLOAD is not supported

OpenStack互換の接続設定

接続設定はフォグが提供するものと同じで、以下の通りです:

設定 説明 デフォルト
provider 常に互換性のあるホストに対してOpenStack OpenStack
openstack_username OpenStackユーザー名  
openstack_api_key OpenStack API キー  
openstack_temp_url_key 一時的な URL を生成するための OpenStack キー  
openstack_auth_url OpenStack 認証エンドポイント  
openstack_region OpenStackリージョン  
openstack_tenant OpenStackテナントID  

オムニバスのインストールで:

アップロードはデフォルトで/var/opt/gitlab/gitlab-rails/public/uploads/-/systemに保存されます。

  1. /etc/gitlab/gitlab.rb を編集し、以下の行を必要な値に置き換えて追加します:

    gitlab_rails['uploads_object_store_remote_directory'] = "OPENSTACK_OBJECT_CONTAINER_NAME"
    gitlab_rails['uploads_object_store_connection'] = {
     'provider' => 'OpenStack',
     'openstack_username' => 'OPENSTACK_USERNAME',
     'openstack_api_key' => 'OPENSTACK_PASSWORD',
     'openstack_temp_url_key' => 'OPENSTACK_TEMP_URL_KEY',
     'openstack_auth_url' => 'https://auth.cloud.ovh.net/v2.0/',
     'openstack_region' => 'DE1',
     'openstack_tenant' => 'TENANT_ID',
    }
    
  2. ファイルを保存し、変更を有効にするために GitLab を再設定します。
  3. gitlab:uploads:migrate Rakeタスクを使って、既存のローカルアップロードをオブジェクトストレージに移行します。

ソースからのインストールで:

アップロードはデフォルトで/home/git/gitlab/public/uploads/-/systemに保存されます。

  1. /home/git/gitlab/config/gitlab.yml を編集し、以下の行を追加または修正してください:

    uploads:
      object_store:
        enabled: true
        direct_upload: false
        background_upload: true
        proxy_download: false
        remote_directory: OPENSTACK_OBJECT_CONTAINER_NAME
        connection:
          provider: OpenStack
          openstack_username: OPENSTACK_USERNAME
          openstack_api_key: OPENSTACK_PASSWORD
          openstack_temp_url_key: OPENSTACK_TEMP_URL_KEY
          openstack_auth_url: 'https://auth.cloud.ovh.net/v2.0/'
          openstack_region: DE1
          openstack_tenant: 'TENANT_ID'
    
  2. ファイルを保存し、変更を有効にするために GitLab を再設定します。
  3. gitlab:uploads:migrate Rakeタスクを使って、既存のローカルアップロードをオブジェクトストレージに移行します。