基本手順
パッケージからのインストール
概略
pacman にてインストール、systemd から起動、web から初期設定、(管理)ユーザー登録、systemd 自動起動への登録と進みます。
実行
$ sudo pacman -S gitea tea #公式関連ツールの tea も同時にインストールするのがお勧め。
$ pacman -Ql gitea
gitea /etc/
gitea /etc/gitea/
gitea /etc/gitea/app.ini
gitea /usr/
gitea /usr/bin/
gitea /usr/bin/gitea
gitea /usr/lib/
gitea /usr/lib/systemd/
gitea /usr/lib/systemd/system/
gitea /usr/lib/systemd/system/gitea.service
gitea /usr/lib/sysusers.d/
gitea /usr/lib/sysusers.d/gitea.conf
gitea /usr/lib/tmpfiles.d/
gitea /usr/lib/tmpfiles.d/gitea.conf
gitea /usr/share/
gitea /usr/share/licenses/
gitea /usr/share/licenses/gitea/
gitea /usr/share/licenses/gitea/LICENSE
$ cat /usr/lib/systemd/system/gitea.service
#cat の結果は一部抜粋
User=gitea #公式リポジトリでインストールすると gitea ユーザーとグループで設定される。
#gitea 公式ドキュメントでは git ユーザーのため読み替えと関連部分の変更が必要となる。
Group=gitea
Environment=USER=gitea HOME=/var/lib/gitea GITEA_WORK_DIR=/var/lib/gitea
ExecStart=/usr/bin/gitea web -c /etc/gitea/app.ini #設定ファイルは /etc/gitea/app.ini。
$ ls -l /etc/gitea
-rw-rw---- 1 root gitea 108763 Nov 22 20:20 app.ini
$ sudo -u gitea cat /etc/gitea/app.ini #公式手順では推奨されていないが直接編集も可能。
$ sudo systemctl start gitea
$ sudo systemctl status gitea #シェルにエラー表示を返してくれないため。
$ xdg-open http://localhost:3000 #もしくは任意のブラウザー、デフォルトポートは3000。
#初回は初期設定画面に飛ぶ、初期設定せずに放置するのはセキュリティリスク。
#折り畳まれた部分に最初のユーザー登録があり、最初に登録したユーザーは自動で Admin 権限を持つ。
#下に参考画像掲載。
$ sudo -u gitea gitea admin user create --username hoge --email fuga@piyo.com --admin --random-password #WEBで登録した場合には不要。
generated random password is 'HOGEHOGE'
New user 'hoge' has been successfully created!
$ sudo -u gitea gitea admin user list
ID Username Email IsActive IsAdmin 2FA
1 hoge fuga@piyo.com true true false
$ sudo -u gitea gitea doctor check --all #簡易セキュリティチェック
$ sudo systemctl enable gitea
補足
参考までに 公式手順へのリンク も載せておきます。公式ではインストール前に データベースの用意 がありますが、基本的には sqlite3 か既に動作させているデータベースサーバーの利用で足りるかと考え紹介は省略します。
ユーザーの Admin 権限の変更関係のドキュメントとソースが発見できない、おそらく存在しない。既に作成済でリポジトリ等を所持しているユーザーの権限昇降に困る。インストール完了後の初期設定周辺の公式ドキュメントが存在しない。
ユーザーログインからリポジトリ作成
Webからの利用
ブラウザーで設定したサーバーとポート、デフォルトは http(s)://localhost:3000 に接続して下さい、基本的に github と同じ感覚で使えます。
CLIからの利用
API用トークンの取得
WEB の settings → applications → Manage Access Tokensから取得可能です。スコープについては 公式ドキュメント 参照。
CLIから取得したい場合は下記等です。API利用の公式ドキュメント が存在します。ドキュメント通りにやったら access token must have a scope エラーで初っ端から動作せず、ソースを読んで解決するはめに。
# gitea admin サブコマンド利用
$ sudo -u gitea gitea admin user generate-access-token --username hoge --token-name FUGA --scopes all
Access token was successfully created: HOGETOKEN
# curl による API利用
$ curl -H "Content-Type: application/json" -d '{"name":"[TOKENNAME]" , "scopes" : ["all"]}' -u [USERNAME]:[PASSWORD] http://localhost:3000/api/v1/users/[USERNAME]/tokens #scopesは配列
{"id",HOGE,"name":"[TOKENNAME]","sha1":"HOGETOKEN","token_last_eight":"PIYO","scopes":["all"]}
リポジトリ作成
公式手順 curlからの利用
$ curl "http://localhost:3000/api/v1/user/repos" -H "accept: application/json" -H "Authorization: token HOGETOKEN" -H "Content-Type: application/json" -d "{ \"name\": \"FUGA\" , \"private\" : true }"
他のAPIについては 自サーバーの /api/swagger もしくは 公式のAPIドキュメント をブラウズすれば curl によるコマンド例等も出してくれます。表示されるコマンド例にはブラウザでの表示という仕様上の制限があるので参考程度です。 基本的には非公式のツールを導入した方が簡便でしょう。
非公式ツールからの利用
gitea-cliは最終更新こそ古いですが、bashスクリプトのため変更しやすく、プラグイン機能も存在するため拡張も容易です。
$ wget -O getea-cli https://raw.githubusercontent.com/bashup/gitea-cli/refs/heads/master/bin/gitea
$ chmod u+x gitea-cli
$ vi $HOME/.config/gitearc #GITEA_USER=HOGE GITEA_URL=http://localhost:3000 GITEA_API_TOKEN=HOGETOKEN を三行で書きます。もしくは環境変数として設定しても機能します。
$ ./gitea-cli --description "FUGA" --private new HOGE #リポジトリ作成
他にもリポジトリの作成はgrpドキュメント未整備。ソースに文字列がハードコードされてるのも疑問。https前提でローカルでの運用が面倒。 や gcliドキュメント未整備、ついでにソースの異常検出等が気に入らない、Valgrindは日常的に利用しましょう。 等がありますが、個人的には使用していません。
issue関連
Web
ほぼ github感覚で利用できます。
CLI
giteaチーム作成の teaを推奨します。要は gh コマンドです。
$ tea help
tea - command line tool to interact with Gitea
version Version: 0.9.2 golang: 1.20.1
USAGE
tea command [subcommand] [command options] [arguments...]
DESCRIPTION
tea is a productivity helper for Gitea. It can be used to manage most entities on
one or multiple Gitea instances & provides local helpers like 'tea pr checkout'.
tea tries to make use of context provided by the repository in $PWD if available.
tea works best in a upstream/fork workflow, when the local main branch tracks the
upstream repo. tea assumes that local git state is published on the remote before
doing operations with tea. Configuration is persisted in $XDG_CONFIG_HOME/tea.
COMMANDS
help, h Shows a list of commands or help for one command
ENTITIES:
issues, issue, i List, create and update issues
pulls, pull, pr Manage and checkout pull requests
labels, label Manage issue labels
milestones, milestone, ms List and create milestones
releases, release, r Manage releases
times, time, t Operate on tracked times of a repository's issues & pulls
organizations, organization, org List, create, delete organizations
repos, repo Show repository details
comment, c Add a comment to an issue / pr
HELPERS:
open, o Open something of the repository in web browser
notifications, notification, n Show notifications
clone, C Clone a repository locally
MISCELLANEOUS:
whoami Show current logged in user
admin, a Operations requiring admin access on the Gitea instance
SETUP:
logins, login Log in to a Gitea server
logout Log out from a Gitea server
shellcompletion, autocomplete Install shell completion for tea
OPTIONS
--help, -h show help (default: false)
--version, -v print the version (default: false)
EXAMPLES
tea login add # add a login once to get started
tea pulls # list open pulls for the repo in $PWD
tea pulls --repo $HOME/foo # list open pulls for the repo in $HOME/foo
tea pulls --remote upstream # list open pulls for the repo pointed at by
# your local "upstream" git remote
# list open pulls for any gitea repo at the given login instance
tea pulls --repo gitea/tea --login gitea.com
tea milestone issues 0.7.0 # view open issues for milestone '0.7.0'
tea issue 189 # view contents of issue 189
tea open 189 # open web ui for issue 189
tea open milestones # open web ui for milestones
# send gitea desktop notifications every 5 minutes (bash + libnotify)
while :; do tea notifications --mine -o simple | xargs -i notify-send {}; sleep 300; done
ABOUT
Written & maintained by The Gitea Authors.
If you find a bug or want to contribute, we'll welcome you at https://gitea.com/gitea/tea.
More info about Gitea itself on https://gitea.io.
$ tea login add --url="http://localhost:3000" --token=HOGETOKEN #tea login add のみで対話型インターフェイスが利用可能です。tokenを与えずBasic認証しようとするとスコープ指定エラーが出ます。
$ tea login
+------+-----------------------+-----------+------+---------+
| NAME | URL | SSHHOST | USER | DEFAULT |
+------+-----------------------+-----------+------+---------+
| HOGE | http://localhost:3000 | localhost | FUGA | false |
+------+-----------------------+-----------+------+---------+
$ tea login HOGE
$ tea issues
$ tea issues --help
その他諸々
他の関連ツールはAwesome Giteaあたりから探すのが早いです。
git push でのリポジトリ作成には /etc/gitea/app.ini の[repository]欄に ENABLE_PUSH_CREATE_USER = true 並びに ENABLE_PUSH_CREATE_ORG = true を追記します。
TODO
CIDI用の act_runner 記事、変態変態変態向けの rootless 記事追加。
前書きにgitea紹介とDevOps環境の必要性を追加、紹介記事に変更。