- 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 usernamegogs
e senhagogs
e um banco chamadogogs
.
sudo useradd --comment 'Gogs Git User' --create-home --home-dir /home/git git
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
sudo mkdir /opt/gogs/conf
sudo chown git:git /opt/gogs/conf
sudo chmod 755 /opt/gogs/conf
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, [email protected], 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
sudo mkdir /opt/gogs/log
sudo chown git:git /opt/gogs/log
sudo chmod 755 /opt/gogs/log
sudo mkdir /opt/gogs/data
sudo chown git:git /opt/gogs/data
sudo chmod 755 /opt/gogs/data
sudo mkdir /opt/gogs/https
sudo chown git:git /opt/gogs/https
sudo chmod 755 /opt/gogs/https
cd /opt/gogs/https
sudo -H -u git /opt/gogs/gogs cert-ca=true -duration=8760h0m0s -host=192.168.0.11
cd -
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
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;"
mysql --user root --password --execute="DROP DATABASE IF EXISTS gogs; CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
sudo systemctl start gogs.service
sudo systemctl enable gogs.service