1
0

Compare commits

..

10 Commits

Author SHA1 Message Date
20f5c653ac feat: install rsync
All checks were successful
continuous-integration/drone/push Build is passing
2025-01-31 18:35:03 +01:00
0b8f55ca05 feat: install unzip
All checks were successful
continuous-integration/drone/push Build is passing
2023-08-02 10:55:33 +02:00
c58f97d2c8 feat: install bind9-dnsutils
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-09 14:01:58 +01:00
5fda9a6457 feat: install less
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-16 14:56:44 +01:00
0d85cf61ae fix(rebuild): the input device is not a TTY
Some checks reported errors
continuous-integration/drone/push Build was killed
2022-11-19 17:10:31 +01:00
82c406ffa3 feat: add git, man
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-30 11:52:20 +00:00
67cfd6b9a5 fix: configure MTU for docker:dind service to 1492
All checks were successful
continuous-integration/drone/push Build is passing
https://blog.zespre.com/dind-mtu-size-matters.html
2022-09-18 15:53:04 +02:00
3c1c0ad41f feat: install sudoers + allow sudo access for created users
Some checks reported errors
continuous-integration/drone/push Build was killed
2022-09-18 14:50:54 +02:00
84df38ba0d feat: split setup to setup.sh and only run once
This supports `docker-compose stop` + `docker-compose up`.
2022-09-18 14:32:32 +02:00
e6337a497f feat: install locales + configure en_US.UTF-8 locale 2022-09-18 14:06:54 +02:00
5 changed files with 114 additions and 82 deletions

View File

@ -30,6 +30,11 @@ services:
volumes: volumes:
- name: dockersock - name: dockersock
path: /var/run path: /var/run
command:
- dockerd-entrypoint.sh
- dockerd
- --host=unix:///var/run/docker.sock
- --mtu=1492
volumes: volumes:
- name: dockersock - name: dockersock
@ -68,6 +73,11 @@ services:
volumes: volumes:
- name: dockersock - name: dockersock
path: /var/run path: /var/run
command:
- dockerd-entrypoint.sh
- dockerd
- --host=unix:///var/run/docker.sock
- --mtu=1492
volumes: volumes:
- name: dockersock - name: dockersock

View File

