There are various possible ways you can lose access to your Gitea instance. In particular, if you are getting user accounts via LDAP, you should always have a key to get back in: a “local” admin.
In case you haven’t got one (totally not like I did definitely only once 🤫), deleted it or lost its password, here’s the procedure in to variants: running on plain Linux, and running within Docker.
Plain Linux
List the available (local) user accounts (you may need to run this with sudo
):
$ gitea admin user list
ID Username Email IsActive IsAdmin
1 user1 me@home.earth true false
You may not get a single user listed here. In order to add a local administrator, do this
$ sudo gitea admin user create --username local_admin --email admins@email.earth --admin --random-password
generated random password is 'IzgvOwv1M9EG'
New user 'local_admin' has been successfully created!
$ sudo gitea admin user list
ID Username Email IsActive IsAdmin
1 unpriv_local bowfingermail@gmx.net true true
3 local_admin admins@email.earth true true
Especially on shared machines, I’d strongly recommend not setting a password via the command line. It’ll stick in bash_history
and may be visible in the process list. Hence the --random-password
option here. Use the generated password upon first login in the browser.
Docker Container
In order to get to the “plain Linux” field, you simply run a bash
in the Gitea Docker container.
What’s the container’s name? Get it via docker container ls -a
. Let’s say it’s called gitea
. To start bash in that container, do
user1@linux:$ docker exec -it gitea /bin/bash
Now, you basically do the same thing as in the section above.
docker # gitea admin user list
ID Username Email IsActive IsAdmin
1 user1 me@home.earth true false
docker # gitea admin user create --username local_admin --email admins@email.earth --admin --random-password
generated random password is 'ikV6xzPTiH7B'
New user 'local_admin' has been successfully created!
docker # gitea admin user list
ID Username Email IsActive IsAdmin
1 unpriv_local bowfingermail@gmx.net true true
3 local_admin admins@email.earth true true
Conclusion (and Other Platforms)
The Plain Linux approach works equally well on other platforms. I hope this helps.