diff --git a/apps/services/devbox/app/configmap.yaml b/apps/services/devbox/app/configmap.yaml index 7562d58..20b26d0 100644 --- a/apps/services/devbox/app/configmap.yaml +++ b/apps/services/devbox/app/configmap.yaml @@ -2,22 +2,26 @@ apiVersion: v1 data: postinstall.sh: "#!/bin/bash\n\nset -e\n\n# if the file /postinstall-has-run exists, then the postinstall script has already run and exit gracefully\nif [ -f /postinstall-has-run - ]; then\n exit 0\nfi\n\napt update\napt install -y openssh-server vim unminimize - sudo nnn git wget\necho -e \"y\\n\" | unminimize\n\n# ssh\necho \"PermitRootLogin - no\" >> /etc/ssh/sshd_config\necho \"PasswordAuthentication no\" >> /etc/ssh/sshd_config\nservice - ssh restart\n\n# user\nadduser --disabled-password --gecos \"\" $USERNAME\necho - \"$USERNAME ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers\ncp /authorized_keys /home/$USERNAME/.ssh/authorized_keys\nchown - $USERNAME:$USERNAME /home/$USERNAME/.ssh/authorized_keys\nchmod 600 /home/$USERNAME/.ssh/authorized_keys\n\n# - docker\n# Add Docker's official GPG key:\nsudo apt-get update\nsudo apt-get install - ca-certificates curl\nsudo install -m 0755 -d /etc/apt/keyrings\nsudo curl -fsSL - https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc\nsudo - chmod a+r /etc/apt/keyrings/docker.asc\n\n# Add the repository to Apt sources:\necho - \\\n \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] - https://download.docker.com/linux/ubuntu \\\n $(. /etc/os-release && echo \"$VERSION_CODENAME\") - stable\" | \\\n sudo tee /etc/apt/sources.list.d/docker.list > /dev/null\nsudo - apt-get update \n\n# Node\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh - | bash\nnvm install 18\nnvm use 18\n\n# If everything runs successfully, don't - bother running next startup\ntouch /postinstall-has-run" + ]; then\n echo \"Postinstall script has already run, skipping...\"\n exit + 0\nfi\n\necho \"Installing packages...\"\napt update\napt install -y openssh-server + vim unminimize sudo nnn git wget\necho -e \"y\\n\" | unminimize\n\necho \"Configuring + SSH...\"\necho \"PermitRootLogin no\" >> /etc/ssh/sshd_config\necho \"PasswordAuthentication + no\" >> /etc/ssh/sshd_config\nservice ssh restart\n\necho \"Configuring user...\"\nadduser + --disabled-password --gecos \"\" $USERNAME\necho \"$USERNAME ALL=(ALL) NOPASSWD:ALL\" + >> /etc/sudoers\nmkdir -p /home/$USERNAME/.ssh\ncp /root/.ssh/authorized_keys + /home/$USERNAME/.ssh/authorized_keys\nchown $USERNAME:$USERNAME /home/$USERNAME/.ssh/authorized_keys\nchmod + 600 /home/$USERNAME/.ssh/authorized_keys\n\necho \"Installing Docker...\"\n# Add + Docker's official GPG key:\nsudo apt-get update\nsudo apt-get install ca-certificates + curl\nsudo install -m 0755 -d /etc/apt/keyrings\nsudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg + -o /etc/apt/keyrings/docker.asc\nsudo chmod a+r /etc/apt/keyrings/docker.asc\n\n# + Add the repository to Apt sources:\necho \\\n \"deb [arch=$(dpkg --print-architecture) + signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu + \\\n $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable\" | \\\n sudo + tee /etc/apt/sources.list.d/docker.list > /dev/null\nsudo apt-get update \nsudo + apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin + docker-compose-plugin\n\necho \"Installing Node...\"\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh + | bash\nsource ~/.bashrc\nnvm install 18\nnvm use 18\n\n# If everything runs successfully, + don't bother running next startup\ntouch /postinstall-has-run" kind: ConfigMap metadata: creationTimestamp: null diff --git a/apps/services/devbox/app/deployment.yaml b/apps/services/devbox/app/deployment.yaml index a4579ea..e70da99 100644 --- a/apps/services/devbox/app/deployment.yaml +++ b/apps/services/devbox/app/deployment.yaml @@ -20,12 +20,8 @@ spec: - name: devbox image: ubuntu:24.04 # image: docker:dind - # securityContext: - # privileged: true - # lifecycle: - # postStart: - # exec: - # command: ["/bin/bash", "-c", "/postinstall.sh"] + securityContext: + privileged: true env: - name: USERNAME valueFrom: diff --git a/apps/services/devbox/files/postinstall.sh b/apps/services/devbox/files/postinstall.sh index 1d6b3ec..6a7750e 100644 --- a/apps/services/devbox/files/postinstall.sh +++ b/apps/services/devbox/files/postinstall.sh @@ -4,26 +4,29 @@ set -e # if the file /postinstall-has-run exists, then the postinstall script has already run and exit gracefully if [ -f /postinstall-has-run ]; then + echo "Postinstall script has already run, skipping..." exit 0 fi +echo "Installing packages..." apt update apt install -y openssh-server vim unminimize sudo nnn git wget echo -e "y\n" | unminimize -# ssh +echo "Configuring SSH..." echo "PermitRootLogin no" >> /etc/ssh/sshd_config echo "PasswordAuthentication no" >> /etc/ssh/sshd_config service ssh restart -# user +echo "Configuring user..." adduser --disabled-password --gecos "" $USERNAME echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -cp /authorized_keys /home/$USERNAME/.ssh/authorized_keys +mkdir -p /home/$USERNAME/.ssh +cp /root/.ssh/authorized_keys /home/$USERNAME/.ssh/authorized_keys chown $USERNAME:$USERNAME /home/$USERNAME/.ssh/authorized_keys chmod 600 /home/$USERNAME/.ssh/authorized_keys -# docker +echo "Installing Docker..." # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl @@ -37,9 +40,11 @@ echo \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update +sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -# Node +echo "Installing Node..." curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash +source ~/.bashrc nvm install 18 nvm use 18