From c0de29a266602607a35c11999e68ed85f5a4bb8a Mon Sep 17 00:00:00 2001 From: samuel Date: Tue, 3 Mar 2026 01:09:48 +0100 Subject: [PATCH] feat: replace gitea by forgejo --- Makefile | 23 ++++--- .../{gitea/app.ini => forgejo/netoik_app.ini} | 8 +-- files/systemd/actrunner@.service | 17 ----- files/systemd/forgejo.conf | 3 + files/systemd/gitea.service | 15 ---- netoik-git.spec | 69 +++++-------------- 6 files changed, 38 insertions(+), 97 deletions(-) rename files/{gitea/app.ini => forgejo/netoik_app.ini} (88%) delete mode 100644 files/systemd/actrunner@.service create mode 100644 files/systemd/forgejo.conf delete mode 100644 files/systemd/gitea.service diff --git a/Makefile b/Makefile index d992f9d..48f781f 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ VERSION = $(shell git describe --abbrev=0) RELEASE = $(shell git rev-parse --short HEAD) REFERENCE = $(if $(GIT_REFERENCE),$(GIT_REFERENCE),$(shell git branch --show-current)) ARCH = noarch +OWNER = samuel RPM_RPMDIR = $(shell rpm --eval '%{_rpmdir}') RPM_SBINDIR = $(shell rpm --eval '%{_sbindir}') @@ -16,26 +17,30 @@ RPM_BUILD_PATH = $(RPM_RPMDIR)/$(BUILD_ARCH)/$(NAME)-$(VERSION)-$(RELEASE).$(BUI .PHONY: name name: - @echo "$(NAME)" + @echo $(NAME) .PHONY: version version: - @echo "$(VERSION)" + @echo $(VERSION) .PHONY: release release: - @echo "$(RELEASE)" + @echo $(RELEASE) .PHONY: arch arch: - @echo "$(ARCH)" + @echo $(ARCH) + +.PHONY: owner +owner: + @echo $(OWNER) .PHONY: install install: - install --mode=755 --directory $(DESTDIR)$(RPM_SYSCONFDIR)/gitea $(DESTDIR)$(RPM_SYSCONFDIR)/nginx/conf.d $(DESTDIR)$(RPM_UNITDIR) $(DESTDIR)$(RPM_SHAREDSTATEDIR)/actrunners + install --mode=755 --directory $(DESTDIR)$(RPM_UNITDIR)/forgejo.service.d install --mode=644 --target-directory=$(DESTDIR)$(RPM_SYSCONFDIR)/nginx/conf.d/ files/nginx/git.netoik.io.conf - install --mode=640 --target-directory=$(DESTDIR)$(RPM_SYSCONFDIR)/gitea files/gitea/app.ini - install --mode=644 --target-directory=$(DESTDIR)$(RPM_UNITDIR) files/systemd/gitea.service files/systemd/actrunner@.service + install --mode=640 --target-directory=$(DESTDIR)$(RPM_SYSCONFDIR)/forgejo/conf files/forgejo/netoik_app.ini + install --mode=644 --target-directory=$(DESTDIR)$(RPM_UNITDIR)/forgejo.service.d files/systemd/forgejo.conf $(RPM_TARBALL_PATH): * git archive --format=tar.gz \ @@ -49,6 +54,4 @@ tarball: $(RPM_TARBALL_PATH) .PHONY: upload upload: - curl --fail-with-body --upload-file "$(RPM_BUILD_PATH)" --user "$(GIT_PACKAGES_USERNAME):$(GIT_PACKAGES_TOKEN)" https://git.netoik.io/api/packages/$(GIT_PACKAGES_USERNAME)/rpm/upload - - + curl --fail-with-body --upload-file "$(RPM_BUILD_PATH)" --user "$(OWNER):$(GIT_PACKAGES_TOKEN)" https://git.netoik.io/api/packages/$(OWNER)/rpm/upload diff --git a/files/gitea/app.ini b/files/forgejo/netoik_app.ini similarity index 88% rename from files/gitea/app.ini rename to files/forgejo/netoik_app.ini index 13bef87..f88fc87 100644 --- a/files/gitea/app.ini +++ b/files/forgejo/netoik_app.ini @@ -2,9 +2,9 @@ # See official doc here: https://docs.gitea.com/next/administration/config-cheat-sheet APP_NAME = Netoïk Git Server -RUN_USER = gitea +RUN_USER = forgejo RUN_MODE = prod -WORK_PATH = /var/lib/gitea +WORK_PATH = /var/lib/forgejo [server] DOMAIN = git.netoik.io @@ -17,8 +17,8 @@ SSH_PORT = 22222 [database] DB_TYPE = postgres HOST = /run/postgresql -NAME = gitea -USER = gitea +NAME = forgejo +USER = forgejo [security] INSTALL_LOCK = true diff --git a/files/systemd/actrunner@.service b/files/systemd/actrunner@.service deleted file mode 100644 index 1fc6596..0000000 --- a/files/systemd/actrunner@.service +++ /dev/null @@ -1,17 +0,0 @@ -[Unit] -Description=Gitea Actions runner #%i -Documentation=https://gitea.com/gitea/act_runner -After=network.target gitea.service - -[Service] -ExecStartPre=/usr/bin/rpmdev-setuptree -ExecStart=/usr/local/bin/act_runner daemon -ExecReload=/bin/kill -s HUP $MAINPID -WorkingDirectory=/var/lib//actrunners/actrunner%i -TimeoutSec=0 -RestartSec=10 -Restart=always -User=actrunner%i - -[Install] -WantedBy=multi-user.target diff --git a/files/systemd/forgejo.conf b/files/systemd/forgejo.conf new file mode 100644 index 0000000..622a150 --- /dev/null +++ b/files/systemd/forgejo.conf @@ -0,0 +1,3 @@ +[Service] +ExecStart= +ExecStart=/usr/local/bin/forgejo web --config /etc/forgejo/conf/netoik_app.ini diff --git a/files/systemd/gitea.service b/files/systemd/gitea.service deleted file mode 100644 index a509058..0000000 --- a/files/systemd/gitea.service +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=Gitea (Git with a cup of tea) -After=network.target postgresql.service valkey.service - -[Service] -RestartSec=2s -Type=simple -User=gitea -Group=gitea -WorkingDirectory=/var/lib/gitea/ -ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini -Restart=always - -[Install] -WantedBy=multi-user.target diff --git a/netoik-git.spec b/netoik-git.spec index f1da7c6..b5b1b9e 100644 --- a/netoik-git.spec +++ b/netoik-git.spec @@ -5,15 +5,15 @@ Version: %(make version) Release: %(make release) Summary: Netoik Reverse Proxy License: MIT -URL: https://git.netoik.io/samuel/%(make name) +URL: https://git.netoik.io/%(make owner)/%(make name) Source0: %{name}-%{version}-%{release}.tar.gz Buildarch: %(make arch) BuildRequires: make -Requires: netoik-rp netoik-db netoik-cache git +Requires: netoik-rp netoik-db netoik-cache forgejo %description -Install the Git UI server called Gitea. +Install the Git UI server called Forgejo (fork of Gitea). %prep %autosetup -v @@ -22,63 +22,30 @@ Install the Git UI server called Gitea. %make_install %post -# Download gitea bin and verify gpg signature -wget --quiet --output-document %{_tmppath}/gitea "$GITEA_BIN_URL" -wget --quiet --output-document %{_tmppath}/gitea.asc "$GITEA_ASC_URL" -gpg --keyserver "$GITEA_GPG_KEYSERVER" --recv "$GITEA_GPG_RECV" -gpg --verify %{_tmppath}/gitea.asc %{_tmppath}/gitea -mv %{_tmppath}/gitea %{_sbindir} -chmod 755 %{_sbindir}/gitea -rm %{_tmppath}/gitea.asc +# Change rights on config file +chgrp forgejo %{_sysconfdir}/forgejo/conf/netoik_app.ini -# Generate internal token and secret key -INTERNAL_TOKEN="$(gitea generate secret INTERNAL_TOKEN)" -SECRET_KEY="$(gitea generate secret SECRET_KEY)" -envsubst < %{_sysconfdir}/gitea/app.ini > %{_sysconfdir}/gitea/app.ini.new -mv %{_sysconfdir}/gitea/app.ini.new %{_sysconfdir}/gitea/app.ini +# Add user forgejo to db groups +usermod --groups postgres valkey --append forgejo -# Create gitea user -useradd --system --create-home --base-dir %{_sharedstatedir} gitea -runuser --user gitea -- mkdir --parents %{_sharedstatedir}/gitea/{data,custom} -chgrp gitea %{_sysconfdir}/gitea/app.ini +# Create postgres user and db +if ! runuser --user=postgres -- psql --quiet --tuples-only --command='\du' | grep --quiet forgejo; then + runuser --user=postgres -- createuser forgejo + runuser --user=postgres -- createdb --owner=forgejo forgejo +fi -# Start gitea and nginx services +# Restart forgejo and nginx services systemctl daemon-reload -systemctl reenable gitea.service -systemctl restart gitea.service +systemctl reenable forgejo.service +systemctl restart forgejo.service systemctl restart nginx.service -# Create actrunners -for i in $(seq 1 $GITEA_ACT_RUNNERS); do - if ! id "actrunner$i"; then - useradd --system --create-home --base-dir %{_sharedstatedir}/actrunners "actrunner$i" - systemctl daemon-reload - systemctl reenable "actrunner@$i" - systemctl restart "actrunner@$i" - fi -done - -%preun -# Backup gitea data in case of problem -runuser --user gitea -- gitea dump --config %{_sysconfdir}/gitea/app.ini --tempdir %{_tmppath} - -%postun -# Remove gitea user after uninstall -#if [ %1 == 0 ]; then -# systemctl stop gitea.service -# userdel --force --remove gitea -#fi - %files +%attr(640, root, -) %{_sysconfdir}/forgejo/conf/netoik_app.ini %attr(644, root, root) %{_sysconfdir}/nginx/conf.d/git.netoik.io.conf -%dir %attr(755, root, root) %{_sysconfdir}/gitea -%attr(640, root, -) %{_sysconfdir}/gitea/app.ini - -%attr(644, root, root) %{_unitdir}/gitea.service -%attr(644, root, root) %{_unitdir}/actrunner@.service - -%dir %attr(755, root, root) %{_sharedstatedir}/actrunners +%dir %attr(755, root, root) %{_unitdir}/forgejo.service.d +%attr(644, root, root) %{_unitdir}/forgejo.service.d/forgejo.conf %changelog %autochangelog