180 lines
4.0 KiB
Bash
Executable File
180 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
##################################################
|
|
# Mount dir #
|
|
# - /opt/gitea #
|
|
##################################################
|
|
|
|
set -euo pipefail
|
|
export LANG=en_US.UTF-8
|
|
trap Quit EXIT
|
|
|
|
PIDS=
|
|
GOT_SIGTERM=
|
|
|
|
function Print {
|
|
local file=/dev/null
|
|
[ '-f' = "$1" ] && file=$2 && shift && shift
|
|
date +"[%F %T] $*" | tee -a $file
|
|
}
|
|
|
|
function Quit {
|
|
while :; do
|
|
pkill -f gitea && Print killing gitea ... || break
|
|
sleep 1
|
|
done
|
|
Print Container stopped.
|
|
test -n "$GOT_SIGTERM"
|
|
}
|
|
|
|
function Usage {
|
|
Print 'This container should run with
|
|
**root user**
|
|
**/opt/gitea mounted from host**
|
|
'
|
|
}
|
|
|
|
function GenerateConf {
|
|
Print Generating app.ini ...
|
|
mkdir -p custom/conf
|
|
cat > custom/conf/app.ini <<-EOF
|
|
APP_NAME = Gitea
|
|
RUN_USER = gitea
|
|
RUN_MODE = prod
|
|
|
|
[repository]
|
|
ROOT = /opt/gitea/repos
|
|
SCRIPT_TYPE = bash
|
|
|
|
[security]
|
|
PASSWORD_COMPLEXITY = off
|
|
DISABLE_GIT_HOOKS = false
|
|
|
|
[indexer]
|
|
ISSUE_INDEXER_TYPE = bleve
|
|
ISSUE_INDEXER_PATH = /opt/gitea/indexers/issues.bleve
|
|
REPO_INDEXER_ENABLED = true
|
|
REPO_INDEXER_PATH = /opt/gitea/indexers/repos.bleve
|
|
MAX_FILE_SIZE = 1048576
|
|
REPO_INDEXER_INCLUDE = **.go,**.yml,**.toml,**.c,**.h,**makefile,**.py,**.txt,**.ini,**.rs,**.sh,**.md,**Dockerfile*,**docker-entrypoint*,**.cnf,**.conf,**.json,**.sql,**.xml,**.js,**.jsx,**.vue,**.ts,**.tsx,**.html,**.css,**.scss,**.less
|
|
|
|
[queue.issue_indexer]
|
|
ISSUE_INDEXER_QUEUE_TYPE = levelqueue
|
|
ISSUE_INDEXER_QUEUE_DIR = /opt/gitea/indexers/issues.queue
|
|
UPDATE_BUFFER_LEN = 20
|
|
|
|
[server]
|
|
APP_DATA_PATH = /opt/gitea/data
|
|
PROTOCOL = http
|
|
HTTP_ADDR = 0.0.0.0
|
|
HTTP_PORT = 3000
|
|
#PROTOCOL = unix
|
|
#HTTP_ADDR = /sock/gitea
|
|
#UNIX_SOCKET_PERMISSION = 666
|
|
#DOMAIN = x.x.x
|
|
#ROOT_URL = http://x.x.x
|
|
DISABLE_SSH = true
|
|
START_SSH_SERVER = false
|
|
SSH_DOMAIN = x.x.x
|
|
SSH_PORT = 3622
|
|
LFS_START_SERVER = true
|
|
OFFLINE_MODE = false
|
|
ENABLE_GZIP = true
|
|
|
|
[database]
|
|
DB_TYPE = sqlite3
|
|
PATH = /opt/gitea/data/gitea.db
|
|
SSL_MODE = disable
|
|
|
|
[mailer]
|
|
ENABLED = false
|
|
|
|
[service]
|
|
REGISTER_EMAIL_CONFIRM = false
|
|
ENABLE_NOTIFY_MAIL = false
|
|
DISABLE_REGISTRATION = true
|
|
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
|
|
ENABLE_CAPTCHA = true
|
|
REQUIRE_SIGNIN_VIEW = true
|
|
DEFAULT_KEEP_EMAIL_PRIVATE = true
|
|
DEFAULT_ALLOW_CREATE_ORGANIZATION = false
|
|
DEFAULT_ENABLE_TIMETRACKING = true
|
|
NO_REPLY_ADDRESS =
|
|
|
|
[picture]
|
|
DISABLE_GRAVATAR = true
|
|
ENABLE_FEDERATED_AVATAR = false
|
|
|
|
[openid]
|
|
ENABLE_OPENID_SIGNIN = false
|
|
ENABLE_OPENID_SIGNUP = false
|
|
|
|
[attachment]
|
|
ENABLED = true
|
|
ALLOWED_TYPES = */*
|
|
MAX_SIZE = 1024
|
|
MAX_FILES = 5
|
|
STORAGE_TYPE = local
|
|
PATH = /opt/gitea/attachments
|
|
|
|
[session]
|
|
PROVIDER = memory
|
|
|
|
[time]
|
|
FORMAT = RFC3339
|
|
|
|
[log]
|
|
ROOT_PATH = /opt/gitea/log
|
|
MODE = file
|
|
LEVEL = warn
|
|
ROUTER = file
|
|
|
|
[git]
|
|
PATH =
|
|
HOME_PATH = /opt/gitea/data/git-home
|
|
|
|
[lfs]
|
|
PATH = /opt/gitea/lfs
|
|
|
|
[webhook]
|
|
ALLOWED_HOST_LIST = *
|
|
EOF
|
|
}
|
|
|
|
function ChangeOwner {
|
|
Print Changing file owner ...
|
|
chown -R gitea:gitea /opt/gitea
|
|
}
|
|
|
|
function StartProc {
|
|
Print Starting gitea ...
|
|
su - gitea -c '
|
|
gitea \
|
|
--work-path /opt/gitea \
|
|
--custom-path /opt/gitea/custom \
|
|
--config /opt/gitea/custom/conf/app.ini \
|
|
web
|
|
' &>> /opt/gitea/log/gitea.out &
|
|
PIDS="$PIDS $!"
|
|
Print Gitea started.
|
|
}
|
|
|
|
function Main {
|
|
local pid=
|
|
cd /opt/gitea
|
|
Usage
|
|
[ -e custom/conf ] || GenerateConf
|
|
ChangeOwner
|
|
StartProc
|
|
trap "GOT_SIGTERM=1; Print Got SIGTERM ..." SIGTERM
|
|
while [ -z "$GOT_SIGTERM" ] && sleep 1; do
|
|
for pid in $PIDS; do
|
|
[ ! -e /proc/$pid ] && Print Unexpected error! && exit
|
|
done
|
|
done
|
|
}
|
|
|
|
# Start here
|
|
Main
|
|
|