Files
next.orly.dev/scripts/gitea-ssh-setup.sh
2025-11-21 22:40:03 +00:00

108 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Gitea SSH Configuration Script
# Configures Gitea to use the system SSH server on port 22
GITEA_BASE_DIR="/home/mleku/gitea"
GITEA_USER="mleku"
SSH_DIR="/home/${GITEA_USER}/.ssh"
# Colors
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${GREEN}=== Gitea SSH Configuration Script ===${NC}"
echo "Configuring Gitea to use system SSH on port 22"
echo ""
# Check if running as the correct user
if [ "$(whoami)" != "$GITEA_USER" ]; then
echo -e "${RED}Error: This script must be run as user '${GITEA_USER}'${NC}"
echo "Run: sudo -u ${GITEA_USER} $0"
exit 1
fi
# Ensure SSH directory exists
echo -e "${YELLOW}Setting up SSH directory...${NC}"
mkdir -p "${SSH_DIR}"
chmod 700 "${SSH_DIR}"
# Create SSH key if it doesn't exist
if [ ! -f "${SSH_DIR}/id_ed25519" ]; then
echo -e "${YELLOW}Generating SSH key for Gitea...${NC}"
ssh-keygen -t ed25519 -C "gitea@$(hostname)" -f "${SSH_DIR}/id_ed25519" -N ""
echo -e "${GREEN}✓ SSH key generated${NC}"
else
echo -e "${GREEN}✓ SSH key already exists${NC}"
fi
# Update Gitea configuration
echo -e "${YELLOW}Updating Gitea configuration...${NC}"
GITEA_CONFIG="${GITEA_BASE_DIR}/custom/conf/app.ini"
if [ ! -f "$GITEA_CONFIG" ]; then
echo -e "${RED}Error: Gitea configuration not found at ${GITEA_CONFIG}${NC}"
exit 1
fi
# Backup existing config
cp "${GITEA_CONFIG}" "${GITEA_CONFIG}.backup.$(date +%Y%m%d_%H%M%S)"
# Update SSH settings in app.ini
# We'll use sed to update or add the SSH settings
if grep -q "^\[server\]" "$GITEA_CONFIG"; then
# Section exists, update settings
sed -i '/^\[server\]/,/^\[/ {
/^DISABLE_SSH/d
/^SSH_DOMAIN/d
/^SSH_PORT/d
/^SSH_LISTEN_HOST/d
/^SSH_LISTEN_PORT/d
/^START_SSH_SERVER/d
}' "$GITEA_CONFIG"
# Add updated settings after [server] section
sed -i '/^\[server\]/a\
START_SSH_SERVER = false\
SSH_DOMAIN = localhost\
SSH_PORT = 22\
DISABLE_SSH = false' "$GITEA_CONFIG"
else
echo -e "${RED}Error: [server] section not found in config${NC}"
exit 1
fi
echo -e "${GREEN}✓ Gitea configuration updated${NC}"
# Print next steps
echo ""
echo -e "${GREEN}=== Configuration Complete ===${NC}"
echo ""
echo "Gitea has been configured to use system SSH on port 22."
echo ""
echo -e "${YELLOW}Next Steps:${NC}"
echo ""
echo "1. Restart Gitea to apply changes:"
echo " sudo systemctl restart gitea"
echo ""
echo "2. Add your SSH public key to Gitea:"
echo " - Log in to Gitea web interface"
echo " - Go to Settings → SSH/GPG Keys"
echo " - Click 'Add Key'"
echo " - Paste your public key (from ~/.ssh/id_ed25519.pub or id_rsa.pub)"
echo ""
echo "3. Test SSH access:"
echo " ssh -T git@localhost -p 22"
echo " (You should see: 'Hi there! You've successfully authenticated...')"
echo ""
echo "4. Clone repositories using SSH:"
echo " git clone git@your-server:mleku/repo-name.git"
echo ""
echo -e "${BLUE}Configuration backup saved to:${NC}"
echo " ${GITEA_CONFIG}.backup.$(date +%Y%m%d_%H%M%S)"
echo ""