Гид по технологиям

Установка и развёртывание Fossil на Ubuntu

• 7 min read • DevOps • Обновлено 26 Nov 2025
Установка Fossil на Ubuntu — быстрый гайд
Установка Fossil на Ubuntu — быстрый гайд

Содержание

  • Почему выбирать Fossil вместо Git
  • Подготовка: зависимости и Docker
  • Сборка и установка Fossil в Linux
  • Запуск Fossil и настройка SSL‑ревёрс‑прокси (Nginx + Certbot)
  • Создание и использование первого репозитория Fossil
  • Права доступа и пуш в удалённый репозиторий
  • Когда Fossil не подходит
  • Альтернативные подходы
  • Безопасность и эксплуатация
  • Чек‑листы для ролей
  • Краткий словарь терминов
  • Критерии приёмки

Фотография экрана компьютера с отображённым кодом JavaScript.

Почему выбирать Fossil вместо Git

Fossil — это комплексное решение «всё в одном» для управления исходным кодом и сообществом вокруг проекта. Ключевые преимущества:

  • Встроенная веб‑панель с доской обсуждений, вики и баг‑трекером — не нужно разворачивать дополнительные сервисы.
  • Простота само‑хостинга: можно запускать как статический бинарник или в Docker‑контейнере.
  • Отсутствие распространённой проблемы «detached HEAD» благодаря внутренней базе метаданных, связывающей коммиты.
  • Меньше зависимостей и небольшие требования к памяти по сравнению с полными платформами.

Коротко: Fossil хорош там, где нужен простой, централизованный интерфейс для небольших команд и проектов, без сложности GitHub/GitLab.

Важное: Fossil совместим по синтаксису с привычными Git‑подходами, но предлагает другой рабочий процесс, ориентированный на монолитный репозиторий и встроенное управление проектом.

Подготовка: зависимости и Docker

Перед установкой Fossil удобно подготовить сервер: установить Docker, Nginx и Certbot для автоматического HTTPS. Ниже — команды для Ubuntu. Приведённые команды актуализированы для корректной работы (исправлены опечатки и пробелы в оригинале).

  1. Добавьте ключ и репозиторий Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
  1. Создайте файл источника пакетов Docker:
sudo nano /etc/apt/sources.list.d/docker.list

Вставьте в файл:

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable
  1. Установите snap core и certbot (Certbot используется для автоматического получения сертификатов от Let’s Encrypt):
sudo snap install core
sudo snap install certbot --classic
  1. Обновите список пакетов и установите Docker и Nginx:
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx

Примечание: если у вас уже есть альтернативные менеджеры пакетов или приватный репозиторий, адаптируйте источник Docker под вашу дистрибуцию.

Сборка и установка Fossil в Linux

  1. Загрузите исходный tarball с релизом Fossil с официального сайта. В примере использована версия 2.23, но используйте последнюю стабильную.

  2. Переместите файл в домашнюю директорию и распакуйте:

mv ~/Downloads/fossil-src-2.23.tar.gz ~/
tar xvzf ~/fossil-src-2.23.tar.gz
  1. Перейдите в папку с исходниками и откройте Dockerfile для редактирования:
cd ~/fossil-src-2.23
nano ./Dockerfile
  1. В Dockerfile найдите место с параметрами запуска и добавьте флаг –https, чтобы включить HTTPS по умолчанию внутри контейнера (если вы хотите, чтобы Fossil слушал HTTPS внутренне). Например, добавьте строку:
"--https",              \

(Добавление флага зависит от структуры Dockerfile — убедитесь, что вы поместили опцию в правильный массив аргументов CMD/ENTRYPOINT.)

Терминал с выделённым флагом

  1. Соберите Docker‑образ Fossil:
sudo docker build -t fossil .

Совет: используйте тег версии, например fossil:2.23, чтобы управлять обновлениями образов.

Запуск Fossil и настройка SSL‑ревёрс‑прокси

Fossil внутри контейнера по умолчанию слушает HTTP/порт (в примерах — 8080). Мы настроим Nginx как обратный прокси, который будет принимать внешние HTTPS‑соединения и проксировать их внутрь контейнера.

  1. Создайте DNS A‑запись для поддомена, например fossil.example.com, указывающую на IP сервера.

  2. Создайте файл конфигурации Nginx для сайта:

sudo nano /etc/nginx/sites-available/fossil-scm

