Last active
December 17, 2024 21:38
-
-
Save nibzard/b6c10db7078c4f45320be3cc47f7183f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) | |
| # App Default Values | |
| APP="Daytona" | |
| var_tags="docker;development;daytona" | |
| var_cpu="2" | |
| var_ram="4096" | |
| var_disk="20" | |
| var_os="ubuntu" | |
| var_version="22.04" | |
| var_unprivileged="1" | |
| # App Output & Base Settings | |
| header_info "$APP" | |
| base_settings | |
| # Core | |
| variables | |
| color | |
| catch_errors | |
| start | |
| build_container | |
| msg_info "Setting up environment" | |
| # Setup PATH | |
| pct exec "$CTID" -- bash -c "echo 'export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' > /etc/profile.d/path.sh" | |
| pct exec "$CTID" -- bash -c "chmod +x /etc/profile.d/path.sh" | |
| # Setup basic .bashrc | |
| pct exec "$CTID" -- bash -c "echo 'export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' > /root/.bashrc" | |
| pct exec "$CTID" -- bash -c "echo 'PS1=\"root@\h:\w# \"' >> /root/.bashrc" | |
| msg_ok "Environment configured" | |
| msg_info "Setting up locales" | |
| pct exec "$CTID" -- bash -c "apt-get update >/dev/null" | |
| pct exec "$CTID" -- bash -c "DEBIAN_FRONTEND=noninteractive apt-get install -y locales >/dev/null" | |
| pct exec "$CTID" -- bash -c "cat > /etc/default/locale << 'EOF' | |
| LANG=en_US.UTF-8 | |
| LANGUAGE=en_US:en | |
| LC_ALL=en_US.UTF-8 | |
| EOF" | |
| pct exec "$CTID" -- bash -c "cat > /etc/locale.gen << 'EOF' | |
| en_US.UTF-8 UTF-8 | |
| EOF" | |
| pct exec "$CTID" -- bash -c "locale-gen en_US.UTF-8" | |
| pct exec "$CTID" -- bash -c "update-locale LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8" | |
| pct exec "$CTID" -- bash -c "dpkg-reconfigure --frontend=noninteractive locales" | |
| # Add locale settings to profile | |
| pct exec "$CTID" -- bash -c "cat >> /etc/profile.d/locale.sh << 'EOF' | |
| export LANG=en_US.UTF-8 | |
| export LANGUAGE=en_US:en | |
| export LC_ALL=en_US.UTF-8 | |
| EOF" | |
| pct exec "$CTID" -- bash -c "chmod +x /etc/profile.d/locale.sh" | |
| # Add locale settings to .bashrc | |
| pct exec "$CTID" -- bash -c "cat >> /root/.bashrc << 'EOF' | |
| export LANG=en_US.UTF-8 | |
| export LANGUAGE=en_US:en | |
| export LC_ALL=en_US.UTF-8 | |
| EOF" | |
| msg_ok "Locales configured" | |
| msg_info "Setting up SSH" | |
| pct exec "$CTID" -- bash -c "DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-server >/dev/null" | |
| pct exec "$CTID" -- bash -c "sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config" | |
| pct exec "$CTID" -- bash -c "systemctl enable ssh" | |
| pct exec "$CTID" -- bash -c "systemctl start ssh" | |
| msg_ok "SSH configured" | |
| msg_info "Installing Dependencies" | |
| pct exec "$CTID" -- bash -c "DEBIAN_FRONTEND=noninteractive apt-get install -y curl ca-certificates gnupg systemd systemd-sysv >/dev/null" | |
| msg_ok "Installed Dependencies" | |
| msg_info "Installing Docker" | |
| pct exec "$CTID" -- bash -c "curl -fsSL https://get.docker.com | sh" | |
| pct exec "$CTID" -- bash -c "systemctl enable docker" | |
| pct exec "$CTID" -- bash -c "systemctl start docker" | |
| # Add current user to docker group | |
| pct exec "$CTID" -- bash -c "usermod -aG docker root" | |
| msg_ok "Installed Docker" | |
| msg_info "Installing Daytona" | |
| # Create installation and setup script | |
| pct exec "$CTID" -- bash -c "cat > /root/setup-daytona.sh << 'EOF' | |
| #!/bin/bash | |
| export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin | |
| export LANG=en_US.UTF-8 | |
| export LANGUAGE=en_US:en | |
| export LC_ALL=en_US.UTF-8 | |
| # Install Daytona | |
| curl -sfL https://download.daytona.io/daytona/install.sh | bash | |
| # Create systemd service | |
| cat > /etc/systemd/system/daytona.service << 'INNEREOF' | |
| [Unit] | |
| Description=Daytona Development Environment Server | |
| After=network.target docker.service | |
| Requires=docker.service | |
| [Service] | |
| Type=simple | |
| Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin | |
| Environment=LANG=en_US.UTF-8 | |
| Environment=LANGUAGE=en_US:en | |
| Environment=LC_ALL=en_US.UTF-8 | |
| ExecStart=/usr/local/bin/daytona daemon-serve | |
| Restart=always | |
| RestartSec=10 | |
| [Install] | |
| WantedBy=multi-user.target | |
| INNEREOF | |
| # Reload systemd and enable service | |
| systemctl daemon-reload | |
| systemctl enable daytona.service | |
| systemctl start daytona.service | |
| # Wait for service to start | |
| sleep 5 | |
| EOF" | |
| # Make script executable and run it | |
| pct exec "$CTID" -- bash -c "chmod +x /root/setup-daytona.sh" | |
| pct exec "$CTID" -- bash -c "/root/setup-daytona.sh" | |
| msg_ok "Installed Daytona" | |
| # Set container description | |
| description | |
| msg_ok "Completed Successfully!\n" | |
| echo -e "\nDaytona has been installed and configured to start automatically." | |
| echo -e "\nPlease restart the container to ensure all settings are applied:" | |
| echo -e "pct restart $CTID" | |
| echo -e "\nAfter restart, you can:" | |
| echo -e "1. Connect to the container:" | |
| echo -e " pct enter $CTID" | |
| echo -e "\n2. Get container's IP address:" | |
| echo -e " pct exec $CTID -- ip addr show" | |
| echo -e "\n3. Check Daytona service status:" | |
| echo -e " pct exec $CTID -- systemctl status daytona" | |
| echo -e "\n4. Use Daytona:" | |
| echo -e " - Connect to container: pct enter $CTID" | |
| echo -e " - Start using Daytona: daytona" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment