You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.0 KiB
107 lines
3.0 KiB
#!/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 ""
|
|
|