I have stood up a new instance of Gitea, and when I try to create a new repository I get a 500 server error. The syslog reports the following error:
[...routers/repo/repo.go:146 handleCreateError()] [E] CreatePost: initRepository: InitRepository: chdir /srv/gitea/lb.laboon/test.git: no such file or directory
(I have /srv/gitea configured as the repo directory, and can confirm that it does exist and gitea has appropriate permissions to write to it).
Upon further debugging the code, it appears that something incorrectly thinks that /srv is a read-only filesystem. I modified vendor/code.gitea.io/git/repo.go to print any errors related to os.MkdirAll
and got the following:
[...routers/repo/repo.go:146 handleCreateError()] [E] CreatePost: initRepository: InitRepository: mkdir /srv/gitea/lb.laboon: read-only file system
I'm not sure why it is reporting that, because I can run mkdir /srv/gitea/lb.laboon
manually as the gitea user and it works just fine, so I'm sort of at a loss here. Any help would be appreciated!
I figured out the issue. In Arch's package of gitea the following line is included in the systemd unit file:
ReadWritePaths=/etc/gitea/app.ini
This makes all other filesystem paths non-writable to the gitea process, regardless of filesystem permissions. My solution was to create a unit override file that additionally includes my custom repo path in the ReadWritePaths directive.
Thank you so very much! I ran into the same error on arch and was wondering why and how to solve it.
@jolheiser I think a note about this could be added to #6524
Most helpful comment
I figured out the issue. In Arch's package of gitea the following line is included in the systemd unit file:
ReadWritePaths=/etc/gitea/app.ini
This makes all other filesystem paths non-writable to the gitea process, regardless of filesystem permissions. My solution was to create a unit override file that additionally includes my custom repo path in the ReadWritePaths directive.