# From your local machine
cd ~/telegram-monitor
tar -czf backend.tar.gz backend/
gcloud compute scp backend.tar.gz loamy:~ --zone=us-central1-agcloud compute ssh loamy --zone=us-central1-a
# On loamy VM
mkdir -p ~/telegram-monitor
cd ~/telegram-monitor
tar -xzf ~/backend.tar.gz
cd backend# Build the image
sudo docker build -t telegram-monitor .
# Run the container
sudo docker run -d \
--name telegram-monitor \
--restart unless-stopped \
-p 5000:5000 \
-e POSTGRES_HOST=n8n-postgres-1 \
-e POSTGRES_PORT=5432 \
-e POSTGRES_DB=n8n \
-e POSTGRES_USER=n8n_postgres_admin \
-e POSTGRES_PASSWORD=n8n_secure_admin_9c84428c14b23127cc30411c8ac173f9 \
-e DEFAULT_API_ID=36615002 \
-e DEFAULT_API_HASH=ca45fcd37e884102c988771b606e2e09 \
--network n8n_default \
-v ~/telegram-monitor/sessions:/app/sessions \
telegram-monitor# Check container status
sudo docker ps | grep telegram-monitor
# Check logs
sudo docker logs telegram-monitor
# Test the API
curl http://localhost:5000/api/health# Install cloudflared (if not already installed)
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
# Run tunnel
cloudflared tunnel --url http://localhost:5000The backend will automatically create these tables on first run:
accounts- Telegram accountsmonitors- Channel monitoring configurationstelegram_messages- Complete message data with media
POSTGRES_HOST- PostgreSQL host (use container name for Docker network)POSTGRES_PORT- PostgreSQL port (default: 5432)POSTGRES_DB- Database namePOSTGRES_USER- Database userPOSTGRES_PASSWORD- Database passwordDEFAULT_API_ID- Telegram API IDDEFAULT_API_HASH- Telegram API Hash
GET /api/health- Health checkPOST /api/auth/request-code- Request Telegram auth codePOST /api/auth/verify-code- Verify auth codeGET /api/accounts- List accountsGET /api/accounts/:id/channels- List channels for accountGET /api/monitors- List monitorsPOST /api/monitors- Create monitorPUT /api/monitors/:id- Update monitorDELETE /api/monitors/:id- Delete monitorGET /api/monitors/:id/poll- Poll messages (for n8n)
# Check logs
sudo docker logs telegram-monitor
# Check if PostgreSQL is accessible
sudo docker exec -it telegram-monitor ping n8n-postgres-1# Verify network
sudo docker inspect telegram-monitor | grep -A 10 NetworkSettings
# Test PostgreSQL connection
sudo docker exec -it n8n-postgres-1 psql -U n8n_postgres_admin -d n8n -c '\l'# Check volume mount
sudo docker inspect telegram-monitor | grep -A 5 Mounts
# Verify sessions directory
ls -la ~/telegram-monitor/sessions/