should be working gitea
This commit is contained in:
38
gitea/backup.sh
Executable file
38
gitea/backup.sh
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Note: use rclone for backup, needs manually configuration.
|
||||||
|
|
||||||
|
export XDG_RUNTIME_DIR="/run/user/$(id -u)"
|
||||||
|
export DBUS_SESSION_BUS_ADDRESS="unix:path=$XDG_RUNTIME_DIR/bus"
|
||||||
|
|
||||||
|
DATA=""
|
||||||
|
CONFIG=""
|
||||||
|
DB=""
|
||||||
|
LOCAL_BACKUP="$HOME/.local/backup"
|
||||||
|
REMOTE=""
|
||||||
|
DB_USERNAME=""
|
||||||
|
DB_PASSWORD=""
|
||||||
|
DB_DATABASE=""
|
||||||
|
CONTAINER_DB=""
|
||||||
|
SERVICE_GITEA=""
|
||||||
|
|
||||||
|
STAGING_DIR=$(mktemp -d)
|
||||||
|
mkdir -p $LOCAL_BACKUP
|
||||||
|
DATE=$(date +%F-%H-%M-%S)
|
||||||
|
BACKUP_NAME="backup_$DATE.tar.gz"
|
||||||
|
|
||||||
|
systemctl --user stop $SERVICE_GITEA
|
||||||
|
podman exec $CONTAINER_DB pg_dump -U $DB_USERNAME -F c -d $DB_DATABASE > $STAGING_DIR/db.dump
|
||||||
|
|
||||||
|
cp -r "$DATA" "$STAGING_DIR/data"
|
||||||
|
cp -r "$CONFIG" "$STAGING_DIR/config"
|
||||||
|
tar -czf "$LOCAL_BACKUP/$BACKUP_NAME" -C "$STAGING_DIR" .
|
||||||
|
|
||||||
|
ls -1t "$LOCAL_BACKUP"/backup_*.tar.gz | tail -n +6 | xargs -r rm --
|
||||||
|
|
||||||
|
|
||||||
|
/usr/bin/rclone sync $LOCAL_BACKUP $REMOTE > /dev/null
|
||||||
|
|
||||||
|
rm -rf $STAGING_DIR
|
||||||
|
|
||||||
|
systemctl --user start $SERVICE_GITEA
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
services=("$CONTAINER_PREFIX-$CONTAINER_GITEA.service"
|
services=("$CONTAINER_PREFIX-$CONTAINER_GITEA.service"
|
||||||
"$CONTAINER_PREFIX-$CONTAINER_DB.service",
|
"$CONTAINER_PREFIX-$CONTAINER_DB.service"
|
||||||
)
|
)
|
||||||
|
|
||||||
for service in "${services[@]}"; do
|
for service in "${services[@]}"; do
|
||||||
@@ -36,6 +36,7 @@ if ! podman network exists $NETWORK; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p $DATA_FOLDER
|
mkdir -p $DATA_FOLDER
|
||||||
|
mkdir -p $CONFIG_FOLDER
|
||||||
mkdir -p $DB_FOLDER
|
mkdir -p $DB_FOLDER
|
||||||
mkdir -p $USER_SYSTEMD
|
mkdir -p $USER_SYSTEMD
|
||||||
|
|
||||||
@@ -69,9 +70,13 @@ podman create \
|
|||||||
--name $CONTAINER_GITEA \
|
--name $CONTAINER_GITEA \
|
||||||
--network $NETWORK \
|
--network $NETWORK \
|
||||||
--restart=always \
|
--restart=always \
|
||||||
|
--userns=keep-id \
|
||||||
-p $PORT_WEB:3000 \
|
-p $PORT_WEB:3000 \
|
||||||
-p $PORT_SSH:22 \
|
-p $PORT_SSH:22 \
|
||||||
-v $DATA_FOLDER:/data \
|
-v $DATA_FOLDER:/var/lib/gitea \
|
||||||
|
-v $CONFIG_FOLDER:/etc/gitea \
|
||||||
|
-e USER_UID=1000 \
|
||||||
|
-e USER_GID=1000 \
|
||||||
-e GITEA__database__DB_TYPE=postgres \
|
-e GITEA__database__DB_TYPE=postgres \
|
||||||
-e GITEA__database__HOST=$HOST_DB:$PORT_DB \
|
-e GITEA__database__HOST=$HOST_DB:$PORT_DB \
|
||||||
-e GITEA__database__NAME=$DB_NAME \
|
-e GITEA__database__NAME=$DB_NAME \
|
||||||
@@ -79,7 +84,7 @@ podman create \
|
|||||||
-e GITEA__database__PASSWD=$DB_PASSWORD \
|
-e GITEA__database__PASSWD=$DB_PASSWORD \
|
||||||
-v /etc/timezone:/etc/timezone:ro \
|
-v /etc/timezone:/etc/timezone:ro \
|
||||||
-v /etc/localtime:/etc/localtime:ro \
|
-v /etc/localtime:/etc/localtime:ro \
|
||||||
docker.gitea.com/gitea:latest
|
docker.gitea.com/gitea:latest-rootless
|
||||||
|
|
||||||
podman generate systemd \
|
podman generate systemd \
|
||||||
--new \
|
--new \
|
||||||
@@ -117,7 +122,24 @@ EOF
|
|||||||
)
|
)
|
||||||
echo "$BACKEND_CFG" | sudo tee $SERVICE_DIR/backend.block > /dev/null
|
echo "$BACKEND_CFG" | sudo tee $SERVICE_DIR/backend.block > /dev/null
|
||||||
|
|
||||||
echo "Deploy completed, manually run haproxy to generate new config."
|
echo "Generate backup script"
|
||||||
|
BACKUP_FILE="gitea_backup.sh"
|
||||||
|
cp backup.sh $BACKUP_FILE
|
||||||
|
sed -i "s|^DATA=\"\"|DATA=\"$DATA_FOLDER\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^CONFIG=\"\"|CONFIG=\"$CONFIG_FOLDER\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^DB=\"\"|DB=\"$DB_FOLDER\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^DB_USERNAME=\"\"|DB_USERNAME=\"$DB_USER\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^DB_DATABASE=\"\"|DB_DATABASE=\"$DB_NAME\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^DB_PASSWORD=\"\"|DB_PASSWORD=\"$DB_PASSWORD\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^LOCAL_BACKUP=\"\$HOME/.local/backup\"|LOCAL_BACKUP=\"\$HOME/.local/backup/$CONTAINER_PREFIX\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^CONTAINER_DB=\"\"|CONTAINER_DB=\"$CONTAINER_DB\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^REMOTE=\"\"|REMOTE=\"$BACKUP_REMOTE\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^SERVICE_GITEA=\"\"|SERVICE_GITEA=\"${CONTAINER_PREFIX}-${CONTAINER_GITEA}.service\"|" "$BACKUP_FILE"
|
||||||
|
mv $BACKUP_FILE $GITEA_FOLDER
|
||||||
|
echo "Backup script generated at $GITEA_FOLDER/$BACKUP_FILE"
|
||||||
|
echo "Backup script will be run every day at 2:00 AM"
|
||||||
|
crontab -l | grep -v "$GITEA_FOLDER/$BACKUP_FILE" | crontab -
|
||||||
|
(crontab -l 2>/dev/null; echo "0 2 * * * $GITEA_FOLDER/$BACKUP_FILE") | crontab -
|
||||||
|
echo "Backup script added to crontab"
|
||||||
|
|
||||||
# on local, allow ufw port from wireguard
|
echo "Deploy completed, manually run haproxy to generate new config."
|
||||||
echo "Manually config backup remote."
|
|
||||||
|
|||||||
@@ -2,24 +2,40 @@
|
|||||||
|
|
||||||
. ./env.sh
|
. ./env.sh
|
||||||
|
|
||||||
if systemctl --user list-units --full --all | grep -q "${CONTAINER_PREFIX}-${CONTAINER_NAME}.service"; then
|
services=("$CONTAINER_PREFIX-$CONTAINER_GITEA.service"
|
||||||
systemctl --user stop ${CONTAINER_PREFIX}-${CONTAINER_NAME}.service
|
"$CONTAINER_PREFIX-$CONTAINER_DB.service"
|
||||||
fi
|
)
|
||||||
|
|
||||||
if podman container exists "$CONTAINER_NAME"; then
|
for service in "${services[@]}"; do
|
||||||
echo "Stop and delete existing container $CONTAINER_NAME"
|
if systemctl --user list-units --full --all | grep -q "$service"; then
|
||||||
if podman inspect -f '{{.State.Running}}' "$CONTAINER_NAME" | grep -q true; then
|
echo "Stopping $service..."
|
||||||
podman stop "$CONTAINER_NAME"
|
systemctl --user stop $service
|
||||||
|
echo "$service stopped."
|
||||||
fi
|
fi
|
||||||
podman rm "$CONTAINER_NAME"
|
done
|
||||||
|
|
||||||
|
containers=(
|
||||||
|
"$CONTAINER_GITEA"
|
||||||
|
"$CONTAINER_DB"
|
||||||
|
)
|
||||||
|
|
||||||
|
for container in "${containers[@]}"; do
|
||||||
|
if podman container exists "$container"; then
|
||||||
|
echo "Stop and delete existing container $container"
|
||||||
|
if podman inspect -f '{{.State.Running}}' "$container" | grep -q true; then
|
||||||
|
podman stop "$container"
|
||||||
fi
|
fi
|
||||||
|
podman rm "$container"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
systemctl --user disable --now ${CONTAINER_PREFIX}-$CONTAINER_NAME.service
|
for service in "${services[@]}"; do
|
||||||
rm $USER_SYSTEMD/${CONTAINER_PREFIX}-$CONTAINER_NAME.service
|
systemctl --user disable --now $service
|
||||||
systemctl --user daemon-reload
|
rm $USER_SYSTEMD/$service
|
||||||
|
done
|
||||||
|
|
||||||
# sudo rm -r $SERVICE_DIR
|
sudo rm -r $SERVICE_DIR
|
||||||
# crontab -l | grep -v "$VW_FOLDER/$BACKUP_FILE" | crontab -
|
crontab -l | grep -v "$GITEA_FOLDER/$BACKUP_FILE" | crontab -
|
||||||
|
|
||||||
echo "Uninstall complete. Manually run haproxy config to rebuild config. Manually remove data directory
|
echo "Uninstall complete. Manually run haproxy config to rebuild config. Manually remove data directory
|
||||||
- $GITEA_FOLDER
|
- $GITEA_FOLDER
|
||||||
|
|||||||
Reference in New Issue
Block a user