صدای شاعر · نسخهٔ داخلی ۲.۰.۱
راهاندازی روی سرور شما
سرور Django و PostgreSQL و اپلیکیشن اندروید برای نشانی زیر آماده شدهاند.
۱. آمادهسازی سرور
سیستمعامل پیشنهادی Ubuntu Server 24.04 LTS است. برای شروع، ۲ هستهٔ پردازنده، ۴ گیگابایت RAM و ۸۰ گیگابایت SSD در نظر بگیرید؛ ظرفیت نهایی به حجم عکسها و صداها و تعداد کاربران بستگی دارد و آزمون بار انجام نشده است.
- IP ثابت خود سرور باید 192.168.100.127 باشد.
- پورت TCP 8084 در فایروال شبکه و سرور برای دستگاههای مجاز قابل دسترسی باشد. نصاب قوانین فایروال شما را تغییر نمیدهد.
- نصب اولیه به اینترنت برای دریافت Docker، بستههای سیستم و تصاویر کانتینر نیاز دارد. گواهی داخلی به دامنه یا تأیید اینترنتی نیاز ندارد.
- گوشی خواننده به همان شبکه، یا VPN با مسیر به این شبکه، متصل باشد. اینترنت سیمکارت بهتنهایی به این IP خصوصی دسترسی نمیدهد.
۲. نصب سرور
ZIP سرور را روی سرور استخراج کنید، وارد پوشهٔ PoetVoice/server شوید و فرمان زیر را اجرا کنید:
sudo bash install-lan.sh
نصاب Docker و Compose را در صورت نیاز نصب میکند، پایگاه و کلیدهای اختصاصی را میسازد، جدولها را ایجاد میکند، حساب مدیر را ثبت میکند و HTTPS روی پورت 8084 را بالا میآورد. در پایان، سلامت اتصال HTTPS را با گواهی همین بسته بررسی میکند.
این فرمان باید روی دستگاهی اجرا شود که IP تعیینشده را دارد؛ در دستگاه دیگری با پیام روشن متوقف میشود. نام پروژهٔ Docker همان poetvoice-v2 است تا دادهٔ PostgreSQL نسخهٔ ۲ حفظ شود.
۳. ورود به مدیریت
| نشانی پنل | https://192.168.100.127:8084/admin |
|---|---|
| نام کاربری | admin |
| رمز اولیهٔ انتخابشده توسط شما | 1qazxsw2 |
نصاب رمز را بهصورت هش در پایگاه ثبت میکند. نصب مجدد رمز را بازنشانی نمیکند. اگر سرور نسخهٔ ۲ قبلاً حسابی به نام admin دارد، نخستین نصب این تنظیمات، همان حساب را مطابق درخواست مالک فعال و رمز آن را تنظیم میکند؛ پس از آن تغییرات بعدی رمز حفظ میشوند.
این رمز فقط متعلق به مدیریت وب است؛ حساب خواننده در اپلیکیشن جدا ساخته میشود و با کد کتاب فعال میشود. رمز مدیر داخل APK قرار ندارد. محدودیت ۱۲ نویسه برای حسابهای تازهٔ خوانندگان و مدیران عادی همچنان برقرار است؛ رمز اولیهٔ این نصب مطابق درخواست شما است.
۴. اعتماد مرورگر به HTTPS داخلی
فایل عمومی server/lan/PoetVoice-LAN-CA.crt را از ZIP بردارید و فقط روی رایانه یا گوشی مورد استفاده برای مدیریت وب، در بخش گواهیهای ریشهٔ مورد اعتماد نصب کنید. سپس مرورگر را ببندید و دوباره باز کنید.
- در ویندوز، فایل را باز کنید و با گزینهٔ Install Certificate آن را در Trusted Root Certification Authorities وارد کنید؛ مدیر سیستم میتواند این کار را برای رایانهٔ مدیریت انجام دهد.
- در Firefox، اگر گواهی سیستم شناخته نشد، از تنظیمات گواهیها، بخش Authorities، همین فایل را برای شناسایی وبسایتها وارد کنید.
- در macOS از Keychain Access برای افزودن و اعتماد به همین گواهی استفاده کنید. در مرورگر گوشی، نصب و فعالسازی گواهی مورد اعتماد به نسخهٔ سیستمعامل بستگی دارد.
برای بازکردن پنل، https:// را کامل وارد کنید. بهجای عبور از اخطار گواهی، همین گواهی را نصب کنید تا دوربین پنل هم در یک اتصال معتبر کار کند؛ اجازهٔ دسترسی دوربین را نیز هنگام درخواست مرورگر بدهید.
اثر انگشت SHA-256 گواهی ریشه:
5d461ed98a130688f62de944c9741a72d5964bde2afe9edb1c58c94f9913e533
برای اپلیکیشن اندروید خواننده، نصب دستی گواهی روی گوشی لازم نیست؛ همان گواهی بهصورت محدود به IP سرور در APK قرار دارد.
۵. نصب اپلیکیشن
- فایل
PoetVoice-Android-Test.apkاین نسخه را روی گوشی Android 8 یا جدیدتر نصب کنید. در صورت نیاز، اجازهٔ نصب را برای منبع همین فایل فعال کنید. - گوشی را به شبکهٔ داخلی وصل کنید. برنامه در اولین اجرا، نشانی
https://192.168.100.127:8084را از پیش دارد. - حساب خواننده بسازید یا وارد حساب قبلی شوید و کد فعالسازی کتاب را ثبت کنید.
- اجازهٔ دوربین را بدهید، QR کتاب را اسکن کنید و اجرای شعر را انتخاب کنید.
این APK شمارهٔ ساخت ۲۰۱ و همان امضای آزمایشی نسخهٔ قبلی را دارد. در ارتقا، تمها و شناسهٔ دستگاه حفظ میشوند؛ اگر سرور قبلی متفاوت باشد، توکن ورود قبلی پاک و ورود مجدد لازم میشود. تغییرات بعدی نشانی از تنظیمات برنامه امکانپذیر است.
چند صدا، حداکثر ۲۰ تصویر، نمایش تصادفی و زمانبندی وابسته به اجرا، تمها و کنترلهای قبلی حفظ شدهاند. IPA یا کلاینت iOS سازگار با نسخهٔ ۲ در این تحویل موجود نیست.
۶. انتقال اطلاعات موجود
اگر نسخهٔ ۲ Django/PostgreSQL از قبل نصب است: ابتدا sudo bash backup.sh را در پوشهٔ سرور قبلی اجرا کنید. فایلهای برنامهٔ جدید را روی همان پوشه بهروز کنید و data، secrets و .env را حفظ کنید؛ سپس sudo bash install-lan.sh را اجرا کنید. نصاب کلید رسانه و گذرواژههای پایگاه را عوض نمیکند و از همان نام پروژه و حجم PostgreSQL استفاده میکند. یک نسخهٔ مستقل دیگر از همان پروژه را همزمان اجرا نکنید.
اگر نسخهٔ ۱ Node/SQLite دارید: از آن بکاپ بگیرید، آن سرور را متوقف کنید و نسخهٔ جدید را در پوشهای جدا استخراج کنید. مقصد باید خالی باشد:
sudo bash install-lan.sh --import /ABSOLUTE/OLD/server/data
ابزار انتقال ابتدا ورودی را بررسی میکند و سپس حسابها، شناسهها، QRها، اجراها و زمانبندیها را با رمزگذاری صوت منتقل میکند. دادهٔ مبدأ دستنخورده میماند. اطلاعات سایت میزبانیشدهٔ قبلی بهطور خودکار وارد سرور داخلی نمیشود.
۷. نگهداری و بکاپ
از پوشهٔ server:
sudo docker compose ps sudo docker compose logs --tail=100 api proxy sudo bash backup.sh sudo systemctl status poetvoice-lan-tls.timer
بکاپ در پوشهٔ backups ساخته میشود و شامل پایگاه، رسانههای رمزگذاریشده، .env، کلید رمزگذاری رسانه و کلیدهای HTTPS است. یک نسخهٔ خصوصی از آن را بیرون از سرور نگه دارید. پاککردن کلید رسانه باعث از دست رفتن امکان پخش فایلهای ذخیرهشده میشود.
برای تغییر رمز مدیر:
sudo docker compose run --rm api python manage.py changepassword admin
گواهی سرور یک سال اعتبار دارد. تایمر روزانهٔ poetvoice-lan-tls.timer در ۳۰ روز آخر آن را با همان ریشه تمدید و پراکسی را بازراهاندازی میکند. بررسی دستی:
sudo bash renew-lan-tls.sh
گواهی ریشه تا سپتامبر ۲۰۳۶ اعتبار دارد. برای تغییر آن باید APK جدید ساخته و گواهی جدید در مرورگرهای مدیریت نصب شود. پوشهٔ نصب را پس از نصب تایمر جابهجا نکنید؛ در صورت جابهجایی، نصاب را در مسیر جدید دوباره اجرا کنید.
بستهٔ سرور خصوصی است: ZIP شامل کلید خصوصی گواهی داخلی و هش راهاندازی مدیر است؛ آن را فقط در اختیار مدیر سرور بگذارید. به خوانندگان فقط APK بدهید. کلید خصوصی گواهی در اپلیکیشن یا صفحات وب منتشر نمیشود.
۸. بررسی پس از نصب
- پنل با HTTPS معتبر باز شود و حساب admin وارد شود.
- یک شعر، صوت و تصویر آزمایشی در مدیریت ثبت کنید؛ QR آن را با دوربین پنل بخوانید و ثبت کنید.
- با حساب خوانندهٔ فعالشده، در گوشی واقعی QR را اسکن و صدا را پخش کنید؛ جابهجایی صوت، سرعت، حجم صدا و انتخاب اجرا را بررسی کنید.
- در شعر دارای چند تصویر، تغییر تصویر تصادفی و زمانبندی هر اجرا را بررسی کنید.
- خروج از حساب و ورود دوباره، و قطع و وصل شبکه را بررسی کنید.
دادهٔ صوت رمزگذاری و مجوزها به حساب و دستگاه محدود هستند؛ این نسخه Widevine/FairPlay ندارد و استخراج روی دستگاه دستکاریشده یا ضبط با دستگاه دیگر همچنان ممکن است. نتایج بررسی محیط ساخت در TEST-REPORT.md است؛ آنها جای آزمون سرور و گوشی واقعی شما را نمیگیرند.
مراجع فنی
تنظیم اعتماد به گواهی داخلی در اندروید · گواهی اختصاصی در Caddy · اتصال TLS با IP و بدون SNI