add themes and get_theme_list function and will add to ini file

moved fetch to library and called download
improved run commanad with set_env function
added upgrade script
added systemd scripts and refactored service file
added ini-gen function and separate call via ini-gen script
master
David Kebler 2020-12-13 13:24:31 -08:00
parent b5a902ef93
commit b4f1093b03
29 changed files with 2875 additions and 530 deletions

1
.gitignore vendored
View File

@ -3,3 +3,4 @@
/gitea.pid
/bin/amd64/custom/
/frontend/current/
*.bin

View File

@ -1,7 +1,12 @@
; This file lists the default values used by Gitea
; Copy required sections to your own app.ini (default is custom/conf/app.ini)
; and modify as needed.
;################################################################
;# THIS FILE IS GENERATED. Do not edit directly #
;# It was created from /opt/gitea/config/3115.tmpl #
;# Edit this file and run with -t or run ini-gen to regenerate #
;################################################################
; This file lists the sets values used by Gitea and can be edited
; it is a good idea to use a versioning system or make a backup before editing
; see https://docs.gitea.io/en-us/config-cheat-sheet/ for additional documentation.
;
; App name that shows in every page title
APP_NAME = McCarty Git Server on Frodo
; Change it if you run locally
@ -177,7 +182,7 @@ SHOW_USER_EMAIL = true
; Set the default theme for the Gitea install
DEFAULT_THEME = arc-green
; All available themes. Allow users select personalized themes regardless of the value of `DEFAULT_THEME`.
THEMES = gitea,arc-green,dark-blue,github,werefox,42l-dark,42l-light
THEMES = 42l-dark,42l-light,aquamarine,chroma,dark-blue,dark,gitea-base,github,hotline,organizr-dark,plex,space-gray,werefox,gitea,arc_green
; All available reactions users can choose on issues/prs and comments.
; Values can be emoji alias (:smile:) or a unicode emoji.
; For custom reactions, add a tightly cropped square image to public/emoji/img/reaction_name.png

View File

@ -1,7 +1,7 @@
; This file lists the default values used by Gitea
; Copy required sections to your own app.ini (default is custom/conf/app.ini)
; and modify as needed.
; This file lists the sets values used by Gitea and can be edited
; it is a good idea to use a versioning system or make a backup before editing
; see https://docs.gitea.io/en-us/config-cheat-sheet/ for additional documentation.
;
; App name that shows in every page title
APP_NAME = McCarty Git Server on Frodo
; Change it if you run locally
@ -177,7 +177,7 @@ SHOW_USER_EMAIL = true
; Set the default theme for the Gitea install
DEFAULT_THEME = arc-green
; All available themes. Allow users select personalized themes regardless of the value of `DEFAULT_THEME`.
THEMES = gitea,arc-green,dark-blue,github,werefox,42l-dark,42l-light
THEMES = aquamarine,gitea,arc-green,dark-blue,github,werefox,42l-dark,42l-light
; All available reactions users can choose on issues/prs and comments.
; Values can be emoji alias (:smile:) or a unicode emoji.
; For custom reactions, add a tightly cropped square image to public/emoji/img/reaction_name.png

File diff suppressed because it is too large Load Diff

2
env/3115.env vendored
View File

@ -1 +1,3 @@
# echo "sourcing environment file $BASH_SOURCE"
export GITEA_DATA_DIR=/mnt/data/git-server
# echo "setting GITEA_DATA_DIR=/mnt/data/git-server"

3
env/default.env vendored Normal file
View File

@ -0,0 +1,3 @@
# can override declared instance
# export GITEA_INSTANCE=default-testing
# export GITEA_DATA_DIR=/opt/git-data-default

View File