@ -5,16 +5,28 @@ RUN set -eux && \
DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && \ DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
openssh-server \ openssh-server \
sudo \
locales \
curl \ curl \
telnet \ telnet \
net-tools \ net-tools \
screen \ screen \
vim \ vim \
git \
man \
less \
bind9-dnsutils \
unzip \
rsync \
&& \ && \
rm -rf /var/lib/apt/lists/* && \ rm -rf /var/lib/apt/lists/* && \
rm /etc/ssh/ssh_host_*key* rm /etc/ssh/ssh_host_*key* && \
echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && \
/usr/sbin/locale-gen && \
/usr/sbin/update-locale 'LANG=en_US.UTF-8'
ADD start.sh / ADD start.sh /
ADD setup.sh /
EXPOSE 22/tcp EXPOSE 22/tcp

View File

@ -1,8 +1,10 @@
#!/bin/sh #!/bin/sh
set -x
updates_available () { updates_available () {
docker pull "$1" docker pull "$1"
if test "$(docker run -it --rm "$1" /bin/sh -c 'apt -qqq update && apt -qq list --upgradable')" != ""; then if test "$(docker run --rm "$1" /bin/sh -c 'apt -qqq update && apt -qq list --upgradable')" != ""; then
return 0 return 0
else else
return 1 return 1

86
setup.sh Executable file
View File

@ -0,0 +1,86 @@
#!/bin/sh
set -ex
if [ -n "$ROOT_AUTHORIZED_KEYS" ]; then
if [ -f "$ROOT_AUTHORIZED_KEYS" ]; then
mkdir -p /root/.ssh
cp "$ROOT_AUTHORIZED_KEYS" /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
fi
fi
if [ -z "$BASE_DIR" ]; then
BASE_DIR="/home"
fi
if [ ! -d "$BASE_DIR" ]; then
echo "BASE_DIR $BASE_DIR does not exist, creating..."
mkdir -p $BASE_DIR
fi
# GROUPADD="group1:1000;group2:1001;group3:1002"
i=""
while [ "$GROUPADD" != "$i" ] ;do
i=${GROUPADD%%;*}
GROUPADD="${GROUPADD#$i;}"
GROUP_NAME=${i%%:*}
GROUP_GID="${i#$GROUP_NAME:}"
groupadd --gid "$GROUP_GID" "$GROUP_NAME"
done
# USERADD="user1:1000:1000:/bin/bash;user2:1001:1000:/bin/sh;user3:1002:1002:/bin/sh"
i=""
j=""
while [ "$USERADD" != "$i" ] ;do
i=${USERADD%%;*}
USERADD="${USERADD#$i;}"
USER_NAME=${i%%:*}
j="${i#$USER_NAME:}"
USER_UID="${j%%:*}"
j="${j#$USER_UID:}"
USER_GID="${j%%:*}"
j="${j#$USER_GID:}"
USER_SHELL=$j
useradd --home-dir "$BASE_DIR/$USER_NAME" --shell "$USER_SHELL" --uid "$USER_UID" --gid "$USER_GID" "$USER_NAME"
echo "$USER_NAME ALL=(ALL) NOPASSWD:ALL" > "/etc/sudoers.d/$USER_NAME"
done
# HOSTKEYS="/var/lib/jumpbox/ssh_host_ed25519_key;/var/lib/jumpbox/ssh_host_rsa_key"
i=""
if [ -n "$HOSTKEYS" ]; then
while [ "$HOSTKEYS" != "$i" ]; do
i=${HOSTKEYS%%;*}
HOSTKEYS="${HOSTKEYS#$i;}"
if [ ! -e "$i" ]; then
echo "Could not read $i, file is missing"
continue
else
echo "Configuring HostKey $i"
fi
FILENAME=$(basename "$i")
if [ ! -e "/etc/ssh/$FILENAME" ]; then
install -m 0600 "$i" "/etc/ssh/$FILENAME"
ssh-keygen -y -f "$i" > "/etc/ssh/$FILENAME.pub"
ssh-keygen -l -f "/etc/ssh/$FILENAME.pub"
fi
if ! grep "^HostKey /etc/ssh/$FILENAME" /etc/ssh/sshd_config; then
echo "HostKey /etc/ssh/$FILENAME" >> /etc/ssh/sshd_config
fi
done
fi
if [ -z "$(find /etc/ssh/ -maxdepth 1 -name 'ssh_host_*_key' -print -quit)" ]; then
echo "Creating SSH2 ED25519 key; this may take some time ..."
ssh-keygen -q -f /etc/ssh/ssh_host_ed25519_key -N '' -t ed25519
ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub
echo "HostKey /etc/ssh/ssh_host_ed25519_key" >> /etc/ssh/sshd_config
fi
touch /var/tmp/jumpbox.done

View File

@ -1,88 +1,10 @@
#!/bin/sh #!/bin/sh
set -ex set -ex
mkdir -p /run/sshd mkdir -p /run/sshd
if [ -n "$ROOT_AUTHORIZED_KEYS" ]; then if [ ! -e "/var/tmp/jumpbox.done" ]; then
if [ -f "$ROOT_AUTHORIZED_KEYS" ]; then ./setup.sh
mkdir -p /root/.ssh
cp "$ROOT_AUTHORIZED_KEYS" /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
fi
fi
if [ -z "$BASE_DIR" ]; then
BASE_DIR="/home"
fi
if [ ! -d "$BASE_DIR" ]; then
echo "BASE_DIR $BASE_DIR does not exist, creating..."
mkdir -p $BASE_DIR
fi
# GROUPADD="group1:1000;group2:1001;group3:1002"
i=""
while [ "$GROUPADD" != "$i" ] ;do
i=${GROUPADD%%;*}
GROUPADD="${GROUPADD#$i;}"
GROUP_NAME=${i%%:*}
GROUP_GID="${i#$GROUP_NAME:}"
groupadd --gid "$GROUP_GID" "$GROUP_NAME"
done
# USERADD="user1:1000:1000:/bin/bash;user2:1001:1000:/bin/sh;user3:1002:1002:/bin/sh"
i=""
j=""
while [ "$USERADD" != "$i" ] ;do
i=${USERADD%%;*}
USERADD="${USERADD#$i;}"
USER_NAME=${i%%:*}
j="${i#$USER_NAME:}"
USER_UID="${j%%:*}"
j="${j#$USER_UID:}"
USER_GID="${j%%:*}"
j="${j#$USER_GID:}"
USER_SHELL=$j
useradd --home-dir "$BASE_DIR/$USER_NAME" --shell "$USER_SHELL" --uid "$USER_UID" --gid "$USER_GID" "$USER_NAME"
done
# HOSTKEYS="/var/lib/jumpbox/ssh_host_ed25519_key;/var/lib/jumpbox/ssh_host_rsa_key"
i=""
if [ -n "$HOSTKEYS" ]; then
while [ "$HOSTKEYS" != "$i" ]; do
i=${HOSTKEYS%%;*}
HOSTKEYS="${HOSTKEYS#$i;}"
if [ ! -e "$i" ]; then
echo "Could not read $i, file is missing"
continue
else
echo "Configuring HostKey $i"
fi
FILENAME=$(basename "$i")
if [ ! -e "/etc/ssh/$FILENAME" ]; then
install -m 0600 "$i" "/etc/ssh/$FILENAME"
ssh-keygen -y -f "$i" > "/etc/ssh/$FILENAME.pub"
ssh-keygen -l -f "/etc/ssh/$FILENAME.pub"
fi
if ! grep "^HostKey /etc/ssh/$FILENAME" /etc/ssh/sshd_config; then
echo "HostKey /etc/ssh/$FILENAME" >> /etc/ssh/sshd_config
fi
done
fi
if [ -z "$(find /etc/ssh/ -maxdepth 1 -name 'ssh_host_*_key' -print -quit)" ]; then
echo "Creating SSH2 ED25519 key; this may take some time ..."
ssh-keygen -q -f /etc/ssh/ssh_host_ed25519_key -N '' -t ed25519
ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub
echo "HostKey /etc/ssh/ssh_host_ed25519_key" >> /etc/ssh/sshd_config
fi fi
exec /usr/sbin/sshd -D -e exec /usr/sbin/sshd -D -e