Skip to content

Instantly share code, notes, and snippets.

@tassoevan
Created April 20, 2017 03:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tassoevan/2c1dcdb560d3a29199a1fda630a8f327 to your computer and use it in GitHub Desktop.
Save tassoevan/2c1dcdb560d3a29199a1fda630a8f327 to your computer and use it in GitHub Desktop.

Instalação do Gogs

Requisitos

  • Sistema operacional Ubuntu (ou ao menos Debian-based)
  • Usuário com permissão para sudo
  • Assume-se que o IP da máquina é 192.168.0.11 (modificar caso contrário)
  • Servidor MySQL, na mesma máquina, rodando na porta padrão (3306) e com usuário root disponível. Assume-se que será criado um usuário com username gogs e senha gogs e um banco chamado gogs.

Procedimento

Adicionar usuário para o serviço (git)

sudo useradd --comment 'Gogs Git User' --create-home --home-dir /home/git git

Extrair binários

wget -qO - 'https://dl.gogs.io/0.10.1/linux_amd64.tar.gz' | tar xvz
sudo mv ./gogs /opt/gogs
sudo chown -R root:root /opt/gogs

Criar diretório de configuração

sudo mkdir /opt/gogs/conf
sudo chown git:git /opt/gogs/conf
sudo chmod 755 /opt/gogs/conf

Implantar arquivo de configuração

Criar o arquivo /opt/gogs/conf/app.ini com o seguinte conteúdo:

APP_NAME = Meu Gogs
RUN_USER = git
RUN_MODE = prod

