Make it work
This commit is contained in:
parent
6457a75618
commit
9a436eacfb
|
@ -7,7 +7,15 @@
|
||||||
"healthCheckPath": "/",
|
"healthCheckPath": "/",
|
||||||
"httpPort": 3000,
|
"httpPort": 3000,
|
||||||
"addons": {
|
"addons": {
|
||||||
"mysql": { }
|
"mysql": { },
|
||||||
|
"sendmail": { }
|
||||||
|
},
|
||||||
|
"tcpPorts": {
|
||||||
|
"SSH_PORT": {
|
||||||
|
"title": "SSH Port",
|
||||||
|
"description": "SSH Port over which repos can be pushed & pulled",
|
||||||
|
"defaultValue": 29418
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"minBoxVersion": "0.0.1",
|
"minBoxVersion": "0.0.1",
|
||||||
"manifestVersion": 1,
|
"manifestVersion": 1,
|
||||||
|
|
|
@ -1,12 +1,17 @@
|
||||||
FROM girish/base:0.2.0
|
FROM girish/base:0.2.0
|
||||||
|
|
||||||
USER cloudron
|
USER cloudron
|
||||||
|
|
||||||
|
# gogs uses this env to detect current user
|
||||||
|
ENV USER cloudron
|
||||||
|
|
||||||
RUN cd /tmp && \
|
RUN cd /tmp && \
|
||||||
wget https://github.com/gogits/gogs/releases/download/v0.6.1/linux_amd64.zip && \
|
wget https://github.com/gogits/gogs/releases/download/v0.6.1/linux_amd64.zip && \
|
||||||
unzip linux_amd64.zip -d /home/cloudron && \
|
unzip linux_amd64.zip -d /home/cloudron && \
|
||||||
rm linux_amd64.zip
|
rm linux_amd64.zip
|
||||||
|
|
||||||
ADD start.sh /home/git/start.sh
|
ADD app.ini.template /home/cloudron/app.ini.template
|
||||||
|
ADD start.sh /home/cloudron/start.sh
|
||||||
|
|
||||||
CMD [ "/home/git/start.sh" ]
|
CMD [ "/home/cloudron/start.sh" ]
|
||||||
|
|
||||||
|
|
293
app.ini
293
app.ini
|
@ -1,293 +0,0 @@
|
||||||
; 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
|
|
||||||
; Do not check minimum key size with corresponding type
|
|
||||||
DISABLE_MINIMUM_KEY_SIZE_CHECK = 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-FR,nl-NL,lv-LV,ru-RU,ja-JP,es-ES,pt-BR,pl-PL
|
|
||||||
NAMES = English,简体中文,繁體中文,Deutsch,Français,Nederlands,Latviešu,Русский,日本语,Español,Português,Polski
|
|
||||||
|
|
||||||
[other]
|
|
||||||
SHOW_FOOTER_BRANDING = false
|
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
; App name that shows on every page title
|
||||||
|
APP_NAME = Gogs: Go Git Service
|
||||||
|
; Change it if you run locally
|
||||||
|
RUN_USER = cloudron
|
||||||
|
; Either "dev", "prod" or "test", default is "dev"
|
||||||
|
RUN_MODE = prod
|
||||||
|
|
||||||
|
[repository]
|
||||||
|
ROOT = /app/data
|
||||||
|
SCRIPT_TYPE = bash
|
||||||
|
|
||||||
|
[server]
|
||||||
|
PROTOCOL = https
|
||||||
|
DOMAIN = ##HOSTNAME
|
||||||
|
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s/
|
||||||
|
HTTP_ADDR =
|
||||||
|
HTTP_PORT = 3000
|
||||||
|
; Disable SSH feature when not available
|
||||||
|
DISABLE_SSH = false
|
||||||
|
SSH_PORT = ##SSH_PORT
|
||||||
|
; Landing page for non-logged users, can be "home" or "explore"
|
||||||
|
LANDING_PAGE = explore
|
||||||
|
|
||||||
|
[database]
|
||||||
|
; Either "mysql", "postgres" or "sqlite3", it's your choice
|
||||||
|
DB_TYPE = mysql
|
||||||
|
HOST = ##MYSQL_HOST:##MYSQL_PORT
|
||||||
|
NAME = ##MYSQL_DATABASE
|
||||||
|
USER = ##MYSQL_USERNAME
|
||||||
|
PASSWD = ##MYSQL_PASSWORD
|
||||||
|
|
||||||
|
[mailer]
|
||||||
|
ENABLED = true
|
||||||
|
; 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 = ##MAIL_SERVER
|
||||||
|
; 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 =
|
||||||
|
KEY_FILE =
|
||||||
|
; Mail from address, RFC 5322. This can be just an email address, or the "Name" <email@example.com> format
|
||||||
|
FROM = ##MAIL_FROM
|
||||||
|
; Mailer user name and password
|
||||||
|
USER =
|
||||||
|
PASSWD =
|
||||||
|
|
19
start.sh
19
start.sh
|
@ -2,7 +2,22 @@
|
||||||
|
|
||||||
set -eu -o pipefail
|
set -eu -o pipefail
|
||||||
|
|
||||||
cp conf.ini > /home/git/gogs/custom/conf/app.ini
|
fqdn=$(hostname -f)
|
||||||
|
|
||||||
/home/git/gogs/gogs web
|
mkdir -p /home/cloudron/gogs/custom/conf
|
||||||
|
|
||||||
|
sed -e "s/##HOSTNAME/${fqdn}/g" \
|
||||||
|
-e "s/##SSH_PORT/${SSH_PORT}/g" \
|
||||||
|
-e "s/##MYSQL_HOST/${MYSQL_HOST}/g" \
|
||||||
|
-e "s/##MYSQL_PORT/${MYSQL_PORT}/g" \
|
||||||
|
-e "s/##MYSQL_USERNAME/${MYSQL_USERNAME}/g" \
|
||||||
|
-e "s/##MYSQL_PASSWORD/${MYSQL_PASSWORD}/g" \
|
||||||
|
-e "s/##MYSQL_DATABASE/${MYSQL_DATABASE}/g" \
|
||||||
|
-e "s/##MAIL_SERVER/${MAIL_SMTP_SERVER}/g" \
|
||||||
|
-e "s/##MAIL_FROM/${MAIL_SMTP_USERNAME}@${MAIL_DOMAIN}/g" \
|
||||||
|
/home/cloudron/app.ini.template > "/home/cloudron/gogs/custom/conf/app.ini"
|
||||||
|
|
||||||
|
chown -R cloudron.cloudron /app/data
|
||||||
|
|
||||||
|
/home/cloudron/gogs/gogs web
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue