افزودن قابلیت ارسال پیامک در صورت موفق یا ناموفق بودن بکاپ + به‌روزرسانی README

feat: add SMS notification via IPPanel and update README

- Integrated SMS notifications for backup success/failure
- Uses IPPanel API for message delivery
- Updated README with setup guide, cronjob, and contact info
This commit is contained in:
رسول محمدی خانقاه 2025-05-31 00:32:02 +03:30
parent 0d1fa94a5f
commit 0f5d8c295c
2 changed files with 150 additions and 10 deletions

125
README.md
View File

@ -1,3 +1,124 @@
# gitea-backup عالیه! اینم یه فایل `README.md` کامل برای پروژه‌ی بکاپ Gitea با Docker و ارسال پیامک با IPPanel. این فایل شامل:
اسکریپت بکاپ خودکار از Gitea و آپلود به FTP * توضیح پروژه
* نیازمندی‌ها
* نحوه‌ی نصب و اجرا
* تنظیمات کرون
* بخش ارسال پیامک
* اطلاعات تماس برای دریافت پنل 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.
```

View File

@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
DATE=$(date +"%Y-%m-%d_%H-%M") DATE=$(date +"%Y-%m-%d_%H-%M") #به دست اوردن تاریخ و زمان حال
BACKUP_NAME="gitea_backup_$DATE.tar.gz" BACKUP_NAME="gitea_backup_$DATE.tar.gz" #نام فایل بکاپ
BACKUP_TMP="/tmp/$BACKUP_NAME" BACKUP_TMP="/tmp/$BACKUP_NAME" #محل ذخیره سازی موقت فایل بکاپ
echo "[INFO] Creating backup from Docker container..." echo "[INFO] Creating backup from Docker container..."
docker exec gitea tar -czf - /data > "$BACKUP_TMP" docker exec gitea tar -czf - /data > "$BACKUP_TMP"
@ -10,11 +10,11 @@ if [ $? -ne 0 ]; then
echo "[ERROR] Failed to create backup!" echo "[ERROR] Failed to create backup!"
exit 1 exit 1
fi fi
#بخش کافیگ ftp
FTP_HOST="ftp.example.com" FTP_HOST="ftp.example.com" #آدرس سرور ftp
FTP_USER="your_ftp_user" FTP_USER="your_ftp_user" #نام کاربری اکانت ftp
FTP_PASS="your_ftp_pass" FTP_PASS="your_ftp_pass" #رمز اکانت ftp
FTP_DIR="/backups/gitea" FTP_DIR="/backups/gitea" #آدرس محل ذخیره سازی
echo "[INFO] Uploading backup to FTP server..." echo "[INFO] Uploading backup to FTP server..."
curl -T "$BACKUP_TMP" --user "$FTP_USER:$FTP_PASS" "ftp://$FTP_HOST$FTP_DIR/$BACKUP_NAME" 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" rm -f "$BACKUP_TMP"
echo "[SUCCESS] Backup completed successfully at $DATE." 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}\"
}"