[server]
PROTOCOL = http
DOMAIN = 192.168.0.11
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
HTTP_ADDR = 0.0.0.0
HTTP_PORT    = 3000
UNIX_SOCKET_PERMISSION = 666
LOCAL_ROOT_URL = %(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/
DISABLE_SSH  = false
START_SSH_SERVER = false
SSH_DOMAIN = %(DOMAIN)s
SSH_PORT     = 22
SSH_LISTEN_HOST = 0.0.0.0
SSH_LISTEN_PORT = %(SSH_PORT)s
SSH_ROOT_PATH =
SSH_SERVER_CIPHERS = aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, arcfour256, arcfour128
SSH_KEY_TEST_PATH =
SSH_KEYGEN_PATH = ssh-keygen
MINIMUM_KEY_SIZE_CHECK = false
OFFLINE_MODE = false
DISABLE_ROUTER_LOG = false
CERT_FILE = /opt/gogs/https/cert.pem
KEY_FILE = /opt/gogs/https/key.pem
STATIC_ROOT_PATH =
APP_DATA_PATH = /opt/gogs/data
ENABLE_GZIP = false
LANDING_PAGE = home

[repository]
ROOT = /home/git/gogs-repositories
SCRIPT_TYPE = bash
ANSI_CHARSET =
FORCE_PRIVATE = false
MAX_CREATION_LIMIT = -1
MIRROR_QUEUE_LENGTH = 1000
PULL_REQUEST_QUEUE_LENGTH = 1000
PREFERRED_LICENSES = Apache License 2.0,MIT License
DISABLE_HTTP_GIT = false
ENABLE_LOCAL_PATH_MIGRATION = false
COMMITS_FETCH_CONCURRENCY = 0

[repository.editor]
LINE_WRAP_EXTENSIONS = .txt,.md,.markdown,.mdown,.mkd,
PREVIEWABLE_FILE_MODES = markdown

[repository.upload]
ENABLED = true
TEMP_PATH = /opt/gogs/data/tmp/uploads
ALLOWED_TYPES =
FILE_MAX_SIZE = 3
MAX_FILES = 5

[markdown]
ENABLE_HARD_LINE_BREAK = false
CUSTOM_URL_SCHEMES = git,magnet
FILE_EXTENSIONS = .md,.markdown,.mdown,.mkd

[http]
ACCESS_CONTROL_ALLOW_ORIGIN =

[ssh.minimum_key_sizes]
ED25519 = 256
ECDSA   = 256
RSA     = 2048
DSA     = 1024

[database]
DB_TYPE  = mysql
HOST     = 127.0.0.1:3306
NAME     = gogs
USER     = gogs
PASSWD   = gogs
SSL_MODE = disable
PATH     =

[admin]
DISABLE_REGULAR_ORG_CREATION = false

[security]
INSTALL_LOCK = true
SECRET_KEY   = DENgELT53R2pvz1
LOGIN_REMEMBER_DAYS = 7
COOKIE_USERNAME = gogs_awesome
COOKIE_REMEMBER_NAME = gogs_incredible
COOKIE_SECURE = false
REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER

[service]
ACTIVE_CODE_LIVE_MINUTES = 180
RESET_PASSWD_CODE_LIVE_MINUTES = 180
REGISTER_EMAIL_CONFIRM = true
DISABLE_REGISTRATION   = false
REQUIRE_SIGNIN_VIEW    = false
ENABLE_NOTIFY_MAIL     = true
ENABLE_REVERSE_PROXY_AUTHENTICATION = false
ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false
ENABLE_CAPTCHA         = true

[webhook]
TYPES = gogs, slack, discord
QUEUE_LENGTH = 1000
DELIVER_TIMEOUT = 5
SKIP_TLS_VERIFY = false
PAGING_NUM = 10

[mailer]
ENABLED = false

[cache]
ADAPTER = memory
INTERVAL = 60
HOST =

[session]
PROVIDER = file
PROVIDER_CONFIG = /opt/gogs/data/sessions
COOKIE_NAME = i_like_gogits
COOKIE_SECURE = false
ENABLE_SET_COOKIE = true
GC_INTERVAL_TIME = 86400
SESSION_LIFE_TIME = 86400
CSRF_COOKIE_NAME = _csrf

[picture]
AVATAR_UPLOAD_PATH = /opt/gogs/data/avatars
GRAVATAR_SOURCE = gravatar
DISABLE_GRAVATAR = false
ENABLE_FEDERATED_AVATAR = true

[attachment]
ENABLE = true
PATH = /opt/gogs/data/attachments
ALLOWED_TYPES = image/jpeg|image/png
MAX_SIZE = 4
MAX_FILES = 5

[time]
FORMAT =

[log]
ROOT_PATH = /opt/gogs/log
MODE = file
BUFFER_LEN = 100
LEVEL = Trace

[log.file]
LEVEL =
LOG_ROTATE = true
DAILY_ROTATE = true
MAX_SIZE_SHIFT = 28
MAX_LINES = 1000000
MAX_DAYS = 7

[cron]
ENABLED = true
RUN_AT_START = false

[cron.update_mirrors]
SCHEDULE = @every 10m

[cron.repo_health_check]
SCHEDULE = @every 24h
TIMEOUT = 60s
ARGS =

[cron.check_repo_stats]
RUN_AT_START = true
SCHEDULE = @every 24h

[cron.repo_archive_cleanup]
RUN_AT_START = false
SCHEDULE = @every 24h
OLDER_THAN = 24h

[git]
DISABLE_DIFF_HIGHLIGHT = false
MAX_GIT_DIFF_LINES = 1000
MAX_GIT_DIFF_LINE_CHARACTERS = 500
MAX_GIT_DIFF_FILES = 100
GC_ARGS =

[git.timeout]
MIGRATE = 600
MIRROR = 300
CLONE = 300
PULL = 300
GC = 60

[mirror]
DEFAULT_INTERVAL = 8

[api]
MAX_RESPONSE_ITEMS = 50

[ui]
EXPLORE_PAGING_NUM = 20
ISSUE_PAGING_NUM = 10
FEED_MAX_COMMIT_NUM = 5
THEME_COLOR_META_TAG = `#ff5343`
MAX_DISPLAY_FILE_SIZE = 8388608

[ui.admin]
USER_PAGING_NUM = 50
REPO_PAGING_NUM = 50
NOTICE_PAGING_NUM = 25
ORG_PAGING_NUM = 50

[ui.user]
REPO_PAGING_NUM = 15

[i18n]
LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,ja-JP,es-ES,pt-BR,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR,gl-ES,uk-UA
NAMES = English,简体中文,繁體中文(香港),繁體中文(台湾),Deutsch,Français,Nederlands,Latviešu,Русский,日本語,Español,Português do Brasil,Polski,български,Italiano,Suomalainen,Türkçe,čeština,Српски,Svenska,한국어,Galego,Українська

[i18n.datelang]
en-US = en
zh-CN = zh
zh-HK = zh-TW
zh-TW = zh-TW
de-DE = de
fr-FR = fr
nl-NL = nl
lv-LV = lv
ru-RU = ru
ja-JP = ja
es-ES = es
pt-BR = pt-BR
pl-PL = pl
bg-BG = bg
it-IT = it
fi-FI = fi
tr-TR = tr
cs-CZ = cs-CZ
sr-SP = sr
sv-SE = sv
ko-KR = ko
gl-ES = gl
uk-UA = uk

[highlight.mapping]
.toml=ini

[other]
SHOW_FOOTER_BRANDING = false
SHOW_FOOTER_VERSION = true
SHOW_FOOTER_TEMPLATE_LOAD_TIME = true

Criar diretório de log

sudo mkdir /opt/gogs/log
sudo chown git:git /opt/gogs/log
sudo chmod 755 /opt/gogs/log

Criar diretório de dados

sudo mkdir /opt/gogs/data
sudo chown git:git /opt/gogs/data
sudo chmod 755 /opt/gogs/data

Criar diretório de certificados SSL

sudo mkdir /opt/gogs/https
sudo chown git:git /opt/gogs/https
sudo chmod 755 /opt/gogs/https

Criar certificados SSL

cd /opt/gogs/https
sudo -H -u git /opt/gogs/gogs cert-ca=true -duration=8760h0m0s -host=192.168.0.11
cd -

Instalar Gogs como serviço

Criar o arquivo /etc/systemd/system/gogs.service com o seguinte conteúdo:

[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mysql.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
Type=simple
User=git
Group=git
WorkingDirectory=/opt/gogs
ExecStart=/opt/gogs/gogs web --config /opt/gogs/conf/app.ini
Restart=always
Environment=USER=git HOME=/home/git

[Install]
WantedBy=multi-user.target

Adicionar usuário gogs no servidor MySQL

mysql --user root --password --execute="GRANT ALL PRIVILEGES ON gogs.*:ALL TO
`gogs`@`192.168.0.11` IDENTIFIED BY 'gogs'; GRANT ALL PRIVILEGES ON gogs.*:ALL TO
`gogs`@`127.0.0.1` IDENTIFIED BY 'gogs'; GRANT ALL PRIVILEGES ON gogs.*:ALL TO
`gogs`@`::1 IDENTIFIED BY 'gogs'; GRANT ALL PRIVILEGES ON gogs.*:ALL TO
`gogs`@`localhost` IDENTIFIED BY 'gogs'; FLUSH PRIVILEGES;"

Adicionar o schema gogs no MySQL

mysql --user root --password --execute="DROP DATABASE IF EXISTS gogs; CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

Iniciar e habilitar o serviço

sudo systemctl start gogs.service
sudo systemctl enable gogs.service
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment