Notion Alternatifi: Outline Kurulumu
Notion belge yönetimi için yararlı bir araç ancak küçük takımlar için pahalı olabiliyor. Ecommerc.io olarak ilk önce notion kullanmış olsak da takım büyüdükçe her bir kişi için aylık $10 fazla gelmeye başladı. Bu açıdan alternatif yazılımlara yöneldik ve Notion'u aratmayan Outline projesini bulduk.
Bu belge Outline'ın nasıl kurulacağını anlatır.
Gereklilikler¶
- Ubuntu 22.04 sanal makine (c6g.medium)
- DNS kaydı
- Caddy web sunucusu
- Supervisor
- Node 20
- Yarn
- Redis
- PostgreSQL
- Google ile kimlik doğrulama
DNS Kaydı¶
Öncelikle DNS kaydı edinmelisiniz. Outline Google kimlik doğrulaması kullandığı için kimlik
doğrulaması sonrasında geriye döneceği bir adrese sahip olması gerekiyor. Maalesef sadece kullanıcı
adı ve parola ile yetkilendirmeyi desteklemiyor. Bu açıdan bir DNS kaydımızın kurulum başlamadan
olması gerekmekte. Bu DNS kaydına şimdilik wiki.example.com
diyebiliriz. Makalenin ilerleyen
yerlerinde bu adres kullanılacaktır, uygun yerlerde bunları değiştirin.
Ubuntu Güncellemesi¶
EC2 ya da DigitalOcean olsun, kurulum yaptıktan sonra ilk işimizin güncelleme olması iyi bir pratik. Aşağıdaki komut ile güncelleme yapın.
Güncelleme yaptıktan sonra DNS kaydının çalışır olduğundan emin olun. Aynı zamanda EC2 için güvenlik gruplarının düzgün konfigüre edildiğinden emin olun. Port 80 ve 443'e izin vermeniz gerekmekte.
Gerekli Paketlerin Yüklenmesi¶
Caddy Web Sunucusu¶
Reverse proxy olarak görev yapacak ve bizim için SSL sertifikasını otomatik olarak oluşturacak sunucuyu kuralım. Bu sunucu Ubuntu'nun kendi repolarında yer almıyor ve kurulum sayfasındaki yönergeleri takip etmemiz gerekiyor.
Kurulum yönergelerini takip edip kurduktan sonra /etc/caddy/Caddyfile
oluştuğundan ve service
caddy status
komutu ile çalışır olduğundan emin olun.
Bu aşamada wiki.example.com
adresine gittiğiniz zaman Caddy'nin ön tanımlı sayfasını görüyor
olmanız gerekmekte. Eğer bunu göremiyorsanız DNS kaydınızda ya da güvenlik izinlerinde bir sorun var
demektir. Geriye dönüp bunların doğru şekilde ayarlandığından emin olun.
Node 20¶
Ubuntu'nun ön tanımlı repolarında node versiyonu maalesef çok eski ve Outline bu node versiyonu ile
çalışmıyor. Bunun yerine nodesource
reposundan Node 20 kurulumu yapılması gerekmekte.
curl -sL https://deb.nodesource.com/setup_20.x -o /tmp/nodesource_20x.sh
sudo bash /tmp/nodesource_20x.sh
sudo apt install nodejs -y
Bu komut sonrası nodejs versiyonun 20 olduğunu node --version
ile teyit edin ve devamında yarn
paketini yükleyin.
PostgreSQL¶
Kurulum yaptıktan sonra outline için yeni kullanıcı eklenmesi ve bu kullanıcının veritabanı
oluşturma yetkisine sahip olması gerekmekte. Bunun için postgres
kullanıcısı ile veritabanına
erişelim ve kullanıcı oluşturalım. Buradaki parolayı daha güçlü bir parola ile değiştirmek
isteyebilirsiniz.
Redis¶
Supervisor¶
Outline sunucusunu başlatacak ve arkada çalışmasını sağlayacak uygulama.
Google OAuth¶
Uygulamanın çalışabilmesi için Google Client ID
ve Google Client Secret
ortam değişkenlerinin
tanımlı olması gerekiyor. Bunun için OAuth Client ID sayfasına
gidip yeni bir ID oluşturun. Redirect URL
kısmına DNS kaydınızı yazın.
Outline Kurulumu¶
Bütün gereklilikleri kurduktan sonra outline kurulumuna geçebiliriz. Tek bir sunucuda, sadece outline çalışacağı için root ile kurulum yapılıyor. Bunun yerine outline için ayrı bir kullanıcı açıp ilerleyebilirsiniz ancak ben bu yolu tercih etmedim.
cd /srv
sudo su
git clone https://github.com/outline/outline.git
yarn install --frozen-lockfile && yarn build
Bu aşamada uygulamanın derlenmesini bekliyoruz. c6g.medium
instance ile bu benim için 5 dakika
civarında sürüyor. Eğer küçük bir instance kullanıyorsanız bu aşamada biraz sabırlı olmak gerekiyor.
Ortam Değişkenleri¶
.env
içerisindeki alanları doldurun. Burada veritabanı, secret ve Google OAuth bilgilerini
doldurmanız gerekmekte. Slack kullanmayacaksanız slack ile ilgili alanları yorum satırına alın zira
dolu olduğu ve doğru bilgiler girilmediği zaman uygulama hata vermekte.
Veritabanı¶
Bu aşamada artık veritabanı migration işlemine geçebiliriz. Aşağıdaki komutlarla bunu gerçekleştirin.
Uygulamayı Çalıştırma¶
Her şey yolunda gittiyse artık uygulamayı başlatabiliriz. Aşağıdaki komut ile Outline'ın çalıştığından emin olun.
Uygulamanın çalıştığını teyit ettikten sonra ctrl-c
ile sonlandırın. Bunu supervisor ile
çalıştıracağız.
Konfigürasyon¶
Supervisor¶
Outline'ı arkaplanda çalıştırmak için gerekli. /etc/supervisor/conf.d/outline.conf
dosyasını
oluşturun ve içerisine aşağıdaki satırları yazın.
[program:outline]
stopwaitsecs = 120
directory=/srv/outline
command=/usr/bin/yarn start
stdout_logfile=/var/log/supervisor/%(program_name)s.out.log
stderr_logfile=/var/log/supervisor/%(program_name)s.err.log
Sonrasında supervisorctrl start outline
ile uygulamayı çalıştırın.
Supervisor ile servisi durdurma
Sebebini bilmediğim bir şekilde supervisor ile outline servisi durdurulamıyor.
superviorctrl stop outline
komutu ile supervisorde durmuş görünüyor ancak servis çalışmaya
devam ediyor. Servisi durdurma sırasında supervisor komutunu girdikten sonra node
sürecini
kill etmek gerekmekte. Bunun için superviorctrl stop outline
sonrası pkill -f node
komutunu
çalıştırın. ps aux | grep node
komutu ile servisin kapanıp kapanmadığını teyit edebilirsiniz.
Caddy¶
Bizim için SSL sertifikalarını oluşturacak ve reverse proxy görevi görecek. Bunun için
/etc/caddy/Caddyfile
dosyasını aşağıdaki şekilde düzenleyin.
Sonrasında servisi service caddy restart
komutu ile yeniden başlatın.
Admin Kullanıcısı¶
Outline'a ilk kayıt olan kullanıcı admin yetkilerine sahip oluyor. Eğer organizasyonunuzda
kullanıcıların sadece tek bir domain ile kayıt olmalarını istiyorsanız Ayarlar - Güvenlik
kısmından domain isminizi yazın. Böylelikle sadece tek bir e-posta adresi uzantısına sahip olanlar
kayıt olacaktır. Detaylı kullanım belgesi için outline belgelerine göz atabilirsiniz.
Sonuç¶
Tebrikler. Artık notion benzeri bir wiki sayfasına sahipsiniz. Outline notion'un sunduğu birçok özelliği sunabilmekte. Aynı anda düzenleme, temiz arayüz bunlardan birkaç tanesi. c6g.medium
aylık $28 ve bu da notion'da 3 kişinin ücretine denk geliyor.