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.