129 lines
4.2 KiB
Markdown
129 lines
4.2 KiB
Markdown
|
+++
|
||
|
date = "2019-12-06"
|
||
|
tags = ["git"]
|
||
|
title = "giteaでgit serverを立てる"
|
||
|
slug = "gitea"
|
||
|
+++
|
||
|
|
||
|
[gitea](https://github.com/go-gitea/gitea)は、golangで書かれたgit serverで、ワンバイナリで起動します。
|
||
|
|
||
|
Dockerfileも用意されており、簡単に環境を構築できます。
|
||
|
|
||
|
設定ファイルは、`./custom/conf/app.ini`にあります。
|
||
|
|
||
|
```yml:docker-compose.yml
|
||
|
version: '3'
|
||
|
services:
|
||
|
web:
|
||
|
image: gitea/gitea:latest
|
||
|
volumes:
|
||
|
- ./gitea-data:/data
|
||
|
ports:
|
||
|
- "3000:3000"
|
||
|
- "10022:10022"
|
||
|
environment:
|
||
|
- TZ=Japan
|
||
|
- SSH_PORT=10022
|
||
|
restart: always
|
||
|
```
|
||
|
|
||
|
https://docs.gitea.io/en-us/install-with-docker/
|
||
|
|
||
|
```sh
|
||
|
# serverの初期設定
|
||
|
$ docker-compose up -d
|
||
|
$ sudo docker ps
|
||
|
$ chromium localhost:3000/install
|
||
|
|
||
|
# sshでpushできるようにする
|
||
|
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/gitea
|
||
|
$ cat ~/.ssh/gitea.pub | pbcopy
|
||
|
$ vi gitea-data/gitea/conf/app.ini
|
||
|
START_SSH_SERVER = true
|
||
|
$ vi ~/.ssh/config
|
||
|
Host localhost
|
||
|
User syui
|
||
|
Hostname localhost
|
||
|
IdentityFile ~/.ssh/gitea
|
||
|
$ docker-compose down
|
||
|
$ docker-compose up -d
|
||
|
$ touch README.md
|
||
|
$ git init
|
||
|
$ git add README.md
|
||
|
$ git commit -m "first commit"
|
||
|
$ git remote add origin ssh://git@localhost:10022/syui/test.git
|
||
|
$ git push -u origin master
|
||
|
```
|
||
|
|
||
|
`/install`実行後に保存される設定ファイルは`./gitea-data/gitea/conf/app.ini`にあります。その他の保全情報は`./gitea-data/gitea/`です。例えば、Dockerfileで以下のようにして、Hostingできます。
|
||
|
|
||
|
```yml:Dockerfile
|
||
|
ENV GITEA_CUSTOM /data/gitea
|
||
|
COPY ./gitea-data/gitea/conf/app.ini /data/gitea/conf/app.ini
|
||
|
VOLUME ["/data"]
|
||
|
```
|
||
|
|
||
|
herokuにあげる場合は、`heroku.yml`に書いて、Dockerfileを調整します。
|
||
|
|
||
|
```yml:heroku.yml
|
||
|
build:
|
||
|
docker:
|
||
|
web: ./Dockerfile
|
||
|
run:
|
||
|
web: gitea web -p $PORT
|
||
|
#web: echo RUN_USER=$USER >> /data/gitea/conf/app.ini; echo "[server]\nHTTP_PORT=$PORT\nROOT_URL=https://git.syui.cf:$PORT" >> /data/gitea/conf/app.ini ;gitea web -p $PORT -c /data/gitea/conf/app.ini
|
||
|
```
|
||
|
|
||
|
```yml:gitea/conf/app.ini
|
||
|
[database]
|
||
|
DB_TYPE = postgres
|
||
|
HOST = aws.amazonaws.com:5432
|
||
|
NAME = xxxx
|
||
|
USER = xxxx
|
||
|
PASSWD = xxxx
|
||
|
```
|
||
|
|
||
|
```sh
|
||
|
$ cat .gitignore
|
||
|
$ docker-compose down
|
||
|
$ sudo heroku container:login
|
||
|
$ heroku container:push web
|
||
|
# dockerなので動いてるコンテナにはアクセスできず、pushした時の状態にアクセスするのみ
|
||
|
$ heroku run bash
|
||
|
$ gitea web -p $PORT --config /data/gitea/conf/app.ini
|
||
|
|
||
|
# herokuでも問題は多分この2つ{ port, user }
|
||
|
$ cat /data/gitea/conf/app.ini
|
||
|
RUN_USER = git
|
||
|
HTTP_PORT = 3000
|
||
|
|
||
|
$ sudo docker ps -q
|
||
|
$ sudo docker exec -it xxx /bin/bash
|
||
|
$ su git;cd
|
||
|
$ gitea admin create-user --username myname --password asecurepassword --email me@example.com --admin
|
||
|
$ gitea admin auth list
|
||
|
```
|
||
|
|
||
|
https://docs.gitea.io/en-us/command-line/
|
||
|
|
||
|
基本的には、`/data/gitea/conf/app.ini`に書き出した情報が正しければ動きます。herokuで動作させる場合、/installを実行後に、正常に動くapp.iniを持ってきて、それをpush(docker-copy)すると良いと思います。この辺が面倒で、localで動くからと言って、heroku上でも動くとは限りません。portも変動します。ユーザー名も変動します。よって、herokuで動くapp.iniを出力し、それを持ってくる必要があると思います。herokuは定期でディレクトリをリセットします。実質的にファイルの保存ができないからです。
|
||
|
|
||
|
localからheroku-dbにアクセスするには、`require`を指定する。登録を停止するには以下。
|
||
|
|
||
|
```sh
|
||
|
[database]
|
||
|
SSL_MODE = require
|
||
|
|
||
|
[service]
|
||
|
DISABLE_REGISTRATION = true
|
||
|
```
|
||
|
|
||
|
https://docs.gitea.io/en-us/config-cheat-sheet/
|
||
|
|
||
|
また、webは動いたとしても、git-serverとして機能するかというと難しそう。user:gitが上手く動作していない感じですし、sshの設定とかもあります。そもそもheroku webがssh serverの起動を許すとは思えません。したがって、今の所の運用は、localでdockerを立ち上げてheroku-dbに接続して更新する方法です。
|
||
|
|
||
|
![](https://raw.githubusercontent.com/syui/img/master/old/gitea_heroku_deploy_docker_01.png)
|
||
|
|
||
|
VPSならそのへんは自由にできるので、giteaは手軽に立てられて便利そうです。
|
||
|
|