Поднял 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, кладу его в общий ночной бэкап сервера, так что отдельной возни нет.