Files
gitea-mirror/scripts
Arunavo Ray abe3113755 feat: enhance job resilience with new database schema and recovery mechanisms
- Added new fields to the mirror_jobs table for job resilience, including job_type, batch_id, total_items, completed_items, item_ids, completed_item_ids, in_progress, started_at, completed_at, and last_checkpoint.
- Implemented database migration scripts to update the mirror_jobs table schema.
- Introduced processWithResilience utility for handling item processing with checkpointing and recovery capabilities.
- Updated API routes for mirroring organizations and repositories to utilize the new resilience features.
- Created recovery system to detect and resume interrupted jobs on application startup.
- Added middleware to initialize the recovery system when the server starts.
2025-05-22 14:33:03 +05:30
..
2025-05-18 09:31:23 +05:30

Scripts Directory

This folder contains utility scripts for database management, event management, Docker builds, and LXC container deployment.

Database Management

Database Management Tool (manage-db.ts)

This is a consolidated database management tool that handles all database-related operations. It combines the functionality of the previous separate scripts into a single, more intelligent script that can check, fix, and initialize the database as needed.

Features

  • Check Mode: Validates the existence and integrity of the database
  • Init Mode: Creates the database only if it doesn't already exist
  • Fix Mode: Corrects database file location issues
  • Reset Users Mode: Removes all users and their data
  • Auto Mode: Automatically checks, fixes, and initializes the database if needed

Running the Database Management Tool

You can execute the database management tool using your package manager with various commands:

# Checks database status (default action if no command is specified)
bun run manage-db

# Check database status
bun run check-db

# Initialize the database (only if it doesn't exist)
bun run init-db

# Fix database location issues
bun run fix-db

# Automatic check, fix, and initialize if needed
bun run db-auto

# Reset all users (for testing signup flow)
bun run reset-users

# Remove database files completely
bun run cleanup-db

# Complete setup (install dependencies and initialize database)
bun run setup

# Start development server with a fresh database
bun run dev:clean

# Start production server with a fresh database
bun run start:fresh

Database File Location

The database file should be located in the ./data/gitea-mirror.db directory. If the file is found in the root directory, the fix mode will move it to the correct location.

Event Management

The following scripts help manage events in the SQLite database:

Event Inspection (check-events.ts)

Displays all events currently stored in the database.

bun scripts/check-events.ts

Event Cleanup (cleanup-events.ts)

Removes old events from the database to prevent it from growing too large.

# Remove events older than 7 days (default)
bun scripts/cleanup-events.ts

# Remove events older than X days
bun scripts/cleanup-events.ts 14

This script can be scheduled to run periodically (e.g., daily) using cron or another scheduler.

Mark Events as Read (mark-events-read.ts)

Marks all unread events as read.

bun scripts/mark-events-read.ts

Make Events Appear Older (make-events-old.ts)

For testing purposes, this script modifies event timestamps to make them appear older.

bun scripts/make-events-old.ts

Deployment Scripts

Docker Deployment

  • build-docker.sh: Builds the Docker image for the application
  • docker-diagnostics.sh: Provides diagnostic information for Docker deployments

LXC Container Deployment

Two scripts are provided for deploying Gitea Mirror in LXC containers:

  1. gitea-mirror-lxc-proxmox.sh: For online deployment on a Proxmox VE host

    • Pulls everything from GitHub
    • Creates a privileged container with the application
    • Sets up systemd service
  2. gitea-mirror-lxc-local.sh: For offline/LAN-only deployment on a developer laptop

    • Pushes your local checkout + Bun ZIP to the container
    • Useful for testing without internet access

For detailed instructions on LXC deployment, see README-lxc.md.