Install gitea with systemd
Go to file
AJ ONeal 15e0236cc0 Update 'README.md' 2017-11-10 17:45:35 +00:00
dist/etc/systemd/system use /opt/gitea, not /srv/gitea 2017-10-25 17:33:34 -06:00
README.md Update 'README.md' 2017-11-10 17:45:35 +00:00
install.bash fix execute bit 2017-10-28 00:14:16 +00:00

README.md

Gitea Installer

Installs Gitea as a systemd service

Linux Install Script

You can download and run the installer script:

wget -O install-gitea.bash https://git.coolaj86.com/coolaj86/gitea-installer.sh/raw/master/install.bash
bash install-gitea.bash

Or manually install by reading these instructions and following along:

# Create a 'gitea' user and group with the home /opt/gitea, no password (because it's a system user) and no GECOS
sudo adduser gitea --home /opt/gitea --disabled-password --gecos ''

# Make some other potentially useful directories for that user/group
sudo mkdir -p /opt/gitea/ /var/log/gitea
sudo chown -R gitea:gitea /opt/gitea/ /var/log/gitea

# Download and install gitea
sudo wget -O /opt/gitea/gitea https://dl.gitea.io/gitea/1.0.1/gitea-1.0.1-linux-amd64
sudo chmod +x /opt/gitea/gitea

# Download and install the gitea.service for systemd
sudo wget -O /etc/systemd/system/gitea.service https://git.coolaj86.com/coolaj86/gitea-installer/raw/master/dist/etc/systemd/system/gitea.service

# Start gitea
sudo systemctl restart gitea

Gitea Web Setup (post install)

Once you've gitea installed and running you must choose which database to use, certain gitea paths, an admin user, etc.

http://localhost:3000/

Troubleshooting

Error 226/Namespace

Most likely a directory that is supposed to be writable doesn't exist.

Failed to get repository owner (foobar): no such table: user

Your custom/conf/app.ini has a line like this:

[database]
DB_TYPE = sqlite3
PATH = data/gitea.db

And it should probably look like this instead:

[database]
DB_TYPE = sqlite3
PATH = /opt/gitea/data/gitea.db

Gitea: Invalid key ID

Gitea: Invalid key ID
Invalid key ID[key-2]: public key does not exist [id: 2]
fatal: Could not read from remote repository.

Please make sure you have the correct access rights

You are connecting to gitea with a different ssh key (usually id_rsa.pub) than the one you uploaded. You can usually fix this by uploading your default key or by manually specifying which key to use, for example:

~/.ssh/config:

Host git.example.com
  User gitea
  IdentityFile ~/.ssh/id_rsa

Expect user 'foobar' but current user is: gitea

remote: 2017/10/25 23:53:10 [...s/setting/setting.go:625 NewContext()] [E] Expect user 'aj' but current user is: gitea
remote: error: hook declined to update refs/heads/master
To ssh://git.coolaj86.com:22042/coolaj86/hexdump.js.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'ssh://gitea@git.coolaj86.com:22042/coolaj86/hexdump.js.git'

If you copied a previous installation of gitea over to a new user, you may get this error.

I haven't yet found where it comes from, but deleting the repository in the UI and re-adding it seems to do the trick from what I can tell. Remember to git fetch --all first before deleting.

203/EXEC

The downloaded gitea file is not executable

Oct 28 00:06:19 git-ldsconnect systemd[1]: gitea.service: Main process exited, code=exited, status=203/EXEC
Oct 28 00:06:19 git-ldsconnect systemd[1]: gitea.service: Unit entered failed state.
Oct 28 00:06:19 git-ldsconnect systemd[1]: gitea.service: Failed with result 'exit-code'.

Try this:

sudo chmod +x /opt/gitea/gitea

sudo systemctl restart gitea

But wait, there's more!

This could also be due to missing rx permissions on a parent directory of the executable file, which could be the result of having an existing but empty /etc/tmpfiles.d/gitea.conf (it will default to and change the permissions of / if it is empty).