Setting up a home git server
Oct 4, 2025 - ⧖ 4 minThese are notes to my future self about setting up a home git server. The goal is to self-host a git server for personal projects, fun, and backing up all my git repos currently hosted on GitHub.
Infrastructure
- Intel NUC, Core i5, 16GB
- Proxmox 9.0 as hypervisor, codename
pickle
root@pickle:~# fastfetch
.://:` `://:. root@pickle
`hMMMMMMd/ /dMMMMMMh` -----------
`sMMMMMMMd: :mMMMMMMMs` OS: Proxmox VE 9.0.3 x86_64
`-/+oo+/:`.yMMMMMMMh- -hMMMMMMMy.`:/+oo+/-` Host: ()
`:oooooooo/`-hMMMMMMMyyMMMMMMMh-`/oooooooo:` Kernel: Linux 6.14.8-2-pve
`/oooooooo:`:mMMMMMMMMMMMMm:`:oooooooo/` Uptime: 3 days, 22 hours, 9 mins
./ooooooo+- +NMMMMMMMMN+ -+ooooooo/. Packages: 726 (dpkg)
.+ooooooo+-`oNMMMMNo`-+ooooooo+. Shell: bash 5.2.37
-+ooooooo/.`sMMs`./ooooooo+- Display (DELL P2715Q): 3840x2160 @ 60 Hz in 27" [External]
:oooooooo/`..`/oooooooo: Terminal: termproxy
:oooooooo/`..`/oooooooo: CPU: Intel(R) Core(TM) i5-5250U (4) @ 2.70 GHz
-+ooooooo/.`sMMs`./ooooooo+- GPU: Intel HD Graphics 6000 @ 0.95 GHz [Integrated]
.+ooooooo+-`oNMMMMNo`-+ooooooo+. Memory: 2.72 GiB / 15.51 GiB (18%)
./ooooooo+- +NMMMMMMMMN+ -+ooooooo/. Swap: 0 B / 8.00 GiB (0%)
`/oooooooo:`:mMMMMMMMMMMMMm:`:oooooooo/` Disk (/): 3.35 GiB / 93.93 GiB (4%) - ext4
`:oooooooo/`-hMMMMMMMyyMMMMMMMh-`/oooooooo:` Local IP (vmbr0): 192.168.0.111/24
`-/+oo+/:`.yMMMMMMMh- -hMMMMMMMy.`:/+oo+/-` Locale: en_US.UTF-8
`sMMMMMMMm: :dMMMMMMMs`
`hMMMMMMd/ /dMMMMMMh`
`://:` `://:`
- Debian 13 (trixie) VM as the git server: hostname
gitserved
- Tailscale on
gitserved
making a flat network connecting- personal laptop
- desktop
- phone
- EC2 instance
- Backup server NAS
- gitserved
In the future I'll add an exit node VM, and a web server VM to the proxmox cluster.
Setup
Installing proxmox
- flash usb drive w/ proxmox iso
- boot the machine, use TUI install (graphical failed for some reason)
- default settings, used ethernet as management interface
Note: the machine boots into headless mode, but can be ssh'd into at root@ the management interface
or through the web interface, in this case http://192.168.0.111:8006
. There's a pain here because
the laptop is normall on the home wifi network which isn't bridged to the ethernet part due to
lack of bridging features in the wifi mesh I have. So I have to do some initial setup with laptop
plugged into ethernet.
Somehow, magically, when tailscale is up, I can route to the hypervisor, but the tailscale network is entirely separate so this baffles me.
Once proxmox is up and running and I've got access to the web management interface there are a couple of things to note
- on left, under
datacenter
, clickingpickle
gives a list of actions/options for the hypervisor, including a web shell, networking info, and repositories --> disable the ceph and enterprise ones so that the system scheduledapt update
will work - under pickle, VM entries will appear with similar actions
- prep a flash drive w/ debian and feed it to the NUC
- Create a new VM:
- in proxmox, create VM, choose options, use "no OS", finish creation
- add a pass through for the USB device
- set the boot order to put USB first (not sure this is necessary, but the boot was getting stuck without it)
- start the VM
- install debian like a champ, call it
gitserved
- setup tailscale on
gitserved
: proxmox web interface, VNC to VM
Setting up the git server and backing up existing repositories
Stay tuned for the next installment...