{"id":796,"date":"2025-12-10T18:13:50","date_gmt":"2025-12-11T00:13:50","guid":{"rendered":"https:\/\/kop.lat\/blog\/?p=796"},"modified":"2025-12-10T18:16:13","modified_gmt":"2025-12-11T00:16:13","slug":"796-2","status":"publish","type":"post","link":"https:\/\/kop.lat\/blog\/796-2\/","title":{"rendered":"Install gitea in Linux"},"content":{"rendered":"\n<p><strong>step-by-step guide<\/strong> to install and configure <strong>Gitea<\/strong> (a self-hosted Git service) on a <strong>Linux<\/strong> System<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\uddf0 Prerequisites<\/h2>\n\n\n\n<p>Make sure you have:<\/p>\n\n\n\n<ul>\n<li>A Linux server (Ubuntu\/Debian\/CentOS, etc.)<\/li>\n\n\n\n<li>Root or sudo access<\/li>\n\n\n\n<li>Git installed<\/li>\n\n\n\n<li>A database (SQLite, MySQL, or PostgreSQL). SQLite works by default for testing.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\ude9c Step 1: Update Your System<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update &amp;&amp; sudo apt upgrade -y<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\ude9c Step 2: Install Dependencies<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install -y git wget tar<\/code><\/pre>\n\n\n\n<p>If you\u2019re using MySQL or PostgreSQL, install their client libraries, for example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install -y mariadb-server mariadb-client\n# or for PostgreSQL\nsudo apt install -y postgresql postgresql-contrib<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\ude9c Step 3: Create a Gitea User<\/h2>\n\n\n\n<p>For security, run Gitea as a non-root user.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo adduser \\\n  --system \\\n  --shell \/bin\/bash \\\n  --gecos 'Git Version Control' \\\n  --group \\\n  --disabled-password \\\n  --home \/home\/git \\\n  git<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\ude9c Step 4: Create Necessary Directories<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/var\/lib\/gitea\/{custom,data,log}\nsudo chown -R git:git \/var\/lib\/gitea\/\nsudo chmod -R 750 \/var\/lib\/gitea\/\n\nsudo mkdir -p \/etc\/gitea\nsudo chown root:git \/etc\/gitea\nsudo chmod 770 \/etc\/gitea<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\ude9c Step 5: Download Gitea Binary<\/h2>\n\n\n\n<p>Check the latest version at <a href=\"https:\/\/dl.gitea.io\/gitea\/\">https:\/\/dl.gitea.io\/gitea\/<\/a>.<\/p>\n\n\n\n<p>For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo wget -O \/usr\/local\/bin\/gitea https:\/\/dl.gitea.io\/gitea\/1.22.0\/gitea-1.22.0-linux-amd64\nsudo chmod +x \/usr\/local\/bin\/gitea<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\ude9c Step 6: Create a Systemd Service<\/h2>\n\n\n\n<p>Create a service file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/systemd\/system\/gitea.service<\/code><\/pre>\n\n\n\n<p>Paste the following content:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Gitea (Git with a cup of tea)\nAfter=syslog.target\nAfter=network.target\nRequires=network.target\n\n&#91;Service]\nRestartSec=2s\nType=simple\nUser=git\nGroup=git\nWorkingDirectory=\/var\/lib\/gitea\/\nExecStart=\/usr\/local\/bin\/gitea web --config \/etc\/gitea\/app.ini\nRestart=always\nEnvironment=USER=git HOME=\/home\/git GITEA_WORK_DIR=\/var\/lib\/gitea\n\n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p>Save and exit (<code>Ctrl+O<\/code>, <code>Enter<\/code>, <code>Ctrl+X<\/code>).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\ude9c Step 7: Start and Enable Gitea<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl daemon-reload\nsudo systemctl enable gitea\nsudo systemctl start gitea<\/code><\/pre>\n\n\n\n<p>Check status:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl status gitea<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\ude9c Step 8: Configure Firewall (optional)<\/h2>\n\n\n\n<p>If you\u2019re using UFW:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 3000\/tcp\nsudo ufw reload<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\ude9c Step 9: Access Gitea Web Interface<\/h2>\n\n\n\n<p>Open your browser and navigate to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;your_server_ip:3000\/<\/code><\/pre>\n\n\n\n<p>Follow the setup wizard:<\/p>\n\n\n\n<ul>\n<li><strong>Database Type:<\/strong> SQLite (default) \u2014 or MySQL\/PostgreSQL if configured<\/li>\n\n\n\n<li><strong>Root URL:<\/strong> e.g., <code>http:\/\/your_server_ip:3000\/<\/code><\/li>\n\n\n\n<li><strong>Repository Root Path:<\/strong> <code>\/var\/lib\/gitea\/data\/<\/code><\/li>\n\n\n\n<li><strong>Application Log Path:<\/strong> <code>\/var\/lib\/gitea\/log\/<\/code><\/li>\n\n\n\n<li><strong>Gitea Config Path:<\/strong> <code>\/etc\/gitea\/app.ini<\/code><\/li>\n<\/ul>\n\n\n\n<p>Create your first admin user during this setup.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\ude9c Step 10: Make Gitea Start at Boot<\/h2>\n\n\n\n<p>Already done if you ran:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable gitea<\/code><\/pre>\n\n\n\n<p>To verify:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl is-enabled gitea<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Would you like me to include <strong>how to set it up behind Nginx with HTTPS<\/strong> as well?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>step-by-step guide to install and configure Gitea (a self-hosted Git service) on a Linux System \ud83e\uddf0 Prerequisites Make sure you have: \ud83e\ude9c Step 1: Update Your System \ud83e\ude9c Step 2: Install Dependencies If you\u2019re using MySQL or PostgreSQL, install their client libraries, for example: \ud83e\ude9c Step 3: Create a Gitea User For security, run Gitea [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":224,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4,40,111],"tags":[15,143,5,44,113],"_links":{"self":[{"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/posts\/796"}],"collection":[{"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/comments?post=796"}],"version-history":[{"count":2,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/posts\/796\/revisions"}],"predecessor-version":[{"id":799,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/posts\/796\/revisions\/799"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/media\/224"}],"wp:attachment":[{"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/media?parent=796"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/categories?post=796"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kop.lat\/blog\/wp-json\/wp\/v2\/tags?post=796"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}