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

Почему выбирать Fossil вместо Git
Fossil — это комплексное решение «всё в одном» для управления исходным кодом и сообществом вокруг проекта. Ключевые преимущества:
- Встроенная веб‑панель с доской обсуждений, вики и баг‑трекером — не нужно разворачивать дополнительные сервисы.
- Простота само‑хостинга: можно запускать как статический бинарник или в Docker‑контейнере.
- Отсутствие распространённой проблемы «detached HEAD» благодаря внутренней базе метаданных, связывающей коммиты.
- Меньше зависимостей и небольшие требования к памяти по сравнению с полными платформами.
Коротко: Fossil хорош там, где нужен простой, централизованный интерфейс для небольших команд и проектов, без сложности GitHub/GitLab.
Важное: Fossil совместим по синтаксису с привычными Git‑подходами, но предлагает другой рабочий процесс, ориентированный на монолитный репозиторий и встроенное управление проектом.
Подготовка: зависимости и Docker
Перед установкой Fossil удобно подготовить сервер: установить Docker, Nginx и Certbot для автоматического HTTPS. Ниже — команды для Ubuntu. Приведённые команды актуализированы для корректной работы (исправлены опечатки и пробелы в оригинале).
- Добавьте ключ и репозиторий 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- Создайте файл источника пакетов 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- Установите snap core и certbot (Certbot используется для автоматического получения сертификатов от Let’s Encrypt):
sudo snap install core
sudo snap install certbot --classic- Обновите список пакетов и установите 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
Загрузите исходный tarball с релизом Fossil с официального сайта. В примере использована версия 2.23, но используйте последнюю стабильную.
Переместите файл в домашнюю директорию и распакуйте:
mv ~/Downloads/fossil-src-2.23.tar.gz ~/
tar xvzf ~/fossil-src-2.23.tar.gz- Перейдите в папку с исходниками и откройте Dockerfile для редактирования:
cd ~/fossil-src-2.23
nano ./Dockerfile- В Dockerfile найдите место с параметрами запуска и добавьте флаг –https, чтобы включить HTTPS по умолчанию внутри контейнера (если вы хотите, чтобы Fossil слушал HTTPS внутренне). Например, добавьте строку:
"--https", \(Добавление флага зависит от структуры Dockerfile — убедитесь, что вы поместили опцию в правильный массив аргументов CMD/ENTRYPOINT.)

- Соберите Docker‑образ Fossil:
sudo docker build -t fossil .Совет: используйте тег версии, например fossil:2.23, чтобы управлять обновлениями образов.
Запуск Fossil и настройка SSL‑ревёрс‑прокси
Fossil внутри контейнера по умолчанию слушает HTTP/порт (в примерах — 8080). Мы настроим Nginx как обратный прокси, который будет принимать внешние HTTPS‑соединения и проксировать их внутрь контейнера.
Создайте DNS A‑запись для поддомена, например fossil.example.com, указывающую на IP сервера.
Создайте файл конфигурации 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:
sudo ln -s /etc/nginx/sites-available/fossil-scm /etc/nginx/sites-enabled/
sudo systemctl enable --now nginx.service
sudo systemctl reload nginx.service- Запустите контейнер 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 сокращает набор привилегий контейнера для повышения безопасности.
- Получите TLS‑сертификат от Let’s Encrypt через Certbot (указав ваш поддомен):
sudo certbot --nginx -d SUBDOMAIN.YOUR-ROOT.DOMAINCertbot обновит Nginx‑конфигурацию автоматически, добавив директивы для SSL и перенаправления HTTP на HTTPS.
- Проверьте доступность: откройте браузер и перейдите на https://SUBDOMAIN.YOUR-ROOT.DOMAIN. Вы должны увидеть веб‑интерфейс Fossil.

Совет: для непрерывной работы в продакшене создайте systemd unit для запуска контейнера или используйте docker compose с политикой рестарта.
Создание вашего первого репозитория Fossil
- Откройте веб‑интерфейс Fossil и перейдите по ссылке setup/config в разделе Home.

Укажите параметры администратора (логин/пароль). Пароль для admin можно найти в логах контейнера при первом запуске, если образ его выводит — либо задайте при создании.
В секции проекта заполните “Project Name” и “Project Description”, затем нажмите Apply Changes.

Клонирование и локальная работа с репозиторием
- Установите локальную утилиту fossil:
sudo apt install fossil- Клонируйте репозиторий и перейдите в папку проекта:
fossil clone https://SUBDOMAIN.YOUR-ROOT.DOMAIN yourproject.fossil
fossil open yourproject.fossil
cd ./yourprojectПримечание: fossil clone создаёт локальную копию БД репозитория (.fossil файл). fossil open открывает локальный checkout.
- Добавьте файл, зафиксируйте изменения и создайте коммит:
nano ./sample.file
fossil add ./sample.file
fossil commitПри вводе сообщения для коммита завершите ввод новой строкой, начинающейся с точки (.) — это способ завершения в Fossil (аналогично многим инструментам, использующим терминальную редактуру сообщения).

Пуш изменений в удалённый репозиторий
По умолчанию удалённый репозиторий может быть доступен только для чтения. Чтобы разрешить запись:
- Войдите в веб‑интерфейс под администратором и откройте Admin → Users.

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

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

- На локальной машине выполните push, указав учётную запись:
fossil push https://YOUR-USERNAME@SUBDOMAIN.YOUR-ROOT.DOMAINВведите пароль пользователя, чтобы завершить отправку изменений.
Для получения обновлений используйте:
fossil pullПроверка: откройте веб‑интерфейс, чтобы убедиться, что изменения появились в удалённом репозитории.

Когда 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.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента