diff --git a/README.md b/README.md index a0bf7ba..761e86f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,124 @@ -# gitea-backup +عالیه! اینم یه فایل `README.md` کامل برای پروژه‌ی بکاپ Gitea با Docker و ارسال پیامک با IPPanel. این فایل شامل: -اسکریپت بکاپ خودکار از Gitea و آپلود به FTP \ No newline at end of file +* توضیح پروژه +* نیازمندی‌ها +* نحوه‌ی نصب و اجرا +* تنظیمات کرون +* بخش ارسال پیامک +* اطلاعات تماس برای دریافت پنل SMS + +--- + +````markdown +# Gitea Backup Script (Docker + FTP + SMS Notification) + +پروژه‌ای برای بکاپ‌گیری خودکار از Gitea نصب‌شده با Docker، انتقال فایل به سرور دوم از طریق FTP و ارسال پیامک وضعیت بکاپ با استفاده از پنل SMS IPPanel. + +--- + +## 📦 نیازمندی‌ها + +- سیستم‌عامل لینوکسی (Ubuntu ترجیحاً) +- نصب `docker` و `docker-compose` (برای اجرای Gitea) +- اکانت FTP برای انتقال بکاپ +- پنل IPPanel برای ارسال پیامک (اختیاری ولی توصیه‌شده) +- curl، tar، gzip + +--- + +## ⚙️ تنظیمات اولیه + +۱. فایل `gitea_backup.sh` را ویرایش کرده و مقادیر زیر را به نیاز خود تنظیم کنید: + +```bash +FTP_HOST="ftp.example.com" +FTP_USER="ftpuser" +FTP_PASS="ftppassword" +FTP_DIR="/backups/gitea" + +PHONE="+98912xxxxxxx" # شماره مقصد پیامک +API_KEY="your_ippanel_api_key" # کلید API پیامک +SENDER="+983000505" # خط ارسال پیامک (از IPPanel) +```` + +--- + +## 🚀 اجرای دستی + +برای اجرای دستی اسکریپت: + +```bash +chmod +x gitea_backup.sh +./gitea_backup.sh +``` + +اسکریپت موارد زیر را انجام می‌دهد: + +* ایجاد فایل بکاپ از `/data` کانتینر Gitea +* انتقال فایل به FTP +* ارسال پیامک نتیجه موفق یا ناموفق بودن + +--- + +## ⏰ اجرای خودکار با Cron + +برای تنظیم بکاپ روزانه، ابتدا ابزار cron را نصب کن: + +```bash +apt install cron -y +``` + +سپس کرون‌جاب را اضافه کن: + +```bash +crontab -e +``` + +و این خط را اضافه کن (مثلاً ساعت ۲ بامداد هر شب): + +```bash +0 2 * * * /root/Git/gitea-backup/gitea_backup.sh >> /var/log/gitea_backup.log 2>&1 +``` + +--- + +## 📲 ارسال پیامک با IPPanel + +در صورت موفق یا ناموفق بودن عملیات، اسکریپت یک پیامک با محتوای وضعیت ارسال می‌کند. + +### مثال محتوای پیامک موفق: + +``` +✅ Gitea Backup Success - 2025-05-30 02:00 +``` + +### مثال محتوای پیامک ناموفق: + +``` +❌ Gitea Backup Failed - Could not upload to FTP +``` + +> برای استفاده از IPPanel نیاز به API Key معتبر دارید. + +--- + +## 📞 دریافت پنل پیامکی IPPanel + +اگر پنل پیامکی نیاز دارید، تماس بگیرید: + +* **📱 09303063007** + (تأمین پنل رسمی IPPanel با دسترسی به خطوط خدماتی) + +--- + +## 👨‍💻 توسعه‌دهنده + +با همکاری GPT و تیم حفظ +🔗 [https://git.hefzteam.ir](https://git.hefzteam.ir) + +``` + +--- + +بگو اگه بخوای این رو مستقیم توی پروژه‌ت کامیت کنیم، یا بخش دیگه‌ای هم اضافه کنیم مثل restore یا encryption. +``` diff --git a/gitea_backup.sh b/gitea_backup.sh index fee5c5f..82e7f10 100644 --- a/gitea_backup.sh +++ b/gitea_backup.sh @@ -1,8 +1,8 @@ #!/bin/bash -DATE=$(date +"%Y-%m-%d_%H-%M") -BACKUP_NAME="gitea_backup_$DATE.tar.gz" -BACKUP_TMP="/tmp/$BACKUP_NAME" +DATE=$(date +"%Y-%m-%d_%H-%M") #به دست اوردن تاریخ و زمان حال +BACKUP_NAME="gitea_backup_$DATE.tar.gz" #نام فایل بکاپ +BACKUP_TMP="/tmp/$BACKUP_NAME" #محل ذخیره سازی موقت فایل بکاپ echo "[INFO] Creating backup from Docker container..." docker exec gitea tar -czf - /data > "$BACKUP_TMP" @@ -10,11 +10,11 @@ if [ $? -ne 0 ]; then echo "[ERROR] Failed to create backup!" exit 1 fi - -FTP_HOST="ftp.example.com" -FTP_USER="your_ftp_user" -FTP_PASS="your_ftp_pass" -FTP_DIR="/backups/gitea" +#بخش کافیگ ftp +FTP_HOST="ftp.example.com" #آدرس سرور ftp +FTP_USER="your_ftp_user" #نام کاربری اکانت ftp +FTP_PASS="your_ftp_pass" #رمز اکانت ftp +FTP_DIR="/backups/gitea" #آدرس محل ذخیره سازی echo "[INFO] Uploading backup to FTP server..." curl -T "$BACKUP_TMP" --user "$FTP_USER:$FTP_PASS" "ftp://$FTP_HOST$FTP_DIR/$BACKUP_NAME" @@ -27,3 +27,22 @@ echo "[INFO] Cleaning up..." rm -f "$BACKUP_TMP" echo "[SUCCESS] Backup completed successfully at $DATE." + +# بررسی وضعیت آخرین دستور (آپلود بکاپ) +if [ $? -eq 0 ]; then + message="✅ بکاپ Gitea با موفقیت در تاریخ ${backup_time} انجام شد." +else + message="❌ بکاپ Gitea با خطا مواجه شد در تاریخ ${backup_time} . لطفاً بررسی شود!" +fi + +# ارسال پیامک از طریق API +echo "[INFO] Sending SMS notification..." +curl --silent --location 'https://api2.ippanel.com/api/v1/sms/send/webservice/single' \ + --header 'accept: application/json' \ + --header 'apikey: OWYwOWE0MGQtMDdjNS00MjVlLWE2ZWMtYjRiZWZlMjhhOGNkYzY1MDFiMGFkNmUxYjEyYTMyMjY5NDQzMzU1YWYzN2M=' \ + --header 'Content-Type: application/json' \ + --data "{ + \"recipient\": [\"+989303063007\"], + \"sender\": \"+983000505\", + \"message\": \"${message}\" + }" \ No newline at end of file