Ubuntu 16.04にGitBucketをインストールする方法

このガイドでは、Ubuntu 16.04を実行するVultrインスタンス用のGitBucketの基本的なインストールとセットアップについて説明し、non-rootユーザーとしてコマンドを実行していることを前提としています。

前提条件

  • 少なくとも 1GBのRAMを持つVultrサーバーインスタンス(遅いとはいえ、より小さなインスタンスが機能する場合があります)。
  • openjdk-8-jre 必須、古いバージョンは機能しません。
  • wget GitBucketパッケージのダウンロードに使用されます。
  • nginx オプションで、GitBucketにリバースプロキシを提供します
  • systemd GitBucketプロセスの開始と停止を管理します

前提条件のインストール

GitBucketを使用するには、サーバーにJava 8以降がインストールされている必要があります。Java 8をまだインストールしていない場合は、まずローカルパッケージリストを更新します。

sudo apt update

次に、Java 8ランタイムパッケージをインストールします。

sudo apt install openjdk-8-jre

GitBucketのインストール

非特権ユーザーの作成

先に進む前に、GitBucketを実行するための非特権ユーザーを作成する必要があります。非特権ユーザーでGitBucketを実行すると、インストールが独自のデータディレクトリの外側に書き込むことが制限され、サーバーのセキュリティが強化されます。次のコマンドを実行して、というシステムユーザーを作成しますgitbucket

sudo adduser --system gitbucket

システムユーザーを作成したため、デフォルトのシェルは/bin/falseであり、を実行するときに追加のシェル引数を指定しない限り、現在のシェルに戻されますsu。新しく作成したユーザーにログインします。

sudo su - gitbucket -s /bin/bash

シェルのプロンプトが変更され、新しいシステムユーザーにログインします。

GitBucketのダウンロード/更新

移動GitBucketは、ページを解放し、利用可能な最新バージョンを検索します。gitbucket.warパッケージのURLをコピーし、新しいユーザーのホームディレクトリにいることを確認して、でダウンロードしwgetます。

cd ~/
wget https://github.com/gitbucket/gitbucket/releases/download/4.18.0/gitbucket.war

GitBucketパッケージを更新するたびに、この手順を繰り返す必要があります。

GitBucketの初期構成

パッケージをダウンロードしたら、GitBucketを手動で起動して初期構成を行う必要があります。

java -jar gitbucket.war --port 8080

ポート8080が別のプロセスによってすでに使用されている場合は、GitBucketが今リッスンするポートを変更できます。このガイドでは、GitBucketがポートでリッスンしていることを前提としています8080

これにより、サーバーのパブリックネットワークインターフェースでGitBucketが起動し、指定したポートでリッスンします。しばらくすると、次のメッセージが表示されます。

INFO:oejs.Server:main: Started @15891ms

Vultrのファイアウォールを使用している場合は、GultBucketがリッスンしているポートを開く必要があります。Vultrのファイアウォールはホワイトリストとして機能し、特に指定がない限りポートを許可するトラフィックを拒否します。

