Pluma'yı Docker ile kendi sunucunuzda barındırın
Pluma'yı kendi altyapınızda çalıştırın. Tek konteyner, tek compose dosyası, temiz sunucudan çalışan uygulamaya beş dakika.
Hızlı başlangıç (5 dakika)
Bir dizin seçin
Bir dizin seçin
sudo mkdir -p /opt/pluma && sudo chown $USER:$USER /opt/pluma
cd /opt/plumacompose dosyasını oluşturun
compose dosyasını oluşturun
Şu adla kaydet docker-compose.yml.
services:
pluma:
# Pin a version tag (e.g. mertdalbudak/pluma:<version>) so updates happen
# when you decide; `latest` follows every release.
image: mertdalbudak/pluma:latest
container_name: pluma
restart: unless-stopped
env_file: .env
ports:
- "4100:4100"
volumes:
- builder-data:/app/builder/data
# Lets the Pro+ Publish flow drive `docker buildx`. WARNING: mounting
# the Docker socket hands the container control over the Docker host
# (root-equivalent). Remove this line unless you use Publish, and
# never keep it on a shared host.
- /var/run/docker.sock:/var/run/docker.sock
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:4100/health"]
interval: 30s
timeout: 5s
retries: 5
volumes:
builder-data:
env dosyasını oluşturun
env dosyasını oluşturun
Şu adla kaydet .env. Sadece dört değer önemli — gerisi ilk açılışta otomatik üretilir.
# Where Pluma is reachable (use https://… when fronted by TLS).
PUBLIC_URL=http://localhost:4100
# Paid tiers: paste your license key. Free tier: leave blank.
LICENSE_KEY=
# Database (optional) — unset uses a bundled SQLite file; point at your
# own PostgreSQL to back it up and scale it yourself.
# DATABASE_URL=postgresql://USER:PASS@host:5432/pluma
# Object storage (optional) — defaults to the local data volume; set these
# for S3-compatible storage (MinIO, R2, S3, B2, …).
# STORAGE_BACKEND=s3
# S3_BUCKET=pluma
# S3_ENDPOINT=https://your-s3-endpoint
# S3_REGION=eu-central-1
# S3_ACCESS_KEY=...
# S3_SECRET_KEY=...
# Email (optional) — only for the enterprise e-signature workflow. Any SMTP
# URL works; without it /sign-requests is disabled and everything else runs
# offline.
# SMTP_URL=smtp://user:[email protected]:587
# EMAIL_FROM=Pluma <[email protected]>
# [email protected]
# Document seal for signed PDFs. A self-signed seal is generated on first use
# and kept next to the data directory; point these at a certificate from an
# Adobe-trusted CA (or a qualified seal certificate) to make PDF readers show
# the seal as trusted. PLUMA_SEAL_TSA_URL adds an RFC 3161 timestamp.
# PLUMA_SEAL_CERT_FILE=/etc/pluma/seal.crt
# PLUMA_SEAL_KEY_FILE=/etc/pluma/seal.key
# PLUMA_SEAL_NAME=Your Company Document Seal
# PLUMA_SEAL_TSA_URL=http://timestamp.digicert.com
PUBLIC_URLKurulumun yaşadığı yerLICENSE_KEYYalnızca ücretli planlar — Free için boş bırakınStack'i başlatın
Stack'i başlatın
docker compose up -d
docker compose logs -f plumaDoğrulayın
Doğrulayın
İki uç nokta da yanıt veriyorsa, çalışıyor.
curl http://127.0.0.1:4100/health
# → {"ok":true,"service":"builder"}Açın http://your-host:4100 ve şu e-postayla kaydolun
Yalnızca ihtiyacınız olanı bağlayın
Çekirdek kurulum çevrimdışı çalışır — harici hizmet gerekmez. Aşağıdaki entegrasyonlar isteğe bağlıdır, .env üzerinden yapılandırılır ve yalnızca eşleştirildikleri özelliği etkinleştirir.
SMTP — e-imza akışı
Yalnızca Enterprise kurulumlarındaki e-imza iş akışı için gereklidir. Herhangi bir standart SMTP adresi çalışır:
# ── Transactional email (optional; needed for /sign-requests) ──
SMTP_URL=smtp://user:[email protected]:587
EMAIL_FROM=Pluma <[email protected]>
[email protected]Marka — kendi görünümünüzü verin
İlk girişten sonra panodaki Ayarlar → Marka sayfası, „Pluma” yerine kendi ürün adınızı yazmanıza, kendi logonuzu (üst bilgi + e-posta) ve favicon’unuzu koymanıza, bir vurgu rengi belirlemenize ve her işlem e-postasına yasal bir alt bilgi eklemenize olanak tanır. Değişiklikler anında geçerli olur — yeniden başlatma yok, ortam değişkeniyle uğraşmak yok. Yalnızca kendi sunucunuzda barındırmada; barındırılan SaaS’ın markası Pluma’ya aittir.
Nesne depolama — durumu düğümler arasında paylaşın
Varsayılan olarak yüklenen PDF’ler ve görseller builder-data biriminde tutulur. Yatay ölçeklemek, birden fazla builder kopyası çalıştırmak ya da veri birimini uygulama sunucusundan ayırmak istediğinizde STORAGE_BACKEND değerini S3 uyumlu herhangi bir hizmete (MinIO, Hetzner, R2, B2, AWS) yönlendirin.
STORAGE_BACKEND=s3
S3_BUCKET=pluma
S3_ENDPOINT=https://your-s3-endpoint
S3_REGION=eu-central-1
S3_ACCESS_KEY=...
S3_SECRET_KEY=...Güncelleme
docker compose pull
docker compose up -dVeritabanı migrasyonları, HTTP sunucusu trafik kabul etmeden önce builder açılışında otomatik çalışır. Manuel adım yok.
İşletim notları
- İmajı sabitleyin. Compose dosyasındaki `latest` yerine bir sürüm etiketi (`mertdalbudak/pluma:<sürüm>`) yazın; güncellemeler böylece siz karar verdiğinizde yapılır. Geri almak için önceki etiketi yazıp iki güncelleme komutunu yeniden çalıştırın; yeni sürüm veritabanı şemasını değiştirdiyse güncellemeden önce aldığınız yedeği geri yükleyin.
- Docker soketi. Compose dosyasındaki isteğe bağlı Docker soketi bağlaması, konteynere Docker ana makinesi üzerinde kontrol verir — fiilen root. Publish akışını kullanmıyorsanız bunu eklemeyin; paylaşılan bir ana makinede ise asla.
- Lisans heartbeat’i. Ücretli seviyeler lisans servisini günde bir kez çağırır (imaja gömülü lisans ana makinesinde POST /api/v1/licenses/heartbeat) ve yalnızca lisans anahtarının hash’ini ve yazılım sürümünü gönderir. Servise ulaşılamazsa ücretli limitler 14 gün boyunca (PLUMA_LICENSE_GRACE_DAYS) geçerli kalır, sonra bir heartbeat başarılı olana kadar Free’ye düşer. Free kurulumlar hiçbir zaman bağlantı kurmaz.
Lisans mı gerekiyor?
Free planı lisanssız çalışır. Advanced ve Pro planları bir lisans anahtarı gerektirir — barındırılan sitemizden bir tane satın alın, .env'inize LICENSE_KEY olarak yapıştırın ve yeniden dağıtın.