mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
feat(swap): On hosts with less than 2G of memory, increase swap space to prevent installation failure.
This commit is contained in:
@@ -141,38 +141,41 @@ ${validatePorts()}
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
echo -e "3. Installing RClone. "
|
echo -e "3. Checking memory and configuring swap if needed. "
|
||||||
|
${checkMemoryAndSetupSwap()}
|
||||||
|
|
||||||
|
echo -e "4. Installing RClone. "
|
||||||
${installRClone()}
|
${installRClone()}
|
||||||
|
|
||||||
echo -e "4. Installing Docker. "
|
echo -e "5. Installing Docker. "
|
||||||
${installDocker()}
|
${installDocker()}
|
||||||
|
|
||||||
echo -e "5. Setting up Docker Swarm"
|
echo -e "6. Setting up Docker Swarm"
|
||||||
${setupSwarm()}
|
${setupSwarm()}
|
||||||
|
|
||||||
echo -e "6. Setting up Network"
|
echo -e "7. Setting up Network"
|
||||||
${setupNetwork()}
|
${setupNetwork()}
|
||||||
|
|
||||||
echo -e "7. Setting up Directories"
|
echo -e "8. Setting up Directories"
|
||||||
${setupMainDirectory()}
|
${setupMainDirectory()}
|
||||||
${setupDirectories()}
|
${setupDirectories()}
|
||||||
|
|
||||||
echo -e "8. Setting up Traefik"
|
echo -e "9. Setting up Traefik"
|
||||||
${createTraefikConfig()}
|
${createTraefikConfig()}
|
||||||
|
|
||||||
echo -e "9. Setting up Middlewares"
|
echo -e "10. Setting up Middlewares"
|
||||||
${createDefaultMiddlewares()}
|
${createDefaultMiddlewares()}
|
||||||
|
|
||||||
echo -e "10. Setting up Traefik Instance"
|
echo -e "11. Setting up Traefik Instance"
|
||||||
${createTraefikInstance()}
|
${createTraefikInstance()}
|
||||||
|
|
||||||
echo -e "11. Installing Nixpacks"
|
echo -e "12. Installing Nixpacks"
|
||||||
${installNixpacks()}
|
${installNixpacks()}
|
||||||
|
|
||||||
echo -e "12. Installing Buildpacks"
|
echo -e "13. Installing Buildpacks"
|
||||||
${installBuildpacks()}
|
${installBuildpacks()}
|
||||||
|
|
||||||
echo -e "13. Installing Railpack"
|
echo -e "14. Installing Railpack"
|
||||||
${installRailpack()}
|
${installRailpack()}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@@ -628,3 +631,75 @@ const installBuildpacks = () => `
|
|||||||
echo "Buildpacks version $BUILDPACKS_VERSION installed ✅"
|
echo "Buildpacks version $BUILDPACKS_VERSION installed ✅"
|
||||||
fi
|
fi
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
const checkMemoryAndSetupSwap = () => `
|
||||||
|
# Check available memory in MB
|
||||||
|
MEMORY_MB=$(free -m | awk 'NR==2{print $2}')
|
||||||
|
MEMORY_GB=$((MEMORY_MB / 1024))
|
||||||
|
|
||||||
|
echo " - Detected memory: ${MEMORY_MB}MB (${MEMORY_GB}GB)"
|
||||||
|
|
||||||
|
# If memory is less than 2GB (2048MB), setup swap
|
||||||
|
if [ "$MEMORY_MB" -lt 2048 ]; then
|
||||||
|
echo " - Memory is less than 2GB, checking swap configuration..."
|
||||||
|
|
||||||
|
# Check if swap is already enabled
|
||||||
|
SWAP_TOTAL=$(free -m | awk 'NR==3{print $2}')
|
||||||
|
|
||||||
|
if [ "$SWAP_TOTAL" -gt 0 ]; then
|
||||||
|
echo " - Swap is already enabled (${SWAP_TOTAL}MB) ✅"
|
||||||
|
else
|
||||||
|
echo " - No swap detected. Setting up swap file..."
|
||||||
|
|
||||||
|
# Calculate swap size (4GB for systems with less than 2GB RAM)
|
||||||
|
SWAP_SIZE="4G"
|
||||||
|
SWAP_FILE="/swapfile"
|
||||||
|
|
||||||
|
# Check if swap file already exists
|
||||||
|
if [ -f "$SWAP_FILE" ]; then
|
||||||
|
echo " - Swap file already exists, skipping creation"
|
||||||
|
else
|
||||||
|
# Create swap file
|
||||||
|
echo " - Creating ${SWAP_SIZE} swap file at ${SWAP_FILE}..."
|
||||||
|
|
||||||
|
# Use fallocate if available, otherwise use dd
|
||||||
|
if command -v fallocate >/dev/null 2>&1; then
|
||||||
|
fallocate -l $SWAP_SIZE $SWAP_FILE >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
dd if=/dev/zero of=$SWAP_FILE bs=1M count=4096 >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
# Set correct permissions
|
||||||
|
chmod 600 $SWAP_FILE
|
||||||
|
|
||||||
|
# Setup swap
|
||||||
|
mkswap $SWAP_FILE >/dev/null 2>&1
|
||||||
|
swapon $SWAP_FILE >/dev/null 2>&1
|
||||||
|
|
||||||
|
# Add to fstab for persistence
|
||||||
|
if ! grep -q "$SWAP_FILE" /etc/fstab; then
|
||||||
|
echo "$SWAP_FILE none swap sw 0 0" >> /etc/fstab
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verify swap is active
|
||||||
|
NEW_SWAP_TOTAL=$(free -m | awk 'NR==3{print $2}')
|
||||||
|
if [ "$NEW_SWAP_TOTAL" -gt 0 ]; then
|
||||||
|
echo " - Swap file created and activated successfully (${NEW_SWAP_TOTAL}MB) ✅"
|
||||||
|
|
||||||
|
# Optimize swappiness for server use
|
||||||
|
echo "vm.swappiness=10" >> /etc/sysctl.conf
|
||||||
|
sysctl vm.swappiness=10 >/dev/null 2>&1
|
||||||
|
echo " - Swap swappiness set to 10 for optimal server performance ✅"
|
||||||
|
else
|
||||||
|
echo " - Failed to activate swap file ❌"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " - Failed to create swap file ❌"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " - Memory is sufficient (≥2GB), swap configuration not required ✅"
|
||||||
|
fi
|
||||||
|
`;
|
||||||
|
|||||||
Reference in New Issue
Block a user