/open-source

Affine Kurulumu: Notion'a Açık Kaynak Alternatif

Self-hosted bir sistemin asıl amacı aslında kişisel verilerini de bir noktada kendi hakimiyetinin olduğu yerlerde serve etmektir. Şifrelerini saklama, notlarını saklama, kişisel projelerini keyfine göre deploy etme rahatlığı gibi bir çok artının sonucudur. Bunlardan not kısmı için olan opensource notion alternatifi Affine de şuan inceleyeceğimiz proje olacak.

Affine Nedir?

Affine'ı basitçe şöyle özetleyebiliriz: Notion + Miro'nun açık kaynak versiyonu. Markdown desteği var, whiteboard özelliği var, blok tabanlı editör var. Üstelik verileriniz tamamen sizin kontrolünüzde.

Projede TypeScript ve Rust kullanılmış. GitHub'da oldukça aktif bir geliştirme süreci var.

Not: Ufak bir handikapı var. Mobile app yok ve mobile browserdan girildiğinde only read olarak gözüküyor. Mobil browserdan masaüstü check e tıklayınca editleyebiliyorsunuz fakat direkt mobil de edit yok. Bunun amacı nedir, geliştirme aşamasında da ileri de mi düzeltecekler bir fikrim yok.

Kurulum Seçenekleri

Affine'ı kullanmanın birkaç yolu var:

1. Web Versiyonu affine.pro adresinden doğrudan kullanabilirsiniz. Kurulum falan yok, hesap açıp başlıyorsunuz.

2. Desktop Uygulaması Windows, macOS ve Linux için masaüstü uygulamaları mevcut. GitHub releases sayfasından indirebilirsiniz.

3. Self-Hosted (Kendi Sunucunuzda) Bu kısma odaklanacağız çünkü açık kaynak projelerin asıl gücü buradan geliyor. (Bizi ilgilendiren kısım burası)

Docker ile Kurulum

En pratik yöntem Docker kullanmak. Şöyle yapıyoruz:

Gereksinimler

  • Docker ve Docker Compose kurulu olmalı
  • En az 2GB RAM
  • 10GB disk alanı

Adım 1: Dosyaları Hazırlama

Bir klasör oluşturup içine girelim:

mkdir affine-app cd affine-app

docker-compose.yml dosyası oluşturun:

version: '3' services: affine: image: ghcr.io/toeverything/affine-graphql:stable container_name: affine command: ['sh', '-c', 'node ./scripts/self-host-predeploy && node ./dist/index.js'] ports: - '3010:3010' depends_on: redis: condition: service_healthy postgres: condition: service_healthy volumes: - ./config:/root/.affine/config - ./storage:/root/.affine/storage environment: - NODE_OPTIONS="--import=./scripts/register.js" - AFFINE_CONFIG_PATH=/root/.affine/config - REDIS_SERVER_HOST=redis - DATABASE_URL=postgres://affine:affine@postgres:5432/affine - NODE_ENV=production - [email protected] - AFFINE_ADMIN_PASSWORD=changeme123 restart: unless-stopped redis: image: redis:latest container_name: affine-redis volumes: - ./redis:/data healthcheck: test: ['CMD', 'redis-cli', 'ping'] interval: 5s timeout: 3s retries: 5 restart: unless-stopped postgres: image: postgres:16 container_name: affine-postgres volumes: - ./postgres:/var/lib/postgresql/data healthcheck: test: ['CMD-SHELL', 'pg_isready -U affine'] interval: 5s timeout: 3s retries: 5 environment: POSTGRES_USER: affine POSTGRES_PASSWORD: affine POSTGRES_DB: affine restart: unless-stopped

Adım 2: Çalıştırma

docker-compose up -d

Logları kontrol etmek isterseniz:

docker-compose logs -f affine

Adım 3: Erişim

Tarayıcınızdan http://localhost:3010 adresine gidin. İlk girişte admin hesabınızı oluşturacaksınız.

Önemli: AFFINE_ADMIN_EMAIL ve AFFINE_ADMIN_PASSWORD değerlerini mutlaka değiştirin!

Manuel Kurulum (Docker Olmadan)

Docker kullanamıyorsanız manuel kurulum da yapabilirsiniz ancak bu biraz daha zahmetli:

Gereksinimler

  • Node.js 18 veya üzeri
  • PostgreSQL 14+
  • Redis
  • pnpm
# Repo'yu klonlayın git clone https://github.com/toeverything/AFFiNE.git cd AFFiNE # Bağımlılıkları kurun pnpm install # Build edin pnpm build # Veritabanını hazırlayın pnpm -r --filter @affine/server prisma migrate deploy # Çalıştırın pnpm -r --filter @affine/server start

Soluk soluga kaldıysanız Docker yöntemini öneririm.

İlk Ayarlar

Kurulumdan sonra yapmanız gerekenler:

  1. Admin hesabınızı oluşturun - İlk girişte size sorulacak
  2. Workspace oluşturun - Projeniz, notlarınız için ayrı çalışma alanları
  3. Kullanıcı ekleyin - Takım arkadaşlarınızı davet edebilirsiniz
  4. Yedekleme ayarlayın - ./storage ve ./postgres klasörlerini düzenli yedekleyin

Güncelleme

Yeni versiyon çıktığında güncelleme yapmak için:

docker-compose pull docker-compose up -d

Karşılaşabileceğiniz Sorunlar

Port zaten kullanımda hatası 3010 portunu başka bir uygulama kullanıyorsa docker-compose.yml'de portu değiştirin.

Container başlamıyor Loglara bakın: docker-compose logs affine Çoğunlukla veritabanı bağlantı sorunu oluyor.

Yavaş çalışıyor RAM'i artırın veya daha az container çalıştırın.

Notion'dan Veri Aktarımı

Notion'dan çıkartmak isterseniz Notion'un export özelliğini kullanıp Markdown dosyalarını Affine'a içe aktarabilirsiniz. Tam otomatik değil ama çalışıyor.

Sonuç

Affine henüz Notion kadar olgun değil açıkçası. Bazı özellikler eksik, bazı yerler hantal. Ama açık kaynak olması, verilerinize sahip olmanız ve aktif geliştiriliyor olması büyük artılar.