Вставьте конфигурацию (замените SUBDOMAIN.YOUR-ROOT.DOMAIN на ваш поддомен):

server {
    server_name SUBDOMAIN.YOUR-ROOT.DOMAIN;

    location / {
        proxy_pass http://127.0.0.1:7777;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
}

Это простая конфигурация обратного прокси, которая проксирует входящие запросы на локальный порт 7777.

Терминал показывающий конфигурационный файл обратного прокси Nginx.

  1. Активируйте сайт и перезапустите Nginx:
sudo ln -s /etc/nginx/sites-available/fossil-scm /etc/nginx/sites-enabled/
sudo systemctl enable --now nginx.service
sudo systemctl reload nginx.service
  1. Запустите контейнер Fossil и пробросьте порты. В примере Fossil внутри контейнера слушает 8080, на хосте мы пробрасываем 7777:
sudo docker run \
  --publish 7777:8080 \
  --name fossil \
  --cap-drop AUDIT_WRITE \
  --cap-drop CHOWN \
  --cap-drop FSETID \
  --cap-drop KILL \
  --cap-drop MKNOD \
  --cap-drop NET_BIND_SERVICE \
  --cap-drop NET_RAW \
  --cap-drop SETFCAP \
  --cap-drop SETPCAP \
  fossil

Замечание: список –cap-drop сокращает набор привилегий контейнера для повышения безопасности.

  1. Получите TLS‑сертификат от Let’s Encrypt через Certbot (указав ваш поддомен):
sudo certbot --nginx -d SUBDOMAIN.YOUR-ROOT.DOMAIN

Certbot обновит Nginx‑конфигурацию автоматически, добавив директивы для SSL и перенаправления HTTP на HTTPS.

  1. Проверьте доступность: откройте браузер и перейдите на https://SUBDOMAIN.YOUR-ROOT.DOMAIN. Вы должны увидеть веб‑интерфейс Fossil.

Скриншот страницы приветствия только что установленного экземпляра Fossil.

Совет: для непрерывной работы в продакшене создайте systemd unit для запуска контейнера или используйте docker compose с политикой рестарта.

Создание вашего первого репозитория Fossil

  1. Откройте веб‑интерфейс Fossil и перейдите по ссылке setup/config в разделе Home.

Скриншот, подсвечивающий ссылку

  1. Укажите параметры администратора (логин/пароль). Пароль для admin можно найти в логах контейнера при первом запуске, если образ его выводит — либо задайте при создании.

  2. В секции проекта заполните “Project Name” и “Project Description”, затем нажмите Apply Changes.

Скриншот подсвечивающий кнопку

Клонирование и локальная работа с репозиторием

  1. Установите локальную утилиту fossil:
sudo apt install fossil
  1. Клонируйте репозиторий и перейдите в папку проекта:
fossil clone https://SUBDOMAIN.YOUR-ROOT.DOMAIN yourproject.fossil
fossil open yourproject.fossil
cd ./yourproject

Примечание: fossil clone создаёт локальную копию БД репозитория (.fossil файл). fossil open открывает локальный checkout.

  1. Добавьте файл, зафиксируйте изменения и создайте коммит:
nano ./sample.file
fossil add ./sample.file
fossil commit

При вводе сообщения для коммита завершите ввод новой строкой, начинающейся с точки (.) — это способ завершения в Fossil (аналогично многим инструментам, использующим терминальную редактуру сообщения).

Терминал, показывающий формат сообщения коммита в Fossil.

Пуш изменений в удалённый репозиторий

По умолчанию удалённый репозиторий может быть доступен только для чтения. Чтобы разрешить запись:

  1. Войдите в веб‑интерфейс под администратором и откройте Admin → Users.

Расположение пункта Admin в верхнем меню Fossil.

  1. Нажмите Add, создайте нового пользователя и установите пароль.

Скриншот кнопки Add для создания нового пользователя.

  1. В разделе Capabilities отметьте Developer для разрешения коммитов и пушей, затем Apply Changes.

Скриншот стандартной настройки прав коммитера для нового пользователя Fossil.

  1. На локальной машине выполните push, указав учётную запись:
fossil push https://YOUR-USERNAME@SUBDOMAIN.YOUR-ROOT.DOMAIN

Введите пароль пользователя, чтобы завершить отправку изменений.

Для получения обновлений используйте:

fossil pull

Проверка: откройте веб‑интерфейс, чтобы убедиться, что изменения появились в удалённом репозитории.

Скриншот, показывающий пример коммита в самохостинге Fossil.

Когда Fossil не подходит

  • Если вам нужна масштабируемая платформа с миллионами репозиториев и интеграциями уровня GitHub Marketplace, Fossil — не лучший выбор.
  • Для больших распределённых команд, которые завязаны на экосистему Git (CI/CD, сервисы, large‑scale monorepo tools), переход может быть затратным.
  • Если вы завязаны на специфичных Git‑workflow (например, Git LFS для больших бинарных файлов) — проверьте совместимость.

Контрпример: проекты с большими бинарными артефактами и расширенными требованиями к интеграции с внешними сервисами чаще выбирают Git + специализированные сервисы.

Альтернативные подходы

  • Git + Gitea: лёгкая альтернатива self‑hosted, поддерживает множество интеграций.
  • GitLab CE: полная платформа с CI, но более ресурсоёмкая.
  • Gogs: простой self‑hosted Git‑сервер.

Выбор зависит от масштаба, набора возможностей и требований к инфраструктуре.

Руководство по безопасности и эксплуатация

Ключевые рекомендации для безопасного развёртывания:

  • Ограничьте привилегии контейнера (как показано через –cap-drop).
  • Запускайте контейнеры под небезопасными пользователями или используйте механизмы user namespaces.
  • Делайте резервные копии .fossil файлов репозиториев и конфигурации Nginx. Минимально — регулярная копия каталога данных и экспорт резервной базы.
  • Настройте автоматическое обновление Certbot и проверяйте срок действия сертификатов.
  • Включите брандмауэр: откройте только 80/443 и SSH; порты приложений оставьте локальными (127.0.0.1).
  • Логи: собирайте логи Nginx и контейнера в централизованный лог‑агрегатор для анализа инцидентов.

Риск‑матрица (высоко/средне/низко) и базовые меры:

  • Утечка паролей — средне: используйте сильные пароли и 2FA (если доступно через прокси/SSO).
  • Компрометация контейнера — низко/средне: ограничьте CAP, применяйте обновления.
  • Просроченные сертификаты — низко: автоматизируйте Certbot renew.

Чек‑листы для ролей

Администратор:

  • Настроить DNS A‑запись.
  • Установить Docker и Nginx.
  • Собрать и запустить образ Fossil.
  • Настроить Certbot и HTTPS.
  • Сделать резервную политику для .fossil файлов.

Оператор / DevOps:

  • Настроить systemd unit или docker compose с restart: unless-stopped.
  • Интегрировать логирование и мониторинг контейнера.
  • Создать процедуры обновления образа и миграции.

Разработчик:

  • Установить fossil локально.
  • Клонировать и открыть проект (fossil clone/open).
  • Создавать коммиты и пушить через fossil push.

Ментальные модели и быстрые эвристики

  • Если нужно «всё в одном» для небольшого проекта — выбирайте Fossil.
  • Если важна экосистема интеграций и масштаб — выбирайте Git + внешние сервисы.
  • Для простоты управления — работайте с одним репозиторием Fossil и назначайте разработчиков через веб‑интерфейс.

Краткий словарь (1‑строчные определения)

  • Fossil: VCS с встроенным веб‑интерфейсом, вики и трекером.
  • .fossil: файл‑контейнер репозитория, используемый для клонирования/бэкапа.
  • Certbot: инструмент для автоматического получения TLS‑сертификатов Let’s Encrypt.
  • Reverse proxy: сервер (Nginx), который принимает внешние запросы и проксирует внутрь.

Критерии приёмки

  • Веб‑интерфейс Fossil доступен по HTTPS на вашем поддомене.
  • Можно создать проект через setup/config и просмотреть его на сайте.
  • Локальный пользователь может клонировать, коммитить и успешно выполнить fossil push после настройки прав.
  • Certbot корректно установил сертификат и auto‑renew работает (проверить dry run).

Итог

Fossil — удобный инструмент для само‑хостинга небольших и средних проектов, где важна простота и интегрированная платформа. Он упрощает совместную работу за счёт встроенных инструментов и низкой операционной нагрузки. При выборе учитывайте требования к интеграциям и масштабу: при необходимости более широкой экосистемы стоит рассмотреть Git‑ориентированные платформы.

Image credit: Panjak Patel via Unsplash. All alterations and screenshots by Ramces Red.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро