| tags:raspberry pi openwrt categories:computing

Gitea on OpenWRT

Gitea install on Pi

動きたいけど動けない。。 持ち出しgithubにするために、 GiteaをOpenWRTにインストールしました。

ほぼ間違いのないインストール・マニュアルは https://docs.gitea.io/en-us/install-from-binary/ にあります。一読のほど、

事前にgitとデーターベース(SQLite, MariaDB,PostreSQL)のパッケージが必要です。

root@OpenWrt:~$ opkg update
root@OpenWrt:~$ opkg install git git-http openssh-keygen bash
  • git-http: 今回は使わないけれど、git cloneで必要
  • openssh-keygen: SSH Key登録で必要
  • bash: 端末よりgit push時に必要

Userの作成

giteaを起動するユーザーアカウント(git)を設定します。 Homeディレクトリーなどはちょっと変えてます。

root@OpenWrt:~$ useradd -d /srv/git/ -s /bin/false -m -r git
root@OpenWrt:~$ mkdir -p /srv/git/
root@OpenWrt:~$ chown -R git:git /srv/git/

データー領域の作成(/opt/gitea)

マニュアルインストールのアプリは/optに設定ファイルとともに保存しておきます。 (ちょっと未だ、OpenWRTのディレクトリー構造の仕様が掴めない。。)

root@OpenWrt:~$ mkdir -p /opt/gitea/custom /opt/gitea/data /opt/gitea/log
root@OpenWrt:~$ chown -R git:git /opt/gitea/
root@OpenWrt:~$ chmod -R 750 /opt/gitea/

root@OpenWrt:~$ mkdir -p /opt/gitea/etc
root@OpenWrt:~$ chown root:git /opt/gitea/etc/
root@OpenWrt:~$ chmod 770 /opt/gitea/etc/

設定ファイルはのちに作成されます。

PostgreSql DBの作成

初期設定は済んでいるので一気にデータベースを作成します。こちらも少し変態バージョン。

root@openwrt:~% sudo -u postgres psql -c "CREATE USER gitea WITH PASSWORD 'gitea';"
root@openwrt:~% sudo -u postgres psql -c "CREATE DATABASE gitea OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';"

アプリケーションのダウンロード

カーネルは64ビットのaarch64なのでarm64バージョンをダウンロードして使います。

root@OpenWrt:~$ mkdir -p /opt/gitea/bin
root@OpenWrt:~$ wget -O /opt/gitea/bin/gitea https://dl.gitea.io/gitea/1.12/gitea-1.12
-linux-arm64
root@OpenWrt:~$ chmod +x /opt/gitea/bin/gitea

バイナリーでの提供なので、プログラムファイルを置き換えるだけでアップデートできます。 (データーベースの構造などに変更がなければですが、)

アプリケーションの起動と初期設定

gitユーザーで起動します。

sudo -u git /bin/ash -c 'GITEA_WORK_DIR=/opt/gitea/ /opt/gitea//bin/gitea web -c /opt/gitea/etc//app.ini'

ダァーーーと文字が走ります。

Gitea Inastall on OpenWRT

ことなく起動したら、ブラウザーから http://<<IP_ADDRESS>>:3000 にアクセスします。そしてRegisterより初期設定を行います。

データベースの登録などを書き込み終了、データーベースの初期化が背後で行われます。

Gitea Inastall on OpenWRT

設定の後の変更は/opt/gitea/etc/app.iniにて行います。

そしてログインをし直して同じくRegisterより、アカウントを作成します。

Gitea Inastall on OpenWRT

htopで状況を見てみると、この辺り(Syncthing, iniflux, Adblock, その他ネットワーク関連)でメモリー的には限界かな、、LAMPも入れようと思ったけどやめとこ。

Gitea Inastall on OpenWRT

そして、環境設定の読み込み設定を変更します。(私のルーターはぬけぬけのザルです。)

root@OpenWrt:~$ chmod 750 /opt/gitea/etc/
root@OpenWrt:~$ chmod 640 /opt/gitea/etc/app.ini

起動

起動スクリプトも提供されていますがどうも、OpenWRTではうまく動作しません。 上記の一発スクリプトで起動時に起動させます。なんか敗北感。。

Gitea Inastall on OpenWRT

リバースプロキシの設定は以下、

# Gitea server

server {

  listen 80;
  # listen 443 ssl;

  server_name gitea.lan;

  location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
  }

  # client_max_body_size 4G;
  keepalive_timeout 10;

}

でここはスッキリ。

おまけ

init.d起動スクリプトもありましたが、 ちょっとうまくいかないです。 立ち上がるようですが数秒で落ちる。

from: https://github.com/go-gitea/gitea/blob/master/contrib/init/debian/gitea

追記:

なんやかんやで、こげなスクリプトで動かしてます。。やっつけ感もりもりです。登録も忘れずに。

#!/bin/sh /etc/rc.common
# Gitea
#
# To restart your gitea instance, we recommend to use SIGHUP signal.
# If you know your gitea PID use kill -1 $GITEA_PID otherwise you can use killall -1 gitea or pkill -1 gitea
# To gracefully stop the gitea instance, a simple kill $GITEA_PID or killall gitea

# Start after PostgreSQL (S50)
START=80
STOP=20

start() {
        sudo -u git /bin/ash -c 'GITEA_WORK_DIR=/opt/gitea/ /opt/gitea/bin/gitea web -c /opt/gitea/etc/app.ini' &
}

stop() {
        killall gitea
}

root@OpenWrt:~$ service gitea enable
root@OpenWrt:~$ service gitea start

See Also