sawa-control-panel/backend/recipes/forgejo/install.sh

59 lines
1.5 KiB
Bash

#!/bin/sh
set -e
# Forgejo installation helper for Sawa Panel
# Context: Runs inside /opt/forgejo via sh as root
echo "Configuring Forgejo environment..."
# 1. Create forgejo system user if it doesn't exist
# Handle Alpine BusyBox compatibility (fails silently if exists)
if ! id "forgejo" >/dev/null 2>&1; then
echo "Creating forgejo system user..."
adduser -S -D -H -h /opt/forgejo -s /sbin/nologin forgejo || true
fi
# 2. Setup directory structure for custom config and data
mkdir -p data custom/conf
# 3. Generate initial app.ini
SECRET_KEY=$(head -c 32 /dev/urandom | base64)
echo "Writing app.ini configuration..."
cat <<EOF > custom/conf/app.ini
APP_NAME = Sawa Forgejo
RUN_MODE = prod
RUN_USER = forgejo
[repository]
ROOT = /opt/forgejo/data/forgejo-repositories
[database]
DB_TYPE = postgres
HOST = 127.0.0.1:5432
NAME = forgejo
USER = forgejo
PASSWD = $SAWA_DB_PASSWORD
SSL_MODE = disable
[server]
SSH_DOMAIN = ${SAWA_DOMAIN:-git.home1.local}
HTTP_PORT = 3000
ROOT_URL = https://${SAWA_DOMAIN:-git.home1.local}/
DISABLE_SSH = false
SSH_PORT = 22
OFFLINE_MODE = false
APP_DATA_PATH = /opt/forgejo/data
[security]
INSTALL_LOCK = true
SECRET_KEY = $SECRET_KEY
[service]
DISABLE_REGISTRATION = false
EOF
# 4. Correct ownership so forgejo user can write to its own directories
FORGEJO_GROUP=$(id -gn forgejo 2>/dev/null || echo nogroup)
chown -R forgejo:$FORGEJO_GROUP .
echo "Forgejo installation script completed successfully."