On-prem · δύο containers

Self-hosting

Ο Mailvane στο δικό σου VPC, χωρίς trade-offs.

Για ομάδες που δεν αντέχουν ευρωπαϊκά data residency «κατά προσέγγιση». Δύο containers (web + Postgres), outbound αλληλογραφία μέσω του Polsia email proxy, τίποτα δεν φεύγει από την περιοχή σου στο read path.

Τι τρέχει πού

Τρία σημεία. Κανένα δεν αφήνει την περιοχή σου.

Κάθε κομμάτι του stack ζει εκεί που το βλέπεις — και μόνο εκεί. Δεν κρύβουμε εξαρτήσεις σε vendors τρίτων χωρών.

Web container

Τρέχει τον Mailvane UI και τον scheduler. Κάνει fetch στο Gmail/Outlook μέσω OAuth, προτείνει απαντήσεις μέσω του Polsia AI proxy, και στέλνει outbound mail μέσω του Polsia email proxy.

Στο δικό σου VPC · port 3000

Postgres container

Αποθηκεύει λογαριασμούς, threads, ρυθμίσεις ύφους και audit log κάθε ενέργειας του πράκτορα. Back-up το κάνεις με τη δική σου snapshot cadence — δεν το αγγίζουμε.

Postgres 16 · named volume pgdata

Email egress

Τα εξερχόμενα emails φεύγουν από το web container μέσω του Polsia email proxy. Δεν υπάρχει inbound webhook, δεν υπάρχει data plane προς third-party — μόνο egress με rate limiting και audit trail.

Μόνο egress · ποτέ read-path leak

docker-compose.yml

Ένα αρχείο. Δύο services. Τέλος.

Αντιγράψτε το, βάλτε τα secrets σε .env, και τρέξτε docker compose up -d. Inline comments σε κάθε service εξηγούν τι κάνει.

Docker
ARM & x86
Kubernetes-ready

docker-compose.yml

# docker-compose.yml — deploy Mailvane on-prem
# Two services. Bring your own secrets via .env (never commit it).

version: '3.9'

# Web container: the Mailvane app + scheduler.
# Reads DATABASE_URL to reach Postgres, signs sessions with NEXTAUTH_SECRET,
# sends outbound email through the Polsia email proxy (egress only — no
# inbound webhook, no control plane). Exposes port 3000 on your VPN/VPC.
services:
  web:
    image: ghcr.io/mailvane/app:<tag>
    restart: unless-stopped
    ports:
      - '3000:3000'
    environment:
      DATABASE_URL: ${DATABASE_URL}
      NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
      POLSIA_API_BASE_URL: ${POLSIA_API_BASE_URL}
      OAUTH_GOOGLE_CLIENT_ID: ${OAUTH_GOOGLE_CLIENT_ID}
      OAUTH_GOOGLE_CLIENT_SECRET: ${OAUTH_GOOGLE_CLIENT_SECRET}
      OAUTH_MICROSOFT_CLIENT_ID: ${OAUTH_MICROSOFT_CLIENT_ID}
      OAUTH_MICROSOFT_CLIENT_SECRET: ${OAUTH_MICROSOFT_CLIENT_SECRET}
    depends_on:
      - postgres

# Postgres: stores accounts, threads, and the audit log inside your VPC.
# Named volume persists data across container restarts; back up with your
# existing snapshot cadence.
  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: mailvane
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: mailvane
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata: null
Σημείωση

Τι δεν περιλαμβάνεται στο box.

Το on-prem bundle σου δίνει τα πάντα για να τρέξεις τον πράκτορα — αλλά δεν σου πουλάει OAuth credentials που δεν μας ανήκουν.

  • Google Cloud Console · Gmail OAuth

    Δηλώνεις δικό σου OAuth app, βάζεις client ID + secret στο .env.

  • Microsoft Entra · Outlook OAuth

    Το ίδιο — tenant σου, app registration δική σου, client ID + secret δικά σου.

  • Per-user SSO (SAML / OIDC του IdP σου)

    Δεν περιλαμβάνεται στο on-prem bundle — είναι add-on για Team και πάνω.

  • Εγγύηση uptime από εμάς

    Τρέχει στο δικό σου VPC — το SLA το ορίζεις εσύ, εμείς δίνουμε μόνο releases.

Αν κάτι από τα παραπάνω σε μπλοκάρει, γράψε μας στο mailvane@polsia.app — βλέπουμε κάθε μήνυμα χειροκίνητα και γυρνάμε σε 1 εργάσιμη.

Ξεκίνα σήμερα

Δες τα πλάνα ή ρώτα ό,τι σε προβληματίζει.

Το self-hosting είναι διαθέσιμο ως add-on πάνω από Pro/Team. Αν δεν είσαι σίγουρος αν σου χρειάζεται, πρώτα διάβασε τις συχνές ερωτήσεις — και μετά αποφάσισε.