Compare commits

...

50 Commits
v1 ... master

Author SHA1 Message Date
AJ ONeal 06586de3bc Merge branch 'master' of josh/gitea-installer.sh into master 2018-08-21 01:02:07 +00:00
Josh Mudge 56cf425e46 Make a little better side-note. 2018-08-20 18:40:14 -06:00
Josh Mudge ad14316950 Fix formatting. 2018-08-20 18:37:34 -06:00
Josh Mudge ece1e705b0 Fix typos in merge. 2018-08-20 17:52:18 -06:00
Josh Mudge 09e97e86f3 Merge https://git.coolaj86.com/coolaj86/gitea-installer.sh
# Conflicts:
#	README.md
#	install.bash
2018-08-20 17:46:24 -06:00
AJ ONeal 5de77f0095 Update 'README.md' 2018-08-20 15:24:38 +00:00
AJ ONeal ffe1985c5c add my own configs 2018-08-20 15:21:41 +00:00
AJ ONeal 7b0570934a note HTTP_ADDR 2018-08-20 14:58:54 +00:00
AJ ONeal 3ee76dbb7e Update 'install.bash' 2018-08-20 14:20:44 +00:00
Josh Mudge 406b1b719b Fix if block. 2018-08-17 18:14:10 -06:00
AJ ONeal 0457140be4 add screencast to docs 2018-08-08 01:02:04 +00:00
Josh Mudge 90d27beaf6 Make removal script more verbose. 2018-07-26 15:20:54 -06:00
Josh Mudge f389c2cad2 Add script to automatically remove Gitea. 2018-07-26 15:16:16 -06:00
Josh Mudge dcb820e844 Symlink to path. 2018-07-26 15:02:27 -06:00
Josh Mudge fdd890d441 Update Docs for typos and clarity. 2018-07-26 14:39:18 -06:00
Josh Mudge 9a00313a6a Use sudo for permissions. 2018-06-28 15:35:30 -06:00
Josh Mudge 03bd5b5011 Fix permissions issue. 2018-06-28 15:33:49 -06:00
Josh Mudge c1a0669e6e Fix typo 2018-06-28 15:31:03 -06:00
Josh Mudge c5d75c1016 Fix curl output issue. 2018-06-28 15:29:49 -06:00
Josh Mudge 7806ec9773 Make curl more robust. 2018-06-28 15:16:37 -06:00
Josh Mudge fb0d107416 Fix systemd service. 2018-06-28 15:15:06 -06:00
Josh Mudge f421b83487 Update README formatting. 2018-06-28 15:03:54 -06:00
Josh Mudge 20fb4b7dfe Add option to specify the version manually. Update docs. 2018-06-28 15:02:19 -06:00
Josh Mudge 91f4ecd3f8 Automagically get latest version and convert to curl links. 2018-06-28 14:41:50 -06:00
Josh Mudge 8232bba348 Update with easier install docs. 2018-06-28 18:41:39 +00:00
Josh Mudge f1aad8be59 Update 'README.md' 2018-06-28 16:40:39 +00:00
Josh Mudge 735958f8f9 Add i386 support 2018-06-23 22:41:55 -06:00
Josh Mudge 7cb52884fc Add ARMv6 support 2018-06-23 22:33:17 -06:00
Josh Mudge 6f2ca3d312 Fix AMD install. 2018-06-23 22:02:45 -06:00
Josh Mudge eb8dfc1af3 Update to check for ARM or x86 and install the correct version. 2018-06-23 21:57:23 -06:00
Josh Mudge 99f7a27ea2 Update and make ARMv7 version. 2018-06-23 21:44:29 -06:00
AJ ONeal d75ad1a205 Update 'README.md' 2018-06-04 21:33:56 +00:00
AJ ONeal 22937eb9b7 Update 'README.md' 2018-06-04 21:33:03 +00:00
AJ ONeal 7a457b6a35 open screencast in new window 2018-06-04 21:32:38 +00:00
AJ ONeal 7b0b4f819a add screencast link 2018-06-04 21:32:12 +00:00
AJ ONeal 764458a74f tabs -> spaces 2018-06-04 20:52:26 +00:00
AJ ONeal 902eaa71e2 Make instructional output more readable 2018-06-04 20:06:14 +00:00
AJ ONeal 6728663a8b update output 2018-06-04 20:03:40 +00:00
AJ ONeal 09617dc377 update to v1.4.1 2018-05-29 20:22:04 +00:00
AJ ONeal 8a3ebf85d2 update version to 1.4.1 2018-05-29 19:55:51 +00:00
AJ ONeal fbc6ee7443 add note on swap space for upgrades 2018-04-19 05:25:22 +00:00
AJ ONeal c04c9ea296 fixes and updates 2018-04-19 05:14:46 +00:00
AJ ONeal 0ecb2ee707 Update 'README.md' 2018-03-27 06:12:03 +00:00
AJ ONeal 35a23e3aa4 Update 'README.md' 2018-03-26 07:53:08 +00:00
AJ ONeal 7d8ebc4daf Update 'README.md' 2018-03-26 07:33:58 +00:00
AJ ONeal b9307b6531 Update to v1.4.0
Update to v1.4.0 and show customization notes.
2018-03-26 06:48:25 +00:00
AJ ONeal a86e981db5 Update 'README.md' 2018-03-26 06:32:53 +00:00
AJ ONeal e4c7bbdc54 Update 'README.md' 2018-03-26 06:08:55 +00:00
AJ ONeal c28dd2a93b add gitea link 2018-02-27 16:22:32 +00:00
AJ ONeal 4cfb4132b4 add example goldilocks config 2017-11-14 09:02:19 -07:00
14 changed files with 2344 additions and 25 deletions

