Skip to content

Instantly share code, notes, and snippets.

@nibzard
Last active December 17, 2024 21:38
Show Gist options
  • Save nibzard/b6c10db7078c4f45320be3cc47f7183f to your computer and use it in GitHub Desktop.
Save nibzard/b6c10db7078c4f45320be3cc47f7183f to your computer and use it in GitHub Desktop.
#!/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