summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Fanninger2015-06-08 20:02:19 +0200
committerThomas Fanninger2015-06-08 20:02:19 +0200
commit4c4755c13bd01829aa406166a7af9aec00e32a20 (patch)
treebc48188fbd722d41b00814375b52e6440de32628
downloadaur-4c4755c13bd01829aa406166a7af9aec00e32a20.tar.gz
Migration
-rw-r--r--.SRCINFO38
-rw-r--r--PKGBUILD71
-rw-r--r--README.md31
-rw-r--r--app.ini.patch36
-rw-r--r--app_new.ini287
-rw-r--r--app_old.ini290
-rw-r--r--gogs.install42
-rw-r--r--gogs.service14
8 files changed, 809 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..e0d3f83ddd35
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,38 @@
+pkgbase = gogs-git
+ pkgdesc = Gogs(Go Git Service) is a Self Hosted Git Service in the Go Programming Language. This is the current git version from branch master.
+ pkgver = 20150317
+ pkgrel = 1
+ epoch = 1
+ url = http://gogs.io/
+ install = gogs.install
+ arch = i686
+ arch = x86_64
+ arch = armv6h
+ arch = armv7h
+ license = MIT
+ makedepends = go>=1.2
+ makedepends = git
+ makedepends = mercurial
+ makedepends = patch
+ depends = git
+ optdepends = sqlite: SQLite support
+ optdepends = mariadb: MariaDB support
+ optdepends = postgresql: PostgreSQL support
+ optdepends = redis: Redis support
+ optdepends = memcached: MemCached support
+ optdepends = openssh: GIT over SSH support
+ conflicts = gogs-bin
+ conflicts = gogs
+ conflicts = gogs-git-dev
+ options = !strip
+ options = !emptydirs
+ backup = srv/gogs/conf/app.ini
+ source = gogs.service
+ source = app.ini.patch
+ source = gogs::git+https://github.com/gogits/gogs.git
+ sha512sums = 2b4303f850e3b13b2fc3c9f0bc5820dae431d228002b35f01be0d4bfbcf05de8dcec2a559a85e318b609e4a4d492d44306eadf5f6508fd72333b198661bb0bb7
+ sha512sums = 9c3d8425cf0e5291e9a7870b9b0ceec4d3d0de3818e0bd93b6a9e9c954cf16e8f2ae230242d6cc0d71147ad10c4224322b1f4f2f8eb3ca5e96c219e9fc35d29b
+ sha512sums = SKIP
+
+pkgname = gogs-git
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..77d146131980
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,71 @@
+# Contributor: Thomas Laroche <tho.laroche@gmail.com>
+# Contributor: Kristian Klausen <klausenbusk@hotmail.com>
+# Maintainer: Thomas Fanninger <thomas@fanninger.at>
+
+pkgname=gogs-git
+_pkgname=gogs
+pkgver=20150317
+pkgrel=1
+epoch=1
+pkgdesc="Gogs(Go Git Service) is a Self Hosted Git Service in the Go Programming Language. This is the current git version from branch master."
+arch=('i686' 'x86_64' 'armv6h' 'armv7h')
+url="http://gogs.io/"
+license=('MIT')
+depends=('git')
+optdepends=('sqlite: SQLite support'
+ 'mariadb: MariaDB support'
+ 'postgresql: PostgreSQL support'
+ 'redis: Redis support'
+ 'memcached: MemCached support'
+ 'openssh: GIT over SSH support')
+makedepends=('go>=1.2' 'git' 'mercurial' 'patch')
+conflicts=('gogs-bin' 'gogs' 'gogs-git-dev')
+options=('!strip' '!emptydirs')
+backup=('srv/gogs/conf/app.ini')
+
+install=gogs.install
+
+_gourl=github.com/gogits
+source=('gogs.service'
+ 'app.ini.patch'
+ "${_pkgname}::git+https://${_gourl}/${_pkgname}.git")
+
+sha512sums=('2b4303f850e3b13b2fc3c9f0bc5820dae431d228002b35f01be0d4bfbcf05de8dcec2a559a85e318b609e4a4d492d44306eadf5f6508fd72333b198661bb0bb7'
+ '9c3d8425cf0e5291e9a7870b9b0ceec4d3d0de3818e0bd93b6a9e9c954cf16e8f2ae230242d6cc0d71147ad10c4224322b1f4f2f8eb3ca5e96c219e9fc35d29b'
+ 'SKIP')
+
+pkgver(){
+ cd "$srcdir/${_pkgname}"
+ echo $(git rev-list --count HEAD).$(git rev-parse --short HEAD)
+}
+
+prepare() {
+ mkdir -p "${srcdir}/src/${_gourl}"
+ mv "${_pkgname}" "${srcdir}/src/${_gourl}/${_pkgname}"
+ msg2 "go get"
+ GOPATH="${srcdir}" go get -tags "sqlite redis memcache" "${_gourl}/${_pkgname}"
+
+ msg2 "Patch: GOGS app.ini"
+ patch -Np1 -i "${srcdir}/app.ini.patch" "${srcdir}/src/${_gourl}/${_pkgname}/conf/app.ini"
+}
+
+build() {
+ msg2 "Build program"
+ cd ${srcdir}/src/${_gourl}/${_pkgname}
+ GOPATH="${srcdir}" go fix
+ GOPATH="${srcdir}" go build -tags "sqlite redis memcache"
+}
+
+package() {
+ install -D -m 0755 "${srcdir}/src/${_gourl}/${_pkgname}/${_pkgname}" "${pkgdir}/usr/share/${_pkgname}/${_pkgname}"
+
+ cp -r "${srcdir}/src/${_gourl}/${_pkgname}/conf" "${pkgdir}/usr/share/${_pkgname}"
+ install -d "${pkgdir}/usr/share/themes/gogs/default/"
+ cp -r "${srcdir}/src/${_gourl}/${_pkgname}/public" "${pkgdir}/usr/share/themes/gogs/default"
+ cp -r "${srcdir}/src/${_gourl}/${_pkgname}/templates" "${pkgdir}/usr/share/themes/gogs/default"
+
+ install -D -m 0600 "${pkgdir}/usr/share/${_pkgname}/conf/app.ini" "$pkgdir/srv/${_pkgname}/conf/app.ini"
+ install -D -m 0644 "${srcdir}/gogs.service" "$pkgdir/usr/lib/systemd/system/gogs.service"
+ install -d "${pkgdir}/var/log/gogs"
+ install -D -m 0644 "${srcdir}/src/${_gourl}/${_pkgname}/LICENSE" "${pkgdir}/usr/share/licenses/$_pkgname"
+}
diff --git a/README.md b/README.md
new file mode 100644
index 000000000000..77e46c944e9e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,31 @@
+# Gogs
+PKGBUILD files for different versions of Gogs (Go Git Service).
+
+## Open points
+* ~~Systemd service support~~
+* ~~better file structure~~
+* ~~Publishing on https://aur.archlinux.org~~
+* Test MariaDB and PostgreSQL installation
+* ~~Test on armv6h (Raspberry Pi), armv7h (Cubieboard 2) and on x86_64~~
+* Documentation for usage and configuration - Started with Archlinux Wiki page https://wiki.archlinux.org/index.php/Gogs
+
+## Install
+```
+$ tar -xvzf /<path to Tarball>/gogs-*.tar.gz
+$ cd <package-name>
+$ makepkg
+$ pacman -U gogs-*.tgz
+```
+
+## Configuration
+Enable and start systemd servicd
+```
+$ systemctl enable gogs.service
+$ systemctl start gogs.service
+```
+
+## Logging
+After start of the service every log entry is over journalctl displayable.
+```
+$ journalctl -f -u gogs.service
+``` \ No newline at end of file
diff --git a/app.ini.patch b/app.ini.patch
new file mode 100644
index 000000000000..bcc8d34be1bc
--- /dev/null
+++ b/app.ini.patch
@@ -0,0 +1,36 @@
+1,3d0
+< # NEVER EVER MODIFY THIS FILE
+< # PLEASE MAKE CHANGES ON CORRESPONDING CUSTOM CONFIG FILE
+<
+7c4
+< RUN_USER = git
+---
+> RUN_USER = gogs
+12c9
+< ROOT =
+---
+> ROOT = /srv/gogs/repo
+39c36
+< STATIC_ROOT_PATH =
+---
+> STATIC_ROOT_PATH = /usr/share/themes/gogs/default
+55c52
+< PATH = data/gogs.db
+---
+> PATH = /srv/gogs/sqlite/gogs.db
+174c171
+< PROVIDER_CONFIG = data/sessions
+---
+> PROVIDER_CONFIG = /srv/gogs/sessions
+189c186
+< AVATAR_UPLOAD_PATH = data/avatars
+---
+> AVATAR_UPLOAD_PATH = /srv/gogs/data/avatars
+198c195
+< PATH = data/attachments
+---
+> PATH = /srv/gogs/data/attachments
+213c210
+< ROOT_PATH =
+---
+> ROOT_PATH = /var/log/gogs
diff --git a/app_new.ini b/app_new.ini
new file mode 100644
index 000000000000..4c35ef2e9a84
--- /dev/null
+++ b/app_new.ini
@@ -0,0 +1,287 @@
+; App name that shows on every page title
+APP_NAME = Gogs: Go Git Service
+; Change it if you run locally
+RUN_USER = gogs
+; Either "dev", "prod" or "test", default is "dev"
+RUN_MODE = dev
+
+[repository]
+ROOT = /srv/gogs/repo
+SCRIPT_TYPE = bash
+
+[server]
+PROTOCOL = http
+DOMAIN = localhost
+ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
+HTTP_ADDR =
+HTTP_PORT = 3000
+; Disable SSH feature when not available
+DISABLE_SSH = false
+SSH_PORT = 22
+; Disable CDN even in "prod" mode
+OFFLINE_MODE = false
+DISABLE_ROUTER_LOG = false
+; Generate steps:
+; $ cd path/to/gogs/custom/https
+; $ ./gogs cert -ca=true -duration=8760h0m0s -host=myhost.example.com
+;
+; Or from a .pfx file exported from the Windows certificate store (do
+; not forget to export the private key):
+; $ openssl pkcs12 -in cert.pfx -out cert.pem -nokeys
+; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes
+CERT_FILE = custom/https/cert.pem
+KEY_FILE = custom/https/key.pem
+; Upper level of template and static file path
+; default is the path where Gogs is executed
+STATIC_ROOT_PATH = /usr/share/themes/gogs/default
+; Application level GZIP support
+ENABLE_GZIP = false
+; Landing page for non-logged users, can be "home" or "explore"
+LANDING_PAGE = home
+
+[database]
+; Either "mysql", "postgres" or "sqlite3", it's your choice
+DB_TYPE = mysql
+HOST = 127.0.0.1:3306
+NAME = gogs
+USER = root
+PASSWD =
+; For "postgres" only, either "disable", "require" or "verify-full"
+SSL_MODE = disable
+; For "sqlite3" only
+PATH = /srv/gogs/sqlite/gogs.db
+
+[admin]
+
+[security]
+INSTALL_LOCK = false
+; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!!
+SECRET_KEY = !#@FDEWREWR&*(
+; Auto-login remember days
+LOGIN_REMEMBER_DAYS = 7
+COOKIE_USERNAME = gogs_awesome
+COOKIE_REMEMBER_NAME = gogs_incredible
+; Reverse proxy authentication header name of user name
+REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER
+
+[service]
+ACTIVE_CODE_LIVE_MINUTES = 180
+RESET_PASSWD_CODE_LIVE_MINUTES = 180
+; User need to confirm e-mail for registration
+REGISTER_EMAIL_CONFIRM = false
+; Does not allow register and admin create account only
+DISABLE_REGISTRATION = false
+; User must sign in to view anything.
+REQUIRE_SIGNIN_VIEW = false
+; Cache avatar as picture
+ENABLE_CACHE_AVATAR = false
+; Mail notification
+ENABLE_NOTIFY_MAIL = false
+; More detail: https://github.com/gogits/gogs/issues/165
+ENABLE_REVERSE_PROXY_AUTHENTICATION = false
+ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false
+
+[webhook]
+; Cron task interval in minutes
+TASK_INTERVAL = 1
+; Deliver timeout in seconds
+DELIVER_TIMEOUT = 5
+; Allow insecure certification
+SKIP_TLS_VERIFY = false
+
+[mailer]
+ENABLED = false
+; Buffer length of channel, keep it as it is if you don't know what it is.
+SEND_BUFFER_LEN = 10
+; Name displayed in mail title
+SUBJECT = %(APP_NAME)s
+; Mail server
+; Gmail: smtp.gmail.com:587
+; QQ: smtp.qq.com:25
+; Note, if the port ends with "465", SMTPS will be used. Using STARTTLS on port 587 is recommended per RFC 6409. If the server supports STARTTLS it will always be used.
+HOST =
+; Do not verify the certificate of the server. Only use this for self-signed certificates
+SKIP_VERIFY =
+; Use client certificate
+USE_CERTIFICATE = false
+CERT_FILE = custom/mailer/cert.pem
+KEY_FILE = custom/mailer/key.pem
+; Mail from address, RFC 5322. This can be just an email address, or the "Name" <email@example.com> format
+FROM =
+; Mailer user name and password
+USER =
+PASSWD =
+
+[oauth]
+ENABLED = false
+
+[oauth.github]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = https://api.github.com/user
+AUTH_URL = https://github.com/login/oauth/authorize
+TOKEN_URL = https://github.com/login/oauth/access_token
+
+; Get client id and secret from
+; https://console.developers.google.com/project
+[oauth.google]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile
+AUTH_URL = https://accounts.google.com/o/oauth2/auth
+TOKEN_URL = https://accounts.google.com/o/oauth2/token
+
+[oauth.qq]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = get_user_info
+; QQ 互联
+AUTH_URL = https://graph.qq.com/oauth2.0/authorize
+TOKEN_URL = https://graph.qq.com/oauth2.0/token
+
+[oauth.weibo]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = all
+AUTH_URL = https://api.weibo.com/oauth2/authorize
+TOKEN_URL = https://api.weibo.com/oauth2/access_token
+
+[cache]
+; Either "memory", "redis", or "memcache", default is "memory"
+ADAPTER = memory
+; For "memory" only, GC interval in seconds, default is 60
+INTERVAL = 60
+; For "redis" and "memcache", connection host address
+; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180
+; memcache: `127.0.0.1:11211`
+HOST =
+
+[session]
+; Either "memory", "file", "redis" or "mysql", default is "memory"
+PROVIDER = memory
+; Provider config options
+; memory: not have any config yet
+; file: session file path, e.g. `data/sessions`
+; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180
+; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table`
+PROVIDER_CONFIG = /srv/gogs/sessions
+; Session cookie name
+COOKIE_NAME = i_like_gogits
+; If you use session in https only, default is false
+COOKIE_SECURE = false
+; Enable set cookie, default is true
+ENABLE_SET_COOKIE = true
+; Session GC time interval, default is 86400
+GC_INTERVAL_TIME = 86400
+; Session life time, default is 86400
+SESSION_LIFE_TIME = 86400
+
+[picture]
+; The place to picture data, either "server" or "qiniu", default is "server"
+SERVICE = server
+AVATAR_UPLOAD_PATH = /srv/gogs/data/avatars
+; Chinese users can choose "duoshuo"
+GRAVATAR_SOURCE = gravatar
+DISABLE_GRAVATAR = false
+
+[attachment]
+; Whether attachments are enabled. Defaults to `true`
+ENABLE = true
+; Path for attachments. Defaults to `data/attachments`
+PATH = /srv/gogs/data/attachments
+; One or more allowed types, e.g. image/jpeg|image/png
+ALLOWED_TYPES = image/jpeg|image/png
+; Max size of each file. Defaults to 32MB
+MAX_SIZE = 32
+; Max number of files per upload. Defaults to 10
+MAX_FILES = 10
+
+[time]
+; Specifies the format for fully outputed dates. Defaults to RFC1123
+; Special supported values are ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano
+; For more information about the format see http://golang.org/pkg/time/#pkg-constants
+FORMAT =
+
+[log]
+ROOT_PATH = /var/log/gogs
+; Either "console", "file", "conn", "smtp" or "database", default is "console"
+; Use comma to separate multiple modes, e.g. "console, file"
+MODE = console
+; Buffer length of channel, keep it as it is if you don't know what it is.
+BUFFER_LEN = 10000
+; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace"
+LEVEL = Trace
+
+; For "console" mode only
+[log.console]
+LEVEL =
+
+; For "file" mode only
+[log.file]
+LEVEL =
+; This enables automated log rotate(switch of following options), default is true
+LOG_ROTATE = true
+; Max line number of single file, default is 1000000
+MAX_LINES = 1000000
+; Max size shift of single file, default is 28 means 1 << 28, 256MB
+MAX_SIZE_SHIFT = 28
+; Segment log daily, default is true
+DAILY_ROTATE = true
+; Expired days of log file(delete after max days), default is 7
+MAX_DAYS = 7
+
+; For "conn" mode only
+[log.conn]
+LEVEL =
+; Reconnect host for every single message, default is false
+RECONNECT_ON_MSG = false
+; Try to reconnect when connection is lost, default is false
+RECONNECT = false
+; Either "tcp", "unix" or "udp", default is "tcp"
+PROTOCOL = tcp
+; Host address
+ADDR =
+
+; For "smtp" mode only
+[log.smtp]
+LEVEL =
+; Name displayed in mail title, default is "Diagnostic message from serve"
+SUBJECT = Diagnostic message from serve
+; Mail server
+HOST =
+; Mailer user name and password
+USER =
+PASSWD =
+; Receivers, can be one or more, e.g. ["1@example.com","2@example.com"]
+RECEIVERS =
+
+; For "database" mode only
+[log.database]
+LEVEL =
+; Either "mysql" or "postgres"
+DRIVER =
+; Based on xorm, e.g.: root:root@localhost/gogs?charset=utf8
+CONN =
+
+[git]
+MAX_GIT_DIFF_LINES = 10000
+; Arguments for command 'git gc', e.g.: "--aggressive --auto"
+; see more on http://git-scm.com/docs/git-gc/1.7.5
+GC_ARGS =
+
+; Git health check.
+[git.fsck]
+ENABLE = true
+; Execution interval in hours. Default is 24.
+INTERVAL = 24
+; Arguments for command 'git fsck', e.g.: "--unreachable --tags"
+; see more on http://git-scm.com/docs/git-fsck/1.7.5
+ARGS =
+
+[i18n]
+LANGS = en-US,zh-CN,zh-HK,de-DE,fr-CA,nl-NL,lv-LV,ru-RU,ja-JP,es-ES,pt-BR
+NAMES = English,简体中文,繁體中文,Deutsch,Français,Nederlands,Latviešu,Русский,日本语,Español,Português
diff --git a/app_old.ini b/app_old.ini
new file mode 100644
index 000000000000..c2f7495da495
--- /dev/null
+++ b/app_old.ini
@@ -0,0 +1,290 @@
+# NEVER EVER MODIFY THIS FILE
+# PLEASE MAKE CHANGES ON CORRESPONDING CUSTOM CONFIG FILE
+
+; App name that shows on every page title
+APP_NAME = Gogs: Go Git Service
+; Change it if you run locally
+RUN_USER = git
+; Either "dev", "prod" or "test", default is "dev"
+RUN_MODE = dev
+
+[repository]
+ROOT =
+SCRIPT_TYPE = bash
+
+[server]
+PROTOCOL = http
+DOMAIN = localhost
+ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
+HTTP_ADDR =
+HTTP_PORT = 3000
+; Disable SSH feature when not available
+DISABLE_SSH = false
+SSH_PORT = 22
+; Disable CDN even in "prod" mode
+OFFLINE_MODE = false
+DISABLE_ROUTER_LOG = false
+; Generate steps:
+; $ cd path/to/gogs/custom/https
+; $ ./gogs cert -ca=true -duration=8760h0m0s -host=myhost.example.com
+;
+; Or from a .pfx file exported from the Windows certificate store (do
+; not forget to export the private key):
+; $ openssl pkcs12 -in cert.pfx -out cert.pem -nokeys
+; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes
+CERT_FILE = custom/https/cert.pem
+KEY_FILE = custom/https/key.pem
+; Upper level of template and static file path
+; default is the path where Gogs is executed
+STATIC_ROOT_PATH =
+; Application level GZIP support
+ENABLE_GZIP = false
+; Landing page for non-logged users, can be "home" or "explore"
+LANDING_PAGE = home
+
+[database]
+; Either "mysql", "postgres" or "sqlite3", it's your choice
+DB_TYPE = mysql
+HOST = 127.0.0.1:3306
+NAME = gogs
+USER = root
+PASSWD =
+; For "postgres" only, either "disable", "require" or "verify-full"
+SSL_MODE = disable
+; For "sqlite3" only
+PATH = data/gogs.db
+
+[admin]
+
+[security]
+INSTALL_LOCK = false
+; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!!
+SECRET_KEY = !#@FDEWREWR&*(
+; Auto-login remember days
+LOGIN_REMEMBER_DAYS = 7
+COOKIE_USERNAME = gogs_awesome
+COOKIE_REMEMBER_NAME = gogs_incredible
+; Reverse proxy authentication header name of user name
+REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER
+
+[service]
+ACTIVE_CODE_LIVE_MINUTES = 180
+RESET_PASSWD_CODE_LIVE_MINUTES = 180
+; User need to confirm e-mail for registration
+REGISTER_EMAIL_CONFIRM = false
+; Does not allow register and admin create account only
+DISABLE_REGISTRATION = false
+; User must sign in to view anything.
+REQUIRE_SIGNIN_VIEW = false
+; Cache avatar as picture
+ENABLE_CACHE_AVATAR = false
+; Mail notification
+ENABLE_NOTIFY_MAIL = false
+; More detail: https://github.com/gogits/gogs/issues/165
+ENABLE_REVERSE_PROXY_AUTHENTICATION = false
+ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false
+
+[webhook]
+; Cron task interval in minutes
+TASK_INTERVAL = 1
+; Deliver timeout in seconds
+DELIVER_TIMEOUT = 5
+; Allow insecure certification
+SKIP_TLS_VERIFY = false
+
+[mailer]
+ENABLED = false
+; Buffer length of channel, keep it as it is if you don't know what it is.
+SEND_BUFFER_LEN = 10
+; Name displayed in mail title
+SUBJECT = %(APP_NAME)s
+; Mail server
+; Gmail: smtp.gmail.com:587
+; QQ: smtp.qq.com:25
+; Note, if the port ends with "465", SMTPS will be used. Using STARTTLS on port 587 is recommended per RFC 6409. If the server supports STARTTLS it will always be used.
+HOST =
+; Do not verify the certificate of the server. Only use this for self-signed certificates
+SKIP_VERIFY =
+; Use client certificate
+USE_CERTIFICATE = false
+CERT_FILE = custom/mailer/cert.pem
+KEY_FILE = custom/mailer/key.pem
+; Mail from address, RFC 5322. This can be just an email address, or the "Name" <email@example.com> format
+FROM =
+; Mailer user name and password
+USER =
+PASSWD =
+
+[oauth]
+ENABLED = false
+
+[oauth.github]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = https://api.github.com/user
+AUTH_URL = https://github.com/login/oauth/authorize
+TOKEN_URL = https://github.com/login/oauth/access_token
+
+; Get client id and secret from
+; https://console.developers.google.com/project
+[oauth.google]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile
+AUTH_URL = https://accounts.google.com/o/oauth2/auth
+TOKEN_URL = https://accounts.google.com/o/oauth2/token
+
+[oauth.qq]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = get_user_info
+; QQ 互联
+AUTH_URL = https://graph.qq.com/oauth2.0/authorize
+TOKEN_URL = https://graph.qq.com/oauth2.0/token
+
+[oauth.weibo]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = all
+AUTH_URL = https://api.weibo.com/oauth2/authorize
+TOKEN_URL = https://api.weibo.com/oauth2/access_token
+
+[cache]
+; Either "memory", "redis", or "memcache", default is "memory"
+ADAPTER = memory
+; For "memory" only, GC interval in seconds, default is 60
+INTERVAL = 60
+; For "redis" and "memcache", connection host address
+; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180
+; memcache: `127.0.0.1:11211`
+HOST =
+
+[session]
+; Either "memory", "file", "redis" or "mysql", default is "memory"
+PROVIDER = memory
+; Provider config options
+; memory: not have any config yet
+; file: session file path, e.g. `data/sessions`
+; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180
+; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table`
+PROVIDER_CONFIG = data/sessions
+; Session cookie name
+COOKIE_NAME = i_like_gogits
+; If you use session in https only, default is false
+COOKIE_SECURE = false
+; Enable set cookie, default is true
+ENABLE_SET_COOKIE = true
+; Session GC time interval, default is 86400
+GC_INTERVAL_TIME = 86400
+; Session life time, default is 86400
+SESSION_LIFE_TIME = 86400
+
+[picture]
+; The place to picture data, either "server" or "qiniu", default is "server"
+SERVICE = server
+AVATAR_UPLOAD_PATH = data/avatars
+; Chinese users can choose "duoshuo"
+GRAVATAR_SOURCE = gravatar
+DISABLE_GRAVATAR = false
+
+[attachment]
+; Whether attachments are enabled. Defaults to `true`
+ENABLE = true
+; Path for attachments. Defaults to `data/attachments`
+PATH = data/attachments
+; One or more allowed types, e.g. image/jpeg|image/png
+ALLOWED_TYPES = image/jpeg|image/png
+; Max size of each file. Defaults to 32MB
+MAX_SIZE = 32
+; Max number of files per upload. Defaults to 10
+MAX_FILES = 10
+
+[time]
+; Specifies the format for fully outputed dates. Defaults to RFC1123
+; Special supported values are ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano
+; For more information about the format see http://golang.org/pkg/time/#pkg-constants
+FORMAT =
+
+[log]
+ROOT_PATH =
+; Either "console", "file", "conn", "smtp" or "database", default is "console"
+; Use comma to separate multiple modes, e.g. "console, file"
+MODE = console
+; Buffer length of channel, keep it as it is if you don't know what it is.
+BUFFER_LEN = 10000
+; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace"
+LEVEL = Trace
+
+; For "console" mode only
+[log.console]
+LEVEL =
+
+; For "file" mode only
+[log.file]
+LEVEL =
+; This enables automated log rotate(switch of following options), default is true
+LOG_ROTATE = true
+; Max line number of single file, default is 1000000
+MAX_LINES = 1000000
+; Max size shift of single file, default is 28 means 1 << 28, 256MB
+MAX_SIZE_SHIFT = 28
+; Segment log daily, default is true
+DAILY_ROTATE = true
+; Expired days of log file(delete after max days), default is 7
+MAX_DAYS = 7
+
+; For "conn" mode only
+[log.conn]
+LEVEL =
+; Reconnect host for every single message, default is false
+RECONNECT_ON_MSG = false
+; Try to reconnect when connection is lost, default is false
+RECONNECT = false
+; Either "tcp", "unix" or "udp", default is "tcp"
+PROTOCOL = tcp
+; Host address
+ADDR =
+
+; For "smtp" mode only
+[log.smtp]
+LEVEL =
+; Name displayed in mail title, default is "Diagnostic message from serve"
+SUBJECT = Diagnostic message from serve
+; Mail server
+HOST =
+; Mailer user name and password
+USER =
+PASSWD =
+; Receivers, can be one or more, e.g. ["1@example.com","2@example.com"]
+RECEIVERS =
+
+; For "database" mode only
+[log.database]
+LEVEL =
+; Either "mysql" or "postgres"
+DRIVER =
+; Based on xorm, e.g.: root:root@localhost/gogs?charset=utf8
+CONN =
+
+[git]
+MAX_GIT_DIFF_LINES = 10000
+; Arguments for command 'git gc', e.g.: "--aggressive --auto"
+; see more on http://git-scm.com/docs/git-gc/1.7.5
+GC_ARGS =
+
+; Git health check.
+[git.fsck]
+ENABLE = true
+; Execution interval in hours. Default is 24.
+INTERVAL = 24
+; Arguments for command 'git fsck', e.g.: "--unreachable --tags"
+; see more on http://git-scm.com/docs/git-fsck/1.7.5
+ARGS =
+
+[i18n]
+LANGS = en-US,zh-CN,zh-HK,de-DE,fr-CA,nl-NL,lv-LV,ru-RU,ja-JP,es-ES,pt-BR
+NAMES = English,简体中文,繁體中文,Deutsch,Français,Nederlands,Latviešu,Русский,日本语,Español,Português
diff --git a/gogs.install b/gogs.install
new file mode 100644
index 000000000000..0402a43106df
--- /dev/null
+++ b/gogs.install
@@ -0,0 +1,42 @@
+pre_install() {
+ if ! getent group gogs >/dev/null; then
+ groupadd --system gogs
+ fi
+ if ! getent passwd gogs >/dev/null; then
+ useradd -m --system -c 'gogs daemon users' -g gogs -s /bin/false gogs
+ fi
+ chsh gogs -s /usr/bin/bash
+}
+
+post_install(){
+ mkdir -p /var/log/gogs
+ chown -R gogs:gogs /var/log/gogs
+ chown -R gogs:gogs /srv/gogs
+
+ systemctl daemon-reload
+}
+
+pre_upgrade(){
+ systemctl stop gogs.service
+
+ pre_install $1
+}
+
+post_upgrade() {
+ post_install $1
+ systemctl start gogs.service
+}
+
+pre_remove() {
+ systemctl stop gogs.service
+ systemctl disable gogs.service
+}
+
+post_remove() {
+ if getent passwd gogs >/dev/null; then
+ userdel -r gogs
+ fi
+ if getent group gogs >/dev/null; then
+ groupdel gogs
+ fi
+}
diff --git a/gogs.service b/gogs.service
new file mode 100644
index 000000000000..f6cac7d2ac70
--- /dev/null
+++ b/gogs.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Gogs (Go Git Service) server
+After=syslog.target
+After=network.target
+
+[Service]
+Type=simple
+User=gogs
+Group=gogs
+ExecStart=/usr/share/gogs/gogs web --config /srv/gogs/conf/app.ini
+WorkingDirectory=/usr/share/gogs/
+
+[Install]
+WantedBy=multi-user.target