blog/blogs/2022/5/26/git-server.md

81 lines
1.6 KiB
Markdown
Raw Normal View History

2022-05-27 02:09:58 +02:00
# A minimal Git server
This is a quick, no-nonsense guide on setting up a Git server on a VPS.
I am using Debian, but other operating systems should be easy to figure out.
## Create a user
Make a `git` user:
```
sudo adduser git
```
Switch to the `git` user:
```
sudo su -l git
```
## Configure secure access
Create a `.ssh` dir in the `git` user's home directory and make it only accessible by the `git` user:
```
mkdir ~/.ssh
chmod 700 ~/.ssh
```
Create an `authorized_keys` file in the `.ssh` folder, and make it accessible only by the `git` user:
```
touch .ssh/authorized_keys
chmod 600 `.ssh/authorized_keys`
```
Create a public/private key pair locally to authenticate a user on a machine to connect to the remote server:
```
ssh-keygen -t ed25519
```
And finally copy it into the (remote) `git` user's `.ssh/authorized_keys`, using `ssh-copy-id` or by giving the public key to the server administrator.
## Creating bare Git repositories
Create directories within git's home dir (nested paths are allowed) with the `.git` extension, 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 remote server.
The remote can now be added to a local repository:
```
git remote add origin git@server:my-repo.git
git push -u origin main
```
# Connecting securely
Add an entry to your local `.ssh/config`:
```
Host myhost
HostName example.com
User git
IdentityFile ~/.ssh/id_ed25519
```
And connect once without Git to verify the host:
```
ssh myhost
```
---
Done!