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.
sudo apt update
sudo apt upgrade
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.
npm install -g yarn
PostgreSQL
apt install 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.
sudo -u postgres -s psql
CREATE USER outline WITH ENCRYPTED PASSWORD 'outline';
ALTER USER outline CREATEDB;
Redis
sudo apt install redis
Supervisor
Outline sunucusunu başlatacak ve arkada çalışmasını sağlayacak uygulama.
sudo apt install supervisor
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.
https://wiki.example.com/auth/google.callback
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.
yarn sequelize db:create
yarn sequelize db:migrate
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.
yarn start
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.
wiki.example.com {
reverse_proxy localhost:3000
}
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.