aboutsummaryrefslogtreecommitdiffstats
path: root/prepare-container.sh
blob: 784b9eb8b1d1fc7db5ed06686191e6457b92037b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/sh

# Warning : this no standard docker entrypoint, we use dumb-init !

if [ ! -f "/etc/ssh/ssh_host_rsa_key" ]; then
	# generate fresh rsa key
	ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa
fi
if [ ! -f "/etc/ssh/ssh_host_dsa_key" ]; then
	# generate fresh dsa key
	ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa
fi

#prepare run dir
if [ ! -d "/var/run/sshd" ]; then
  mkdir -p /var/run/sshd
fi

# Run sshd
echo "Starting sshd"
/usr/sbin/sshd

# If no cgitrc, let's copy one from /etc/cgitrc.default. This happens when bindmounting /home/git
if [ ! -f "/home/git/cgitrc" ]; then
	cp /etc/cgitrc.default /home/git/cgitrc
fi

# Gitolite configuration (admin pubkey)
if [ ! -f "/home/git/.ssh/authorized_keys" ]; then
  if [ -n "$SSH_KEY" ]; then
    echo "$SSH_KEY" > "/tmp/admin.pub"
    su - git -c "gitolite setup -pk \"/tmp/admin.pub\""
    rm "/tmp/admin.pub"
  else
    echo "You need to specify SSH_KEY on first run to setup gitolite"
    echo 'Example: docker run --rm --name git-test -e SSH_KEY="$(cat ~/.ssh/id_rsa.pub)" -v git-data:/home/git -dit gitolite-cgit-cds:v10'
    exit 1
  fi
  echo "First launch : container is now shut down"
  halt
# Check setup at every startup
else
  su - git -c "gitolite setup"
fi

# Volume permissions
echo "Setting up permissions"
chown -R git:git /home/git
chmod -R 755 /home/git/repositories

# htaccess/htpasswd auth (comes from docker-cgit/scripts)
echo "No Apache htaccess required"
if [ "$HTTP_AUTH_PASSWORD" != "" ]; then
    echo "Enables Apache htaccess"
    echo "AuthType Basic
AuthName \"CGit\"
AuthUserFile /var/www/htdocs/cgit/.htpasswd
Require valid-user" > /var/www/htdocs/cgit/.htaccess
htpasswd  -c -b /var/www/htdocs/cgit/.htpasswd $HTTP_AUTH_USER $HTTP_AUTH_PASSWORD
fi

#exec "$@"