104 lines
2.3 KiB
Markdown
104 lines
2.3 KiB
Markdown
# Org Social Push
|
|
|
|
Backend de push notifications para la app iOS de [Org Social](https://github.com/tanrax/org-social). Escucha el stream SSE del relay y envía notificaciones APNs cuando llega una notificación para un usuario suscrito.
|
|
|
|
## Endpoints
|
|
|
|
### Suscribir dispositivo
|
|
|
|
```
|
|
POST /subscribe/
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"feed": "https://example.com/social.org",
|
|
"device_token": "<iOS device token>",
|
|
"sandbox": false
|
|
}
|
|
```
|
|
|
|
- `sandbox`: opcional, por defecto `false`. Usar `true` solo en builds instaladas directamente desde Xcode. TestFlight y App Store usan `false`.
|
|
|
|
Respuesta `201` (nuevo) o `200` (actualizado).
|
|
|
|
### Desuscribir dispositivo
|
|
|
|
```
|
|
DELETE /unsubscribe/
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"device_token": "<iOS device token>"
|
|
}
|
|
```
|
|
|
|
Respuesta `200` o `404` si no existe.
|
|
|
|
## Despliegue
|
|
|
|
### Requisitos
|
|
|
|
- Docker y Docker Compose
|
|
- Archivo `.p8` de APNs (Apple Developer → Keys → APNs)
|
|
|
|
### 1. Clonar y configurar
|
|
|
|
```bash
|
|
git clone ssh://git@ssh.git.andros.dev:8622/org-social/org-social-push.git
|
|
cd org-social-push
|
|
cp envExample .env
|
|
nano .env
|
|
```
|
|
|
|
Variables obligatorias en `.env`:
|
|
|
|
| Variable | Descripción |
|
|
|---|---|
|
|
| `SECRET_KEY` | Clave secreta Django |
|
|
| `APNS_KEY_ID` | ID de la clave APNs (10 caracteres) |
|
|
| `APNS_TEAM_ID` | Team ID de Apple Developer |
|
|
| `APNS_BUNDLE_ID` | Bundle ID de la app iOS |
|
|
| `APNS_PRIVATE_KEY_PATH` | Ruta al `.p8` (por defecto `/app/certs/apns.p8`) |
|
|
| `APNS_SANDBOX` | Obsoleto, ignorado. El entorno se gestiona por dispositivo con el campo `sandbox` del endpoint `/subscribe/` |
|
|
| `RELAY_BASE_URL` | URL del relay (por defecto `https://relay.org-social.org`) |
|
|
|
|
### 2. Colocar la clave APNs
|
|
|
|
```bash
|
|
mkdir -p certs
|
|
cp /ruta/a/AuthKey_XXXXX.p8 certs/apns.p8
|
|
```
|
|
|
|
### 3. Arrancar
|
|
|
|
```bash
|
|
docker compose up -d --build
|
|
```
|
|
|
|
Servicios que levanta:
|
|
|
|
- `django`: API REST (migraciones + uvicorn)
|
|
- `listener`: proceso que escucha el SSE del relay y despacha pushes
|
|
- `nginx`: proxy en el puerto `NGINX_PORT` (por defecto 8080)
|
|
|
|
### Actualizar en producción
|
|
|
|
```bash
|
|
# Local
|
|
git push
|
|
|
|
# Servidor
|
|
ssh debian@home.server "cd ~/www/org-social-push && git pull && docker compose up -d --build"
|
|
```
|
|
|
|
## Desarrollo
|
|
|
|
```bash
|
|
# Tests
|
|
docker compose run --rm django pytest app/ -v
|
|
|
|
# Lint
|
|
docker compose run --rm django ruff check .
|
|
docker compose run --rm django ruff format --check .
|
|
```
|