diff --git a/configs/gitea/app.ini b/configs/gitea/app.ini new file mode 100644 index 0000000..e0088e0 --- /dev/null +++ b/configs/gitea/app.ini @@ -0,0 +1,241 @@ +; https://docs.gitea.io/en-us/config-cheat-sheet/#default-configuration-non-appini-configuration +APP_NAME = REPLACE_GITEA_NAME +RUN_USER = REPLACE_GITEA_USER +RUN_MODE = REPLACE_GITEA_MODE +WORK_PATH = REPLACE_GITEA_DATA_DIR + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[server] +HTTP_PORT = REPLACE_GITEA_PORT +DOMAIN = REPLACE_GITEA_SERVER +ROOT_URL = REPLACE_GITEA_PROTO://REPLACE_GITEA_SERVER/ +SSH_DOMAIN = REPLACE_GITEA_SERVER +DISABLE_SSH = false +START_SSH_SERVER = true +SSH_PORT = 7833 +SSH_LISTEN_PORT = 22 +SSH_CREATE_AUTHORIZED_KEYS_FILE = true +SSH_CREATE_AUTHORIZED_PRINCIPALS_FILE = true +SSH_AUTHORIZED_KEYS_BACKUP = true +SSH_ROOT_PATH = REPLACE_GITEA_DATA_DIR/ssh +APP_DATA_PATH = REPLACE_GITEA_DATA_DIR +OFFLINE_MODE = false +LFS_START_SERVER = true +LFS_JWT_SECRET = REPLACE_GITEA_LFS_JWT_SECRET +LOCAL_ROOT_URL = http://localhost:REPLACE_GITEA_PORT/ +LANDING_PAGE = explore + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[lfs] +STORAGE_TYPE = local +LFS_CONTENT_PATH = REPLACE_GITEA_DATA_DIR/lfs +PATH = REPLACE_GITEA_DATA_DIR/lfs + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[storage.repo-archive] +STORAGE_TYPE = local +PATH = REPLACE_GITEA_DATA_DIR/repositories/archive + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[repository] +SCRIPT_TYPE = sh +ROOT = REPLACE_GITEA_DATA_DIR/repositories/root + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[repository.local] +LOCAL_COPY_PATH = REPLACE_GITEA_DATA_DIR/repositories/local + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[repository.upload] +TEMP_PATH = REPLACE_GITEA_DATA_DIR/repositories/uploads + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[attachment] +PATH = REPLACE_GITEA_DATA_DIR/attachments + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[indexer] +ISSUE_INDEXER_PATH = REPLACE_GITEA_DATA_DIR/indexers/issues.bleve + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[session] +PROVIDER = file +PROVIDER_CONFIG = REPLACE_GITEA_DATA_DIR/sessions + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[database] +DB_TYPE = REPLACE_DB_TYPE +HOST = REPLACE_SQL_HOST +USER = REPLACE_SQL_USER +PASSWD = REPLACE_SQL_PASS +NAME = REPLACE_SQL_DB +LOG_SQL = false +SCHEMA = +SSL_MODE = disable +CHARSET = utf8 +PATH = REPLACE_DATABASE_DIR_GITEA/gitea.db + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[picture] +ENABLE_FEDERATED_AVATAR = true +DISABLE_GRAVATAR = false +AVATAR_UPLOAD_PATH = REPLACE_GITEA_DATA_DIR/avatars/users +REPOSITORY_AVATAR_UPLOAD_PATH = REPLACE_GITEA_DATA_DIR/avatars/repos + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[log] +MODE = console +LEVEL = info +LOG_ROTATE = true +DAILY_ROTATE = true +MAX_DAYS = 1 +ROOT_PATH = REPLACE_GITEA_LOG_DIR + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[security] +INSTALL_LOCK = true +SECRET_KEY = REPLACE_GITEA_SECRET_KEY +REVERSE_PROXY_LIMIT = 1 +REVERSE_PROXY_TRUSTED_PROXIES = * +INTERNAL_TOKEN = REPLACE_GITEA_INTERNAL_TOKEN +PASSWORD_HASH_ALGO = pbkdf2 +MIN_PASSWORD_LENGTH = 8 +PASSWORD_COMPLEXITY = on + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[time] +DEFAULT_UI_LOCATION = REPLACE_GITEA_TZ +FORMAT = RFC1123 + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[service] +DISABLE_REGISTRATION = false +REQUIRE_SIGNIN_VIEW = false +REGISTER_EMAIL_CONFIRM = true +ENABLE_NOTIFY_MAIL = true +ALLOW_ONLY_EXTERNAL_REGISTRATION = false +ENABLE_CAPTCHA = true +DEFAULT_KEEP_EMAIL_PRIVATE = false +DEFAULT_ALLOW_CREATE_ORGANIZATION = true +DEFAULT_ENABLE_TIMETRACKING = true +NO_REPLY_ADDRESS = no-reply.REPLACE_GITEA_SERVER + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[actions] +ENABLED = true + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[mailer] +ENABLED = true +SMTP_ADDR = REPLACE_GITEA_EMAIL_RELAY +SMTP_PORT = 587 +FROM = "REPLACE_GITEA_NAME" +USER = +PASSWD = +PROTOCOL = + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[openid] +ENABLE_OPENID_SIGNIN = true +ENABLE_OPENID_SIGNUP = true + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[oauth2] +ENABLE = true +JWT_SIGNING_ALGORITHM = RS256 +ACCESS_TOKEN_EXPIRATION_TIME = 3600 +REFRESH_TOKEN_EXPIRATION_TIME = 730 +MAX_TOKEN_LENGTH = 32767 +JWT_SECRET = REPLACE_GITEA_OAUTH_JWT_SECRET + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[oauth2_client] +REGISTER_EMAIL_CONFIRM = false +OPENID_CONNECT_SCOPES = +ENABLE_AUTO_REGISTRATION = true +USERNAME = nickname +UPDATE_AVATAR = false +ACCOUNT_LINKING = login + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[ui] +DEFAULT_THEME = arc-green +SEARCH_REPO_DESCRIPTION = true +USE_SERVICE_WORKER = false + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[ui.meta] +AUTHOR = gitea +DESCRIPTION = SelfHosted GIT Server +KEYWORDS = go,git,self-hosted,gitea + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[ui.notification] +MIN_TIMEOUT = 10s +MAX_TIMEOUT = 60s +TIMEOUT_STEP = 10s +EVENT_SOURCE_UPDATE_TIME = 10s + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[cors] +ENABLED = true +SCHEME = http +ALLOW_DOMAIN = * +ALLOW_SUBDOMAIN = true +METHODS = GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS +MAX_AGE = 10m +ALLOW_CREDENTIALS = true +X_FRAME_OPTIONS = SAMEORIGIN + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[cron] +ENABLED = false +RUN_AT_START = false + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[cron.archive_cleanup] +ENABLED = true +RUN_AT_START = true +NO_SUCCESS_NOTICE = false +OLDER_THAN = 24h +SCHEDULE = @midnight + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[cron.update_mirrors] +ENABLED = true +RUN_AT_START = false +NO_SUCCESS_NOTICE = true +PULL_LIMIT = 50 +PUSH_LIMIT = 50 +SCHEDULE = @every 360m + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[cron.repo_health_check] +ENABLED = true +RUN_AT_START = false +NO_SUCCESS_NOTICE = false +TIMEOUT = 60s +SCHEDULE = @midnight + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[cron.delete_inactive_accounts] +ENABLED = false +RUN_AT_START = false +NO_SUCCESS_NOTICE = false +OLDER_THAN = 168h +SCHEDULE = @annually + +; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +[cron.delete_repo_archives] +ENABLED = false +RUN_AT_START = false +NO_SUCCESS_NOTICE = false +SCHEDULE = @annually + +[cron.update_checker] + +[repository.pull-request] +DEFAULT_MERGE_STYLE = merge + +[repository.signing] +DEFAULT_TRUST_MODEL = committer diff --git a/htdocs/www/js/errorpages/loaddomain.js b/htdocs/www/js/errorpages/loaddomain.js index 067ac9e..225acf5 100644 --- a/htdocs/www/js/errorpages/loaddomain.js +++ b/htdocs/www/js/errorpages/loaddomain.js @@ -3,5 +3,5 @@ function loadDomain() { let port = location.port; let url = location.hostname; var display = document.getElementById('display-domain'); - display.innerHTML = proto + '//' + url + ':' + port; + display.innerHTML = `${req.protocol}://${req.get('host')}/${req.originalUrl}`; } diff --git a/init/done/08-gitea.sh b/init/done/08-gitea.sh index 3e56057..fa0e24f 100755 --- a/init/done/08-gitea.sh +++ b/init/done/08-gitea.sh @@ -50,33 +50,37 @@ DATABASE_DIR="${DATABASE_DIR_GITEA:-/data/db/gitea}" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # port which service is listening on -SERVICE_PORT="" +SERVICE_PORT="80" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # execute command variables -SERVICE_UID="0" # set the user id -SERVICE_USER="root" # execute command as another user -EXEC_CMD_BIN="gitea" # command to execute -EXEC_CMD_ARGS="--port $SERVICE_PORT --config $ETC_DIR/app.ini " # command arguments -EXEC_CMD_ARGS+="--custom-path $ETC_DIR/custom --work-path $DATA_DIR/gitea " # continued +SERVICE_UID="0" # set the user id +SERVICE_USER="root" # execute command as another user +EXEC_CMD_BIN="gitea" # command to execute +EXEC_CMD_ARGS="--port $SERVICE_PORT --config $ETC_DIR/app.ini " # command arguments +EXEC_CMD_ARGS+="--custom-path $CONF_DIR/custom --work-path $DATA_DIR/gitea " # continued # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Is this service a web server -IS_WEB_SERVER="yes" +IS_WEB_SERVER="no" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Is this service a database server -IS_DATABASE_SERVICE="no" +IS_DATABASE_SERVICE="yes" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Additional variables GITEA_USER="$SERVICE_USER" GITEA_TZ="${TZ:-America/New_York}" GITEA_PROTO="${GITEA_PROTO:-http}" GITEA_EMAIL_CONFIRM="${GITEA_EMAIL_CONFIRM:-false}" +GITEA_MODE="${GITEA_MODE:-prod}" GITEA_DB_TYPE="${GITEA_DB_TYPE:-sqlite3}" +GITEA_DATABASE_DIR="${GITEA_DATABASE_DIR:-$DATABASE_DIR}" GITEA_HOSTNAME="${DOMAINNAME:-$HOSTNAME}" GITEA_PORT="${GITEA_PORT:-$SERVICE_PORT}" GITEA_NAME="${GITEA_NAME:-Gitea - GIT Server}" GITEA_SQL_DB_HOST="${GITEA_SQL_DB_HOST:-localhost}" GITEA_ADMIN="${GITEA_ADMIN:-gitea@${DOMAINNAME:-$HOSTNAME}}" GITEA_EMAIL_RELAY="${GITEA_EMAIL_RELAY:-${EMAIL_RELAY:-localhost}}" +GITEA_SECRET_KEY="${GITEA_SECRET_KEY:-$($EXEC_CMD_BIN generate secret SECRET_KEY)}" +GITEA_OAUTH_JWT_SECRET="${GITEA_OAUTH_JWT_SECRET:-$($EXEC_CMD_BIN generate secret JWT_SECRET)}" GITEA_LFS_JWT_SECRET="${GITEA_LFS_JWT_SECRET:-$($EXEC_CMD_BIN generate secret LFS_JWT_SECRET)}" GITEA_INTERNAL_TOKEN="${GITEA_INTERNAL_TOKEN:-$($EXEC_CMD_BIN generate secret INTERNAL_TOKEN)}" [ "$GITEA_EMAIL_CONFIRM" = "yes" ] && GITEA_EMAIL_CONFIRM="true" @@ -140,27 +144,34 @@ __update_conf_files() { # create directories if variable is yes" [ "$IS_WEB_SERVER" = "yes" ] && APPLICATION_DIRS="$APPLICATION_DIRS $WWW_DIR" && { [ -d "$WWW_DIR" ] || { (echo "Creating directory $WWW_DIR with permissions 777" && mkdir -p "$WWW_DIR" && chmod -f 777 "$WWW_DIR") |& tee -a "$LOG_DIR/init.txt" &>/dev/null; }; } [ "$IS_DATABASE_SERVICE" = "yes" ] && APPLICATION_DIRS="$APPLICATION_DIRS $DATABASE_DIR" && { [ -d "$DATABASE_DIR" ] || { (echo "Creating directory $DATABASE_DIR with permissions 777" && mkdir -p "$DATABASE_DIR" && chmod -f 777 "$DATABASE_DIR") |& tee -a "$LOG_DIR/init.txt" &>/dev/null; }; } + # replace variables + sed -i "s|REPLACE_GITEA_NAME|$GITEA_NAME|g" "$CONF_DIR/app.ini" + # + __replace "REPLACE_GITEA_LOG_DIR" "$LOG_DIR" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_TZ" "$GITEA_TZ" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_PORT" "$GITEA_PORT" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_USER" "$GITEA_USER" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_MODE" "$GITEA_MODE" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_PROTO" "$GITEA_PROTO" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_ADMIN" "$GITEA_ADMIN" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_SERVER" "$GITEA_SERVER" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_DATA_DIR" "$DATA_DIR/gitea" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_EMAIL_RELAY" "$GITEA_EMAIL_RELAY" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_EMAIL_CONFIRM" "$GITEA_EMAIL_CONFIRM" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_SECRET_KEY" "$GITEA_SECRET_KEY" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_INTERNAL_TOKEN" "$GITEA_INTERNAL_TOKEN" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_LFS_JWT_SECRET" "$GITEA_LFS_JWT_SECRET" "$CONF_DIR/app.ini" + __replace "REPLACE_GITEA_OAUTH_JWT_SECRET" "$GITEA_OAUTH_JWT_SECRET" "$CONF_DIR/app.ini" + + # database settings + __replace "REPLACE_DB_TYPE" "$GITEA_DB_TYPE" "$CONF_DIR/app.ini" + [ -n "$GITEA_SQL_DB" ] && __replace "REPLACE_SQL_DB" "$GITEA_SQL_DB" "$CONF_DIR/app.ini" + [ -n "$GITEA_SQL_USER" ] && __replace "REPLACE_SQL_USER" "$GITEA_SQL_USER" "$CONF_DIR/app.ini" + [ -n "$GITEA_SQL_PASS" ] && __replace "REPLACE_SQL_PASS" "$GITEA_SQL_PASS" "$CONF_DIR/app.ini" + [ -n "$GITEA_SQL_DB_HOST" ] && __replace "REPLACE_SQL_HOST" "$GITEA_SQL_DB_HOST" "$CONF_DIR/app.ini" + [ "$GITEA_DB_TYPE" = "sqlite3" ] && __replace "REPLACE_DATABASE_DIR_GITEA" "$DATABASE_DIR" "$CONF_DIR/app.ini" # copy config files to system __file_copy "$CONF_DIR/." "$ETC_DIR/" |& tee -a "$LOG_DIR/init.txt" &>/dev/null - # replace variables - sed -i "s|REPLACE_GITEA_NAME|$GITEA_NAME|g" "$ETC_DIR/app.ini" - # - __replace "REPLACE_GITEA_TZ" "$GITEA_TZ" "$ETC_DIR/app.ini" - __replace "REPLACE_GITEA_PORT" "$GITEA_PORT" "$ETC_DIR/app.ini" - __replace "REPLACE_GITEA_USER" "$GITEA_USER" "$ETC_DIR/app.ini" - __replace "REPLACE_GITEA_PROTO" "$GITEA_PROTO" "$ETC_DIR/app.ini" - __replace "REPLACE_GITEA_ADMIN" "$GITEA_ADMIN" "$ETC_DIR/app.ini" - __replace "REPLACE_GITEA_SERVER" "$GITEA_SERVER" "$ETC_DIR/app.ini" - __replace "REPLACE_GITEA_EMAIL_RELAY" "$GITEA_EMAIL_RELAY" "$ETC_DIR/app.ini" - __replace "REPLACE_GITEA_EMAIL_CONFIRM" "$GITEA_EMAIL_CONFIRM" "$ETC_DIR/app.ini" - __replace "REPLACE_GITEA_INTERNAL_TOKEN" "$GITEA_INTERNAL_TOKEN" "$ETC_DIR/app.ini" - __replace "REPLACE_GITEA_LFS_JWT_SECRET" "$GITEA_LFS_JWT_SECRET" "$ETC_DIR/app.ini" - # database settings - __replace "REPLACE_DB_TYPE" "$GITEA_DB_TYPE" "$ETC_DIR/app.ini" - [ -n "$GITEA_SQL_DB" ] && __replace "REPLACE_SQL_DB" "$GITEA_SQL_DB" "$ETC_DIR/app.ini" - [ -n "$GITEA_SQL_USER" ] && __replace "REPLACE_SQL_USER" "$GITEA_SQL_USER" "$ETC_DIR/app.ini" - [ -n "$GITEA_SQL_PASS" ] && __replace "REPLACE_SQL_PASS" "$GITEA_SQL_PASS" "$ETC_DIR/app.ini" - [ -n "$GITEA_SQL_DB_HOST" ] && __replace "REPLACE_SQL_HOST" "$GITEA_SQL_DB_HOST" "$ETC_DIR/app.ini" # custom commands # other