SLBRV2/new_image.sh

71 lines
1.7 KiB
Bash
Executable File

export XDG_RUNTIME_DIR=/home/slbr-admin/.docker/run
export DOCKER_HOST=unix:///home/slbr-admin/.docker/run/docker.sock
username="$1"
pubkey_path="$2"
slbr_port="1337"
info_port="1338"
log_port="1339"
user_sshd_port="5000"
container_id=""
container_ip=""
host_ip=""
[ -z "$1" ] && echo "please provide a username." && exit
[ -z "$2" ] && echo "please provide a pubkey file." && exit
get_user_sshd_port() {
listening_ports="$(ss -tuln \
| awk '{print $5}' \
| rev \
| cut -f1 -d ":" \
| rev
)"
if echo "$listening_ports" | grep -q "$user_sshd_port"
then
user_sshd_port="$(( user_sshd_port + 1 ))"
get_user_sshd_port
else
echo "$user_sshd_port"
fi
}
get_user_sshd_port
cp "$pubkey_path" image/pubkey
host_ip="host.docker.internal"
docker build \
-t slbr:$username \
--build-arg USERNAME=$username \
--build-arg HOST_IP=$host_ip \
--build-arg SLBR_PORT=$slbr_port \
--build-arg INFO_PORT=$info_port \
--build-arg LOG_PORT=$log_port \
--build-arg SSHD_PORT=$user_sshd_port \
--label description="SLBR User Container" \
./image
rm image/pubkey
echo "Starting container..."
container_id="$(
docker run \
--cap-drop ALL \
--cap-add AUDIT_WRITE \
--cap-add CHOWN \
--cap-add SETGID \
--cap-add SETPCAP \
--cap-add SETUID \
--cap-add SYS_CHROOT \
--network slbr \
--add-host host.docker.internal:host-gateway \
-p $user_sshd_port:$user_sshd_port \
-h slbr \
-d "slbr:$username"
)"
container_ip="$(
docker container inspect "$container_id" \
| jq '.[0].NetworkSettings.Networks.bridge.IPAddress'
)"
echo "Done!"
echo "connect using: ssh $username@$host_ip -p $user_sshd_port"