| tags:raspberry pi openwrt categories:computing
Gitea on OpenWRT
動きたいけど動けない。。 持ち出し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'
ダァーーーと文字が走ります。
ことなく起動したら、ブラウザーから
http://<<IP_ADDRESS>>:3000
にアクセスします。そしてRegisterより初期設定を行います。
データベースの登録などを書き込み終了、データーベースの初期化が背後で行われます。
設定の後の変更は/opt/gitea/etc/app.ini
にて行います。
そしてログインをし直して同じくRegisterより、アカウントを作成します。
htopで状況を見てみると、この辺り(Syncthing, iniflux, Adblock, その他ネットワーク関連)でメモリー的には限界かな、、LAMPも入れようと思ったけどやめとこ。
そして、環境設定の読み込み設定を変更します。(私のルーターはぬけぬけのザルです。)
root@OpenWrt:~$ chmod 750 /opt/gitea/etc/
root@OpenWrt:~$ chmod 640 /opt/gitea/etc/app.ini
起動
起動スクリプトも提供されていますがどうも、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