2025-10-30 09:40:52 +01:00
2025-10-23 15:44:28 +02:00
2025-10-30 09:40:52 +01:00
2025-10-23 15:44:28 +02:00
2025-10-23 15:44:28 +02:00

Gitea for Ubuntu 24.04 Server

OS Shell WebServer DB Server License

Installs and configures the latest available Gitea release on Ubuntu 24.04 Server.

This is a production-focused installer, not a demo.

It assumes Nginx, and MariaDB are already installed and running.


If you dont have the required components, you can use these compatible installers:

Note

If you plan to host multiple Gitea instances on the same server, see the multi-instance installer.


Download the Script

Clone this repository to your server:

git clone https://git.x-files.dk/webapps/gitea-ubuntu.git
cd gitea-ubuntu

Usage

Run the script using:

sudo ./giteainstall -n <domain> -p <gitea db password> [options]

Examples

The installer automatically detects if socket authentication is active.
Only include -a and -m if your MariaDB setup does not use socket authentication.

sudo ./giteainstall -n git.example.com -p giteadbpass
sudo ./giteainstall -n git.example.com -p giteadbpass -m rootpwd
sudo ./giteainstall -n git.example.com -p giteadbpass -a admin -m adminpwd

Options

Flag Description
-p <password> Gitea database user password
-a <username> Optional MariaDB admin username (defaults to root if not specified)
-m <password> MariaDB root or admin password — required only if socket authentication is disabled
-h, --help Show the help screen (reflects detected socket status)

Configuration

When the installation completes, visit:

http://<domain>

and complete the initial Gitea setup through the web interface.


Post-install

After the web installer is done run:

sudo /tmp/gitea-postinstall

This adjusts log levels, upload limits, disables SSH access and other tweaks.
SSH is disabled by default after post-install (modify /etc/gitea/app.ini if needed).


Notes

  • Custom assets (favicon, logo, etc.) go in: /var/lib/gitea*/custom/public/assets/img/
  • Custom homepage template: /var/lib/gitea*/custom/templates/home.tmpl

Nginx Integration

The generated Gitea configuration file listens on port 80.
To enable HTTPS (port 443), use the example provided here.

Important


If you enable HTTPS, update /etc/gitea/app.ini (ROOT_URL setting)
from http to https, then restart both Nginx and Gitea.

Note

The file also includes optional caching directives (commented out by default). You can enable them to improve load times and performance if needed. The lines you are looking for are at the bottom of the generated config file and look like this:

##### Cache js css static content and open files start #####################
# include /etc/nginx/nginx-snippets/cache-open-files.conf;
# include /etc/nginx/nginx-snippets/cache-statics.conf;
# include /etc/nginx/nginx-snippets/cache-js-css.conf;
##### Cache js css static content and open files stop ######################

Version Handling

This installer automatically checks the latest Gitea version from https://dl.gitea.com/gitea/version.json

If it fails, it falls back to the version number stored in the fallback file. That file contains one line, for example:

1.24.6

Why a separate file?
Keeping the fallback version outside the script avoids polluting the code with constants.
This keeps updates clean and ensures the installer logic never changes just because a version bump is needed.


Troubleshooting

Nginx fails to restart
Run nginx -t and review any syntax errors reported in /etc/nginx/conf.d/<domain>.conf.

Gitea front-end not loading
Run systemctl status gitea nginx and ensure both Gitea and Nginx services are active:

Access denied during database creation
Your MariaDB setup likely does not use socket authentication.
Re-run the installer with the -m flag (and optionally -a) to provide credentials.


FAQ

Q: Why doesnt the script ask for a MariaDB password by default?
A: Ubuntu 24.04s MariaDB installation defaults to socket authentication,
allowing the local root user to connect without a password.
The installer detects this automatically and skips password prompts when applicable.

Q: Can I run the installer multiple times?
A: Yes. Database and user creation use IF NOT EXISTS, making them safe to re-run.
Existing configuration files are replaced, but no data is deleted.

Q: Does this modify existing Nginx settings?
A: No. It adds a standalone host file in /etc/nginx/conf.d/
and validates configuration changes before applying them.


More Information

More guides and documentation can be found on wiki.x-files.dk


License

Licensed under the MIT License.


Description
No description provided
Readme MIT 70 KiB
Languages
Shell 100%