122
README.md
View File

@ -1,44 +1,130 @@
# Gitea Installer
Installs Gitea as a systemd service
Installs [Gitea](https://gitea.io) (formerly Gogs) as a systemd service
## Linux Install Script
# Easy Install (Linux)
You can download and run the installer script:
You can download and run the installer script using this command:
```bash
wget -O install-gitea.bash https://git.coolaj86.com/coolaj86/gitea-installer.sh/raw/master/install.bash
bash install-gitea.bash
```
`curl -fsSL https://git.coolaj86.com/coolaj86/gitea-installer.sh/raw/branch/master/install.bash | bash`
<a href="https://youtu.be/dTvTBlzKqgg" target="_blank"><img title="How to install Gitea" alt="a screencast of me installing gitea and migrating one of my github repos" src="https://i.imgur.com/e4CZdBu.png"></a>
## Specific Versions
You can pick a specific version to install. For example, if you were nostalgic for 1.2.0, you could run:
`curl -fsSL https://git.coolaj86.com/coolaj86/gitea-installer.sh/raw/branch/master/install.bash | bash -s version 1.2.0`
# After Installing
Once you have gitea installed and running you must choose
which database to use, certain gitea paths, an admin user, etc.
Go to: http://localhost:3000/
You should see these fields:
*The following is for basic usage with this script, for more advance usage see: [https://docs.gitea.io/en-us/customizing-gitea/](https://docs.gitea.io/en-us/customizing-gitea/)*
`Database Type:` Use SQLite3 for the database.
`Path:` Leave this alone.
`Application Name:` Give your Gitea server a fancy name.
`Repository Root Path:` Leave this alone.
`LFS Root Path:` Leave this alone.
`Run User:` Leave this alone.
`Domain:` Replace this with your domain name for the server.
`SSH Port:` Leave this alone unless you want a custom port for SSH.
`HTTP Port:` Change this if you want Gitea to serve on a different port. You don't usually need to, Gitea is usually used behind a web server.
`Application URL:` Enter the full URL for your Gitea instance, like https://example.com/
`Log Path:` Leave this alone.
Click on "Admin Account Settings" to setup your user account and click "Install Gitea" when you are done.
## Manual Install
Or manually install by reading these instructions and following along:
```bash
# Create a 'gitea' user and group with the home /opt/gitea, no password (because it's a system user) and no GECOS
### Create a 'gitea' user and group with the home /opt/gitea, no password (because it's a system user) and no GECOS
sudo adduser gitea --home /opt/gitea --disabled-password --gecos ''
# Make some other potentially useful directories for that user/group
### Make some other potentially useful directories for that user/group
sudo mkdir -p /opt/gitea/ /var/log/gitea
sudo chown -R gitea:gitea /opt/gitea/ /var/log/gitea
# Download and install gitea
sudo wget -O /opt/gitea/gitea https://dl.gitea.io/gitea/1.0.1/gitea-1.0.1-linux-amd64
### Download and install gitea. Replace "amd64" with "i386" for 32 bit x86 or "arm-7" for ARMv7 and "arm-6" for ARMv6.
sudo wget -O /opt/gitea/gitea https://dl.gitea.io/gitea/1.4.1/gitea-1.4.1-linux-amd64
sudo chmod +x /opt/gitea/gitea
# Download and install the gitea.service for systemd
### Download and install the gitea.service for systemd
sudo wget -O /etc/systemd/system/gitea.service https://git.coolaj86.com/coolaj86/gitea-installer.sh/raw/master/dist/etc/systemd/system/gitea.service
# Start gitea
### Start gitea
sudo systemctl restart gitea
```
## Gitea Web Setup (post install)
Then see the post-install instruction above.
Once you've gitea installed and running you must choose
which database to use, certain gitea paths, an admin user, etc.
## Customize Gitea
> http://localhost:3000/
```
/opt/gitea/custom/conf/app.ini
https://github.com/go-gitea/gitea/tree/master/custom/conf/app.ini.sample
```
Once a reverse proxy is set up you can change the `HTTP_ADDR` from the default (world accessible) to localhost-only.
```
HTTP_ADDR = localhost
```
## Customize Gitea Theme
All overrides to the existing theme can be placed in the `custom/public` and `custom/templates` folders.
* Change Logo
* Change Landing Page
* Google Analytics
```
/opt/gitea/custom/public
/opt/gitea/custom/templates
/opt/gitea/custom/public/img/favicon.png # 16x16 logo in tab
/opt/gitea/custom/public/img/gitea-sm.png # 120x120 logo on all pages
/opt/gitea/custom/public/img/gitea-sm.png # 880x880 logo on landing page
/opt/gitea/custom/templates/home.tmpl # The landing page
/opt/gitea/custom/templates/base/head.tmpl # Google Analytics, Login with Github
```
* [Login with Github](https://git.coolaj86.com/coolaj86/gitea-installer.sh/src/tag/v1.0.0/custom/templates/base/head.tmpl#L277)
For many items, such as the logo, you can simply right-click "inspect" to discover the location. For example, the small logo is `/img/gitea-sm.png` or `/opt/gitea/custom/public/img/gitea-sm.png`.
You can find more information about customization and templates in the docs and on github:
* https://docs.gitea.io/en-us/customizing-gitea/
* https://github.com/go-gitea/gitea/tree/master/templates/
# Troubleshooting systemd
See [Troubleshooting systemd](https://git.coolaj86.com/coolaj86/service-installer.sh/src/master/README.md#troubleshooting-systemd)
See [Troubleshooting systemd](https://git.coolaj86.com/coolaj86/service-installer.sh/src/master/README.md#troubleshooting-systemd)
# Removing Gitea
Run this command to uninstall Gitea: (THIS WILL REMOVE ALL DATA if you are using SQLite!)
`curl -fsSL https://git.coolaj86.com/coolaj86/gitea-installer.sh/raw/branch/master/remove.bash | bash`

57
custom/conf/app.ini Normal file
View File

@ -0,0 +1,57 @@
APP_NAME = CoolAJ86 on GIT
DESCRIPTION = All Neo-Luddites and Lv. 99 Code Whisperers Welcome
RUN_USER = gitea
RUN_MODE = prod
[database]
DB_TYPE = sqlite3
HOST =
NAME =
USER =
PASSWD =
SSL_MODE = disable
PATH = /opt/gitea@git.coolaj86.com/data/gitea.db
[repository]
ROOT = /srv/gitea@git.coolaj86.com/gitea-repositories
[server]
SSH_DOMAIN = git.coolaj86.com
HTTP_ADDR = localhost
HTTP_PORT = 3000
ROOT_URL = https://git.coolaj86.com/
DISABLE_SSH = false
SSH_PORT = 22042
OFFLINE_MODE = false
[mailer]
ENABLED = true
HOST = smtp.mailgun.org:587
FROM = gitea@coolaj86.com
USER = gitea@coolaj86.com
PASSWD = 00000000000000000000000000000000
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = true
DISABLE_REGISTRATION = false
ENABLE_CAPTCHA = true
REQUIRE_SIGNIN_VIEW = false
[picture]
DISABLE_GRAVATAR = false
ENABLE_FEDERATED_AVATAR = true
[session]
PROVIDER = file
[log]
MODE = file
LEVEL = Info
ROOT_PATH = /opt/gitea@git.coolaj86.com/log
[security]
INSTALL_LOCK = true
SECRET_KEY = xxxxxxxxxx
INTERNAL_TOKEN = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1 @@
favicon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@ -0,0 +1,104 @@
{{/*
<html>
<body>
<div>
*/}}
{{template "custom/body_inner_post" .}}
</div>
{{template "custom/body_outer_post" .}}
<footer>
<div class="ui container">
<div class="ui left">
&copy;&nbsp;AJ ONeal, founder of <a target="_blank" href="https://ppl.family">ppl :)</a>
and <a target="_blank" href="https://dapliefounder.com">Daplie</a><a target="_blank" href="https://dap-lies.com">.</a>
</div>
<div class="ui right">
{{if .ShowFooterBranding}}
<a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea"><i class="fa fa-github-square"></i><span class="sr-only">GitHub</span></a>
{{end}}
<div class="ui language bottom floating slide up dropdown link item">
<i class="world icon"></i>
<div class="text">{{.LangName}}</div>
<div class="menu">
{{range .AllLangs}}
<a class="item {{if eq $.Lang .Lang}}active selected{{end}}" href="{{if eq $.Lang .Lang}}#{{else}}{{$.Link}}?lang={{.Lang}}{{end}}">{{.Name}}</a>
{{end}}
</div>
</div>
| Powered by <a target="_blank" rel="noopener" href="https://gitea.io">Gitea</a> {{if (or .ShowFooterVersion .PageIsAdmin)}}: v{{AppVer}}{{end}}
| {{if (or .ShowFooterVersion .PageIsAdmin)}}<span class="version">{{GoVer}}</span>{{end}}
| {{if ShowFooterTemplateLoadTime}}{{.i18n.Tr "page"}}: <strong>{{LoadTimes .PageStartTime}}</strong> {{.i18n.Tr "template"}}: <strong>{{call .TmplLoadTimes}}</strong>{{end}}
| <a href="{{AppSubUrl}}/api/swagger">API</a>
</div>
</div>
</footer>
<script src="{{AppSubUrl}}/vendor/plugins/jquery/jquery.min.js"></script>
<script src="{{AppSubUrl}}/vendor/plugins/jquery.areyousure/jquery.are-you-sure.js"></script>
{{if .RequireSimpleMDE}}
<script src="{{AppSubUrl}}/vendor/plugins/simplemde/simplemde.min.js"></script>
<script src="{{AppSubUrl}}/vendor/plugins/codemirror/addon/mode/loadmode.js"></script>
<script src="{{AppSubUrl}}/vendor/plugins/codemirror/mode/meta.js"></script>
<script>
CodeMirror.modeURL = "{{AppSubUrl}}/vendor/plugins/codemirror/mode/%N/%N.js";
</script>
{{end}}
{{if .RequireGitGraph}}
<!-- graph -->
<script src="{{AppSubUrl}}/vendor/plugins/gitgraph/gitgraph.js"></script>
<script src="{{AppSubUrl}}/js/draw.js"></script>
{{end}}
<!-- Third-party libraries -->
{{if .RequireHighlightJS}}
<script src="{{AppSubUrl}}/vendor/plugins/highlight/highlight.pack.js"></script>
{{end}}
{{if .RequireMinicolors}}
<script src="{{AppSubUrl}}/vendor/plugins/jquery.minicolors/jquery.minicolors.min.js"></script>
{{end}}
{{if .RequireDatetimepicker}}
<script src="{{AppSubUrl}}/vendor/plugins/jquery.datetimepicker/jquery.datetimepicker.js"></script>
{{end}}
{{if .RequireDropzone}}
<script src="{{AppSubUrl}}/vendor/plugins/dropzone/dropzone.js"></script>
{{end}}
{{if .RequireTribute}}
<script src="{{AppSubUrl}}/vendor/plugins/tribute/tribute.min.js"></script>
{{if .Assignees}}
<script>
var issuesTribute = new Tribute({
values: [
{{ range .Assignees }}
{key: '{{.Name}} {{.FullName}}', value: '{{.Name}}',
name: '{{.Name}}', fullname: '{{.FullName}}', avatar: '{{.RelAvatarLink}}'},
{{ end }}
],
noMatchTemplate: function () { return null },
menuItemTemplate: function (item) {
var user = item.original;
var itemStr = '<img src="' + user.avatar + '"/><span class="name">' + user.name + '</span>';
if (user.fullname && user.fullname != '') {
itemStr += '<span class="fullname">' + user.fullname + '</span>';
}
return itemStr;
}
})
issuesTribute.attach(document.getElementById('content'))
</script>
{{end}}
{{end}}
<script src="{{AppSubUrl}}/vendor/plugins/autolink/autolink.js"></script>
<script src="{{AppSubUrl}}/vendor/plugins/emojify/emojify.min.js"></script>
<script src="{{AppSubUrl}}/vendor/plugins/clipboard/clipboard.min.js"></script>
<script src="{{AppSubUrl}}/vendor/plugins/vue/vue.min.js"></script>
<!-- JavaScript -->
<script src="{{AppSubUrl}}/vendor/plugins/semantic/semantic.min.js"></script>
<script src="{{AppSubUrl}}/js/index.js?v={{MD5 AppVer}}"></script>
{{template "custom/footer" .}}
</body>
</html>

View File

@ -0,0 +1,290 @@
<!DOCTYPE html>
<html>
<head data-suburl="{{AppSubUrl}}">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>{{if .Title}}{{.Title}} - {{end}}{{AppName}}</title>
<meta name="theme-color" content="{{ThemeColorMetaTag}}">
<meta name="author" content="{{if .Repository}}{{.Owner.Name}}{{else}}{{MetaAuthor}}{{end}}" />
<meta name="description" content="{{if .Repository}}{{.Repository.Name}}{{if .Repository.Description}} - {{.Repository.Description}}{{end}}{{else}}{{MetaDescription}}{{end}}" />
<meta name="keywords" content="{{MetaKeywords}}">
<meta name="referrer" content="no-referrer" />
<meta name="_csrf" content="{{.CsrfToken}}" />
<meta name="_suburl" content="{{AppSubUrl}}" />
{{if .IsSigned}}
<meta name="_uid" content="{{.SignedUser.ID}}" />
{{end}}
{{if .ContextUser}}
<meta name="_context_uid" content="{{.ContextUser.ID}}" />
{{end}}
{{if .SearchLimit}}
<meta name="_search_limit" content="{{.SearchLimit}}" />
{{end}}
{{if .GoGetImport}}
<meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}">
<meta name="go-source" content="{{.GoGetImport}} _ {{.GoDocDirectory}} {{.GoDocFile}}">
{{end}}
<script>
{{SafeJS `/*
@licstart The following is the entire license notice for the
JavaScript code in this page.
Copyright (c) 2016 The Gitea Authors
Copyright (c) 2015 The Gogs Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
---
Licensing information for additional javascript libraries can be found at:
{{AppSubUrl}}/vendor/librejs.html
@licend The above is the entire license notice
for the JavaScript code in this page.
*/`}}
</script>
<link rel="shortcut icon" href="{{AppSubUrl}}/img/favicon.png" />
<link rel="mask-icon" href="{{AppSubUrl}}/img/gitea-safari.svg" color="#609926">
<link rel="preload" href="{{AppSubUrl}}/vendor/assets/font-awesome/css/font-awesome.min.css" as="style" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="{{AppSubUrl}}/vendor/assets/font-awesome/css/font-awesome.min.css"></noscript>
<link rel="stylesheet" href="{{AppSubUrl}}/vendor/assets/octicons/octicons.min.css">
{{if .RequireSimpleMDE}}
<link rel="stylesheet" href="{{AppSubUrl}}/vendor/plugins/simplemde/simplemde.min.css">
{{end}}
{{if .RequireGitGraph}}
<!-- graph -->
<link rel="stylesheet" href="{{AppSubUrl}}/vendor/plugins/gitgraph/gitgraph.css">
{{end}}
{{if .RequireTribute}}
<link rel="stylesheet" href="{{AppSubUrl}}/vendor/plugins/tribute/tribute.css">
{{end}}
<!-- Stylesheet -->
<link rel="stylesheet" href="{{AppSubUrl}}/vendor/plugins/semantic/semantic.min.css">
<link rel="stylesheet" href="{{AppSubUrl}}/css/index.css?v={{MD5 AppVer}}">
<noscript>
<style>
.dropdown:hover > .menu { display: block; }
.ui.secondary.menu .dropdown.item > .menu { margin-top: 0; }
</style>
</noscript>
{{if .RequireHighlightJS}}
<link rel="stylesheet" href="{{AppSubUrl}}/vendor/plugins/highlight/github.css">
{{end}}
{{if .RequireMinicolors}}
<link rel="stylesheet" href="{{AppSubUrl}}/vendor/plugins/jquery.minicolors/jquery.minicolors.css">
{{end}}
{{if .RequireDatetimepicker}}
<link rel="stylesheet" href="{{AppSubUrl}}/vendor/plugins/jquery.datetimepicker/jquery.datetimepicker.css">
{{end}}
{{if .RequireDropzone}}
<link rel="stylesheet" href="{{AppSubUrl}}/vendor/plugins/dropzone/dropzone.css">
{{end}}
<style class="list-search-style"></style>
<script src="{{AppSubUrl}}/vendor/plugins/cssrelpreload/loadCSS.min.js"></script>
<script src="{{AppSubUrl}}/vendor/plugins/cssrelpreload/cssrelpreload.min.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-18902063-3"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-18902063-3');
</script>
{{if .PageIsUserProfile}}
<meta property="og:title" content="{{.Owner.Name}}" />
<meta property="og:type" content="profile" />
<meta property="og:image" content="{{.Owner.AvatarLink}}" />
<meta property="og:url" content="{{.Owner.HTMLURL}}" />
<meta property="og:site_name" content="{{AppName}}" />
{{else if .Repository}}
<meta property="og:title" content="{{.Repository.Name}}" />
<meta property="og:type" content="object" />
<meta property="og:image" content="{{.Repository.Owner.AvatarLink}}" />
<meta property="og:url" content="{{.Repository.HTMLURL}}" />
{{if .Repository.Description}}
<meta property="og:description" content="{{.Repository.Description}}" />
{{end}}
<meta property="og:site_name" content="{{AppName}}" />
{{else}}
<meta property="og:title" content="{{AppName}}">
<meta property="og:type" content="website" />
<meta property="og:image" content="{{AppSubUrl}}/img/gitea-lg.png" />
<meta property="og:url" content="{{AppUrl}}" />
<meta property="og:description" content="{{MetaDescription}}">
{{end}}
{{template "custom/header" .}}
</head>
<body>
{{template "custom/body_outer_pre" .}}
<div class="full height">
<noscript>{{.i18n.Tr "enable_javascript"}}</noscript>
{{template "custom/body_inner_pre" .}}
{{if not .PageIsInstall}}
<div class="ui top secondary stackable main menu following bar light">
<div class="ui container" id="navbar">
<div class="item brand" style="justify-content: space-between;">
<a href="{{AppSubUrl}}/" href="{{AppSubUrl}}/">
<img class="ui mini image" src="{{AppSubUrl}}/img/gitea-sm.png">
</a>
<div class="ui basic icon button mobile-only" id="navbar-expand-toggle">
<i class="sidebar icon"></i>
</div>
</div>
{{if .IsSigned}}
<a class="item{{if .PageIsDashboard}} active{{end}}" href="{{AppSubUrl}}/">{{.i18n.Tr "dashboard"}}</a>
<a class="item{{if .PageIsIssues}} active{{end}}" href="{{AppSubUrl}}/issues">{{.i18n.Tr "issues"}}</a>
<a class="item{{if .PageIsPulls}} active{{end}}" href="{{AppSubUrl}}/pulls">{{.i18n.Tr "pull_requests"}}</a>
{{else}}
<a class="item{{if .PageIsHome}} active{{end}}" href="{{AppSubUrl}}/">{{.i18n.Tr "home"}}</a>
{{end}}
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{.i18n.Tr "explore"}}</a>
{{template "custom/extra_links" .}}
{{/*
<div class="item">
<div class="ui icon input">
<input class="searchbox" type="text" placeholder="{{.i18n.Tr "search_project"}}">
<i class="search icon"></i>
</div>
</div>
*/}}
{{if .IsSigned}}
<div class="right stackable menu">
<a href="{{AppSubUrl}}/notifications" class="item poping up" data-content='{{.i18n.Tr "notifications"}}' data-variation="tiny inverted">
<span class="text">
<i class="fitted octicon octicon-inbox"></i>
<span class="sr-mobile-only">{{.i18n.Tr "notifications"}}</span>
{{if .NotificationUnreadCount}}
<span class="ui red label">
{{.NotificationUnreadCount}}
</span>
{{end}}
</span>
</a>
<div class="ui dropdown jump item poping up" data-content="{{.i18n.Tr "create_new"}}" data-variation="tiny inverted">
<span class="text">
<i class="fitted octicon octicon-plus"></i>
<span class="sr-mobile-only">{{.i18n.Tr "create_new"}}</span>
<i class="fitted octicon octicon-triangle-down not-mobile"></i>
</span>
<div class="menu">
<a class="item" href="{{AppSubUrl}}/repo/create">
<i class="fitted octicon octicon-plus"></i> {{.i18n.Tr "new_repo"}}
</a>
<a class="item" href="{{AppSubUrl}}/repo/migrate">
<i class="fitted octicon octicon-repo-clone"></i> {{.i18n.Tr "new_migrate"}}
</a>
{{if .SignedUser.CanCreateOrganization}}
<a class="item" href="{{AppSubUrl}}/org/create">
<i class="fitted octicon octicon-organization"></i> {{.i18n.Tr "new_org"}}
</a>
{{end}}
</div><!-- end content create new menu -->
</div><!-- end dropdown menu create new -->
<div class="ui dropdown jump item poping up" tabindex="-1" data-content="{{.i18n.Tr "user_profile_and_more"}}" data-variation="tiny inverted">
<span class="text">
<img class="ui tiny avatar image" src="{{.SignedUser.RelAvatarLink}}">
<span class="sr-only">{{.i18n.Tr "user_profile_and_more"}}</span>
<span class="mobile-only">{{.SignedUser.Name}}</span>
<i class="fitted octicon octicon-triangle-down not-mobile" tabindex="-1"></i>
</span>
<div class="menu" tabindex="-1">
<div class="ui header">
{{.i18n.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
</div>
<div class="divider"></div>
<a class="item" href="{{AppSubUrl}}/{{.SignedUser.Name}}">
<i class="octicon octicon-person"></i>
{{.i18n.Tr "your_profile"}}<!-- Your profile -->
</a>
<a class="item" href="{{AppSubUrl}}/{{.SignedUser.Name}}?tab=stars">
<i class="octicon octicon-star"></i>
{{.i18n.Tr "your_starred"}}
</a>
<a class="{{if .PageIsUserSettings}}active{{end}} item" href="{{AppSubUrl}}/user/settings">
<i class="octicon octicon-settings"></i>
{{.i18n.Tr "your_settings"}}<!-- Your settings -->
</a>
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io">
<i class="octicon octicon-question"></i>
{{.i18n.Tr "help"}}<!-- Help -->
</a>
{{if .IsAdmin}}
<div class="divider"></div>
<a class="{{if .PageIsAdmin}}active{{end}} item" href="{{AppSubUrl}}/admin">
<i class="icon settings"></i>
{{.i18n.Tr "admin_panel"}}<!-- Admin Panel -->
</a>
{{end}}
<div class="divider"></div>
<a class="item" href="{{AppSubUrl}}/user/logout">
<i class="octicon octicon-sign-out"></i>
{{.i18n.Tr "sign_out"}}<!-- Sign Out -->
</a>
</div><!-- end content avatar menu -->
</div><!-- end dropdown avatar menu -->
</div><!-- end signed user right menu -->
{{else}}
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io">{{.i18n.Tr "help"}}</a>
<div class="right stackable menu">
{{if .ShowRegistrationButton}}
<a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up">
<i class="octicon octicon-person"></i> {{.i18n.Tr "register"}}
</a>
{{end}}
<a class="item{{if .PageIsSignIn}} active{{end}}" href="{{AppSubUrl}}/user/login?redirect_to={{.Link}}">
<i class="octicon octicon-sign-in"></i> {{.i18n.Tr "sign_in"}}
</a>
<a class="item" href="{{AppSubUrl}}/user/oauth2/GitHub?redirect_to={{.Link}}">
{{.i18n.Tr "sign_in_with"}} &nbsp;<i class="octicon octicon-mark-github"></i>
</a>
</div><!-- end anonymous right menu -->
{{end}}
</div><!-- end container -->
</div><!-- end bar -->
{{end}}
{{/*
</div>
</body>
</html>
*/}}

View File

@ -0,0 +1,60 @@
{{template "base/head" .}}
<div class="home">
<div class="ui stackable middle very relaxed page grid">
<div class="sixteen wide center aligned centered column">
<div>
<img class="logo" src="{{AppSubUrl}}/img/gitea-lg.png" />
</div>
<div class="hero">
<h1 class="ui icon header title">
Let's Code, Decentralized!
</h1>
<h2>Login with GitHub or
<br>Register a new account to contribute.</h2>
</div>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
<i class="octicon octicon-git-branch"></i> Hurrah for Gitea!
</h1>
<p class="large">
I'm using Gitea, which is likely to become the first decentralized git platform.
Help support decentralization by <a target="_blank" href="https://git.coolaj86.com/coolaj86/gitea-installer.sh">installing gitea</a> for yourself!
</p>
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
<i class="octicon octicon-circuit-board"></i> Hurrah for RPi!
</h1>
<p class="large">
Home servers are the only thing that can save us from our centralized overlords.
Gitea can run on a Raspberry Pi.
</p>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
<i class="octicon octicon-mail"></i> For Neo-Luddites
</h1>
<p class="large">
Email was the web's first decentralized and distributed protocol.
It may be old news, but its paradigms are the best hope for our futures.
If we don't take back the web soon then GitHub, Facebook, Slack, Medium, etc will dictate our futures for us.
</p>
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
<i class="octicon octicon-code"></i> Lv. 99 Code Whisperers Welcome
</h1>
<p class="large">
If you love code more than build tools, we'll make fast friends. :)
</p>
</div>
<!-- should have one more of the above -->
</div>
<!-- the above may be repeated -->
</div>
{{template "base/footer" .}}

35
dist/etc/goldilocks/goldilocks.yml vendored Normal file
View File

@ -0,0 +1,35 @@
tcp:
bind:
- 80
- 443
modules:
- type: proxy
domains:
- ssh.git.example.com
port: 22
tls:
modules:
- type: acme
domains:
- git.example.com
- ssh.git.example.com
email: john.doe@example.com
server: 'https://acme-v01.api.letsencrypt.org/directory'
challenge_type: 'http-01'
http:
trust_proxy: true
allow_insecure: false
primary_domain: example.com
modules:
- type: proxy
domains:
- git.example.com
port: 3000
mdns:
disabled: true
socks5:
enabled: false

105
install.bash Normal file → Executable file
View File

@ -1,8 +1,33 @@
#!/bin/bash
# wget -O install-gitea.bash https://git.coolaj86.com/coolaj86/gitea-installer/raw/master/install.bash; bash install-gitea.bash
# or
# wget -O - https://git.coolaj86.com/coolaj86/gitea-installer/raw/master/install.bash | bash
# Most of the code credit for determining version is here: https://gist.github.com/lukechilds/a83e1d7127b78fef38c2914c4ececc3c
VER=$(curl --silent "https://api.github.com/repos/go-gitea/gitea/releases/latest" | # Get latest release from GitHub api
grep '"tag_name":' | # Get tag line
sed -E 's/.*"([^"]+)".*/\1/' | # Pluck JSON value
sed 's|[v,]||g' ) # Remove v
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
-v|version)
VER="$2"
shift # past argument
;;
*)
# unknown option
if test -z "${unknown}"
then
unknown=$1
else
echo "Unknown Option"
exit 1
fi
;;
esac
shift # past argument or value
done
# Create a 'gitea' user and group with the home /opt/gitea, no password (because it's a system user) and no GECOS
sudo adduser gitea --home /opt/gitea --disabled-password --gecos ''
@ -12,13 +37,79 @@ sudo mkdir -p /opt/gitea/ /var/log/gitea
sudo chown -R gitea:gitea /opt/gitea/ /var/log/gitea
# Download and install gitea
sudo wget -O /opt/gitea/gitea https://dl.gitea.io/gitea/1.0.1/gitea-1.0.1-linux-amd64
sudo chmod +x /opt/gitea/gitea
# Check if architecure is i386 and download Gitea
if [ -n "$(uname -a | grep i386)" ]; then
sudo curl -fsSL -o "/opt/gitea/gitea-$VER" "https://dl.gitea.io/gitea/$VER/gitea-$VER-linux-386"
fi
# Check if architecure is x86 and download Gitea
if [ -n "$(uname -a | grep x86_64)" ]; then
sudo curl -fsSL -o "/opt/gitea/gitea-$VER" "https://dl.gitea.io/gitea/$VER/gitea-$VER-linux-amd64"
fi
# Check if architecure is ARMv6 and download Gitea
if [ -n "$(uname -a | grep armv6l)" ]; then
sudo curl -fsSL -o "/opt/gitea/gitea-$VER" "https://dl.gitea.io/gitea/$VER/gitea-$VER-linux-arm-6"
fi
# Check if architecure is ARMv7 and download Gitea
if [ -n "$(uname -a | grep armv7l)" ]; then
sudo curl -fsSL -o "/opt/gitea/gitea-$VER" "https://dl.gitea.io/gitea/$VER/gitea-$VER-linux-arm-7"
fi
# Setup Gitea symlink and permissions
sudo chmod +x /opt/gitea/gitea-$VER
rm -f /opt/gitea/gitea
sudo ln -sf gitea-$VER /opt/gitea/gitea
sudo ln -sf gitea-$VER /usr/local/bin/gitea
# Download and install the gitea.service for systemd
sudo wget -O /etc/systemd/system/gitea.service https://git.coolaj86.com/coolaj86/gitea-installer.sh/raw/master/dist/etc/systemd/system/gitea.service
sudo curl -fsSL -o /etc/systemd/system/gitea.service https://git.coolaj86.com/coolaj86/gitea-installer.sh/raw/branch/master/dist/etc/systemd/system/gitea.service
# Start gitea
sudo systemctl enable gitea
## If this is performing an upgrade it may need extra ram for a limited time
# fallocate -l 1G /tmp.swap
# mkswap /tmp.swap
# chmod 0600 /tmp.swap
# swapon /tmp.swap
sudo systemctl restart gitea
echo "Please visit http://localhost:3000/ now to finish installing gitea"
set +e
my_ip=$(ifconfig | grep inet | grep Mask | grep -v ':127\\.0\\.0\\.1' | grep -v ':192\\.168' | grep -v ':10\\.' | head -n 1 | cut -f 2 -d ':' | cut -f 1 -d ' ')
my_ip=${my_ip:-localhost}
set -e
echo ""
echo ""
echo "###########################"
echo "# Time to Configure #"
echo "###########################"
echo ""
echo "Just a few more steps to complete at the setup URL:"
echo ""
echo " http://$my_ip:3000/"
echo ""
echo "Future changes can be made by editing the config file:"
echo ""
echo " /opt/gitea/custom/conf/app.ini"
echo ""
echo ""
echo "P.S. Would you like to customize Gitea?"
echo ""
echo " Read basic instructions:"
echo " https://git.coolaj86.com/coolaj86/gitea-installer.sh/_edit/master/install.bash"
echo ""
echo " View current templates:"
echo " https://github.com/go-gitea/gitea/tree/v$VER/templates"
echo ""
echo " See a sample app.ini:"
echo " https://github.com/go-gitea/gitea/blob/v$VER/custom/conf/app.ini.sample"
echo ""
# sleep 5
# swapoff /tmp.swap
# rm /tmp.swap

20
remove.sh Normal file
View File

@ -0,0 +1,20 @@
# Gitea Uninstall Script
# This script removes Gitea as installed by this script. THIS DELTES ALL DATA if you are using SQLite.
echo "Removing Gitea and DELETING ALL DATA."
echo "Stopping and removing the Gitea service."
sudo systemctl stop gitea # Stop the Gitea service
sudo systemctl disable gitea # Disable the Gitea service automatically starting on boot.
sudo rm /etc/systemd/system/gitea.service # Delete the Gitea service.
echo "Deleting Gitea configuration and Data."
sudo rm /usr/local/bin/gitea # Remove Gitea from Path
sudo rm -rf /opt/gitea # Remove Gitea Data
if test ! -d /opt/gitea
echo "Gitea has been completely removed."
else
echo "Gitea has not been completely removed. File an issue here: https://git.coolaj86.com/coolaj86/gitea-installer.sh/issues/new"
fi