2023-03-22 20:48:20 -04:00
#!/usr/bin/env bash
2026-01-06 13:28:12 +01:00
# Copyright (c) 2021-2026 tteck
2023-03-22 20:48:20 -04:00
# Author: tteck (tteckster)
2025-03-04 17:54:20 +01:00
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.docker.com/
2023-03-22 20:48:20 -04:00
2023-07-10 19:17:30 -04:00
source /dev/stdin <<< " $FUNCTIONS_FILE_PATH "
2023-03-22 20:48:20 -04:00
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
2026-08-18 12:38:22 +02:00
setup_deb_based() {
setup_docker
2026-10-24 17:55:50 +02:00
socket_choice = " ${ var_docker_socket :- } "
[[ -n " $socket_choice " ]] || read -r -p " ${ TAB3 } Expose Docker TCP socket (insecure) ? [n = No, l = Local only (127.0.0.1), a = All interfaces (0.0.0.0)] <n/l/a>: " socket_choice || true
2026-08-18 12:38:22 +02:00
case " ${ socket_choice ,, } " in
2026-10-11 13:24:31 +02:00
l | local )
2026-08-18 12:38:22 +02:00
socket = "tcp://127.0.0.1:2375"
;;
2026-10-11 13:24:31 +02:00
a | all)
2026-08-18 12:38:22 +02:00
socket = "tcp://0.0.0.0:2375"
;;
*)
socket = ""
;;
esac
if [[ -n " $socket " ]] ; then
msg_info "Enabling Docker TCP socket on $socket "
2026-10-01 08:14:33 +02:00
$STD apt install -y jq
2026-08-18 12:38:22 +02:00
tmpfile = $( mktemp)
jq --arg sock " $socket " '. + { "hosts": ["unix:///var/run/docker.sock", $sock] }' /etc/docker/daemon.json >" $tmpfile " && mv " $tmpfile " /etc/docker/daemon.json
mkdir -p /etc/systemd/system/docker.service.d
cat <<EOF >/etc/systemd/system/docker.service.d/override.conf
2025-07-09 19:19:18 +02:00
[Service]
ExecStart=
2026-06-21 01:48:59 +10:00
ExecStart=$(command -v dockerd || echo /usr/sbin/dockerd)
2025-07-09 19:19:18 +02:00
EOF
2026-08-18 12:38:22 +02:00
$STD systemctl daemon-reexec
$STD systemctl daemon-reload
if systemctl restart docker; then
msg_ok "Docker TCP socket available on $socket "
else
msg_error "Docker failed to restart. Check journalctl -xeu docker.service"
exit 150
fi
fi
}
2025-07-09 19:19:18 +02:00
2026-08-18 12:38:22 +02:00
setup_alpine() {
msg_info "Installing Dependencies"
$STD apk add tzdata openssl
msg_ok "Installed Dependencies"
msg_info "Installing Docker"
$STD apk add docker
$STD rc-service docker start
$STD rc-update add docker default
msg_ok "Installed Docker"
2026-10-02 08:01:49 +02:00
DOCKER_COMPOSE_LATEST_VERSION = $( get_latest_github_release "docker/compose" false )
2026-10-24 17:55:50 +02:00
prompt = " ${ var_docker_compose :- } "
[[ -n " $prompt " ]] || read -r -p " ${ TAB3 } Would you like to add Docker Compose? <y/N> " prompt || true
2026-10-11 13:24:31 +02:00
if [[ " ${ prompt ,, } " = ~ ^( y| yes| true ) $ ]] ; then
2026-08-18 12:38:22 +02:00
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION "
DOCKER_CONFIG = ${ DOCKER_CONFIG :- $HOME /.docker }
mkdir -p " $DOCKER_CONFIG " /cli-plugins
curl -fsSL https://github.com/docker/compose/releases/download/" $DOCKER_COMPOSE_LATEST_VERSION " /docker-compose-linux-$( arch_resolve "x86_64" "aarch64" ) -o ~/.docker/cli-plugins/docker-compose
chmod +x " $DOCKER_CONFIG " /cli-plugins/docker-compose
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION "
fi
2026-10-24 17:55:50 +02:00
prompt = " ${ var_docker_socket :- } "
[[ -n " $prompt " ]] || read -r -p " ${ TAB3 } Would you like to expose the Docker TCP socket? <y/N> " prompt || true
2026-10-11 13:24:31 +02:00
case " ${ prompt ,, } " in
y | yes | a | all) socket = "tcp://0.0.0.0:2375" ;;
l | local ) socket = "tcp://127.0.0.1:2375" ;;
*) socket = "" ;;
esac
if [[ -n " $socket " ]] ; then
msg_info "Exposing Docker TCP socket on $socket "
mkdir -p /etc/docker
# No $STD here: silent() captures stdout, which left daemon.json empty.
printf '{ "hosts": ["unix:///var/run/docker.sock", "%s"] }\n' " $socket " >/etc/docker/daemon.json
2026-08-18 12:38:22 +02:00
$STD rc-service docker restart
2026-10-11 13:24:31 +02:00
msg_ok "Exposed Docker TCP socket on $socket "
2025-07-09 19:19:18 +02:00
fi
2026-08-18 12:38:22 +02:00
}
run_os_setup
2023-03-22 20:48:20 -04:00
motd_ssh
2023-05-15 07:39:30 -04:00
customize
2025-11-22 17:27:13 +01:00
cleanup_lxc