summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArseney300 <Arseney300@gmail.com>2026-02-20 02:54:45 +0700
committerArseney300 <Arseney300@gmail.com>2026-02-20 02:54:45 +0700
commit8def4032f51063a9aea922966b00b3d0dcc86ce2 (patch)
tree87592db1cd7549ab739d590c8318a5bc2b027212
parent5dc8ff2bc04a1551c6046cf14d4af7794788b36a (diff)
Fix git-server: security, volume path, startup robustness
- Remove hardcoded password for git user (chpasswd line) - Fix comment: ubuntu -> debian - Fix volume path: /var/git -> /var/git/repos to match host layout - Remove deprecated compose version field - start.sh: check for .pub files directly instead of any file in keys/ - start.sh: always set repos ownership/permissions, not only when directory is non-empty (fixes fresh start with empty repos dir) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
-rw-r--r--git-server/Dockerfile3
-rw-r--r--git-server/server.yaml4
-rw-r--r--git-server/start.sh20
3 files changed, 12 insertions, 15 deletions
diff --git a/git-server/Dockerfile b/git-server/Dockerfile
index b8a905f..4f14a5a 100644
--- a/git-server/Dockerfile
+++ b/git-server/Dockerfile
@@ -1,4 +1,4 @@
-#Use basic ubuntu to git server and git daemon
+#Use basic debian for git server and git daemon
FROM debian:latest
RUN apt-get -y update && apt-get -y install openssh-server git
@@ -12,7 +12,6 @@ WORKDIR /git-server/
# -s flag changes user's shell
RUN mkdir /git-server/keys \
&& adduser --disabled-password --shell /usr/bin/git-shell git \
- && echo git:12345 | chpasswd \
&& mkdir /home/git/.ssh
diff --git a/git-server/server.yaml b/git-server/server.yaml
index af6b381..2e32183 100644
--- a/git-server/server.yaml
+++ b/git-server/server.yaml
@@ -1,4 +1,4 @@
-version: '2'
+---
services:
@@ -11,7 +11,7 @@ services:
- "9418:9418"
volumes:
- /var/git_ssh_keys:/git-server/keys
- - /var/git:/repos
+ - /var/git/repos:/repos
networks:
git-network:
ipv4_address: 172.22.0.2
diff --git a/git-server/start.sh b/git-server/start.sh
index dcfb471..5fbbd58 100644
--- a/git-server/start.sh
+++ b/git-server/start.sh
@@ -1,8 +1,8 @@
#!/bin/sh
-# If there is some public key in keys folder
-# then it copies its contain in authorized_keys file
-if [ "$(ls -A /git-server/keys/)" ]; then
+# If there are .pub key files in keys folder
+# then copy their contents into authorized_keys
+if ls /git-server/keys/*.pub 1>/dev/null 2>&1; then
cd /home/git
cat /git-server/keys/*.pub > .ssh/authorized_keys
chown -R git:git .ssh
@@ -10,14 +10,12 @@ if [ "$(ls -A /git-server/keys/)" ]; then
chmod -R 600 .ssh/*
fi
-# Checking permissions and fixing SGID bit in repos folder
-# More info: https://github.com/jkarlosb/git-server-docker/issues/1
-if [ "$(ls -A /repos/)" ]; then
- cd /repos
- chown -R git:git .
- chmod -R ug+rwX .
- find . -type d -exec chmod g+s '{}' +
-fi
+# Always set correct ownership and permissions on repos folder
+# so that git user can read/write repos (including freshly created ones)
+cd /repos
+chown -R git:git .
+chmod -R ug+rwX .
+find . -type d -exec chmod g+s '{}' +
# Run git daemon
#systemctl enable --now git.service