Self-Hosting
PushTower is fully self-hostable. Run the entire stack on your own infrastructure for complete control over your data.
Requirements
- Docker and Docker Compose
- An Apple Developer account (for APNs credentials)
- A PostgreSQL database (included in the compose file)
Quick Start
git clone https://github.com/AndreasGassmann/pushtower.git
cd pushtower
cp .env.example .env
# Edit .env with your APNs credentials
docker compose up -d
Configuration
Key environment variables:
| Variable | Description |
|---|---|
APNS_KEY_ID | Your APNs Key ID |
APNS_TEAM_ID | Your Apple Team ID |
APNS_KEY_PATH | Path to your .p8 key file |
DATABASE_URL | PostgreSQL connection string |
JWT_SECRET | Secret for signing auth tokens |
ENCRYPTION_KEY | Key for E2E encryption |
Architecture
The self-hosted stack includes:
- API server — NestJS backend handling push delivery
- Web dashboard — React app for managing channels and devices
- PostgreSQL — Stores channels, devices, and notification history
- Traefik — Reverse proxy with automatic HTTPS
Updating
git pull
docker compose build
docker compose up -d