diff --git a/.cspell/custom-dictionary-workspace.txt b/.cspell/custom-dictionary-workspace.txt index 87cf0ea..92bb2dd 100644 --- a/.cspell/custom-dictionary-workspace.txt +++ b/.cspell/custom-dictionary-workspace.txt @@ -35,6 +35,7 @@ OVERWRITEWEBROOT PGDATA pgvector rcode +restic SAMEORIGIN traefik USEPATH diff --git a/bin/backup b/bin/backup deleted file mode 100755 index 217a9e7..0000000 --- a/bin/backup +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# Simple backup script for your personal cloud -# This is a placeholder for future implementation - -SCRIPT_PATH="$(realpath "${BASH_SOURCE[0]}")" -SCRIPT_DIR="$(dirname "$SCRIPT_PATH")" -cd "$SCRIPT_DIR" -if [[ -f "../load-env.sh" ]]; then - source ../load-env.sh -fi - -BACKUP_DIR="${PROJECT_DIR}/backups/$(date +%Y-%m-%d)" -mkdir -p "$BACKUP_DIR" - -# Back up Kubernetes resources -kubectl get all -A -o yaml > "$BACKUP_DIR/all-resources.yaml" -kubectl get secrets -A -o yaml > "$BACKUP_DIR/secrets.yaml" -kubectl get configmaps -A -o yaml > "$BACKUP_DIR/configmaps.yaml" - -# Back up persistent volumes -# TODO: Add logic to back up persistent volume data - -echo "Backup completed: $BACKUP_DIR" diff --git a/bin/generate-config b/bin/generate-config deleted file mode 100755 index 6aa7775..0000000 --- a/bin/generate-config +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env bash -# This script generates config.env and secrets.env files for an app -# by evaluating variables in the app's .env file and splitting them -# into regular config and secret variables based on the "# Secrets" marker -# -# Usage: bin/generate-config [app-name] - -set -e - -# Source environment variables from load-env.sh -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_DIR="$(dirname "$SCRIPT_DIR")" -if [ -f "$REPO_DIR/load-env.sh" ]; then - source "$REPO_DIR/load-env.sh" -fi - -# Function to process a single app -process_app() { - local APP_NAME="$1" - local APP_DIR="$APPS_DIR/$APP_NAME" - local ENV_FILE="$APP_DIR/config/.env" - local CONFIG_FILE="$APP_DIR/config/config.env" - local SECRETS_FILE="$APP_DIR/config/secrets.env" - - # Check if the app exists - if [ ! -d "$APP_DIR" ]; then - echo "Error: App '$APP_NAME' not found" - return 1 - fi - - # Check if the .env file exists - if [ ! -f "$ENV_FILE" ]; then - echo "Warning: Environment file not found: $ENV_FILE" - return 0 - fi - - # Process the .env file - echo "Generating config files for $APP_NAME..." - - # Create temporary files for processed content - local TMP_FILE="$APP_DIR/config/processed.env" - - # Process the file with envsubst to expand variables - envsubst < "$ENV_FILE" > $TMP_FILE - - # Initialize header for output files - echo "# Generated by \`generate-config\` on $(date)" > "$CONFIG_FILE" - echo "# Generated by \`generate-config\` on $(date)" > "$SECRETS_FILE" - - # Find the line number of the "# Secrets" marker - local SECRETS_LINE=$(grep -n "^# Secrets" $TMP_FILE | cut -d':' -f1) - - if [ -n "$SECRETS_LINE" ]; then - # Extract non-comment lines with "=" before the "# Secrets" marker - head -n $((SECRETS_LINE - 1)) $TMP_FILE | grep -v "^#" | grep "=" >> "$CONFIG_FILE" - - # Extract non-comment lines with "=" after the "# Secrets" marker - tail -n +$((SECRETS_LINE + 1)) $TMP_FILE | grep -v "^#" | grep "=" >> "$SECRETS_FILE" - else - # No secrets marker found, put everything in config - grep -v "^#" $TMP_FILE | grep "=" >> "$CONFIG_FILE" - fi - - # Clean up - rm -f "$TMP_FILE" - - echo "Generated:" - echo " - $CONFIG_FILE" - echo " - $SECRETS_FILE" -} - -# Process all apps or specific app -if [ $# -lt 1 ]; then - # No app name provided - process all apps - for app_dir in "$APPS_DIR"/*; do - if [ -d "$app_dir" ]; then - APP_NAME="$(basename "$app_dir")" - process_app "$APP_NAME" - fi - done - exit 0 -fi - -APP_NAME="$1" -process_app "$APP_NAME" \ No newline at end of file diff --git a/bin/install-ca-ubuntu b/bin/install-ca-ubuntu deleted file mode 100755 index 94b40a6..0000000 --- a/bin/install-ca-ubuntu +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash - -# This script installs the local CA certificate on Ubuntu systems to avoid -# certificate warnings in browsers when accessing internal cloud services. - -# Set up error handling -set -e - -# Define colors for better readability -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -RED='\033[0;31m' -NC='\033[0m' # No Color - -CA_DIR="/home/payne/repos/cloud.payne.io-setup/ca" -CA_FILE="$CA_DIR/ca.crt" -TARGET_DIR="/usr/local/share/ca-certificates" -TARGET_FILE="cloud-payne-local-ca.crt" - -echo -e "${BLUE}=== Installing Local CA Certificate on Ubuntu ===${NC}" -echo - -# Check if CA file exists -if [ ! -f "$CA_FILE" ]; then - echo -e "${RED}CA certificate not found at $CA_FILE${NC}" - echo -e "${YELLOW}Please run the create-local-ca script first:${NC}" - echo -e "${BLUE}./bin/create-local-ca${NC}" - exit 1 -fi - -# Copy to the system certificate directory -echo -e "${YELLOW}Copying CA certificate to $TARGET_DIR/$TARGET_FILE...${NC}" -sudo cp "$CA_FILE" "$TARGET_DIR/$TARGET_FILE" - -# Update the CA certificates -echo -e "${YELLOW}Updating system CA certificates...${NC}" -sudo update-ca-certificates - -# Update browsers' CA store (optional, for Firefox) -if [ -d "$HOME/.mozilla" ]; then - echo -e "${YELLOW}You may need to manually import the certificate in Firefox:${NC}" - echo -e "1. Open Firefox" - echo -e "2. Go to Preferences > Privacy & Security > Certificates" - echo -e "3. Click 'View Certificates' > 'Authorities' tab" - echo -e "4. Click 'Import' and select $CA_FILE" - echo -e "5. Check 'Trust this CA to identify websites' and click OK" -fi - -# Check popular browsers -if command -v google-chrome &> /dev/null; then - echo -e "${YELLOW}For Chrome, the system-wide certificate should now be recognized${NC}" - echo -e "${YELLOW}You may need to restart the browser${NC}" -fi - -echo -echo -e "${GREEN}=== CA Certificate Installation Complete ===${NC}" -echo -echo -e "${YELLOW}System-wide CA certificate has been installed.${NC}" -echo -e "${YELLOW}You should now be able to access the Kubernetes Dashboard without certificate warnings:${NC}" -echo -e "${BLUE}https://kubernetes-dashboard.in.cloud.payne.io${NC}" -echo -echo -e "${YELLOW}If you still see certificate warnings, try:${NC}" -echo "1. Restart your browser" -echo "2. Clear your browser's cache and cookies" -echo "3. If using a non-standard browser, you may need to import the certificate manually" -echo \ No newline at end of file diff --git a/env.sh b/env.sh index 60a3900..0130a18 100644 --- a/env.sh +++ b/env.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Set the WC_HOME environment variable to this script's directory. +# Set the WC_ROOT environment variable to this script's directory. # This variable is used consistently across the Wild Config scripts. export WC_ROOT="$(cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" && pwd)" diff --git a/bin/netdebug b/scripts/netdebug similarity index 100% rename from bin/netdebug rename to scripts/netdebug diff --git a/bin/push-container b/scripts/push-container similarity index 100% rename from bin/push-container rename to scripts/push-container diff --git a/scripts/setup-utils.sh b/scripts/setup-utils.sh index 7ae2863..6c811cf 100755 --- a/scripts/setup-utils.sh +++ b/scripts/setup-utils.sh @@ -1,9 +1,4 @@ #!/bin/bash -set -e - -SCRIPT_PATH="$(realpath "${BASH_SOURCE[0]}")" -SCRIPT_DIR="$(dirname "$SCRIPT_PATH")" -cd "$SCRIPT_DIR" # Install gomplate if command -v gomplate &> /dev/null; then @@ -35,3 +30,12 @@ else rm yq.1 echo "yq installed successfully." fi + +## Install restic +if command -v restic &> /dev/null; then + echo "restic is already installed." +else + sudo apt-get update + sudo apt-get install -y restic + echo "restic installed successfully." +fi