Kurulum (self-host)
Docker Compose ile PostgreSQL üzerinde kurulum.
MyWay, Next.js uygulaması + PostgreSQL veritabanından oluşur. En hızlı yol Docker Compose ile ayağa kaldırmaktır.
Gereksinimler
- Docker Engine 24+ ve Docker Compose v2
- 2 vCPU / 2 GB RAM (önerilen 4 GB)
- 10 GB boş disk; yükseltme sırasında geçici olarak ~1 GB fazlası
- Alan adı (opsiyonel: iç ağda sunucunun IP adresiyle de kurulur)
Adımlar
- 1Satın alma e-postandaki paketi indir ve sunucuna çıkart.
- 2./scripts/install.sh çalıştır. Hazır imajları yükler (derleme yok) ve üç şey sorar: adres, yayın portu, LİSANS ANAHTARI.
- 3Adres: alan adın varsa onu yaz. Yoksa Enter’a bas; kurulum sunucunun IP adresini bulup onu kullanır.
- 4Port: varsayılan 80/443 için Enter. O portları başka bir servis kullanıyorsa 8080/8443 gibi bir çift verebilirsin.
- 5Uygulama başlar; migrasyonlar otomatik uygulanır.
- 6Tarayıcıdan adrese gir ve kaydol. Kaydolan ilk kullanıcı otomatik yönetici (superadmin) olur.
# extract the package, then:
cd myway-onprem
./scripts/install.sh # asks for domain + LICENSE_KEY, loads images, startsİç ağa kurulum (alan adı olmadan)
Sunucunun alan adı yoksa kurulum sunucunun IP adresiyle yapılır; betik adresi kendisi bulup önerir. Bu durumda Let’s Encrypt devreye girmez (bir sertifika otoritesi IP adresini doğrulayamaz) ve uygulama kendi ürettiği sertifikayla yayınlanır. Tarayıcı ilk girişte bir kez uyarı gösterir; kalıcı olarak kaldırmak için kurulum dizinine bırakılan myway-root-ca.crt dosyasını istemci bilgisayarlara güvenilen kök sertifika olarak kurun.
Adres olarak myway.localhost gibi bir ad KULLANMAYIN. Bu adresler her bilgisayarda o bilgisayarın kendisine çözülür; ağdaki başka bir makineden yazıldığında sunucuya hiç ulaşmaz ve tarayıcı bağlantı hatası verir. Yalnız kurulumu yaptığınız makinede denemek için uygundur.
Portu değiştirme
Kurulum 80 ve 443 portlarını kullanır. Sunucuda bu portları başka bir servis tutuyorsa kurulumda farklı bir çift verebilirsiniz; seçim saklanır ve sonraki güncellemelerde yeniden sorulmaz. Standart dışı portta Let’s Encrypt doğrulama yapamayacağı için kurulum kendi sertifikasına geçer: güvenilir sertifika istiyorsanız ya 80/443’te kalın ya da MyWay’i TLS’i kendisi sonlandıran mevcut proxy’nizin arkasına alın.
# soruları görmeden kurmak / installing without the prompts
DOMAIN=myway.company.com HTTP_PORT=8080 HTTPS_PORT=8443 ./scripts/install.shLisans anahtarı ZORUNLUDUR: geçerli anahtar olmadan uygulama kilitli açılır. Anahtar 1 yıl geçerlidir; süre dolunca kısa bir ek süre (grace) çalışır, sonra kilitlenir. Kullanmaya devam için yenilenir.
E-posta gönderimi (opsiyonel)
Kurulum e-posta olmadan da tam çalışır; varsayılan budur. Bu durumda davet bağlantısı ekranda gösterilir ve parolayı Ayarlar → Üyeler’den yönetici sıfırlar. E-posta göndermek istersen .env.onprem dosyasına kendi SMTP sunucunu tanımlarsın: Exchange, Postfix, Google Workspace, AWS SES; hepsi SMTP konuşur. Dışarıya bağlanan bir servis eklemiş olmazsın, mail kendi sunucundan çıkar.
MAIL_DRIVER=smtp
MAIL_FROM="MyWay <no-reply@yourcompany.com>"
MAIL_SMTP_HOST=smtp.yourcompany.com
MAIL_SMTP_PORT=587 # 465 = implicit TLS, 587/25 = STARTTLS
MAIL_SMTP_USER=username
MAIL_SMTP_PASSWORD=passwordEnv değişikliği restart ile okunmaz; konteyneri yeniden oluşturman gerekir. Ardından davet e-postası, parola sıfırlama, e-posta adresi doğrulama ve bildirim e-postaları kendiliğinden çalışır. Bağlantılar PUBLIC_URL üzerinden üretilir; bu adresin kullanıcılarınca erişilebilir olduğundan emin ol.
docker compose -f docker-compose.onprem.yml --env-file .env.onprem up -dSon tarih uyarıları (günlük görev)
Son tarihin gelmesi bir olay değildir: kimse bir şey yapmadığı için uygulamayı tetikleyecek bir istek de olmaz, tarihe birinin bakması gerekir. Kurulum paketindeki scripts/due-date-notifications.sh betiğini günde bir çalışacak şekilde zamanla. Zamanlamazsan atama, bahsetme, yorum ve durum bildirimleri normal çalışır; yalnız son tarih hatırlatmaları hiç gönderilmez.
# root crontab: her sabah 06:00 / every morning at 06:00
0 6 * * * APP_DIR=/opt/myway ENV_FILE=.env.onprem /opt/myway/scripts/due-date-notifications.sh >> /var/log/myway-due-dates.log 2>&1Betik env dosyandan PUBLIC_URL ve CRON_SECRET değerlerini okur; ikisi de tanımlı olmalıdır. Tetiklenen uç Authorization başlığındaki CRON_SECRET ile korunur, dışarıdan çalıştırılamaz. APP_DIR ve ENV_FILE varsayılanları /opt/myway ve .env.prod olduğundan, on-prem kurulumda yukarıdaki gibi kendi yollarını vermelisin.