| @@ -76,6 +76,8 @@ run_user = Run User | |||||
| run_user_helper = The user must have access to Repository Root Path and run Gogs. | run_user_helper = The user must have access to Repository Root Path and run Gogs. | ||||
| domain = Domain | domain = Domain | ||||
| domain_helper = This affects SSH clone URLs. | domain_helper = This affects SSH clone URLs. | ||||
| ssh_port = SSH Port | |||||
| ssh_port_helper = Port number which your SSH server is using, leave it empty to disable SSH feature. | |||||
| http_port = HTTP Port | http_port = HTTP Port | ||||
| http_port_helper = Port number which application will listen on. | http_port_helper = Port number which application will listen on. | ||||
| app_url = Application URL | app_url = Application URL | ||||
| @@ -35,21 +35,19 @@ Directory `/var/gogs` keeps Git repoistories and Gogs data: | |||||
| |-- log | |-- log | ||||
| |-- templates | |-- templates | ||||
| ## SSH Support | |||||
| ## Settings | |||||
| In order to support SSH, You need to change `SSH_PORT` in `/var/gogs/gogs/conf/app.ini`: | |||||
| Most of settings are obvious and easy to understand, but there are some settings can be confusing by running Gogs inside Docker: | |||||
| ``` | |||||
| [server] | |||||
| SSH_PORT = 10022 | |||||
| ``` | |||||
| - Repository Root Path: keep it as default value `/home/git/gogs-repositories` because `start.sh` already made a symbolic link for you. | |||||
| - Run User: keep it as default value `git` because `start.sh` already setup a user with name `git`. | |||||
| - Domain: fill in with Docker container IP(e.g. `192.168.99.100`). | |||||
| - SSH Port: Use the exposed port from Docker container. For example, your SSH server listens on `22` inside Docker, but you expose it by `10022:22`, then use `10022` for this value. | |||||
| - HTTP Port: Use the exposed port from Docker container. For example, your Gogs listens on `3000` inside Docker, but you expose it by `10080:3000`, then use `10080` for this value. | |||||
| - Application URL: Use combination of **Domain** and **HTTP Port** values(e.g. `http://192.168.99.100:10080/`). | |||||
| Full documentation of settings can be found [here](http://gogs.io/docs/advanced/configuration_cheat_sheet.html). | Full documentation of settings can be found [here](http://gogs.io/docs/advanced/configuration_cheat_sheet.html). | ||||
| ## Todo | |||||
| Install page need support set `SSH_PORT`. | |||||
| ## Troubleshooting | ## Troubleshooting | ||||
| If you see the following error: | If you see the following error: | ||||
| @@ -24,6 +24,7 @@ type InstallForm struct { | |||||
| RepoRootPath string `binding:"Required"` | RepoRootPath string `binding:"Required"` | ||||
| RunUser string `binding:"Required"` | RunUser string `binding:"Required"` | ||||
| Domain string `binding:"Required"` | Domain string `binding:"Required"` | ||||
| SSHPort int | |||||
| HTTPPort string `binding:"Required"` | HTTPPort string `binding:"Required"` | ||||
| AppUrl string `binding:"Required"` | AppUrl string `binding:"Required"` | ||||
| @@ -2,9 +2,10 @@ | |||||
| padding-top: 45px; | padding-top: 45px; | ||||
| padding-bottom: @footer-margin * 3; | padding-bottom: @footer-margin * 3; | ||||
| form { | form { | ||||
| @input-padding: 320px !important; | |||||
| label { | label { | ||||
| text-align: right; | text-align: right; | ||||
| width: 40% !important; | |||||
| width: @input-padding; | |||||
| } | } | ||||
| input { | input { | ||||
| width: 35% !important; | width: 35% !important; | ||||
| @@ -12,7 +13,7 @@ | |||||
| .field { | .field { | ||||
| text-align: left; | text-align: left; | ||||
| .help { | .help { | ||||
| margin-left: 41%; | |||||
| margin-left: @input-padding+15px; | |||||
| } | } | ||||
| &.optional .title { | &.optional .title { | ||||
| margin-left: 38%; | margin-left: 38%; | ||||
| @@ -118,6 +118,7 @@ func Install(ctx *middleware.Context) { | |||||
| } | } | ||||
| form.Domain = setting.Domain | form.Domain = setting.Domain | ||||
| form.SSHPort = setting.SSHPort | |||||
| form.HTTPPort = setting.HttpPort | form.HTTPPort = setting.HttpPort | ||||
| form.AppUrl = setting.AppUrl | form.AppUrl = setting.AppUrl | ||||
| @@ -241,6 +242,13 @@ func InstallPost(ctx *middleware.Context, form auth.InstallForm) { | |||||
| cfg.Section("server").Key("HTTP_PORT").SetValue(form.HTTPPort) | cfg.Section("server").Key("HTTP_PORT").SetValue(form.HTTPPort) | ||||
| cfg.Section("server").Key("ROOT_URL").SetValue(form.AppUrl) | cfg.Section("server").Key("ROOT_URL").SetValue(form.AppUrl) | ||||
| if form.SSHPort == 0 { | |||||
| cfg.Section("server").Key("DISABLE_SSH").SetValue("true") | |||||
| } else { | |||||
| cfg.Section("server").Key("DISABLE_SSH").SetValue("false") | |||||
| cfg.Section("server").Key("SSH_PORT").SetValue(com.ToStr(form.SSHPort)) | |||||
| } | |||||
| if len(strings.TrimSpace(form.SMTPHost)) > 0 { | if len(strings.TrimSpace(form.SMTPHost)) > 0 { | ||||
| cfg.Section("mailer").Key("ENABLED").SetValue("true") | cfg.Section("mailer").Key("ENABLED").SetValue("true") | ||||
| cfg.Section("mailer").Key("HOST").SetValue(form.SMTPHost) | cfg.Section("mailer").Key("HOST").SetValue(form.SMTPHost) | ||||
| @@ -92,6 +92,11 @@ | |||||
| <input id="domain" name="domain" value="{{.domain}}" required> | <input id="domain" name="domain" value="{{.domain}}" required> | ||||
| <span class="help">{{.i18n.Tr "install.domain_helper"}}</span> | <span class="help">{{.i18n.Tr "install.domain_helper"}}</span> | ||||
| </div> | </div> | ||||
| <div class="inline required field"> | |||||
| <label for="ssh_port">{{.i18n.Tr "install.ssh_port"}}</label> | |||||
| <input id="ssh_port" name="ssh_port" value="{{.ssh_port}}"> | |||||
| <span class="help">{{.i18n.Tr "install.ssh_port_helper"}}</span> | |||||
| </div> | |||||
| <div class="inline required field"> | <div class="inline required field"> | ||||
| <label for="http_port">{{.i18n.Tr "install.http_port"}}</label> | <label for="http_port">{{.i18n.Tr "install.http_port"}}</label> | ||||
| <input id="http_port" name="http_port" value="{{.http_port}}" required> | <input id="http_port" name="http_port" value="{{.http_port}}" required> | ||||
| @@ -105,6 +110,8 @@ | |||||
| <!-- Optional Settings --> | <!-- Optional Settings --> | ||||
| <h4 class="ui dividing header">{{.i18n.Tr "install.optional_title"}}</h4> | <h4 class="ui dividing header">{{.i18n.Tr "install.optional_title"}}</h4> | ||||
| <!-- Email --> | |||||
| <div class="ui accordion optional field"> | <div class="ui accordion optional field"> | ||||
| <div class="title {{if .Err_SMTP}}text red{{end}}"> | <div class="title {{if .Err_SMTP}}text red{{end}}"> | ||||
| <i class="icon dropdown"></i> | <i class="icon dropdown"></i> | ||||
| @@ -143,6 +150,7 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <!-- Server and other services --> | |||||
| <div class="ui accordion optional field"> | <div class="ui accordion optional field"> | ||||
| <div class="title"> | <div class="title"> | ||||
| <i class="icon dropdown"></i> | <i class="icon dropdown"></i> | ||||
| @@ -170,6 +178,7 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <!-- Admin --> | |||||
| <div class="ui accordion optional field"> | <div class="ui accordion optional field"> | ||||
| <div class="title {{if .Err_Admin}}text red{{end}}"> | <div class="title {{if .Err_Admin}}text red{{end}}"> | ||||
| <i class="icon dropdown"></i> | <i class="icon dropdown"></i> | ||||