Установка и настройка Gogs на Ubuntu 16.04
Введение
Gogs — это бесплатный и открытый Git-сервис, написанный на языке Go. Он позволяет быстро развернуть собственный Git-сервер на минимальном оборудовании. Веб-интерфейс Gogs похож на GitHub и поддерживает базы данных MySQL, PostgreSQL и SQLite (а также MSSQL и TiDB).
В этом руководстве показано, как установить и настроить Gogs на Ubuntu 16.04: как установить Go, настроить PostgreSQL, собрать Gogs, запустить его как systemd-сервис и подключить Nginx в качестве обратного прокси.
Важно: Ubuntu 16.04 устарела по жизненному циклу; рассмотрите обновление до поддерживаемой LTS-версии для получения обновлений безопасности.
Требования
- Сервер с Ubuntu 16.04
- Привилегии root или доступ через sudo
- Доступ к интернету для загрузки пакетов и исходников
Что мы сделаем
- Обновим систему
- Установим и настроим PostgreSQL
- Установим Go и Git
- Склонируем и соберём Gogs
- Настроим конфигурацию Gogs
- Запустим Gogs как службу systemd
- Настроим Nginx в роли обратного прокси
- Протестируем установку
Шаг 1 — Обновление системы
Перед началом обновите списки пакетов и установленные пакеты:
sudo apt update
sudo apt upgradeЭто обеспечит совместимость версий и установку последних исправлений безопасности для Ubuntu 16.04.
Шаг 2 — Установка и настройка PostgreSQL
Gogs поддерживает несколько СУБД; в этом руководстве мы используем PostgreSQL.
Установите PostgreSQL и необходимые заголовки клиента:
sudo apt install -y postgresql postgresql-client libpq-devЗапустите и включите сервис PostgreSQL:
systemctl start postgresql
systemctl enable postgresqlСоздайте базу данных и пользователя для Gogs. Переключитесь на системного пользователя postgres и откройте psql:
su - postgres
psqlВ psql создайте пользователя git и базу данных gogs_production:
CREATE USER git CREATEDB;
\password git
CREATE DATABASE gogs_production OWNER git;
Теперь у вас есть пользователь postgres и база gogs_production, которыми будет пользоваться Gogs.
Совет: используйте сложный пароль для пользователя git и храните его в менеджере паролей.
Шаг 3 — Установка Go и Git
Установите Git из репозитория Ubuntu:
sudo apt install gitДобавьте системного пользователя git (без возможности входа):
sudo adduser --disabled-login --gecos 'Gogs' gitПереключитесь на пользователя git и создайте каталог для локальной установки Go:
su - git
mkdir -p /home/git/localПерейдите в каталог и скачайте tarball с Go (в руководстве используется версия go1.9.2 как пример; загрузите актуальную стабильную версию с официального сайта при необходимости):
cd ~/local
wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz
Распакуйте архив и удалите его:
tar -xf go1.9.2.linux-amd64.tar.gz
rm -f go1.9.2.linux-amd64.tar.gzУстановленные бинарные файлы Go появятся в ~/local/go. Настройте переменные окружения GOROOT и GOPATH, а также PATH:
cd ~
echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc
echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $HOME/.bashrcЗагрузите настройки Bash:
source ~/.bashrcПроверьте версию go:
go version
Теперь под пользователем git доступна команда go.
Примечание: если у пользователя по умолчанию оболочка не bash, назначьте bash как shell по умолчанию.
Шаг 4 — Установка Gogs
Под пользователем git скачайте исходники Gogs через go get и соберите их:
su - git
go get -u github.com/gogits/gogsИсходники будут загружены в $GOPATH/src/github.com/gogits/gogs. Перейдите туда и соберите бинарник:
cd $GOPATH/src/github.com/gogits/gogs
go buildЕсли ошибок нет, запустите Gogs локально:
./gogs webПо умолчанию Gogs слушает порт 3000.

Откройте в браузере http://

