「Gitea」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(動機)
(同期)
11行目: 11行目:
   
 
Gitea はデータベースバックエンドを必要とします。以下のデータベースがサポートされています:
 
Gitea はデータベースバックエンドを必要とします。以下のデータベースがサポートされています:
* [[MariaDB]]
+
* [[MariaDB]]/[[MySQL]]
 
* [[PostgreSQL]]
 
* [[PostgreSQL]]
 
* [[SQLite]]
 
* [[SQLite]]
 
* [https://github.com/pingcap/tidb TiDB]
 
* [https://github.com/pingcap/tidb TiDB]
   
=== MariaDB ===
+
== 実行 ==
  +
{{Note|全てのインターフェイスで Gitea を使えるようにするには、{{ic|/var/lib/gitea/custom/conf/app.ini}} に {{ic|1=HTTP_ADDR = 0.0.0.0}} を設定してください。}}
  +
  +
{{ic|gitea.service}} を[[起動]]・[[有効化]]してください。{{ic|http://localhost:3000}} からウェブインターフェイスを開けます。
  +
  +
始めて Gitea を起動したときは {{ic|http://localhost:3000/install}} にリダイレクトされます。
  +
  +
== 設定 ==
  +
{{Note|{{AUR|gitea-git}} では最初のインストール時に基本的な設定ファイルが {{ic|/var/lib/gitea/custom/conf/app.ini}} に用意されます。}}
  +
ユーザーの設定ファイルは {{ic|/etc/gitea/app.ini}} です。メインの設定ファイル ({{ic|/var/lib/gitea/conf/app.ini}}) は編集してください。バイナリに含まれており、アップデートで上書きされる可能性があるためです。代わりに {{ic|/var/lib/gitea/conf/app.ini}} を {{ic|/etc/gitea/app.ini}} にコピーして使ってください。
  +
  +
Gitea アプリケーションとリポジトリデータは {{ic|/var/lib/gitea}} に保存されますが、{{ic|/etc/gitea/app.ini}} で別のディレクトリを指定することもできます。
  +
  +
=== MariaDB/MySQL ===
 
{{Note|listen アドレスとして {{ic|/var/run/mysqld/mysqld.sock}} を使用することで MySQL のソケットを利用することができます。}}
 
{{Note|listen アドレスとして {{ic|/var/run/mysqld/mysqld.sock}} を使用することで MySQL のソケットを利用することができます。}}
   
 
[[MariaDB]] は以下のように設定してください:
 
[[MariaDB]] は以下のように設定してください:
 
{{hc|$ mysql -u root -p|2=
 
{{hc|$ mysql -u root -p|2=
mysql> CREATE DATABASE `gitea` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
+
mysql> CREATE DATABASE `gitea` DEFAULT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_general_ci`;
mysql> CREATE USER '''gitea'''@'localhost' IDENTIFIED BY ''''password'''';
+
mysql> CREATE USER `gitea`@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL ON `gitea`.* TO 'gitea'@'localhost';
+
mysql> GRANT ALL PRIVILEGES ON `gitea`.* TO `gitea`@`localhost`;
 
mysql> \q
 
mysql> \q
 
}}
 
}}
32行目: 45行目:
   
 
最初の起動時や {{ic|app.ini}} を編集して MariaDB を設定します:
 
最初の起動時や {{ic|app.ini}} を編集して MariaDB を設定します:
{{hc|/var/lib/gitea/custom/conf/app.ini|2=
+
{{hc|/etc/gitea/app.ini|2=
 
DB_TYPE = mysql
 
DB_TYPE = mysql
HOST = /var/run/mysqld/mysqld.sock ; or 127.0.0.1:3306
+
HOST = 127.0.0.1:3306 ; or /var/run/mysqld/mysqld.sock
 
NAME = gitea
 
NAME = gitea
 
USER = gitea
 
USER = gitea
40行目: 53行目:
 
}}
 
}}
   
  +
=== SSH サポートの有効化 ===
== 実行 ==
 
  +
{{Note|
{{ic|gitea.service}} を[[起動]]・[[有効化]]してください。ウェブインターフェイスは {{ic|http://localhost:3000}} からアクセスできます。
 
  +
*{{AUR|gitea-git}} は {{ic|gitea}} [[グループ]]と[[ユーザー]]を使います。
  +
*{{AUR|gitea}} は {{ic|git}} [[グループ]]と[[ユーザー]]を使用します。下に出てくるコマンドでは {{ic|gitea}} ではなく {{ic|git}} を使ってください。
  +
*パスワードプロンプトが表示される場合、[[SSH 鍵#トラブルシューティング]]を見てください。
  +
}}
  +
{{Warning|SSH で全ての設定をするまではセッションを閉じてはいけません。ロックアウトされてしまいます。}}
   
  +
*[[SSH]] が正しく設定されていることを確認。
Gitea を最初に起動したときは {{ic|http://localhost:3000/install}} にリダイレクトされます。
 
  +
*{{ic|/home/gitea}} をホームディレクトリとして {{ic|gitea}} [[グループ]]と[[ユーザー]]を作成:
  +
# groupadd --system gitea
  +
# useradd --system -c 'Gitea' -g gitea -m -d /home/gitea -s /bin/bash gitea
  +
*パーミッションを適切に設定:
  +
# chown -R gitea:gitea /var/log/gitea
  +
# chown -R gitea:gitea /var/lib/gitea
  +
*{{ic|app.ini}} の [[SSH]] 設定を更新:
  +
{{hc|/etc/gitea/app.ini|2=
  +
[server]
  +
; Disable SSH feature when not available
  +
DISABLE_SSH = '''false'''
  +
; Domain name to be exposed in clone URL
  +
SSH_DOMAIN = %(DOMAIN)s
  +
; Port number to be exposed in clone URL
  +
SSH_PORT = '''22'''
  +
; Root path of SSH directory, default is '~/.ssh', but you have to use '/home/git/.ssh'.
  +
SSH_ROOT_PATH = '''/home/gitea/.ssh'''
  +
}}
  +
* [[Secure_Shell#SSH の設定|SSH]] の {{ic|AuthorizedKeysFile .ssh/authorized_keys}} と {{ic|AllowUsers gitea}} の設定を更新:
  +
{{hc|/etc/ssh/sshd_config|2=
  +
Port 22
  +
AuthorizedKeysFile '''.ssh/authorized_keys'''
  +
UseDNS no
  +
PermitUserEnvironment '''yes'''
  +
PermitRootLogin no
  +
PasswordAuthentication no
  +
PermitEmptyPasswords no
  +
AllowUsers archie '''gitea'''
  +
PubkeyAuthentication yes
  +
PrintMotd no
  +
Subsystem sftp /usr/lib/ssh/sftp-server
  +
}}
  +
*[[SSH 鍵#トラブルシューティング|SSH のパーミッション]]を正しく設定。
  +
*{{ic|gitea.service}} と {{ic|sshd.service}} を[[再起動]]。
  +
*クライアントで [[SSH 鍵#SSH 鍵のペアを生成|SSH 鍵のペア]]を生成。
  +
*生成した {{ic|~/.ssh/id_rsa.pub}} の中身を Gitea ウェブインターフェイスの '''Your Settings''', '''SSH Keys''' の '''Add Key'''に追加。
   
  +
これで SSH 認証を使ってリポジトリを管理できるようになり、ユーザー名とパスワードの入力が不要となります。
== 設定 ==
 
ユーザー設定ファイルは {{ic|/var/lib/gitea/custom/conf/app.ini}} です。メインの設定ファイルである {{ic|/var/lib/gitea/conf/app.ini}} を編集してはいけません。このファイルはバイナリに含められるため、アップデートによって上書きされてしまいます。
 
 
Gitea のアプリケーションやリポジトリのデータは {{ic|/var/lib/gitea}} に保存されます。{{ic|/var/lib/gitea/custom/conf/app.ini}} で別の保存場所を指定することもできます。
 
   
 
=== HTTP プロトコルの無効化 ===
 
=== HTTP プロトコルの無効化 ===
Gitea ではデフォルトで HTTP プロトコルを使ってリポジトリを操作できるようになっています。{{ic|DISABLE_HTTP_GIT}} を '''false''' に設定することでサポートを無効化できます。
+
Gitea ではデフォルトで HTTP プロトコルを使ってリポジトリを操作できるようになっています。{{ic|DISABLE_HTTP_GIT}} を '''true''' に設定することでサポートを無効化できます。
   
 
== 高度な設定 ==
 
== 高度な設定 ==
57行目: 108行目:
   
 
=== nginx をリバースプロキシとして設定 ===
 
=== nginx をリバースプロキシとして設定 ===
  +
{{Tip|[[Let’s Encrypt]] はフリーの自動オープン認証局です。コマンドラインから SSL 証明書を要求して自動で設定できるプラグインが存在します。}}
  +
 
[[nginx]] をリバースプロキシとして [[OpenSSL]] を使用する例:
 
[[nginx]] をリバースプロキシとして [[OpenSSL]] を使用する例:
 
{{hc|/etc/nginx/servers-available/git|2=
 
{{hc|/etc/nginx/servers-available/git|2=
62行目: 115行目:
 
server {
 
server {
 
listen 80;
 
listen 80;
  +
listen [::]:80;
 
server_name git.domain.tld;
 
server_name git.domain.tld;
 
return 301 https://$server_name$request_uri;
 
return 301 https://$server_name$request_uri;
68行目: 122行目:
 
server {
 
server {
 
listen 443 ssl http2;
 
listen 443 ssl http2;
  +
listen [::]:443 ssl http2;
 
server_name git.domain.tld;
 
server_name git.domain.tld;
  +
client_max_body_size 50M;
 
ssl_certificate ssl/'''cert.crt''';
 
ssl_certificate ssl/'''cert.crt''';
 
ssl_certificate_key ssl/'''cert.key''';
 
ssl_certificate_key ssl/'''cert.key''';
   
 
location / {
 
location / {
proxy_set_header X-Real-IP $remote_addr;
 
 
proxy_pass http://localhost:3000;
 
proxy_pass http://localhost:3000;
  +
proxy_set_header Host $host;
  +
proxy_set_header X-Real-IP $remote_addr;
 
}
 
}
 
}
 
}
89行目: 146行目:
 
}}
 
}}
 
{{Note|{{ic|app.ini}} で SSL 証明書のオプションを有効にする必要はありません。}}
 
{{Note|{{ic|app.ini}} で SSL 証明書のオプションを有効にする必要はありません。}}
  +
  +
最後に ''cookie'' セクションを更新して COOKIE_SECURE を '''true''' に設定してください。
   
 
== 参照 ==
 
== 参照 ==

2017年7月21日 (金) 20:42時点における版

関連記事

Gitea は Go で書かれた軽量なコードホスティングサーバーである Gogs のコミュニティによるフォークです。MIT ライセンスで配布されています。

インストール

giteaAURgitea-gitAUR パッケージをインストールしてください。

Gitea はデータベースバックエンドを必要とします。以下のデータベースがサポートされています:

実行

ノート: 全てのインターフェイスで Gitea を使えるようにするには、/var/lib/gitea/custom/conf/app.iniHTTP_ADDR = 0.0.0.0 を設定してください。

gitea.service起動有効化してください。http://localhost:3000 からウェブインターフェイスを開けます。

始めて Gitea を起動したときは http://localhost:3000/install にリダイレクトされます。

設定

ノート: gitea-gitAUR では最初のインストール時に基本的な設定ファイルが /var/lib/gitea/custom/conf/app.ini に用意されます。

ユーザーの設定ファイルは /etc/gitea/app.ini です。メインの設定ファイル (/var/lib/gitea/conf/app.ini) は編集してください。バイナリに含まれており、アップデートで上書きされる可能性があるためです。代わりに /var/lib/gitea/conf/app.ini/etc/gitea/app.ini にコピーして使ってください。

Gitea アプリケーションとリポジトリデータは /var/lib/gitea に保存されますが、/etc/gitea/app.ini で別のディレクトリを指定することもできます。

MariaDB/MySQL

ノート: listen アドレスとして /var/run/mysqld/mysqld.sock を使用することで MySQL のソケットを利用することができます。

MariaDB は以下のように設定してください:

$ mysql -u root -p
mysql> CREATE DATABASE `gitea` DEFAULT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_general_ci`;
mysql> CREATE USER `gitea`@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON `gitea`.* TO `gitea`@`localhost`;
mysql> \q

新しいユーザーで新しいデータベースへの接続を試行してみてください:

$ mysql -u gitea -p -D gitea

最初の起動時や app.ini を編集して MariaDB を設定します:

/etc/gitea/app.ini
DB_TYPE  = mysql
HOST     = 127.0.0.1:3306 ; or /var/run/mysqld/mysqld.sock
NAME     = gitea
USER     = gitea
PASSWD   = password

SSH サポートの有効化

ノート:
警告: SSH で全ての設定をするまではセッションを閉じてはいけません。ロックアウトされてしまいます。
  • SSH が正しく設定されていることを確認。
  • /home/gitea をホームディレクトリとして gitea グループユーザーを作成:
# groupadd --system gitea
# useradd --system -c 'Gitea' -g gitea -m -d /home/gitea -s /bin/bash gitea
  • パーミッションを適切に設定:
# chown -R gitea:gitea /var/log/gitea
# chown -R gitea:gitea /var/lib/gitea
  • app.iniSSH 設定を更新:
/etc/gitea/app.ini
[server]
; Disable SSH feature when not available
DISABLE_SSH = false
; Domain name to be exposed in clone URL
SSH_DOMAIN = %(DOMAIN)s
; Port number to be exposed in clone URL
SSH_PORT = 22
; Root path of SSH directory, default is '~/.ssh', but you have to use '/home/git/.ssh'.
SSH_ROOT_PATH = /home/gitea/.ssh
  • SSHAuthorizedKeysFile .ssh/authorized_keysAllowUsers gitea の設定を更新:
/etc/ssh/sshd_config
Port 22
AuthorizedKeysFile .ssh/authorized_keys
UseDNS no
PermitUserEnvironment yes
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
AllowUsers archie gitea
PubkeyAuthentication yes
PrintMotd no
Subsystem sftp /usr/lib/ssh/sftp-server
  • SSH のパーミッションを正しく設定。
  • gitea.servicesshd.service再起動
  • クライアントで SSH 鍵のペアを生成。
  • 生成した ~/.ssh/id_rsa.pub の中身を Gitea ウェブインターフェイスの Your Settings, SSH KeysAdd Keyに追加。

これで SSH 認証を使ってリポジトリを管理できるようになり、ユーザー名とパスワードの入力が不要となります。

HTTP プロトコルの無効化

Gitea ではデフォルトで HTTP プロトコルを使ってリポジトリを操作できるようになっています。DISABLE_HTTP_GITtrue に設定することでサポートを無効化できます。

高度な設定

他の設定例は Gogs の FAQ を見てください。

nginx をリバースプロキシとして設定

ヒント: Let’s Encrypt はフリーの自動オープン認証局です。コマンドラインから SSL 証明書を要求して自動で設定できるプラグインが存在します。

nginx をリバースプロキシとして OpenSSL を使用する例:

/etc/nginx/servers-available/git
# redirect to ssl
server {
  listen 80;
  listen [::]:80;
  server_name git.domain.tld;
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name git.domain.tld;
  client_max_body_size 50M;
  ssl_certificate ssl/cert.crt;
  ssl_certificate_key ssl/cert.key;

  location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

app.iniserver セクションを更新してください:

/var/lib/gitea/custom/conf/app.ini
[server]
PROTOCOL               = http
DOMAIN                 = git.domain.tld
ROOT_URL               = https://git.domain.tld/
HTTP_ADDR              = 0.0.0.0
HTTP_PORT              = 3000
ノート: app.ini で SSL 証明書のオプションを有効にする必要はありません。

最後に cookie セクションを更新して COOKIE_SECURE を true に設定してください。

参照