Files
hoshpoint-backend/README.md

150 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### Hoshpoint
## اجرای پروژه با Docker در Production
ابتدا Docker Desktop را اجرا کنید و فایل env پروداکشن را بسازید:
```bash
cp .env.production.example .env.production
php artisan key:generate --show
```
خروجی را کپی کنید و داخل `.env.production` بگذارید (خط `APP_KEY` نباید خالی بماند):
```env
APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
```
سپس `APP_URL`، `HTTP_PORT`، `DB_PASSWORD`، `MARIADB_PASSWORD` و `MARIADB_ROOT_PASSWORD` را هم تغییر دهید. مقدار پیش‌فرض `HTTP_PORT=8080` است.
اگر قبلاً بدون `APP_KEY` کانتینرها را بالا آورده‌اید، بعد از پر کردن کلید این‌ها را اجرا کنید:
```bash
docker compose --env-file .env.production exec app php artisan config:clear
docker compose --env-file .env.production restart app queue scheduler
```
برای build کردن imageها:
```bash
docker compose --env-file .env.production build
```
### حالت fallback با VLESS/Xray
کانفیگ VLESS داخل `docker/xray/config.local.json` قرار دارد و این فایل در git ignore شده است. فایل نمونه‌ی بدون اطلاعات اتصال هم در `docker/xray/config.example.json` موجود است. اگر این فایل local را نداشتید، از نمونه کپی بگیرید و مقدارهای اتصال را پر کنید.
برای وقتی که اینترنت مستقیم یا mirrorها درست جواب نمی‌دهند، اول پروکسی را با profile جدا بالا بیاورید:
```bash
docker compose --env-file .env.production --profile proxy up -d vless-proxy
```
پروکسی HTTP روی سیستم میزبان از `127.0.0.1:2080` و SOCKS از `127.0.0.1:2081` در دسترس است. برای build stepهای داخل Dockerfile از این دستور استفاده کنید:
```bash
DOCKER_BUILD_HTTP_PROXY=http://host.docker.internal:2080 \
DOCKER_BUILD_HTTPS_PROXY=http://host.docker.internal:2080 \
docker compose --env-file .env.production build
```
اگر خود pull کردن imageهای Docker مشکل داشت، این پروکسی را در Docker Desktop هم تنظیم کنید:
```text
HTTP proxy: http://127.0.0.1:2080
HTTPS proxy: http://127.0.0.1:2080
```
برای Debian apt، پیش‌فرض روی repository رسمی Debian می‌ماند چون mirror آروان ممکن است با نسخه‌ی base image sync نباشد و dependency conflict بدهد. اگر عمداً خواستید apt را هم به mirror دیگری ببرید، این متغیرها را هنگام build تنظیم کنید:
```bash
DEBIAN_APT_MIRROR=http://mirror.example/debian \
DEBIAN_SECURITY_APT_MIRROR=http://mirror.example/debian-security \
DEBIAN_APT_DISABLE_UPDATES=true \
docker compose --env-file .env.production build
```
برای اینکه درخواست‌های خروجی خود اپلیکیشن هم از پروکسی رد شوند:
```bash
APP_HTTP_PROXY=http://vless-proxy:8080 \
APP_HTTPS_PROXY=http://vless-proxy:8080 \
docker compose --env-file .env.production --profile proxy up -d
```
اول دیتابیس را بالا بیاورید:
```bash
docker compose --env-file .env.production up -d mariadb
```
بعد migrationها را اجرا کنید:
```bash
docker compose --env-file .env.production run --rm app php artisan migrate --force --seed
```
حالا همه سرویس‌ها را بالا بیاورید:
```bash
docker compose --env-file .env.production up -d
```
سایت از طریق پورت تنظیم‌شده در `HTTP_PORT` در دسترس است. مقدار پیش‌فرض:
```text
http://localhost:8080
```
برای تغییر پورت، مقدار زیر را در `.env.production` عوض کنید و سرویس `nginx` را دوباره بالا بیاورید:
```env
HTTP_PORT=8081
```
```bash
docker compose --env-file .env.production up -d --force-recreate nginx
```
برای دیدن وضعیت سرویس‌ها:
```bash
docker compose --env-file .env.production ps
```
برای دیدن لاگ‌ها:
```bash
docker compose --env-file .env.production logs -f
```
برای اجرای دستورهای Artisan داخل کانتینر:
```bash
docker compose --env-file .env.production exec app php artisan about
```
برای متوقف کردن سرویس‌ها:
```bash
docker compose --env-file .env.production down
```
برای حذف کامل دیتای دیتابیس و volumeها، فقط وقتی مطمئن هستید:
```bash
docker compose --env-file .env.production down -v
```
## خطای `No application encryption key has been specified`
یعنی `APP_KEY` در `.env.production` خالی است یا بعد از تغییر env، cache قدیمی مانده.
1. مقدار `APP_KEY` را در `.env.production` تنظیم کنید.
2. cache را پاک و سرویس‌ها را restart کنید:
```bash
docker compose --env-file .env.production exec app php artisan config:clear
docker compose --env-file .env.production restart app queue scheduler
```