Поднял Forgejo — свой git дома

Я давно держал все конфиги сервера и dotfiles на GitHub, и вроде всё работало. Но накопилось несколько вещей, которые меня в этой схеме не устраивали. Во-первых, часть репо — это compose-файлы и .env-шаблоны для домашнего сервера, и мне просто некомфортно, что всё это лежит на чужих серверах, пусть даже в приватных репозиториях. Во-вторых, хотелось, чтобы бэкап моих же конфигов жил рядом с тем, что они описывают, а не зависел от доступности внешнего сервиса. В общем, решил поднять свой git.

Выбор был между Gitea и Forgejo. Forgejo — это форк Gitea, который пошёл своим путём после смены управления у Gitea, и сообщество мне там симпатичнее. По функционалу для моих задач они почти идентичны, так что взял Forgejo.

Подняв в Docker, как и всё остальное у меня. Стек живёт в /app/forgejo/:

services:
  forgejo:
    image: codeberg.org/forgejo/forgejo:9
    container_name: forgejo
    restart: unless-stopped
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - FORGEJO__server__DOMAIN=git.local
      - FORGEJO__server__ROOT_URL=http://git.local:3000/
    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"

SSH-порт контейнера прокинул на 222, чтобы не конфликтовать с системным sshd. После первого старта Forgejo открывает страницу установки — там выбрал SQLite (для одного пользователя База на postgres избыточна), задал админа и выключил открытую регистрацию, чтобы случайно никто не завёл аккаунт.

Дальше добавил remote к своим dotfiles:

git remote add home ssh://git@192.168.1.10:222/sparn/dotfiles.git
git push home main

Я не стал полностью уходить с GitHub — там удобно показывать что-то людям и пользоваться Actions. Сделал так: home-репо у меня основной, а на GitHub push зеркалом через дополнительный remote, либо через встроенный в Forgejo механизм push-mirror. Получилось, что мои конфиги теперь в двух местах, и одно из них полностью под моим контролем.

Отдельно радует, что веб-морда лёгкая и шустрая даже на скромном железе. Памяти контейнер ест мизер, на idle почти не виден. Для домашнего использования — то что надо: свой git, свои данные, и при этом всё привычно как на больших площадках. Бэкап самого Forgejo — это просто архив папки ./data, кладу его в общий ночной бэкап сервера, так что отдельной возни нет.