59 lines
1.5 KiB
Bash
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."
|