@ -0,0 +1,35 @@
/* dP dP dP */
/* 88 88 88 */
/* d8888P 88d888b. .d8888b. 88d8b.d8b. .d8888b. 88d888b. .d8888b. 88d888b. 88 .dP */
/* 88 88' `88 88ooood8 88'`88'`88 88ooood8 88' `88 88' `88 88' `88 88888" */
/* 88 88 88 88. ... 88 88 88 88. ... 88. .88 88. .88 88 88 `8b. */
/* dP dP dP `88888P' dP dP dP `88888P' 88 88Y888P' `88888P8 dP dP `YP */
/* 88 */
/* dP */
/* Made by @gilbN */
/* https://github.com/gilbN/theme.park */
/* GITEA AQUAMARINE THEME */
@import url(https://gilbn.github.io/theme.park/CSS/themes/gitea/gitea-base.css);
@import url(https://gilbn.github.io/theme.park/CSS/themes/gitea/chroma.css);
:root {
--main-bg-color: radial-gradient(ellipse at center, #47918a 0%, #0b3161 100%) center center/cover no-repeat fixed;
--modal-bg-color: radial-gradient(ellipse at top, #47918a 0%, #0b3161 100%) center center/cover no-repeat fixed;
--button-color: #009688;
--button-color-hover: #12afa0;
--button-text: #eee;
--accent-color: #12afa0;
--accent-color-hover: #fff;
--text: #eee;
--text-hover: #fff;
--text-muted: #bbb;
--link-color: #12afa0;
--heatmap-color-1: #002D24;
--heatmap-color-2: #004B40;
--heatmap-color-3: #006B5F;
--heatmap-color-4: #008C7E;
--heatmap-color-5: #12AFA0;
}

View File

@ -0,0 +1,561 @@
/*
/* dP oo
/* 88
/* 88d8b.d8b. .d8888b. 88d888b. .d8888b. 88 .dP .d8888b. dP
/* 88'`88'`88 88' `88 88' `88 88' `88 88888" 88' `88 88
/* 88 88 88 88. .88 88 88 88. .88 88 `8b. 88. .88 88
/* dP dP dP `88888P' dP dP `88888P' dP `YP `88888P8 dP
/* Source: https://gist.github.com/ntrrg/f70d4dc6ed8a739a36fe7c55f422c5f3 */
:root {
/* Background */
--code-background: #1f1f1f;
--code-color: #f8f8f2;
/* Error */
--code-err-background: #960050;
--code-err-color: #1e0010;
/* LineHighlight */
--code-hl-background: #ffffcc;
/* Keyword */
--code-k-color: #66d9ef;
/* KeywordConstant */
--code-kc-color: #66d9ef;
/* KeywordDeclaration */
--code-kd-color: #66d9ef;
/* KeywordNamespace */
--code-kn-color: #f92672;
/* KeywordPseudo */
--code-kp-color: #66d9ef;
/* KeywordReserved */
--code-kr-color: #66d9ef;
/* KeywordType */
--code-kt-color: #66d9ef;
/* NameAttribute */
--code-na-color: #a6e22e;
/* NameClass */
--code-nc-color: #a6e22e;
/* NameConstant */
--code-no-color: #66d9ef;
/* NameDecorator */
--code-nd-color: #a6e22e;
/* NameException */
--code-ne-color: #a6e22e;
/* NameFunction */
--code-nf-color: #a6e22e;
/* NameOther */
--code-nx-color: #a6e22e;
/* NameTag */
--code-nt-color: #f92672;
/* Literal */
--code-l-color: #ae81ff;
/* LiteralDate */
--code-ld-color: #e6db74;
/* LiteralString */
--code-s-color: #e6db74;
/* LiteralStringAffix */
--code-sa-color: #e6db74;
/* LiteralStringBacktick */
--code-sb-color: #e6db74;
/* LiteralStringChar */
--code-sc-color: #e6db74;
/* LiteralStringDelimiter */
--code-dl-color: #e6db74;
/* LiteralStringDoc */
--code-sd-color: #e6db74;
/* LiteralStringDouble */
--code-s2-color: #e6db74;
/* LiteralStringEscape */
--code-se-color: #ae81ff;
/* LiteralStringHeredoc */
--code-sh-color: #e6db74;
/* LiteralStringInterpol */
--code-si-color: #e6db74;
/* LiteralStringOther */
--code-sx-color: #e6db74;
/* LiteralStringRegex */
--code-sr-color: #e6db74;
/* LiteralStringSingle */
--code-s1-color: #e6db74;
/* LiteralStringSymbol */
--code-ss-color: #e6db74;
/* LiteralNumber */
--code-m-color: #ae81ff;
/* LiteralNumberBin */
--code-mb-color: #ae81ff;
/* LiteralNumberFloat */
--code-mf-color: #ae81ff;
/* LiteralNumberHex */
--code-mh-color: #ae81ff;
/* LiteralNumberInteger */
--code-mi-color: #ae81ff;
/* LiteralNumberIntegerLong */
--code-il-color: #ae81ff;
/* LiteralNumberOct */
--code-mo-color: #ae81ff;
/* Operator */
--code-o-color: #f92672;
/* OperatorWord */
--code-ow-color: #f92672;
/* Comment */
--code-c-color: #75715e;
/* CommentHashbang */
--code-ch-color: #75715e;
/* CommentMultiline */
--code-cm-color: #75715e;
/* CommentSingle */
--code-c1-color: #75715e;
/* CommentSpecial */
--code-cs-color: #75715e;
/* CommentPreproc */
--code-cp-color: #75715e;
/* CommentPreprocFile */
--code-cpf-color: #75715e;
/* GenericDeleted */
--code-gd-color: #f92672;
/* GenericInserted */
--code-gi-color: #a6e22e;
/* GenericSubheading */
--code-gu-color: #75715e;
}
/* CHROMA */
/* Table */
.chroma .ui.table tbody tr {
border-color: #333640;
background: var(--code-background);
}
/* Background */
.chroma,
.markdown:not(code) .highlight pre,
.markdown:not(code) pre {
background-color: var(--code-background);
color: var(--code-color);
}
/* Error */
.chroma .err {
background-color: var(--code-err-background);
color: var(--code-err-color);
}
/* LineTableTD */
.chroma .lntd {
border: 0;
margin: 0;
padding: 0;
vertical-align: top;
}
/* LineTable */
.chroma .lntable {
width: auto;
border: 0;
border-spacing: 0;
display: block;
margin: 0;
overflow: auto;
padding: 0;
}
/* LineHighlight */
.chroma .hl {
width: 100%;
background-color: var(--code-hl-background);
display: block;
}
/* LineNumbersTable */
.chroma .lnt {
margin-right: 0.4em;
padding: 0 0.4em 0 0.4em;
}
/* LineNumbers */
.chroma .ln {
margin-right: 0.4em;
padding: 0 0.4em 0 0.4em;
}
/* Keyword */
.chroma .k {
color: var(--code-k-color);
}
/* KeywordConstant */
.chroma .kc {
color: var(--code-kc-color);
}
/* KeywordDeclaration */
.chroma .kd {
color: var(--code-kd-color);
}
/* KeywordNamespace */
.chroma .kn {
color: var(--code-kn-color);
}
/* KeywordPseudo */
.chroma .kp {
color: var(--code-kp-color);
}
/* KeywordReserved */
.chroma .kr {
color: var(--code-kr-color);
}
/* KeywordType */
.chroma .kt {
color: var(--code-kt-color);
}
/* Name */
.chroma .n {
color: var(--code-n-color);
}
/* NameAttribute */
.chroma .na {
color: var(--code-na-color);
}
/* NameBuiltin */
.chroma .nb {
color: var(--code-nb-color);
}
/* NameBuiltinPseudo */
.chroma .bp {
color: var(--code-bp-color);
}
/* NameClass */
.chroma .nc {
color: var(--code-nc-color);
}
/* NameConstant */
.chroma .no {
color: var(--code-no-color);
}
/* NameDecorator */
.chroma .nd {
color: var(--code-nd-color);
}
/* NameEntity */
.chroma .ni {
color: var(--code-ni-color);
}
/* NameException */
.chroma .ne {
color: var(--code-ne-color);
}
/* NameFunction */
.chroma .nf {
color: var(--code-nf-color);
}
/* NameFunctionMagic */
.chroma .fm {
color: var(--code-fm-color);
}
/* NameLabel */
.chroma .nl {
color: var(--code-nl-color);
}
/* NameNamespace */
.chroma .nn {
color: var(--code-nn-color);
}
/* NameOther */
.chroma .nx {
color: var(--code-nx-color);
}
/* NameProperty */
.chroma .py {
color: var(--code-py-color);
}
/* NameTag */
.chroma .nt {
color: var(--code-nt-color);
}
/* NameVariable */
.chroma .nv {
color: var(--code-nv-color);
}
/* NameVariableClass */
.chroma .vc {
color: var(--code-vc-color);
}
/* NameVariableGlobal */
.chroma .vg {
color: var(--code-vg-color);
}
/* NameVariableInstance */
.chroma .vi {
color: var(--code-vi-color);
}
/* NameVariableMagic */
.chroma .vm {
color: var(--code-vm-color);
}
/* Literal */
.chroma .l {
color: var(--code-l-color);
}
/* LiteralDate */
.chroma .ld {
color: var(--code-ld-color);
}
/* LiteralString */
.chroma .s {
color: var(--code-s-color);
}
/* LiteralStringAffix */
.chroma .sa {
color: var(--code-sa-color);
}
/* LiteralStringBacktick */
.chroma .sb {
color: var(--code-sb-color);
}
/* LiteralStringChar */
.chroma .sc {
color: var(--code-sc-color);
}
/* LiteralStringDelimiter */
.chroma .dl {
color: var(--code-dl-color);
}
/* LiteralStringDoc */
.chroma .sd {
color: var(--code-sd-color);
}
/* LiteralStringDouble */
.chroma .s2 {
color: var(--code-s2-color);
}
/* LiteralStringEscape */
.chroma .se {
color: var(--code-se-color);
}
/* LiteralStringHeredoc */
.chroma .sh {
color: var(--code-sh-color);
}
/* LiteralStringInterpol */
.chroma .si {
color: var(--code-si-color);
}
/* LiteralStringOther */
.chroma .sx {
color: var(--code-sx-color);
}
/* LiteralStringRegex */
.chroma .sr {
color: var(--code-sr-color);
}
/* LiteralStringSingle */
.chroma .s1 {
color: var(--code-s1-color);
}
/* LiteralStringSymbol */
.chroma .ss {
color: var(--code-ss-color);
}
/* LiteralNumber */
.chroma .m {
color: var(--code-m-color);
}
/* LiteralNumberBin */
.chroma .mb {
color: var(--code-mb-color);
}
/* LiteralNumberFloat */
.chroma .mf {
color: var(--code-mf-color);
}
/* LiteralNumberHex */
.chroma .mh {
color: var(--code-mh-color);
}
/* LiteralNumberInteger */
.chroma .mi {
color: var(--code-mi-color);
}
/* LiteralNumberIntegerLong */
.chroma .il {
color: var(--code-il-color);
}
/* LiteralNumberOct */
.chroma .mo {
color: var(--code-mo-color);
}
/* Operator */
.chroma .o {
color: var(--code-o-color);
}
/* OperatorWord */
.chroma .ow {
color: var(--code-ow-color);
}
/* Punctuation */
.chroma .p {
color: var(--code-p-color);
}
/* Comment */
.chroma .c {
color: var(--code-c-color);
}
/* CommentHashbang */
.chroma .ch {
color: var(--code-ch-color);
}
/* CommentMultiline */
.chroma .cm {
color: var(--code-cm-color);
}
/* CommentSingle */
.chroma .c1 {
color: var(--code-c1-color);
}
/* CommentSpecial */
.chroma .cs {
color: var(--code-cs-color);
}
/* CommentPreproc */
.chroma .cp {
color: var(--code-cp-color);
}
/* CommentPreprocFile */
.chroma .cpf {
color: var(--code-cpf-color);
}
/* GenericDeleted */
.chroma .gd {
color: var(--code-gd-color);
}
/* GenericEmph */
.chroma .ge {
font-style: italic;
}
/* GenericInserted */
.chroma .gi {
color: var(--code-gi-color);
}
/* GenericStrong */
.chroma .gs {
font-weight: bold;
}
/* GenericSubheading */
.chroma .gu {
color: var(--code-gu-color);
}

View File

@ -0,0 +1,35 @@
/* dP dP dP */
/* 88 88 88 */
/* d8888P 88d888b. .d8888b. 88d8b.d8b. .d8888b. 88d888b. .d8888b. 88d888b. 88 .dP */
/* 88 88' `88 88ooood8 88'`88'`88 88ooood8 88' `88 88' `88 88' `88 88888" */
/* 88 88 88 88. ... 88 88 88 88. ... 88. .88 88. .88 88 88 `8b. */
/* dP dP dP `88888P' dP dP dP `88888P' 88 88Y888P' `88888P8 dP dP `YP */
/* 88 */
/* dP */
/* Made by @gilbN */
/* https://github.com/gilbN/theme.park */
/* GITEA DARK THEME */
@import url(https://gilbn.github.io/theme.park/CSS/themes/gitea/gitea-base.css);
@import url(https://gilbn.github.io/theme.park/CSS/themes/gitea/chroma.css);
:root {
--main-bg-color: radial-gradient(circle, #3a3a3a, #2d2d2d, #202020, #141414, #000000) center center/cover no-repeat fixed;
--modal-bg-color: radial-gradient(circle , #3a3a3a, #2d2d2d, #202020, #141414, #000000) center center/cover no-repeat fixed;
--button-color: hsla(0,0%,100%,.15);
--button-color-hover: hsla(0,0%,100%,.30);
--button-text: #eee;
--accent-color: #646464;
--accent-color-hover: #ffffff73;
--text: #b7b7b7;
--text-hover: #fff;
--text-muted: #bbb;
--link-hover: rgba(255, 255, 255, 0.45);
--heatmap-color-1: #303030;
--heatmap-color-2: #5E5E5E;
--heatmap-color-3: #919191;
--heatmap-color-4: #C6C6C6;
--heatmap-color-5: #FFFFFF;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,35 @@
/* dP dP dP */
/* 88 88 88 */
/* d8888P 88d888b. .d8888b. 88d8b.d8b. .d8888b. 88d888b. .d8888b. 88d888b. 88 .dP */
/* 88 88' `88 88ooood8 88'`88'`88 88ooood8 88' `88 88' `88 88' `88 88888" */
/* 88 88 88 88. ... 88 88 88 88. ... 88. .88 88. .88 88 88 `8b. */
/* dP dP dP `88888P' dP dP dP `88888P' 88 88Y888P' `88888P8 dP dP `YP */
/* 88 */
/* dP */
/* Made by @gilbN */
/* https://github.com/gilbN/theme.park */
/* GITEA HOTLINE THEME */
@import url(https://gilbn.github.io/theme.park/CSS/themes/gitea/gitea-base.css);
@import url(https://gilbn.github.io/theme.park/CSS/themes/gitea/chroma.css);
:root {
--main-bg-color: radial-gradient(ellipse at center, #F44336 0%, #0b3161 100%) center center/cover no-repeat fixed;
--modal-bg-color: radial-gradient(ellipse at top, #F44336 0%, #0b3161 100%) center center/cover no-repeat fixed;
--button-color: hsla(0,0%,100%,.15);
--button-color-hover: hsla(0,0%,100%,.30);
--button-text: #eee;
--accent-color: #F44336;
--accent-color-hover: #0b3161;
--text: #eee;
--text-hover: #fff;
--text-muted: #bbb;
--link-hover: #F44336;
--heatmap-color-1: #690000;
--heatmap-color-2: #890000;
--heatmap-color-3: #AC0002;
--heatmap-color-4: #D0191D;
--heatmap-color-5: #F44336;
}

View File

@ -0,0 +1,35 @@
/* dP dP dP */
/* 88 88 88 */
/* d8888P 88d888b. .d8888b. 88d8b.d8b. .d8888b. 88d888b. .d8888b. 88d888b. 88 .dP */
/* 88 88' `88 88ooood8 88'`88'`88 88ooood8 88' `88 88' `88 88' `88 88888" */
/* 88 88 88 88. ... 88 88 88 88. ... 88. .88 88. .88 88 88 `8b. */
/* dP dP dP `88888P' dP dP dP `88888P' 88 88Y888P' `88888P8 dP dP `YP */
/* 88 */
/* dP */
/* Made by @gilbN */
/* https://github.com/gilbN/theme.park */
/* GITEA ORGANIZR-DARK THEME */
@import url(https://gilbn.github.io/theme.park/CSS/themes/gitea/gitea-base.css);
@import url(https://gilbn.github.io/theme.park/CSS/themes/gitea/chroma.css);
:root {
--main-bg-color: #1f1f1f;
--modal-bg-color: #1b1b1b;
--button-color: #2cabe3;
--button-color-hover: rgb(44 171 227 / .8);
--button-text: #eee;
--accent-color:#2cabe3;
--accent-color-hover: #fff;
--text: #96a2b4;
--text-hover: #fff;
--text-muted: #bbb;
--link-color: #2cabe3;
--heatmap-color-1: #002A57;
--heatmap-color-2: #004878;
--heatmap-color-3: #00679A;
--heatmap-color-4: #0088BE;
--heatmap-color-5: #2CABE3;
}

View File

@ -0,0 +1,35 @@
/* dP dP dP */
/* 88 88 88 */
/* d8888P 88d888b. .d8888b. 88d8b.d8b. .d8888b. 88d888b. .d8888b. 88d888b. 88 .dP */
/* 88 88' `88 88ooood8 88'`88'`88 88ooood8 88' `88 88' `88 88' `88 88888" */
/* 88 88 88 88. ... 88 88 88 88. ... 88. .88 88. .88 88 88 `8b. */
/* dP dP dP `88888P' dP dP dP `88888P' 88 88Y888P' `88888P8 dP dP `YP */
/* 88 */
/* dP */
/* Made by @gilbN */
/* https://github.com/gilbN/theme.park */
/* GITEA PLEX THEME */
@import url(https://gilbn.github.io/theme.park/CSS/themes/gitea/gitea-base.css);
@import url(https://gilbn.github.io/theme.park/CSS/themes/gitea/chroma.css);
:root {
--main-bg-color: url("https://raw.githubusercontent.com/gilbN/theme.park/master/Resources/blur-noise.png"), url("https://raw.githubusercontent.com/gilbN/theme.park/master/Resources/preset-light2.png") center center/cover no-repeat fixed;
--modal-bg-color: url("https://raw.githubusercontent.com/gilbN/theme.park/master/Resources/blur-noise.png"), url("https://raw.githubusercontent.com/gilbN/theme.park/master/Resources/preset-dark2.png") center center/cover no-repeat fixed;
--button-color: #cc7b19;
--button-color-hover: #e59029;
--button-text: #eee;
--accent-color: #e5a00d;
--accent-color-hover: #ffc107;
--text: #eee;
--text-hover: #fff;
--text-muted: #bbb;
--link-color:#fff;
--heatmap-color-1: #492000;
--heatmap-color-2: #6E4500;
--heatmap-color-3: #9B6C00;
--heatmap-color-4: #CC9500;
--heatmap-color-5: #FFC107;
}

View File

@ -0,0 +1,36 @@
/* dP dP dP */
/* 88 88 88 */
/* d8888P 88d888b. .d8888b. 88d8b.d8b. .d8888b. 88d888b. .d8888b. 88d888b. 88 .dP */
/* 88 88' `88 88ooood8 88'`88'`88 88ooood8 88' `88 88' `88 88' `88 88888" */
/* 88 88 88 88. ... 88 88 88 88. ... 88. .88 88. .88 88 88 `8b. */
/* dP dP dP `88888P' dP dP dP `88888P' 88 88Y888P' `88888P8 dP dP `YP */
/* 88 */
/* dP */
/* Made by @gilbN */
/* https://github.com/gilbN/theme.park */
/* GITEA SPACE GRAY THEME */
@import url(https://gilbn.github.io/theme.park/CSS/themes/gitea/gitea-base.css);
@import url(https://gilbn.github.io/theme.park/CSS/themes/gitea/chroma.css);
:root {
--main-bg-color: radial-gradient( ellipse at center, rgba(87,108,117,1) 0%, rgba(37,50,55,1) 100.2% ) center center/cover no-repeat fixed;
--modal-bg-color: radial-gradient( ellipse at top, rgba(87,108,117,1) 0%, rgba(37,50,55,1) 100.2% ) center center/cover no-repeat fixed;
--button-color: #607D8B;
--button-color-hover: #81a6b7;
--button-text: #eee;
--accent-color: #81a6b7;
--accent-color-hover: #81a6b7;
--text: #eee;
--text-hover: #fff;
--text-muted: #bbb;
--link-color: #81a6b7;
--heatmap-color-1: #002634;
--heatmap-color-2: #1D4352;
--heatmap-color-3: #3E6272;
--heatmap-color-4: #5F8394;
--heatmap-color-5: #81A6B7;
}

View File

@ -1,16 +0,0 @@
#!/bin/bash
SDIR=$(dirname "$(readlink -f "$0")") || exit
DIR=$(dirname "$SDIR") || exit
echo Caddy Reposity Root: $DIR
source $SDIR/library
CONF=$DIR/conf/${1:-caddy}.conf
CMD=${2:-run}
get-caddy-bin # this sets $CADDY_BIN
BIN=$DIR/bin/$CADDY_BIN
[ ! -f "$BIN" ] && echo binary file $BIN does not exist && exit 1
[ ! -x "$BIN" ] && echo binary file $BIN is not executable && exit 1
[ ! -f "$CONF" ] && echo no configuration file $CONF && exit 1
# source any need environment files in $DIR/env
for f in $DIR/env/*.env; do source $f; done
echo Running caddy binary $BIN with configuration $CONF and command $CMD as user $USER
$BIN $CMD --config $CONF --adapter caddyfile

View File

@ -1,44 +0,0 @@
# if this file and binary resides on other than filesystem root then COPY the service to NOT link it
# Change directories below to fit your install
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
# Binary, System Files and Repos on other than filesystem root then include this require/after
# With below command you can find the unit of the mounted drive of those files
#systemctl list-units | grep <dir>
# gitea files in opt/gitea
Requires=opt.mount
After=opt.mount
# repo/db/data for gitea in mnt/git-server
Requires=mnt-data.mount
After=mnt-data.mount
# using local sqlite
#After=mysqld.service
#After=postgresql.service
#After=memcached.service
#After=redis.service
[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
RestartSec=2s
Type=simple
User=sysadmin
Group=sysadmin
Environment=GITEA_DIR=@d
Environment=GITEA_REPOS=@r
ExecStart=/bin/bash -c '${GITEA_DIR}/scripts/run -r ${GITEA_REPOS} %i '
Restart=always
# If you want to bind Gitea to a port below 1024 uncomment
# the two values below
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target

5
scripts/ini-gen Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
[[ ! $GITEA_DIR ]] && export GITEA_DIR="$(dirname "$(cd "$(readlink -f "$BASH_SOURCE")"; pwd -P)")"
source $GITEA_DIR/scripts/library
ini_gen "$@"

0
scripts/install Executable file
View File

View File

@ -1,15 +1,19 @@
#!/bin/bash
[[ ! $GITEA_DIR ]] && export GITEA_DIR="$(dirname "$(cd "$(dirname "$BASH_SOURCE")"; pwd -P)")"
export GITEA_GITHUB_REPO=go-gitea/gitea
# finds current installed version
function version () {
# https://askubuntu.com/a/952479/478337
[[ ! -f $GITEA_DIR/gitea.bin ]] && echo "" && return 2
CUR_VER=$($GITEA_DIR/gitea.bin -version | sed -nr 's:.*version ([^ ]+).*:\1:p')
[[ $1 ]] && export GITEA_BIN=$1
[[ ! $GITEA_BIN ]] && return 3 && echo no bin file path passed
[[ ! -f $GITEA_BIN ]] && echo "" && return 2
CUR_VER=$($GITEA_BIN -version | sed -nr 's:.*version ([^ ]+).*:\1:p')
[ ! $CUR_VER ] && return 1
echo $CUR_VER
}
# sets global $OS
# sets system operating system that is supported
function get_OS () {
case "$OSTYPE" in
# uncomment valid OS
@ -22,7 +26,7 @@ function get_OS () {
echo $OS
}
# sets global $ARCH
# gets system architecture supported
function get_arch () {
declare -A ARCHES
#ARCHES=( ["arm64"]="arm64" ["aarch64"]="arm64" ["x86_64"]="amd64" ["armv61"]="armv6" ["armv71"]="armv7" ["arm32"]="armv7" ["armhf"]="armv7" )
@ -33,6 +37,193 @@ ARCH=${ARCHES[$(uname -m)]}
echo $ARCH
}
function set-env () {
for f in $1/*.env; do source $f; done
# get list of installed gitea themes in /frontend/$1/public/css
function get_theme_list () {
local themes=""
for theme in $1/theme*.css; do
themes+=$(basename $theme .css | cut -c 7-),
done
themes+=gitea,arc_green
echo $themes
}
# sets the environment variables for gitea managment based on instance name
function set_env () {
unset GITEA_INSTANCE
unset GITEA_BIN
unset GITEA_DATA_DIR
local Env_file
local Dir
declare OPTARG
declare OPTION
declare OPTIND=0
[[ ! $GITEA_DIR ]] && export GITEA_DIR="$(dirname "$(cd "$(readlink -f "$BASH_SOURCE")"; pwd -P)")"
[[ ! $GITEA_DIR ]] && echo main directory not set, aborting && return 2
while getopts 'tiud:' OPTION; do
case "$OPTION" in
d) Dir=$OPTARG ;;
*) ;;
esac
done
shift $(( $OPTIND - 1 ))
[[ $1 ]] && export GITEA_INSTANCE=$1
[[ ! $GITEA_INSTANCE ]] && echo warning no gitea instance set using \'default\' && export GITEA_INSTANCE=default
Env_file=$GITEA_DIR/env/$GITEA_INSTANCE.env
[[ -f $Env_file ]] && source $Env_file || echo info: no environment found $Env_file
# env | grep GITEA
# echo ---
[[ ! $GITEA_BIN ]] && GITEA_BIN="$GITEA_DIR/gitea.bin"
[[ $GITEA_BIN == */ ]] && GITEA_BIN="${GITEA_BIN}gitea.bin"
[[ ! $GITEA_BIN == /* ]] && GITEA_BIN="$GITEA_DIR/$GITEA_BIN"
export GITEA_BIN
# option overrides environment file
GITEA_DATA_DIR=${Dir:-$GITEA_DATA_DIR}
GITEA_DATA_DIR=${GITEA_DATA_DIR:-$GITEA_DIR/data}
[[ ! $GITEA_DATA_DIR == /* ]] && GITEA_DATA_DIR="$GITEA_DIR/$GITEA_DATA_DIR"
export GITEA_DATA_DIR
}
# generates .ini from corresponding .tmpl file
function ini_gen () {
[[ ! $GITEA_DIR ]] && export GITEA_DIR="$(dirname "$(cd "$(readlink -f "$BASH_SOURCE")"; pwd -P)")"
local Ini
local Lock=true
declare OPTARG
declare OPTION
declare OPTIND=0
while getopts 'itud:' OPTION; do
case "$OPTION" in
i) Lock=false ;;
*) ;;
esac
done
shift $(( $OPTIND - 1 ))
GITEA_INSTANCE=$1
[[ ! $GITEA_INSTANCE ]] && set_env "$@"
echo $Lock
echo ini_gen
env | grep GITEA
Ini=$GITEA_DIR/config/$GITEA_INSTANCE
if [[ -f "$Ini.tmpl" ]]; then
_Header=";################################################################
;# THIS FILE IS GENERATED. Do not edit directly #
;# It was created from $Ini.tmpl #
;# Edit this file and run with -t or run ini-gen to regenerate #
;################################################################"
# https://stackoverflow.com/a/22819516/4695378
# search and replace data entries in template file
echo -e "$_Header" > $Ini.ini
cat $Ini.tmpl | \
sed 's:@@_server_dir:'$GITEA_DATA_DIR':'g | \
sed 's:\(INSTALL_LOCK *= \)\(.*\):\1'${Lock}':' | \
sed 's:\(THEMES *= \)\(.*\):\1'"$(get_theme_list $GITEA_DIR/frontend/current/public/css)"':' \
>> $Ini.ini
echo info: $Ini.ini file was generated from $Ini.tmpl
else
echo warning: no file "$Ini.tmpl", no ini file was generated
fi
}
# downloads gitea binary based on OS and Architecture and whether it needs updating
# if you have run into github api anonymous access limits which happens during debugging/dev
# then run with user and token environment variables or source separate file
function download_bin () {
# dependencies, jq
[[ $(command -v jq &> /dev/null) ]] && echo jq is required, install via \'sudo apt install jq\' && exit
echo passed stuff: $@
[[ ! $GITEA_DIR ]] && export GITEA_DIR="$(dirname "$(cd "$(dirname "$BASH_SOURCE")"; pwd -P)")"
[[ ! $GITEA_BIN ]] && set_env "$@"
[[ ! $GITEA_BIN ]] && echo a Gitea binary path not set, aborting && exit 1
local TokenFile
declare OPTARG
declare OPTION
declare OPTIND=0
echo passed stuff: $@
while getopts 'fg:itud:' OPTION; do
case "$OPTION" in
g) TokenFile=$OPTARG ;;
f) Force=true ;;
*) ;;
esac
done
shift $(( $OPTIND - 1 ))
echo "#### Gitea Binary Upgrade or Install ###"
[[ -f $GITEA_BIN ]] && echo Checking for upgrade of $GITEA_BIN || echo no current gitea binary at $GITEA_BIN
OS=$(get_OS)
ARCH=$(get_arch)
[[ ! $OS ]] && echo non supported OS $OS && exit
[[ ! $ARCH ]] && echo non supported architecture $ARCH && exit
echo Gitea Binary for: Operating System $OS, Architecture $ARCH
RECORD=$(curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/$GITEA_GITHUB_REPO/releases/latest)
NEW_VER=$(echo $RECORD | jq -r '.tag_name')
[ "$NEW_VER" ] && echo $NEW_VER is latest version available from https://github.com/$GITEA_GITHUB_REPO/releases
# echo Checking current installed Gitea binary version
VER=$(version)
if [[ "$NEW_VER" == "v$VER" ]]; then
echo "Gitea binary is up to date"
if [[ $Force ]]; then
echo Forcing option set. Downloading/Overwriting existing binary with same version
else
echo "Nothing to upgrade, exiting"
return 0
fi
else
[[ $VER ]] && echo updating v$VER to $NEW_VER || echo no current installed gitea binary, installing $NEW_VER
fi
URL=$(echo $RECORD | \
jq -r \
--arg os $OS \
--arg arch $ARCH \
--arg archnot "$ARCH." \
'.assets[] | select( .name | contains($os)) |
select (.name | contains($arch)) |
select (.name | contains($archnot) | not )
.browser_download_url' \
)
[[ -f ${TokenFile:-$HOME/.github} ]] && source ${TokenFile:-$HOME/.github}
if [[ $GITHUB_TOKEN ]]; then
echo "using access github token with script >>> $GITHUB_USER:$GITHUB_TOKEN"
fi
if [ $URL ]; then
echo "Downloading Gitea Binary at $URL"
wget --user=-u $GITHUB_USER --password=$GITHUB_TOKEN -q --show-progress -O $GITEA_BIN $URL
if ( [[ $? -eq 0 ]] && [[ "$NEW_VER" == *"$(version)"* ]] ); then
chmod +x $GITEA_BIN
echo upgrade succeeded, $GITEA_BIN version is $(version)
else
echo upgrade from $URL failed
fi
else
echo unabled to determine download url
fi
}

View File

@ -2,49 +2,49 @@
[[ ! $GITEA_DIR ]] && export GITEA_DIR="$(dirname "$(cd "$(readlink -f "$BASH_SOURCE")"; pwd -P)")"
source $GITEA_DIR/scripts/library
declare Ini
declare Upgrade=false
declare Template=false
declare Lock=true
declare OPTARG
declare OPTION
while getopts 'r:' OPTION; do
case "$OPTION" in
r)
GITEA_DATA_DIR=$OPTARG
;;
*) ;;
esac
done
shift $(( OPTIND - 1 ))
declare OPTIND=0
while getopts 'itu' OPTION; do
case "$OPTION" in
u) Upgrade=true ;;
t) Template=true ;;
i) Lock=false ;;
*) ;;
esac
done
# echo upgrade: $Upgrade
# echo passed $@
set_env "$@"
# echo passed $@
echo "#### running instance: $GITEA_INSTANCE with environment ####"
env | grep GITEA
echo "##################################"
[[ $Upgrade = true ]] && $GITEA_DIR/scripts/fetch-bin "$@"
[[ ! $(version) ]] && echo FATAL! $GITEA_BIN missing or corrupt: run `fetch-bin` script && exit 1
export GITEA_INSTANCE=${1:-default}
export GITEA_BIN="$GITEA_DIR/gitea.bin"
[[ ! -f $GITEA_BIN ]] && $GITEA_DIR/scripts/upgrade
[[ ! $(version) ]] && echo $GITEA_DIR/gitea.bin missing or corrupt
if [[ ! $GITEA_DATA_DIR ]]; then
GITEA_DATA_DIR=$GITEA_DIR/data
else
[[ ! $GITEA_DATA_DIR == /* ]] && { echo "repo directory $GITEA_DATA_DIR was not absolute, aborting" ; exit; }
fi
export GITEA_DATA_DIR
INI=$GITEA_DIR/config/$GITEA_INSTANCE
if ([[ -f "$INI.tmpl" ]] && [[ ! -f $GITEA_DATA_DIR/db/git.db ]]); then
# if database does not exist unlock the install page so default user can be set # && LOCK=true
# https://stackoverflow.com/a/22819516/4695378
# search and replace data subdirectory entries in template file
cat $INI.tmpl | sed 's:@@_server_dir:'$GITEA_DATA_DIR':'g | sed 's:\(INSTALL_LOCK *= \)\(.*\):\1'${LOCK:-false}':' > $INI.ini
# TODO could replace other values as well
fi
[[ ! -f "$INI.ini" ]] && { echo "no ini file $INI.ini, aborting" ; exit; }
# echo $GITEA_DATA_DIR
# echo $GITEA_DIR
# echo $ARCH ${ARCHES[$ARCH]} $GITEA_BIN
mkdir -p $GITEA_DATA_DIR 2>/dev/null || { echo "unable to make repos directory at $GITEA_DATA_DIR, exiting"; exit; }
# setup the custom directory in /current
mkdir -p $GITEA_DIR/frontend/current
rsync -a --delete $GITEA_DIR/frontend/default/ $GITEA_DIR/frontend/current
[[ -d $GITEA_DIR/frontend/$GITEA_INSTANCE ]] && rsync -a $GITEA_DIR/frontend/$GITEA_INSTANCE/ $GITEA_DIR/frontend/current
[[ $Template = true ]] && ini_gen $([[ $Lock = false ]] && echo "-i") $GITEA_INSTANCE
Ini=${GITEA_DIR}/config/${GITEA_INSTANCE}.ini
[[ ! -f "$Ini" ]] && { echo "no ini file $Ini, aborting" ; exit; }
export GITEA_WORK_DIR=$GITEA_DATA_DIR
export GITEA_CUSTOM=$GITEA_DIR/frontend/current
export USER=sysadmin
export HOME=/home/sysadmin
echo Running: $GITEA_BIN web -c $INI.ini
echo Server repos/logs/data/db will be $GITEA_DATA_DIR
$GITEA_BIN web -c $INI.ini
echo Running: $GITEA_BIN web -c $Ini
echo Git Server repos/logs/data/db will be in $GITEA_DATA_DIR
$GITEA_BIN web -c $Ini

View File

@ -0,0 +1,41 @@
# Gitea Systemd Template File
# %i is the instance which must have corresponding %i.ini file in config/
# if using a tmpl file you must 'install' gitea first using
# this must installed run via sdinstall script so
# @d can be replaced by the Gitea run directory to be stored in GITEA_DIR
# To use this service with a custom GITEA_DATA_DIR that must be exported in 'env/<instance>.env'
# Otherwise it will use the default which is GITEA_DIR/data
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
# if localtion of Gitea run and data files depend on mounts
# then Requires and After must set
# note, subdirectories use - delimiter not /
Requires=opt.mount
After=opt.mount
Requires=mnt-data.mount
After=mnt-data.mount
# using sqlite so don't need to wait on any of these
#After=mysqld.service
#After=postgresql.service
#After=memcached.service
#After=redis.service
[Service]
# Uncomment and Modify these two values if you have
# repos with lots of files and get an HTTP error 500 because
# of that
#
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
RestartSec=5s
Type=simple
User=sysadmin
Group=sysadmin
Environment=GITEA_DIR=@d
ExecStart=/bin/bash -c '${GITEA_DIR}/scripts/run %i'
Restart=on-failure
[Install]
WantedBy=multi-user.target

7
scripts/systemd/install Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
[[ ! $GITEA_DIR ]] && export GITEA_DIR="$(dirname "$(cd "$(readlink -f "$BASH_SOURCE")"; pwd -P)")"
SDDIR="/etc/systemd/system"
ServiceFile=$GITEA_DIR/scripts/systemd/gitea@.service
echo "Installing Template Service file at $ServiceFile"
echo ---- Service file as written to $SDDIR ----
cat $ServiceFile | sed 's:@d:'$GITEA_DIR':'g | sudo tee $SDDIR/gitea@.service

6
scripts/systemd/log Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
ServiceName=gitea
Instance=$1
[[ ! $1 ]] && echo warning no instance supplied using default && Instance=default
Service=$ServiceName@$Instance
journalctl -u "$Service" | tail -f -n ${2:-50}

8
scripts/systemd/persist Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
ServiceName=gitea
Instance=$1
[[ ! $1 ]] && echo warning no instance supplied using default && Instance=default
Service=$ServiceName@$Instance
systemctl is-active --quiet $Service && \
sudo systemctl enable $Service || \
echo "can't persist $Instance as it must be running first"

10
scripts/systemd/restart Executable file
View File

@ -0,0 +1,10 @@
#!/bin/bash
ServiceName=gitea
Instance=$1
[[ ! $1 ]] && echo warning no instance supplied using default && Instance=default
Service=$ServiceName@$Instance
sudo systemctl restart $Service
sleep 5
systemctl is-active --quiet $Service && \
echo $ServiceName $Instance was sucessfully restarted || \
(echo error: unable to restart $Service; "$(dirname "$BASH_SOURCE")"/log $Instance 20;)

16
scripts/systemd/start Executable file
View File

@ -0,0 +1,16 @@
#!/bin/bash
ServiceName=gitea
Instance=$1
[[ ! $1 ]] && echo warning no instance supplied using default && Instance=default
Service=$ServiceName@$Instance
if systemctl is-active --quiet $Service; then
echo $Service is already running
else
echo starting $Service....
sudo systemctl daemon-reload
sudo systemctl start $Service
sleep 5
systemctl is-active --quiet $Service && \
echo $ServiceName $Instance is now running || \
(echo error: unable to start $Service; "$(dirname "$BASH_SOURCE")"/log $Instance 20;)
fi

15
scripts/systemd/stop Executable file
View File

@ -0,0 +1,15 @@
#!/bin/bash
ServiceName=gitea
Instance=$1
[[ ! $1 ]] && echo warning no instance supplied using default && Instance=default
Service=$ServiceName@$Instance
if systemctl is-active --quiet $Service; then
echo stopping $Service...
sudo systemctl stop $Service
sleep 5
systemctl is-active --quiet $Service && \
(echo error: unable to stop $Instance; "$(dirname "$BASH_SOURCE")"/log $Instance 20;) || \
echo $Instance is now stopped
else
echo $Instance is already stopped
fi

4
scripts/systemd/upgrade Executable file
View File

@ -0,0 +1,4 @@
ServiceName=gitea
Instance=$1
[[ ! $1 ]] && echo warning no instance supplied using default && Instance=default
Service=$ServiceName@$Instance

View File

@ -1,65 +1,5 @@
#!/bin/bash
# dependencies, jq
# if you have run into github api anonymous access limits which happens during debugging/dev then add user and token here or sourced from a separate file
# . ~/githubapitoken
#GITHUB_USER=""
#GITHUB_TOKEN=""
[[ $(command -v jq &> /dev/null) ]] && echo jq is required, install via \'sudo apt install jq\' && exit
[[ ! $GITEA_DIR ]] && export GITEA_DIR="$(dirname "$(cd "$(dirname "$BASH_SOURCE")"; pwd -P)")"
[[ ! $GITEA_DIR ]] && export GITEA_DIR="$(dirname "$(cd "$(readlink -f "$BASH_SOURCE")"; pwd -P)")"
source $GITEA_DIR/scripts/library
REPO=go-gitea/gitea
if [ "$GITHUB_TOKEN" != "" ]; then
echo using access token with script
echo $GITHUB_USER $GITHUB_TOKEN
fi
# ARCHIVE=tar.gz
# [ "$OS" == "windows" ] && ARCHIVE=zip
OS=$(get_OS)
ARCH=$(get_arch)
[[ ! $OS ]] && echo non supported OS $OS && exit
[[ ! $ARCH ]] && echo non supported architecture $ARCH && exit
echo Gitea Upgrade/Install for
echo Operating System $OS
echo Architecture $ARCH
RECORD=$(curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/$REPO/releases/latest)
NEW_VER=$(echo $RECORD | jq -r '.tag_name')
[ "$NEW_VER" ] && echo $NEW_VER is latest version available from https://github.com/c$REPO/releases
echo checking current gitea installed version
VER=$(version)
if [[ "$NEW_VER" == "v$VER" ]]; then
echo gitea is up to date, nothing to upgrade, v$VER
exit
else
[[ $VER ]] && echo updating v$VER to $NEW_VER || echo no current installed gitea binary, installing $NEW_VER
fi
URL=$(echo $RECORD | \
jq -r \
--arg os $OS \
--arg arch $ARCH \
--arg archnot "$ARCH." \
'.assets[] | select( .name | contains($os)) |
select (.name | contains($arch)) |
select (.name | contains($archnot) | not )
.browser_download_url' \
)
echo $URL
if [ $URL ]; then
echo "Downloading Gitea Binary at $URL"
wget --user=-u $GITHUB_USER --password=$GITHUB_TOKEN -q -O $GITEA_DIR/gitea.bin $URL
if ( [[ $? -eq 0 ]] && [[ "$NEW_VER" == *"$(version)"* ]] ); then
chmod +x $GITEA_DIR/gitea.bin
echo upgrade succeeded, $GITEA_DIR/gitea.bin version is $(version)
else
echo upgrade from $URL failed
fi
else
echo unabled to determine download url
fi
download_bin "$@"