gitea/deploy

71 lines
2.9 KiB
Bash
Executable File

#!/bin/sh
# SuperNETs Gitea Helper Script - developed by acidvegas (https://git.acid.vegas)
# Tranfser your Gitea backup file prior to using this script.
# Backup your previous instance with: gitea dump -c /etc/gitea/app.ini
setup_system() {
adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
}
setup_postgres() {
apt-get install -y postgresql postgresql-client
# Create a new role
su -c "psql -c \"CREATE ROLE git WITH LOGIN PASSWORD 'CHANGEME';\"" postgres
# Create a new database
su -c "psql -c \"CREATE DATABASE gitdb WITH OWNER git TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';\"" postgres
printf "\n\nlocal gitdb git scram-sha-256\n" >> /etc/postgresql/*/main/pg_hba.conf
systemctl restart postgresql && systemctl enable postgresql
}
setup_gitea() {
apt-get install -y git unzip
# Grab the latest Gitea binary
wget -O /usr/local/bin/gitea https://dl.gitea.com/gitea/1.21.4/gitea-1.21.4-linux-amd64 && chmod +x /usr/local/bin/gitea
# Setup the Gitea directories
mkdir -p /etc/gitea /var/lib/gitea/custom/assets /var/lib/gitea/data /var/lib/gitea/log
# Extract the backup file
unzip gitea-dump-*.zip
cd gitea-dump-*
mv app.ini /etc/gitea/
mv data /var/lib/gitea/data
mv log /var/lib/gitea/log
mv repos /var/lib/gitea/data/gitea-repositories
mv custom /var/lib/gitea/custom
psql -U git -d gitdb < gitea-db.sql # Might have to double check this
# Set permissions
chown root:git /etc/gitea
chmod 750 /etc/gitea
chmod 640 /etc/gitea/app.ini
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
# Grab completions and service file
wget -O /usr/share/bash-completion/completions/gitea https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete
wget -O /etc/systemd/system/gitea.service https://raw.githubusercontent.com/go-gitea/gitea/release/v1.21/contrib/systemd/gitea.service
# LET ER RIP !!
systemctl enable gitea && systemctl start gitea
}
setup_nginx_proxy() {
apt-get install -y certbot
certbot certonly --standalone -d git.supernets.org -m admin@supernets.org
echo -e "[Unit]\nDescription=cerbot renewal\n\n[Service]\nType=oneshot\nExecStart=/usr/bin/certbot renew -n --quiet --agree-tos --deploy-hook systemctl restart nginx" > /etc/systemd/system/certbot.service
echo -e "[Unit]\nDescription=cerbot renewal timer\n\n[Timer]\nOnCalendar=0/12:00:00\nRandomizedDelaySec=1h\nPersistent=true\n\n[Install]\nWantedBy=timers.target" > /etc/systemd/system/certbot.timer
systemctl enable certbot.timer && systemctl start certbot.timer
apt-get install -y nginx
wget -O /etc/nginx/sites-enabled/git.supernets.org https://raw.githubusercontent.com/supernets/gitea/main/nginx.conf
systemctl restart nginx && systemctl enable nginx
}