=> ../../../index.gmi Index => https://git-scm.com/ Git [www] # A minimal Git server Sometimes hosted services aren't the right fit for the job. Here are some basic steps for setting up and using remote Git repositories on a remote Debian host. You will need sudo access. ## Create a Git User Add a user to own the repositories: ``` sudo adduser git ``` Start a session for the new user in their home directory: ``` sudo su -l git ``` ## Configure SSH access Create the `.ssh` directory and make it readable only to the new user. ``` mkdir ~/.ssh chmod 700 ~/.ssh ``` Create an `authorized_keys` file in the `.ssh` directory, and make it accessible only to the new user. ``` touch .ssh/authorized_keys chmod 600 `.ssh/authorized_keys` ``` Create a public/private key pair locally to authenticate a user when connecting to the remote host. ``` ssh-keygen -t rsa ``` Copy the key into the (remote) git user's `.ssh/authorized_keys`, for example using `ssh-copy-id` or by giving the public key to the server administrator. Add an entry to your local `.ssh/config`: ``` Host myhost HostName chaos.period3.xyz User git IdentityFile ~/.ssh/id_rsa ``` Test the configuration with: ``` ssh myhost ``` ## Create a bare repository Create directories within the git user's home directory (nested paths are allowed). Conventionally Git repositories use a `.git` suffix, for example `my-projects/my-repo.git` or just `my-repo.git`. ``` git init --bare repo.git ``` There now exists an empty Git repository on the host. The remote can be added to a local repository: ``` git remote add origin git@host:my-repo.git git push -u origin main ```