Created script to configure ZFS and admin accounts and then install services
This commit is contained in:
parent
a42690c99b
commit
7d38d85f68
1 changed files with 206 additions and 0 deletions
206
setup_server.sh
Executable file
206
setup_server.sh
Executable file
|
|
@ -0,0 +1,206 @@
|
|||
#!/bin/bash
|
||||
|
||||
## Define admin user account
|
||||
export ADMIN_ACCOUNT=sys-admin
|
||||
|
||||
## Define bulk storage location
|
||||
export ZFS_DIR=/data
|
||||
|
||||
## Check if user is root
|
||||
if [ 'whoami' != 'root' ];then
|
||||
su -
|
||||
fi
|
||||
|
||||
## Ensure HOME directories are stored in ${ZFS_DIR}/home
|
||||
awk '{sub("#HOME=/home","HOME=/home")} {print}' /etc/default/useradd > /tmp/temp.txt && mv /tmp/temp.txt /etc/default/useradd
|
||||
awk '{sub("# HOME=/home","HOME=/home")} {print}' /etc/default/useradd > /tmp/temp.txt && mv /tmp/temp.txt /etc/default/useradd
|
||||
awk -v dir=${ZFS_DIR}/home '{sub("HOME=/home","HOME="dir)} {print}' /etc/default/useradd > /tmp/temp.txt && mv /tmp/temp.txt /etc/default/useradd
|
||||
|
||||
## Install a few helpful packages
|
||||
apt update
|
||||
apt install -y cockpit
|
||||
apt update
|
||||
apt install -y htop nano rsync wget tree
|
||||
|
||||
## Check if administrator account exists
|
||||
if id ${ADMIN_ACCOUNT} &>/dev/null; then
|
||||
echo 'Admin User account found'
|
||||
else
|
||||
## Create and su into sys-admin
|
||||
echo 'Creating Admin User account ...'
|
||||
useradd -m -d ${ZFS_DIR}/home/${ADMIN_ACCOUNT} -G sudo ${ADMIN_ACCOUNT}
|
||||
passwd ${ADMIN_ACCOUNT}
|
||||
# adduser ${ADMIN_ACCOUNT}
|
||||
echo "User account created"
|
||||
fi
|
||||
|
||||
su - ${ADMIN_ACCOUNT}
|
||||
|
||||
echo "Setting up Docker ..."
|
||||
|
||||
## Uninstall old versions
|
||||
sudo apt remove docker docker-engine docker.io containerd runc
|
||||
|
||||
## Set up repository
|
||||
# sudo apt-get remove docker docker-engine docker.io containerd runc
|
||||
sudo apt update
|
||||
sudo apt install -y ca-certificates curl gnupg
|
||||
sudo install -m 0755 -d /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||
sudo chmod a+r /etc/apt/keyrings/docker.gpg
|
||||
echo \
|
||||
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
||||
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
|
||||
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
|
||||
## Install Docker Engine
|
||||
sudo apt update
|
||||
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
## Installation of GitLab
|
||||
echo "Installing GitLab ..."
|
||||
GITLAB_HOME=${ZFS_DIR}/gitlab
|
||||
|
||||
GITLAB_ADDRESS=gitlab.adamhome.dev
|
||||
GITLAB_EXTERN_HTTPS=14443
|
||||
GITLAB_EXTERN_HTTP=14080
|
||||
GITLAB_EXTERN_SSH=14022
|
||||
|
||||
sudo docker run --detach \
|
||||
--hostname ${GITLAB_ADDRESS} \
|
||||
--publish ${GITLAB_EXTERN_HTTPS}:443 --publish ${GITLAB_EXTERN_HTTP}:80 --publish ${GITLAB_EXTERN_SSH}:22 \
|
||||
--name gitlab \
|
||||
--restart always \
|
||||
--volume ${GITLAB_HOME}/config:/etc/gitlab \
|
||||
--volume ${GITLAB_HOME}/logs:/var/log/gitlab \
|
||||
--volume ${GITLAB_HOME}/data:/var/opt/gitlab \
|
||||
--shm-size 512m \
|
||||
gitlab/gitlab-ce:latest
|
||||
|
||||
## Uncomment if you want to monitor boot-up
|
||||
# sudo docker logs -f gitlab
|
||||
|
||||
# sudo docker exec -it gitlab /bin/bash
|
||||
# edit /etc/gitlab/gitlab.rb so that gitlab_rails['gitlab_shell_ssh_port'] = ${GITLAB_EXTERN_SSH}
|
||||
# while still in gitlab env, run gitlab-ctl reconfigure
|
||||
|
||||
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
|
||||
|
||||
echo "Successfully installed GitLab"
|
||||
|
||||
## Installation of MineOS
|
||||
echo "Installing MineOS ..."
|
||||
USER_NAME=mcadmin
|
||||
USER_PASSWORD=rootWord
|
||||
|
||||
MINEOS_EXTERN_HTTP=13443
|
||||
|
||||
sudo docker run -td \
|
||||
--name=mineos \
|
||||
-p ${MINEOS_EXTERN_HTTP}:8443 \
|
||||
-p 25565:25565 \
|
||||
-e USER_PASSWORD=${USER_PASSWORD} \
|
||||
-e USER_NAME=${USER_NAME} \
|
||||
-v ${ZFS_DIR}/minecraft:/var/games/minecraft \
|
||||
--restart=unless-stopped \
|
||||
hexparrot/mineos:latest
|
||||
|
||||
echo "Successfully installed MineOS"
|
||||
|
||||
## Installation of JupyterHub
|
||||
echo "Installing JupyterHub ..."
|
||||
export TLJH_INSTALL_PREFIX=${ZFS_DIR}/jupyter
|
||||
|
||||
sudo ln -s ${TLJH_INSTALL_PREFIX} /opt/tljh
|
||||
|
||||
SYS_MEM=$(grep MemTotal /proc/meminfo | awk '{print $2}')
|
||||
SYS_CPU=$(grep -c ^processor /proc/cpuinfo)
|
||||
|
||||
JUPYTER_EXTERN_HTTP=15080
|
||||
JUPYTER_EXTERN_HTTPS=15443
|
||||
|
||||
if [ $SYS_MEM -gt 2097152 ]
|
||||
then
|
||||
let "SYS_MEM = $SYS_MEM - 1048576"
|
||||
else
|
||||
let "SYS_MEM = $SYS_MEM / 2"
|
||||
fi
|
||||
|
||||
if [ $SYS_CPU -gt 1 ]
|
||||
then
|
||||
let "SYS_CPU = $SYS_CPU - 1"
|
||||
fi
|
||||
|
||||
cat << EOT >> /tmp/requirements.txt
|
||||
numpy
|
||||
scipy
|
||||
matplotlib
|
||||
pandas
|
||||
tensorflow
|
||||
tensorrt
|
||||
torch
|
||||
torchvision
|
||||
torchaudio
|
||||
EOT
|
||||
|
||||
sudo apt install python3 python3-dev git curl
|
||||
curl -L https://tljh.jupyter.org/bootstrap.py | \
|
||||
sudo -E python3 - \
|
||||
--show-progress-page \
|
||||
--admin ${ADMIN_ACCOUNT}:systemPassword \
|
||||
--user-requirements-txt-url /tmp/requirements.txt
|
||||
|
||||
## Edit Jupyter Environment
|
||||
sudo tljh-config set http.port ${JUPYTER_EXTERN_HTTP}
|
||||
sudo tljh-config set https.port ${JUPYTER_EXTERN_HTTPS}
|
||||
sudo tljh-config set limits.memory ${SYS_MEM}K
|
||||
sudo tljh-config set limits.cpu ${SYS_CPU}
|
||||
# sudo tljh-config set user_environment.default_app jupyterlab
|
||||
sudo tljh-config reload proxy
|
||||
sudo tljh-config reload
|
||||
|
||||
echo "Successfully installed JupyterHub"
|
||||
|
||||
## Installation of Nextcloud AIO
|
||||
echo "Installing Nextcloud AIO ..."
|
||||
let "AIO_MEM = $SYS_MEM / 1024"
|
||||
|
||||
sudo docker run \
|
||||
--sig-proxy=false \
|
||||
--name nextcloud-aio-mastercontainer \
|
||||
--restart always \
|
||||
--publish 11080:80 \
|
||||
--publish 8080:8080 \
|
||||
--publish 11443:8443 \
|
||||
--env NEXTCLOUD_DATADIR=${ZFS_DIR}/nextcloud/data \
|
||||
--env NEXTCLOUD_MOUNT=${ZFS_DIR}/nextcloud \
|
||||
--env APACHE_PORT=11000 \
|
||||
--env APACHE_IP_BINDING=127.0.0.1 \
|
||||
--env NEXTCLOUD_MEMORY_LIMIT=${AIO_MEM}M \
|
||||
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
|
||||
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
|
||||
nextcloud/all-in-one:latest
|
||||
|
||||
echo "Successfully installed Nextcloud AIO"
|
||||
|
||||
# ./gitlab_install.sh
|
||||
# ./nextcloud_install.sh
|
||||
# ./jupyterhub_install.sh
|
||||
# ./mineos_install.sh
|
||||
|
||||
echo "Setup Complete!"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
###########################################
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue