code.gitea.io/gitea@v1.22.3/docs/content/installation/from-binary.en-us.md (about) 1 --- 2 date: "2017-06-19T12:00:00+02:00" 3 title: "Installation from binary" 4 slug: "install-from-binary" 5 sidebar_position: 15 6 toc: false 7 draft: false 8 aliases: 9 - /en-us/install-from-binary 10 menu: 11 sidebar: 12 parent: "installation" 13 name: "From binary" 14 sidebar_position: 15 15 identifier: "install-from-binary" 16 --- 17 18 # Installation from binary 19 20 All downloads come with SQLite, MySQL and PostgreSQL support, and are built with 21 embedded assets. This can be different from Gogs. 22 23 ## Download 24 25 You can find the file matching your platform from the [downloads page](https://dl.gitea.com/gitea/) after navigating to the version you want to download. 26 27 ### Choosing the right file 28 29 **For Linux**, you will likely want `linux-amd64`. It's for 64-bit Intel/AMD platforms, but there are other platforms available, including `arm64` (e.g. Raspberry PI 4), `386` (i.e. 32-bit), `arm-5`, and `arm-6`. 30 31 **For Windows**, you will likely want `windows-4.0-amd64`. It's for all modern versions of Windows, but there is also a `386` platform available designed for older, 32-bit versions of Windows. 32 33 *Note: there is also a `gogit-windows` file available that was created to help with some [performance problems](https://github.com/go-gitea/gitea/pull/15482) reported by some Windows users on older systems/versions. You should consider using this file if you're experiencing performance issues, and let us know if it improves performance.* 34 35 **For macOS**, you should choose `darwin-arm64` if your hardware uses Apple Silicon, or `darwin-amd64` for Intel. 36 37 **For FreeBSD**, you should choose `freebsd12-amd64` for 64-bit Intel/AMD platforms. 38 39 ### Downloading with wget 40 41 Copy the commands below and replace the URL within the one you wish to download. 42 43 ```sh 44 wget -O gitea https://dl.gitea.com/gitea/@version@/gitea-@version@-linux-amd64 45 chmod +x gitea 46 ``` 47 48 Note that the above command will download Gitea @version@ for 64-bit Linux. 49 50 ## Verify GPG signature 51 52 Gitea signs all binaries with a [GPG key](https://keys.openpgp.org/search?q=teabot%40gitea.io) to prevent against unwanted modification of binaries. 53 To validate the binary, download the signature file which ends in `.asc` for the binary you downloaded and use the GPG command line tool. 54 55 ```sh 56 gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2 57 gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64 58 ``` 59 60 Look for the text `Good signature from "Teabot <teabot@gitea.io>"` to assert a good binary, 61 despite warnings like `This key is not certified with a trusted signature!`. 62 63 ## Recommended server configuration 64 65 **NOTE:** Many of the following directories can be configured using [Environment Variables](administration/environment-variables.md) as well! 66 Of note, configuring `GITEA_WORK_DIR` will tell Gitea where to base its working directory, as well as ease installation. 67 68 ### Prepare environment 69 70 Check that Git is installed on the server. If it is not, install it first. Gitea requires Git version >= 2.0. 71 72 ```sh 73 git --version 74 ``` 75 76 Create a user to run Gitea (e.g. `git`) 77 78 ```sh 79 # On Ubuntu/Debian: 80 adduser \ 81 --system \ 82 --shell /bin/bash \ 83 --gecos 'Git Version Control' \ 84 --group \ 85 --disabled-password \ 86 --home /home/git \ 87 git 88 89 # On Fedora/RHEL/CentOS: 90 groupadd --system git 91 adduser \ 92 --system \ 93 --shell /bin/bash \ 94 --comment 'Git Version Control' \ 95 --gid git \ 96 --home-dir /home/git \ 97 --create-home \ 98 git 99 ``` 100 101 ### Create required directory structure 102 103 ```sh 104 mkdir -p /var/lib/gitea/{custom,data,log} 105 chown -R git:git /var/lib/gitea/ 106 chmod -R 750 /var/lib/gitea/ 107 mkdir /etc/gitea 108 chown root:git /etc/gitea 109 chmod 770 /etc/gitea 110 ``` 111 112 > **NOTE:** `/etc/gitea` is temporarily set with write permissions for user `git` so that the web installer can write the configuration file. After the installation is finished, it is recommended to set permissions to read-only using: 113 > 114 > ```sh 115 > chmod 750 /etc/gitea 116 > chmod 640 /etc/gitea/app.ini 117 > ``` 118 119 If you don't want the web installer to be able to write to the config file, it is possible to make the config file read-only for the Gitea user (owner/group `root:git`, mode `0640`) however you will need to edit your config file manually to: 120 121 * Set `INSTALL_LOCK= true`, 122 * Ensure all database configuration details are set correctly 123 * Ensure that the `SECRET_KEY` and `INTERNAL_TOKEN` values are set. (You may want to use the `gitea generate secret` to generate these secret keys.) 124 * Ensure that any other secret keys you need are set. 125 126 See the [command line documentation](administration/command-line.md) for information on using `gitea generate secret`. 127 128 ### Configure Gitea's working directory 129 130 **NOTE:** If you plan on running Gitea as a Linux service, you can skip this step, as the service file allows you to set `WorkingDirectory`. Otherwise, consider setting this environment variable (semi-)permanently so that Gitea consistently uses the correct working directory. 131 132 ```sh 133 export GITEA_WORK_DIR=/var/lib/gitea/ 134 ``` 135 136 ### Copy the Gitea binary to a global location 137 138 ```sh 139 cp gitea /usr/local/bin/gitea 140 ``` 141 142 ### Adding bash/zsh autocompletion (from 1.19) 143 144 A script to enable bash-completion can be found at [`contrib/autocompletion/bash_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete). This can be copied to `/usr/share/bash-completion/completions/gitea` 145 or sourced within your `.bashrc`. 146 147 Similarly a script for zsh-completion can be found at [`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete). This can be copied to `/usr/share/zsh/_gitea` or sourced within your 148 `.zshrc`. 149 150 YMMV and these scripts may need further improvement. 151 152 ## Running Gitea 153 154 After you complete the above steps, you can run Gitea two ways: 155 156 ### 1. Creating a service file to start Gitea automatically (recommended) 157 158 See how to create [Linux service](installation/run-as-service-in-ubuntu.md) 159 160 ### 2. Running from command-line/terminal 161 162 ```sh 163 GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini 164 ``` 165 166 ## Updating to a new version 167 168 You can update to a new version of Gitea by stopping Gitea, replacing the binary at `/usr/local/bin/gitea` and restarting the instance. 169 The binary file name should not be changed during the update to avoid problems in existing repositories. 170 171 It is recommended that you make a [backup](administration/backup-and-restore.md) before updating your installation. 172 173 If you have carried out the installation steps as described above, the binary should 174 have the generic name `gitea`. Do not change this, i.e. to include the version number. 175 176 ### 1. Restarting Gitea with systemd (recommended) 177 178 As we explained before, we recommend to use systemd as the service manager. In this case, `systemctl restart gitea` should be fine. 179 180 ### 2. Restarting Gitea without systemd 181 182 To restart your Gitea instance, we recommend to use SIGHUP signal. If you know your Gitea PID, use `kill -1 $GITEA_PID`, otherwise you can use `killall -1 gitea`. 183 184 To gracefully stop the Gitea instance, a simple `kill $GITEA_PID` or `killall gitea` is enough. 185 186 **NOTE:** We don't recommend to use the SIGKILL signal (`-9`); you may be forcefully stopping some of Gitea's internal tasks, and it will not gracefully stop (tasks in queues, indexers, etc.) 187 188 See below for troubleshooting instructions to repair broken repositories after 189 an update of your Gitea version. 190 191 ## Troubleshooting 192 193 ### Old glibc versions 194 195 Older Linux distributions (such as Debian 7 and CentOS 6) may not be able to load the 196 Gitea binary, usually producing an error such as `./gitea: /lib/x86_64-linux-gnu/libc.so.6: 197 version 'GLIBC\_2.14' not found (required by ./gitea)`. This is due to the integrated 198 SQLite support in the binaries provided by dl.gitea.com. In this situation, it is usually 199 possible to [install from source](installation/from-source.md), without including 200 SQLite support. 201 202 ### Running Gitea on another port 203 204 For errors like `702 runWeb()] [E] Failed to start server: listen tcp 0.0.0.0:3000: 205 bind: address already in use`, Gitea needs to be started on another free port. This 206 is possible using `./gitea web -p $PORT`. It's possible another instance of Gitea 207 is already running. 208 209 ### Running Gitea on Raspbian 210 211 As of v1.8, there is a problem with the arm7 version of Gitea, and it doesn't run on Raspberry Pis and similar devices. 212 213 It is recommended to switch to the arm6 version, which has been tested and shown to work on Raspberry Pis and similar devices. 214 215 <!--- 216 please remove after fixing the arm7 bug 217 ---> 218 ### Git error after updating to a new version of Gitea 219 220 If during the update, the binary file name has been changed to a new version of Gitea, 221 Git Hooks in existing repositories will not work any more. In that case, a Git 222 error will be displayed when pushing to the repository. 223 224 ``` 225 remote: ./hooks/pre-receive.d/gitea: line 2: [...]: No such file or directory 226 ``` 227 228 The `[...]` part of the error message will contain the path to your previous Gitea 229 binary. 230 231 To solve this, go to the admin options and run the task `Resynchronize pre-receive, 232 update and post-receive hooks of all repositories` to update all hooks to contain 233 the new binary path. Please note that this overwrites all Git Hooks, including ones 234 with customizations made. 235 236 If you aren't using the Gitea built-in SSH server, you will also need to re-write 237 the authorized key file by running the `Update the '.ssh/authorized_keys' file with 238 Gitea SSH keys.` task in the admin options.