これで、GitBucketインストールがオンラインになり、インターネットからアクセスできるようになります。Webブラウザーを使用して、サーバーのパブリックアドレスに接続します(GitBucketが実行されているポートを必ず指定してください(つまりhttp://203.0.113.0:8080またはhttp://example.com:8080))。GitBucketのホームページにアクセスします。

ただし、デフォルトの管理者アカウントのパスワードは変更する必要があります。これを行うにSign inは、Webインターフェースの右上にあるボタンから管理者アカウントにログインします。管理者アカウントのデフォルトのログインはroot、ユーザー名用であり、次にrootパスワード用です。ログインすると、ボタンはプロファイルアイコンとドロップダウンに置き換わります。ドロップダウンを展開してを選択Account Settingsし、アカウント設定ウィザードで新しいより安全なパスワードを設定します。

デフォルトの管理者アカウントの認証情報を更新し、GitBucketがこの最小限の構成で起動することを確認したら、「CTRL+C」でJavaプロセスを終了し、で現在のシェルを閉じexitます。

Systemdサービスの作成

現在、GitBucketを実行するには、SSH経由でサーバーにアクセスし、シェルから手動でプロセスを開始する必要があります。幸い、Ubuntuにはがあらかじめパッケージ化されSystemdているため、GitBucketを自動起動してシステムが保守するサービスを作成できます。

を使用nanoして、/etc/systemd/systemディレクトリに新しいユニットファイルを作成します。

sudo nano /etc/systemd/system/gitbucket.service

次に、以下の内容をファイルにコピーします。

[Unit]
Description=GitBucket
After=network.target
[Service]
ExecStart=/usr/bin/java -jar /home/gitbucket/gitbucket.war --port 8080
ExecStop=/bin/kill -SIGINT $MAINPID
Type=simple
User=gitbucket
[Install]
WantedBy=multi-user.target

このユニットファイルは、GitBucketの基本的な起動とシャットダウンの動作を定義し、ローカルのみのネットワークインターフェースで、権限のないシステムユーザーの下でサービスを実行します。

GitBucketがリッスンするポート番号を変更した--port場合は、ExecStartコマンドの引数を変更します。

CTRL+O新しいユニットファイルを保存( " ")してから、エディターを終了( " CTRL+X")します。新しいユニットファイルを検出するには、Systemdをリロードする必要があります。

sudo systemctl daemon-reload

Systemdがリロードされたら、新しいユニットが検出されてロードされたことを確認します。

sudo systemctl status gitbucket

次の出力が表示されます。

gitbucket.service - GitBucket
   Loaded: loaded (/etc/systemd/system/gitbucket.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

最後に、サーバーの起動時に新しいユニットが自動的に開始するようにして、初めてサービスを開始します。

sudo systemctl enable gitbucket
sudo systemctl start gitbucket

サービスが開始されると、IPアドレスとポート番号を使用してブラウザーからGitBucketに再びアクセスできるようになります。

Nginxリバースプロキシの構成

ポートを介してGitBucketを直接公開でき8080ますが、Nginxを介してGitBucketを公開することで、パフォーマンスを向上させ、HTTP / 2、TLS暗号化、キャッシングルールなどの機能を構成できます。

Nginxの初期セットアップ

Nginxをまだインストールしていない場合は、パッケージリストを更新してください。

sudo apt update

次に、Nginxパッケージをインストールします。

sudo apt install nginx

Nginxがインストールされたら、ポート番号(またはまたは)なしでサーバーのIPアドレス介してWebサーバーにアクセスできることを確認します。成功すると、UbuntuのデフォルトのNginxランディングページが表示されます。http://203.0.113.0http://example.com

リバースプロキシの作成

/etc/nginx/sites-availableリバースプロキシの開始点として、既定のサイト構成をコピーします。

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/gitbucket

新しく作成した構成ファイルをで開きますnano

sudo nano /etc/nginx/sites-available/gitbucket

location /43行目で既存のブロックを見つけます。

location / {
  # First attempt to serve request as file, then
  # as directory, then fall back to displaying a 404.
  try_files $uri $uri/ =404;
}

現在、Nginxは/var/www/html着信HTTPリクエストと一致する場所にあるファイルを返そうとします。このブロックでリバースプロキシを構成することにより、この動作を変更する必要があります。これにより、Nginxサーバーに対して行われたすべてのHTTPリクエストが代わりにGitBucketインスタンスに送信されます。location /次のようにブロックを更新します。

location / {
    proxy_pass              http://localhost:8080; # The address GitBucket is listening on
    proxy_set_header        Host $host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_connect_timeout   150;
    proxy_send_timeout      100;
    proxy_read_timeout      100;
    proxy_buffers           4 32k;

    client_max_body_size    512m; # Needed for large Git operations over HTTP
    client_body_buffer_size 128k;
}

GitBucketがリッスンするポート番号を変更した場合は、proxy_passこれを反映するようにオプションを更新します。

新しい構成を有効にするには、で既存のデフォルト構成を無効にし/etc/nginx/sites-enabled/etc/nginx/sites-enabledから、次の手順で新しい構成にシンボリックリンクする必要があります。

sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/gitbucket /etc/nginx/sites-enabled/gitbucket

設定ファイルを有効にしたら、構文エラーがないか確認してください。

sudo nginx -t

次に、Nginxサーバーを再起動して、新しいサイト構成を有効にします。

sudo systemctl restart nginx

これで、ポート番号なしでサーバーのパブリックアドレスあるGitBucketインストールにアクセスできるようになります。

公衆インターネットからのGitBucketプロセスの保護

現在、GitBucketインスタンスはサーバーのパブリックネットワークインターフェイスでリッスンしています。これにより、ユーザーはGitBucketが現在リッスンしているアドレスに接続することにより、Nginxプロキシをバイパスできます。これを解決するには、前に作成したユニットファイルを変更する必要があります。でユニットファイルを開きますnano

sudo nano /etc/systemd/system/gitbucket.service

--host 127.0.0.1そのExecStartようにコマンドに追加します。

...
ExecStart=/usr/bin/java -jar /home/gitbucket/gitbucket.war --port 8080 --host 127.0.0.1
...

これにより、GitBucketはサーバーのローカルネットワークインターフェイス上の接続のみを受け入れます。もう一度、CTRL+Oファイルを保存( " ")しCTRL+X、エディターを閉じ( " ")、Systemdをリロードして、GitBucketユニットを再起動します。

sudo systemctl daemon-reload
sudo systemctl restart gitbucket

Vultrのファイアウォールを使用している場合は、初期セットアップ中にGitBucketサーバーにアクセスするために追加したポート規則も削除する必要があります。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。