Нажмите Ctrl+C в терминале, чтобы остановить временный процесс и перейти к конфигурации как службы.
Шаг 5 — Настройка Gogs
Создайте каталог custom/conf и скопируйте туда файл app.ini для редактирования:
cd $GOPATH/src/github.com/gogits/gogs
mkdir -p custom/conf/
cp conf/app.ini custom/conf/app.ini
vim custom/conf/app.iniВ секции [server] измените адрес прослушивания на localhost:
[server]
PROTOCOL = http
DOMAIN = localhost
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
HTTP_ADDR = 127.0.0.1
HTTP_PORT = 3000В секции [database] укажите параметры PostgreSQL (замените PASSWD на ваш пароль):
[database]
DB_TYPE = postgres
HOST = 127.0.0.1:5432
NAME = gogs_production
USER = git
PASSWD = aqwe123@#Сохраните и запустите Gogs для проверки:
./gogs web
Gogs должен успешно подключиться к базе и открывать страницу установки на localhost:3000.
Совет: храните custom/conf/app.ini под управлением прав доступа, чтобы файл конфигурации и пароль базы не были доступны другим пользователям.
Шаг 6 — Запуск Gogs как службы systemd
Создайте unit-файл systemd, чтобы Gogs стартовал автоматически и работал в фоне.
Откройте /etc/systemd/system/gogs.service и вставьте конфигурацию:
cd /etc/systemd/system
vim gogs.serviceСодержимое service-файла:
[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mariadb.service mysqld.service postgresql.service memcached.service redis.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=/home/git/go/src/github.com/gogits/gogs
ExecStart=/home/git/go/src/github.com/gogits/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git
[Install]
WantedBy=multi-user.targetПерезагрузите systemd, затем запустите и включите сервис:
systemctl daemon-reload
systemctl start gogs
systemctl enable gogsПроверьте статус и прослушиваемые порты:
netstat -plntu
systemctl status gogs
Шаг 7 — Настройка Nginx в качестве обратного прокси
Рекомендуется использовать обратный прокси (Nginx) для SSL-терминации, виртуальных хостов и управления HTTP-заголовками.
Добавьте репозиторий Nginx и установите сервер:
sudo add-apt-repository -y ppa:nginx/stable
sudo apt update
sudo apt install nginx -yСоздайте виртуальный хост в /etc/nginx/sites-available/gogs и вставьте конфигурацию (измените server_name на ваш домен):
cd /etc/nginx/sites-available
vim gogsserver {
listen 80;
server_name git.hakase-labs.co;
location / {
proxy_pass http://localhost:3000;
}
}Примечание: замените server_name на ваш домен.
Активируйте сайт и проверьте конфигурацию nginx:
ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginxРассмотрите использование Certbot для установки HTTPS и автоматического продления сертификатов.
Шаг 8 — Тестирование
Откройте браузер и перейдите на URL вашего Gogs (например, http://git.hakase-labs.co). На странице установки введите параметры БД и создайте административный аккаунт.

Заполните Admin account settings — имя пользователя, пароль и e-mail — затем нажмите Install Gogs. После успешной установки вы попадёте на панель управления Gogs.


Gogs теперь работает с PostgreSQL и Nginx на Ubuntu 16.04.
Рекомендации по безопасности и эксплуатации
- Всегда используйте HTTPS с доверенным сертификатом (Let’s Encrypt или коммерческий CA).
- Закройте доступ к порту 3000 извне — проксируйте трафик через Nginx и слушайте на localhost.
- Ограничьте доступ к файлу custom/conf/app.ini (chmod 600).
- Регулярно обновляйте Gogs, Go и СУБД; протестируйте обновления на тестовой среде.
Жёсткая настройка
- Настройте firewall (ufw) и разрешите только нужные порты (80/443 для веба, 22 для SSH при необходимости).
- Используйте fail2ban для защиты от брутфорса на SSH и веб-интерфейс.
- Если нужны внешние репозитории, используйте SSH-ключи для доступа пользователей.
Резервное копирование и откат
- Регулярно делайте дампы базы данных:
pg_dump -U git -h 127.0.0.1 -Fc gogs_production > gogs_production_$(date +%F).dump- Бэкапьте каталог custom и репозитории (обычно находятся в каталогах data или custom/services/git).
- Для отката: восстановите дамп через pg_restore и восстановите файлы конфигурации и репозиториев.
Альтернативные подходы
- Использование SQLite для небольших инстансов — проще в настройке, но менее масштабируемо.
- Использование MySQL/MariaDB вместо PostgreSQL при наличии требований инфраструктуры.
- Развёртывание в Docker-контейнерах для упрощения перемещения между хостами.
Когда Gogs подходит, а когда нет
Подходит:
- Малые и средние команды, которым нужен лёгкий самостоятеленый Git-хост.
- Быстрая доставка репозиториев без излишних фич.
Не подходит:
- Проекты, требующие сложной интеграции с CI/CD на уровне поставщика (можно интегрировать, но потребуются дополнительные инструменты).
- Среды, где требуется корпоративная поддержка с SLA (Gogs — проект с сообществом).
Роль‑ориентированные чек-листы
Администратор:
- Обновить систему и применить патчи.
- Настроить бэкап БД и файлов.
- Настроить HTTPS и fail2ban.
DevOps:
- Настроить systemd unit и мониторинг (Prometheus, Grafana, либо простой сервисный мониторинг).
- Автоматизировать развёртывание (Ansible, Terraform + cloud-init).
Разработчик:
- Создать SSH-ключ и загрузить в профиль Gogs.
- Проверить клонирование, пуш и создание pull/merge request.
Критерии приёмки
- Сервис Gogs запущен как systemd unit и активен после перезагрузки.
- Веб-интерфейс доступен по домену через HTTPS и проксируется Nginx.
- Пользователь администратор создан, можно создать и клонировать репозиторий.
- Ежедневный бэкап БД и репозиториев настроен.
Быстрый справочник (fact box)
- По умолчанию порт: 3000
- Типичные пути: $GOPATH/src/github.com/gogits/gogs
- Systemd unit: /etc/systemd/system/gogs.service
- Поддерживаемые СУБД: MySQL, PostgreSQL, SQLite, MSSQL, TiDB
Модель принятия решений (ментальная схема)
- Нужна простота и лёгкость администрирования → Gogs
- Нужна интеграция и богатый функционал (CI, Marketplace) → рассмотреть GitLab или GitHub Enterprise
flowchart TD
A[Обновление системы] --> B[Установка PostgreSQL]
B --> C[Установка Go и Git]
C --> D[Сборка Gogs]
D --> E[Настройка Gogs]
E --> F[Запуск как service]
F --> G[Настройка Nginx]
G --> H[Тестирование]Краткий словарь
- Gogs — легковесный Git-сервер на Go.
- GOROOT — директория установки Go.
- GOPATH — рабочая директория Go-проектов.
- systemd — системный менеджер служб в Linux.
Тест-кейсы и приёмочные проверки
- Попытка клонирования репозитория по HTTPS и по SSH.
- Проверка создания и удаления репозитория через веб-интерфейс.
- Проверка, что служба gogs автоматически перезапускается после kill и перезагрузки сервера.
Советы по миграции и совместимости
- При переносе между версиями Gogs делайте бэкап базы и репозиториев.
- Проверяйте release notes Gogs на предмет несовместимых изменений в схемах базы.
- При переходе с SQLite на PostgreSQL экспортируйте и импортируйте данные аккуратно.
Заключение
Это руководство даёт практический набор шагов для развёртывания Gogs на Ubuntu 16.04 с PostgreSQL и Nginx. После установки уделите внимание безопасности, резервному копированию и регулярным обновлениям.
Ресурсы
- Официальная документация Gogs: https://gogs.io/docs/installation
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента