parent
f8b55eb017
commit
4c690dd3c6
6 changed files with 38 additions and 19 deletions
|
@ -238,11 +238,6 @@ ErrorCode ServerController::setupContainer(const ServerCredentials &credentials,
|
||||||
e = isUserInSudo(credentials, container);
|
e = isUserInSudo(credentials, container);
|
||||||
if (e) return e;
|
if (e) return e;
|
||||||
|
|
||||||
if (!isUpdate) {
|
|
||||||
e = isServerPortBusy(credentials, container, config);
|
|
||||||
if (e) return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
e = isServerDpkgBusy(credentials, container);
|
e = isServerDpkgBusy(credentials, container);
|
||||||
if (e) return e;
|
if (e) return e;
|
||||||
|
|
||||||
|
@ -250,6 +245,11 @@ ErrorCode ServerController::setupContainer(const ServerCredentials &credentials,
|
||||||
if (e) return e;
|
if (e) return e;
|
||||||
qDebug().noquote() << "ServerController::setupContainer installDockerWorker finished";
|
qDebug().noquote() << "ServerController::setupContainer installDockerWorker finished";
|
||||||
|
|
||||||
|
if (!isUpdate) {
|
||||||
|
e = isServerPortBusy(credentials, container, config);
|
||||||
|
if (e) return e;
|
||||||
|
}
|
||||||
|
|
||||||
e = prepareHostWorker(credentials, container, config);
|
e = prepareHostWorker(credentials, container, config);
|
||||||
if (e) return e;
|
if (e) return e;
|
||||||
qDebug().noquote() << "ServerController::setupContainer prepareHostWorker finished";
|
qDebug().noquote() << "ServerController::setupContainer prepareHostWorker finished";
|
||||||
|
@ -368,6 +368,7 @@ ErrorCode ServerController::installDockerWorker(const ServerCredentials &credent
|
||||||
replaceVars(amnezia::scriptData(SharedScriptType::install_docker),
|
replaceVars(amnezia::scriptData(SharedScriptType::install_docker),
|
||||||
genVarsForScript(credentials)), cbReadStdOut, cbReadStdErr);
|
genVarsForScript(credentials)), cbReadStdOut, cbReadStdErr);
|
||||||
|
|
||||||
|
qDebug().noquote() << "ServerController::installDockerWorker" << stdOut;
|
||||||
if (stdOut.contains("command not found")) return ErrorCode::ServerDockerFailedError;
|
if (stdOut.contains("command not found")) return ErrorCode::ServerDockerFailedError;
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
@ -635,7 +636,7 @@ ErrorCode ServerController::isServerPortBusy(const ServerCredentials &credential
|
||||||
QString defaultTransportProto = ProtocolProps::transportProtoToString(ProtocolProps::defaultTransportProto(protocol), protocol);
|
QString defaultTransportProto = ProtocolProps::transportProtoToString(ProtocolProps::defaultTransportProto(protocol), protocol);
|
||||||
QString transportProto = containerConfig.value(config_key::transport_proto).toString(defaultTransportProto);
|
QString transportProto = containerConfig.value(config_key::transport_proto).toString(defaultTransportProto);
|
||||||
|
|
||||||
QString script = QString("sudo lsof -i -P -n | grep -E ':%1 ").arg(port);
|
QString script = QString("which lsof &>/dev/null || true && sudo lsof -i -P -n | grep -E ':%1 ").arg(port);
|
||||||
for (auto &port : fixedPorts) {
|
for (auto &port : fixedPorts) {
|
||||||
script = script.append("|:%1").arg(port);
|
script = script.append("|:%1").arg(port);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,20 @@
|
||||||
pm_apt="/usr/bin/apt-get"; pm_yum="/usr/bin/yum";\
|
if which apt-get > /dev/null 2>&1; then pm=$(which apt-get); docker_pkg="docker.io"; dist="debian";\
|
||||||
if [[ -f "$pm_apt" ]]; then pm=$pm_apt; docker_pkg="docker.io"; else pm=$pm_yum; docker_pkg="docker"; fi;\
|
elif which dnf > /dev/null 2>&1; then pm=$(which dnf); docker_pkg="docker"; dist="fedora";\
|
||||||
if [[ ! -f "/usr/bin/sudo" ]]; then $pm update -y -q; $pm install -y -q sudo; fi;\
|
elif which yum > /dev/null 2>&1; then pm=$(which yum); docker_pkg="docker"; dist="centos";\
|
||||||
docker_service=$(systemctl list-units --full -all | grep docker.service | grep -v inactive | grep -v dead | grep -v failed);\
|
else echo "Packet manager not found"; exit 1; fi;\
|
||||||
if [[ -f "$pm_apt" ]]; then export DEBIAN_FRONTEND=noninteractive; fi;\
|
echo "Dist: $dist, Packet manager: $pm, Docker pkg: $docker_pkg";\
|
||||||
if [[ -z "$docker_service" ]]; then sudo $pm update -y -q; sudo $pm install -y -q curl $docker_pkg; fi;\
|
if [ "$dist" = "debian" ]; then export DEBIAN_FRONTEND=noninteractive; fi;\
|
||||||
docker_service=$(systemctl list-units --full -all | grep docker.service | grep -v inactive | grep -v dead | grep -v failed);\
|
if ! command -v sudo > /dev/null 2>&1; then $pm update -yq; $pm install -yq sudo; fi;\
|
||||||
if [[ -z "$docker_service" ]]; then sleep 5 && sudo systemctl start docker && sleep 5; fi;\
|
if ! command -v fuser > /dev/null 2>&1; then $pm install -yq psmisc; fi;\
|
||||||
if [[ -f "$pm_yum" ]]; then sudo systemctl enable docker && sudo systemctl start docker; fi;\
|
if ! command -v lsof > /dev/null 2>&1; then $pm install -yq lsof; fi;\
|
||||||
|
if ! command -v docker > /dev/null 2>&1; then $pm update -yq; $pm install -yq $docker_pkg;\
|
||||||
|
if [ "$dist" = "fedora" ] || [ "$dist" = "debian" ]; then sudo systemctl enable docker && sudo systemctl start docker; fi;\
|
||||||
|
fi;\
|
||||||
|
if [ "$dist" = "debian" ]; then \
|
||||||
|
docker_service=$(systemctl list-units --full --all | grep docker.service | grep -v inactive | grep -v dead | grep -v failed);\
|
||||||
|
if [ -z "$docker_service" ]; then sudo $pm update -yq; sudo $pm install -yq curl $docker_pkg; fi;\
|
||||||
|
sleep 3 && sudo systemctl start docker && sleep 3;\
|
||||||
|
fi;\
|
||||||
|
if ! command -v sudo > /dev/null 2>&1; then echo "Failed to install Docker";exit 1;fi;\
|
||||||
docker --version
|
docker --version
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# Run container
|
# Run container
|
||||||
sudo docker run -d \
|
sudo docker run -d \
|
||||||
|
--privileged \
|
||||||
--log-driver none \
|
--log-driver none \
|
||||||
--restart always \
|
--restart always \
|
||||||
--cap-add=NET_ADMIN \
|
--cap-add=NET_ADMIN \
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# Run container
|
# Run container
|
||||||
sudo docker run -d \
|
sudo docker run -d \
|
||||||
|
--privileged \
|
||||||
--log-driver none \
|
--log-driver none \
|
||||||
--restart always \
|
--restart always \
|
||||||
--cap-add=NET_ADMIN \
|
--cap-add=NET_ADMIN \
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
# Run container
|
# Run container
|
||||||
sudo docker run \
|
sudo docker run -d \
|
||||||
|
--privileged \
|
||||||
--log-driver none \
|
--log-driver none \
|
||||||
-d --restart always \
|
--restart always \
|
||||||
--cap-add=NET_ADMIN \
|
--cap-add=NET_ADMIN \
|
||||||
-p $SHADOWSOCKS_SERVER_PORT:$SHADOWSOCKS_SERVER_PORT/tcp \
|
-p $SHADOWSOCKS_SERVER_PORT:$SHADOWSOCKS_SERVER_PORT/tcp \
|
||||||
--name $CONTAINER_NAME $CONTAINER_NAME
|
--name $CONTAINER_NAME $CONTAINER_NAME
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
CUR_USER=$(whoami);\
|
CUR_USER=$(whoami);\
|
||||||
sudo mkdir -p $DOCKERFILE_FOLDER;\
|
sudo mkdir -p $DOCKERFILE_FOLDER;\
|
||||||
sudo chown $CUR_USER $DOCKERFILE_FOLDER
|
sudo chown $CUR_USER $DOCKERFILE_FOLDER;\
|
||||||
if ! sudo docker network ls | grep -q amnezia-dns-net; then sudo docker network create --driver bridge --subnet=172.29.172.0/24 --opt com.docker.network.bridge.name=amn0 amnezia-dns-net; fi
|
if ! sudo docker network ls | grep -q amnezia-dns-net; then sudo docker network create \
|
||||||
|
--driver bridge \
|
||||||
|
--subnet=172.29.172.0/24 \
|
||||||
|
--opt com.docker.network.bridge.name=amn0 \
|
||||||
|
amnezia-dns-net;\
|
||||||
|
fi
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue