{"id":35595,"date":"2025-12-01T14:40:47","date_gmt":"2025-12-01T11:40:47","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=35595"},"modified":"2025-12-01T14:40:47","modified_gmt":"2025-12-01T11:40:47","slug":"ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/","title":{"rendered":"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla dijitalle\u015fen d\u00fcnyas\u0131nda, ekiplerin co\u011frafi konumlar\u0131ndan ba\u011f\u0131ms\u0131z olarak ger\u00e7ek zamanl\u0131 i\u015fbirli\u011fi yapabilmesi b\u00fcy\u00fck \u00f6nem ta\u015f\u0131maktad\u0131r. Dok\u00fcmanlar \u00fczerinde e\u015f zamanl\u0131 \u00e7al\u0131\u015fabilme yetene\u011fi, verimlili\u011fi art\u0131r\u0131r, ileti\u015fim engellerini ortadan kald\u0131r\u0131r ve projelerin daha h\u0131zl\u0131 ilerlemesini sa\u011flar. Bu ihtiyaca y\u00f6nelik geli\u015ftirilmi\u015f bir\u00e7ok ara\u00e7 bulunsa da, Etherpad Lite, a\u00e7\u0131k kaynak kodlu yap\u0131s\u0131, hafifli\u011fi ve g\u00fc\u00e7l\u00fc ger\u00e7ek zamanl\u0131 i\u015fbirli\u011fi yetenekleriyle \u00f6ne \u00e7\u0131kan bir web tabanl\u0131 metin d\u00fczenleyicisidir.<\/p>\n<p>Etherpad Lite, birden fazla kullan\u0131c\u0131n\u0131n ayn\u0131 anda tek bir metin belgesi \u00fczerinde \u00e7al\u0131\u015fmas\u0131na olanak tan\u0131r. Her kullan\u0131c\u0131n\u0131n katk\u0131lar\u0131 farkl\u0131 renklerle vurgulan\u0131r, bu da kimin hangi de\u011fi\u015fikli\u011fi yapt\u0131\u011f\u0131n\u0131 kolayca takip etmeyi sa\u011flar. Ayr\u0131ca, ge\u00e7mi\u015fe d\u00f6n\u00fck de\u011fi\u015fiklikleri izlemek ve belirli bir noktaya geri d\u00f6nmek i\u00e7in bir zaman kayd\u0131r\u0131c\u0131 (timeslider) \u00f6zelli\u011fi de sunar. Bu \u00f6zellikler, \u00f6zellikle beyin f\u0131rt\u0131nas\u0131 oturumlar\u0131, not alma, kod incelemeleri veya grup\u00e7a yaz\u0131 yazma gibi senaryolarda paha bi\u00e7ilmezdir.<\/p>\n<p>Bu kapsaml\u0131 teknik makalede, Ubuntu 20.04 i\u015fletim sistemi \u00fczerinde Etherpad Lite&#8217;\u0131 ba\u015ftan sona nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ve g\u00fcvenli bir \u015fekilde nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m anlataca\u011f\u0131z. Kurulum s\u00fcrecinde Node.js, MariaDB veritaban\u0131, Nginx ters proxy ve Let&#8217;s Encrypt ile SSL sertifikas\u0131 gibi modern web uygulamas\u0131 bile\u015fenlerini entegre edece\u011fiz. Bu sayede, y\u00fcksek performansl\u0131, g\u00fcvenli ve eri\u015filebilir bir Etherpad ortam\u0131 olu\u015fturaca\u011f\u0131z.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Kuruluma ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131n\u0131zdan emin olun:<\/p>\n<p>*   <strong>Ubuntu 20.04 Sunucusu:<\/strong> Temiz bir Ubuntu 20.04 sunucusu veya sanal makine.<br \/>\n*   <strong>Sudo Yetkilerine Sahip Kullan\u0131c\u0131:<\/strong> <code>sudo<\/code> komutunu kullanabilen, root olmayan bir kullan\u0131c\u0131 hesab\u0131. G\u00fcvenlik nedeniyle root kullan\u0131c\u0131s\u0131 olarak i\u015flem yapmaktan ka\u00e7\u0131n\u0131n.<br \/>\n*   <strong>Minimum Donan\u0131m Kaynaklar\u0131:<\/strong> Etherpad Lite hafif bir uygulama olsa da, Node.js ve veritaban\u0131 ile birlikte \u00e7al\u0131\u015faca\u011f\u0131 i\u00e7in en az 1GB RAM ve 20GB depolama alan\u0131 \u00f6nerilir.<br \/>\n*   <strong>Bir Alan Ad\u0131:<\/strong> Etherpad&#8217;e web \u00fczerinden eri\u015fmek ve Let&#8217;s Encrypt ile SSL sertifikas\u0131 kurmak i\u00e7in bir alan ad\u0131na (\u00f6rne\u011fin, <code>etherpad.alanadiniz.com<\/code>) sahip olman\u0131z ve DNS kay\u0131tlar\u0131n\u0131 sunucunuzun IP adresine y\u00f6nlendirmi\u015f olman\u0131z gerekmektedir.<br \/>\n*   <strong>Temel Linux Bilgisi:<\/strong> Komut sat\u0131r\u0131 kullan\u0131m\u0131 ve dosya d\u00fczenleme konular\u0131nda temel bilgi sahibi olmak faydal\u0131 olacakt\u0131r.<\/p>\n<h3>Sistem G\u00fcncellemesi ve Temel Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/h3>\n<p>Herhangi bir kuruluma ba\u015flamadan \u00f6nce, sisteminizin paket listesini g\u00fcncellemeli ve y\u00fckl\u00fc paketleri en son s\u00fcr\u00fcmlerine y\u00fckseltmelisiniz. Bu, olas\u0131 g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapat\u0131r ve yaz\u0131l\u0131m \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nler. Ayr\u0131ca, Etherpad&#8217;in ve di\u011fer bile\u015fenlerin ihtiya\u00e7 duyaca\u011f\u0131 temel paketleri de bu a\u015famada kuraca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<p>Ard\u0131ndan, Etherpad&#8217;in ve kurulum s\u00fcrecinde kullanaca\u011f\u0131m\u0131z di\u011fer ara\u00e7lar\u0131n ihtiya\u00e7 duydu\u011fu temel ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckleyelim:<\/p>\n<p>*   <code>curl<\/code>: Web i\u00e7eri\u011fi indirmek i\u00e7in.<br \/>\n*   <code>git<\/code>: Etherpad kaynak kodunu klonlamak i\u00e7in.<br \/>\n*   <code>build-essential<\/code>: Node.js mod\u00fcllerini derlemek i\u00e7in gerekli olan derleyici ara\u00e7lar\u0131.<\/p>\n<pre><code class=\"language-bash\">sudo apt install curl git build-essential -y<\/code><\/pre>\n<h3>Node.js Kurulumu<\/h3>\n<p>Etherpad Lite, Node.js platformunda \u00e7al\u0131\u015f\u0131r. Bu nedenle, sunucumuza Node.js ve npm (Node Package Manager) kurmam\u0131z gerekmektedir. Ubuntu 20.04&#8217;\u00fcn varsay\u0131lan depolar\u0131nda eski bir Node.js s\u00fcr\u00fcm\u00fc bulunabilir, bu y\u00fczden NodeSource deposunu kullanarak daha g\u00fcncel ve kararl\u0131 bir s\u00fcr\u00fcm\u00fc kurmay\u0131 tercih edece\u011fiz. Bu makale itibar\u0131yla Node.js 16.x LTS s\u00fcr\u00fcm\u00fcn\u00fc kullanaca\u011f\u0131z, ancak daha g\u00fcncel bir LTS s\u00fcr\u00fcm\u00fc (\u00f6rne\u011fin 18.x veya 20.x) de tercih edilebilir.<\/p>\n<p>NodeSource deposunu eklemek ve Node.js&#8217;i kurmak i\u00e7in a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">curl -fsSL https:\/\/deb.nodesource.com\/setup_16.x | sudo -E bash -\nsudo apt install nodejs -y<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, Node.js ve npm&#8217;in do\u011fru bir \u015fekilde y\u00fcklendi\u011fini ve s\u00fcr\u00fcmlerini kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">node -v\nnpm -v<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131 olarak Node.js ve npm s\u00fcr\u00fcmlerini g\u00f6rmelisiniz (\u00f6rne\u011fin, <code>v16.x.x<\/code> ve <code>8.x.x<\/code>).<\/p>\n<h3>MariaDB Veritaban\u0131 Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Etherpad Lite varsay\u0131lan olarak &#8220;dirtyDB&#8221; ad\u0131 verilen basit bir dosya tabanl\u0131 veritaban\u0131 kullan\u0131r. Ancak, \u00fcretim ortamlar\u0131nda veya birden fazla pad olu\u015fturmay\u0131 planl\u0131yorsan\u0131z, MariaDB veya PostgreSQL gibi daha sa\u011flam bir veritaban\u0131 kullanman\u0131z \u015fiddetle tavsiye edilir. Bu, performans, g\u00fcvenilirlik ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fc a\u00e7\u0131s\u0131ndan \u00e7ok daha iyidir. Bu makalede MariaDB&#8217;yi kullanaca\u011f\u0131z.<\/p>\n<p>MariaDB sunucusunu kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt install mariadb-server -y<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, MariaDB kurulumunuzu g\u00fcvenli hale getirmek i\u00e7in <code>mysql_secure_installation<\/code> beti\u011fini \u00e7al\u0131\u015ft\u0131rmal\u0131s\u0131n\u0131z. Bu betik, root \u015fifresi belirlemenizi, anonim kullan\u0131c\u0131lar\u0131 kald\u0131rman\u0131z\u0131, root&#8217;un uzaktan giri\u015fini devre d\u0131\u015f\u0131 b\u0131rakman\u0131z\u0131 ve test veritaban\u0131n\u0131 kald\u0131rman\u0131z\u0131 isteyecektir.<\/p>\n<pre><code class=\"language-bash\">sudo mysql_secure_installation<\/code><\/pre>\n<p>Betik size a\u015fa\u011f\u0131daki sorular\u0131 soracakt\u0131r:<\/p>\n<p>*   <code>Enter current password for root (enter for none):<\/code> \u0130lk kurulumda root \u015fifresi olmad\u0131\u011f\u0131 i\u00e7in do\u011frudan Enter tu\u015funa bas\u0131n.<br \/>\n*   <code>Set root password? [Y\/n]<\/code> <code>Y<\/code> yaz\u0131p g\u00fc\u00e7l\u00fc bir root \u015fifresi belirleyin.<br \/>\n*   <code>Remove anonymous users? [Y\/n]<\/code> <code>Y<\/code><br \/>\n*   <code>Disallow root login remotely? [Y\/n]<\/code> <code>Y<\/code> (Yerel kurulumlar i\u00e7in bu genellikle yeterlidir.)<br \/>\n*   <code>Remove test database and access to it? [Y\/n]<\/code> <code>Y<\/code><br \/>\n*   <code>Reload privilege tables now? [Y\/n]<\/code> <code>Y<\/code><\/p>\n<p>\u015eimdi Etherpad i\u00e7in bir veritaban\u0131 ve kullan\u0131c\u0131 olu\u015ftural\u0131m. MariaDB root kullan\u0131c\u0131s\u0131 olarak giri\u015f yap\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo mysql -u root -p<\/code><\/pre>\n<p>Root \u015fifrenizi girin. Ard\u0131ndan a\u015fa\u011f\u0131daki SQL komutlar\u0131n\u0131 s\u0131ras\u0131yla \u00e7al\u0131\u015ft\u0131rarak bir veritaban\u0131 (<code>etherpad_db<\/code>), bir kullan\u0131c\u0131 (<code>etherpad_user<\/code>) olu\u015fturun ve bu kullan\u0131c\u0131ya veritaban\u0131 \u00fczerinde t\u00fcm yetkileri verin. <code>GUCLU_SIFRE<\/code> k\u0131sm\u0131n\u0131 kendi belirleyece\u011finiz g\u00fc\u00e7l\u00fc bir \u015fifre ile de\u011fi\u015ftirmeyi unutmay\u0131n.<\/p>\n<pre><code class=\"language-sql\">CREATE DATABASE etherpad_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\nCREATE USER 'etherpad_user'@'localhost' IDENTIFIED BY 'GUCLU_SIFRE';\nGRANT ALL PRIVILEGES ON etherpad_db.* TO 'etherpad_user'@'localhost';\nFLUSH PRIVILEGES;\nEXIT;<\/code><\/pre>\n<p>Art\u0131k Etherpad&#8217;in kullanabilece\u011fi g\u00fcvenli bir MariaDB veritaban\u0131 kurulumuna sahibiz.<\/p>\n<h3>Etherpad Lite Kurulumu<\/h3>\n<p>Etherpad&#8217;i kurarken, g\u00fcvenlik ve sistem d\u00fczeni a\u00e7\u0131s\u0131ndan \u00f6zel bir sistem kullan\u0131c\u0131s\u0131 ve dizini kullanmak en iyi uygulamad\u0131r.<\/p>\n<h4>Etherpad Kullan\u0131c\u0131s\u0131 ve Dizini Olu\u015fturma<\/h4>\n<p>Etherpad uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>etherpad<\/code> ad\u0131nda, kabuk eri\u015fimi olmayan (g\u00fcvenlik i\u00e7in) bir sistem kullan\u0131c\u0131s\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo adduser --system --group etherpad<\/code><\/pre>\n<p>Etherpad dosyalar\u0131n\u0131 depolamak i\u00e7in <code>\/opt\/etherpad<\/code> dizinini olu\u015ftural\u0131m ve bu dizinin sahipli\u011fini <code>etherpad<\/code> kullan\u0131c\u0131s\u0131na verelim:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir \/opt\/etherpad\nsudo chown -R etherpad:etherpad \/opt\/etherpad<\/code><\/pre>\n<p>\u015eimdi, <code>etherpad<\/code> kullan\u0131c\u0131s\u0131na ge\u00e7i\u015f yaparak Etherpad&#8217;in kaynak kodunu klonlayal\u0131m ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00fckleyelim. Bu, uygulaman\u0131n do\u011fru izinlerle \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">sudo -u etherpad -H bash\ncd \/opt\/etherpad<\/code><\/pre>\n<h4>Etherpad Kaynak Kodunu Klonlama ve Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Y\u00fckleme<\/h4>\n<p>Etherpad Lite&#8217;\u0131n GitHub deposundan en son kararl\u0131 s\u00fcr\u00fcm\u00fc klonlayal\u0131m. Genellikle <code>master<\/code> veya <code>develop<\/code> dal\u0131 g\u00fcnceldir. Bu \u00f6rnekte <code>master<\/code> dal\u0131n\u0131 kullanaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">git clone --branch master https:\/\/github.com\/ether\/etherpad-lite.git .<\/code><\/pre>\n<p>Klonlama i\u015flemi tamamland\u0131ktan sonra, Etherpad&#8217;in ihtiya\u00e7 duydu\u011fu Node.js ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00fcklememiz gerekiyor. <code>--production<\/code> bayra\u011f\u0131, yaln\u0131zca \u00fcretim ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n y\u00fcklenmesini sa\u011flar, geli\u015ftirme ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 atlar ve disk alan\u0131ndan tasarruf sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">npm install --production<\/code><\/pre>\n<p>Ba\u011f\u0131ml\u0131l\u0131klar y\u00fcklendikten sonra, <code>etherpad<\/code> kullan\u0131c\u0131s\u0131ndan \u00e7\u0131k\u0131\u015f yapabiliriz:<\/p>\n<pre><code class=\"language-bash\">exit<\/code><\/pre>\n<h3>Etherpad Yap\u0131land\u0131rmas\u0131 (<code>settings.json<\/code>)<\/h3>\n<p>Etherpad&#8217;in ana yap\u0131land\u0131rma dosyas\u0131 <code>\/opt\/etherpad\/settings.json<\/code> adresinde bulunur. Bu dosyay\u0131 d\u00fczenleyerek veritaban\u0131 ba\u011flant\u0131s\u0131, port, IP adresi, API anahtar\u0131 ve di\u011fer bir\u00e7ok ayar\u0131 yapabiliriz. Varsay\u0131lan olarak bir <code>settings.json.template<\/code> dosyas\u0131 bulunur; bunu kopyalayarak d\u00fczenleyece\u011fiz.<\/p>\n<pre><code class=\"language-bash\">sudo cp \/opt\/etherpad\/settings.json.template \/opt\/etherpad\/settings.json\nsudo nano \/opt\/etherpad\/settings.json<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki \u00f6nemli ayarlar\u0131 bulup g\u00fcncelleyin:<\/p>\n<p>1.  <strong>Veritaban\u0131 Ayarlar\u0131:<\/strong><br \/>\n    <code>\"dbType\": \"dirtydb\",<\/code> sat\u0131r\u0131n\u0131 bulun ve <code>mysql<\/code> olarak de\u011fi\u015ftirin.<br \/>\n    <code>\"dbSettings\": { ... }<\/code> blo\u011funu a\u015fa\u011f\u0131daki gibi g\u00fcncelleyin (kendi veritaban\u0131 ad\u0131n\u0131z\u0131, kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 ve \u015fifrenizi kullanmay\u0131 unutmay\u0131n):<\/p>\n<pre><code class=\"language-json\">\"dbType\": \"mysql\",\n    \"dbSettings\": {\n        \"user\": \"etherpad_user\",\n        \"host\": \"localhost\",\n        \"password\": \"GUCLU_SIFRE\",\n        \"database\": \"etherpad_db\"\n    },<\/code><\/pre>\n<p>2.  <strong>IP ve Port Ayarlar\u0131:<\/strong><br \/>\n    Etherpad&#8217;in yaln\u0131zca yerel a\u011fda dinlemesi ve Nginx arac\u0131l\u0131\u011f\u0131yla eri\u015filmesi i\u00e7in IP adresini <code>127.0.0.1<\/code> olarak ayarlay\u0131n. Portu <code>9001<\/code> olarak b\u0131rakabiliriz veya ba\u015fka bir uygun port se\u00e7ebiliriz.<\/p>\n<pre><code class=\"language-json\">\"ip\": \"127.0.0.1\",\n    \"port\": 9001,<\/code><\/pre>\n<p>3.  <strong>API Anahtar\u0131 ve Salt:<\/strong><br \/>\n    <code>apikey<\/code> ve <code>salt<\/code> de\u011ferleri g\u00fcvenlik a\u00e7\u0131s\u0131ndan \u00f6nemlidir. Otomatik olarak olu\u015fturulmu\u015f de\u011ferleri kullanabilir veya daha g\u00fc\u00e7l\u00fc rastgele dizelerle de\u011fi\u015ftirebilirsiniz. E\u011fer de\u011fi\u015ftirirseniz, bu de\u011ferleri g\u00fcvenli bir yerde saklay\u0131n.<\/p>\n<pre><code class=\"language-json\">\"apikey\": \"sizin_guclu_api_anahtar\u0131n\u0131z\", \/\/ Varsay\u0131lan\u0131 kullanabilir veya de\u011fi\u015ftirebilirsiniz\n    \"salt\": \"sizin_guclu_salt_de\u011feriniz\",   \/\/ Varsay\u0131lan\u0131 kullanabilir veya de\u011fi\u015ftirebilirsiniz<\/code><\/pre>\n<p>4.  <strong>Admin Ayarlar\u0131 (\u0130ste\u011fe Ba\u011fl\u0131):<\/strong><br \/>\n    Etherpad&#8217;e y\u00f6netici paneli \u00fczerinden eri\u015fmek isterseniz, <code>users<\/code> blo\u011funda bir y\u00f6netici hesab\u0131 tan\u0131mlayabilirsiniz:<\/p>\n<pre><code class=\"language-json\">\"users\": {\n        \"admin\": {\n            \"password\": \"admin_guclu_sifresi\",\n            \"is_admin\": true\n        }\n    },<\/code><\/pre>\n<p>Di\u011fer ayarlar (\u00f6rne\u011fin, varsay\u0131lan pad metni, eklentiler, loglama) i\u00e7in <code>settings.json<\/code> dosyas\u0131n\u0131 inceleyebilirsiniz. De\u011fi\u015fiklikleri kaydedip dosyay\u0131 kapat\u0131n (CTRL+X, Y, Enter).<\/p>\n<h3>Systemd Hizmeti Olu\u015fturma<\/h3>\n<p>Etherpad&#8217;in bir arka plan hizmeti olarak \u00e7al\u0131\u015fmas\u0131n\u0131 ve sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flamak i\u00e7in bir Systemd hizmet dosyas\u0131 olu\u015ftural\u0131m.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/systemd\/system\/etherpad.service<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-ini\">[Unit]\nDescription=Etherpad Lite\nAfter=syslog.target network.target mariadb.service\n\n[Service]\nType=simple\nUser=etherpad\nGroup=etherpad\nWorkingDirectory=\/opt\/etherpad\nExecStart=\/usr\/bin\/node \/opt\/etherpad\/node_modules\/ep_etherpad-lite\/node\/server.js\nRestart=always\nEnvironment=NODE_ENV=production\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n<p>Yukar\u0131daki ayarlar\u0131n a\u00e7\u0131klamas\u0131:<br \/>\n*   <code>Description<\/code>: Hizmetin k\u0131sa a\u00e7\u0131klamas\u0131.<br \/>\n*   <code>After<\/code>: Bu hizmetin hangi hizmetlerden sonra ba\u015flamas\u0131 gerekti\u011fini belirtir (MariaDB&#8217;nin ba\u015flamas\u0131n\u0131 bekleriz).<br \/>\n*   <code>User<\/code>, <code>Group<\/code>, <code>WorkingDirectory<\/code>: Etherpad&#8217;in hangi kullan\u0131c\u0131, grup ve dizin alt\u0131nda \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirtir.<br \/>\n*   <code>ExecStart<\/code>: Etherpad&#8217;i ba\u015flatan komut.<br \/>\n*   <code>Restart=always<\/code>: Etherpad \u00e7\u00f6kerse veya beklenmedik bir \u015fekilde durursa otomatik olarak yeniden ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>Environment=NODE_ENV=production<\/code>: Node.js&#8217;i \u00fcretim modunda \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n*   <code>WantedBy=multi-user.target<\/code>: Sunucu a\u00e7\u0131ld\u0131\u011f\u0131nda \u00e7ok kullan\u0131c\u0131l\u0131 moda ge\u00e7ildi\u011finde bu hizmetin de ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Dosyay\u0131 kaydedin ve kapat\u0131n. \u015eimdi Systemd daemon&#8217;\u0131n\u0131 yeniden y\u00fckleyerek yeni hizmet dosyas\u0131n\u0131 tan\u0131mas\u0131n\u0131 sa\u011flay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl daemon-reload<\/code><\/pre>\n<p>Etherpad hizmetini ba\u015flat\u0131n ve sunucu a\u00e7\u0131l\u0131\u015f\u0131nda otomatik olarak ba\u015flamas\u0131 i\u00e7in etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl start etherpad\nsudo systemctl enable etherpad<\/code><\/pre>\n<p>Hizmetin durumunu kontrol ederek do\u011fru bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status etherpad<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>active (running)<\/code> mesaj\u0131n\u0131 g\u00f6rmelisiniz. Herhangi bir hata durumunda, <code>journalctl -u etherpad<\/code> komutuyla loglar\u0131 kontrol edebilirsiniz.<\/p>\n<h3>Nginx Ters Proxy Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Etherpad \u015fu anda sadece <code>127.0.0.1:9001<\/code> adresinde dinliyor, yani do\u011frudan internetten eri\u015filebilir de\u011fil. Kullan\u0131c\u0131lar\u0131n Etherpad&#8217;e alan ad\u0131n\u0131z \u00fczerinden g\u00fcvenli bir \u015fekilde eri\u015fmesini sa\u011flamak i\u00e7in Nginx&#8217;i bir ters proxy olarak kullanaca\u011f\u0131z. Nginx, gelen web isteklerini Etherpad hizmetine y\u00f6nlendirecek, ayn\u0131 zamanda SSL \u015fifrelemesi ve performans optimizasyonlar\u0131 gibi ek avantajlar sa\u011flayacakt\u0131r.<\/p>\n<h4>Nginx Kurulumu<\/h4>\n<p>Nginx web sunucusunu kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt install nginx -y<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra Nginx&#8217;in \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status nginx<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>active (running)<\/code> mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h4>Nginx Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Etherpad i\u00e7in yeni bir Nginx sunucu blo\u011fu yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m. <code>your_domain.com<\/code> yerine kendi alan ad\u0131n\u0131z\u0131 kullanmay\u0131 unutmay\u0131n.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/etherpad.conf<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    listen [::]:80;\n    server_name your_domain.com; # Kendi alan ad\u0131n\u0131z\u0131 buraya yaz\u0131n\n\n    # Let's Encrypt sertifikas\u0131 i\u00e7in ge\u00e7ici bir dizin\n    location ~ \/.well-known\/acme-challenge {\n        allow all;\n        root \/var\/www\/html;\n    }\n\n    location \/ {\n        # HTTP isteklerini HTTPS'e y\u00f6nlendir\n        return 301 https:\/\/$host$request_uri;\n    }\n}\n\nserver {\n    listen 443 ssl http2;\n    listen [::]:443 ssl http2;\n    server_name your_domain.com; # Kendi alan ad\u0131n\u0131z\u0131 buraya yaz\u0131n\n\n    # SSL sertifikas\u0131 yollar\u0131 (Certbot kurulumundan sonra g\u00fcncellenecektir)\n    ssl_certificate \/etc\/letsencrypt\/live\/your_domain.com\/fullchain.pem;\n    ssl_certificate_key \/etc\/letsencrypt\/live\/your_domain.com\/privkey.pem;\n    ssl_session_cache shared:SSL:10m;\n    ssl_protocols TLSv1.2 TLSv1.3;\n    ssl_ciphers \"ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384\";\n    ssl_prefer_server_ciphers on;\n    ssl_stapling on;\n    ssl_stapling_verify on;\n    add_header X-Frame-Options DENY;\n    add_header X-Content-Type-Options nosniff;\n    add_header X-XSS-Protection \"1; mode=block\";\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:9001; # Etherpad'in \u00e7al\u0131\u015ft\u0131\u011f\u0131 IP ve port\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_cache_bypass $http_upgrade;\n    }\n}<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma, HTTP isteklerini HTTPS&#8217;e y\u00f6nlendirir ve HTTPS isteklerini Etherpad&#8217;in yerel olarak \u00e7al\u0131\u015ft\u0131\u011f\u0131 9001 portuna y\u00f6nlendirir. SSL sertifikas\u0131 yollar\u0131 \u015fu an i\u00e7in placeholder&#8217;d\u0131r; Certbot&#8217;u kurduktan sonra otomatik olarak g\u00fcncellenecektir.<\/p>\n<p>Dosyay\u0131 kaydedin ve kapat\u0131n. \u015eimdi bu yap\u0131land\u0131rma dosyas\u0131n\u0131 etkinle\u015ftirmek i\u00e7in <code>sites-enabled<\/code> dizinine sembolik bir ba\u011flant\u0131 olu\u015ftural\u0131m ve varsay\u0131lan Nginx yap\u0131land\u0131rmas\u0131n\u0131 devre d\u0131\u015f\u0131 b\u0131rakal\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/etherpad.conf \/etc\/nginx\/sites-enabled\/\nsudo rm \/etc\/nginx\/sites-enabled\/default<\/code><\/pre>\n<p>Nginx yap\u0131land\u0131rman\u0131z\u0131n s\u00f6zdizimsel olarak do\u011fru oldu\u011fundan emin olmak i\u00e7in test edin:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t<\/code><\/pre>\n<p><code>test is successful<\/code> mesaj\u0131n\u0131 g\u00f6rmelisiniz. Ard\u0131ndan Nginx&#8217;i yeniden ba\u015flatarak yeni yap\u0131land\u0131rmay\u0131 uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart nginx<\/code><\/pre>\n<h3>UFW G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Ubuntu&#8217;da varsay\u0131lan olarak gelen UFW (Uncomplicated Firewall) g\u00fcvenlik duvar\u0131n\u0131 yap\u0131land\u0131rarak sunucunuza gelen trafi\u011fi kontrol alt\u0131na almal\u0131s\u0131n\u0131z. Sadece gerekli portlara (SSH, HTTP, HTTPS) izin vermeliyiz.<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow OpenSSH\nsudo ufw allow 'Nginx Full' # Bu kural hem HTTP (80) hem de HTTPS (443) trafi\u011fine izin verir.\nsudo ufw enable<\/code><\/pre>\n<p>G\u00fcvenlik duvar\u0131n\u0131n etkinle\u015ftirilmesiyle ilgili bir uyar\u0131 alacaks\u0131n\u0131z. <code>y<\/code> tu\u015funa basarak onaylay\u0131n. G\u00fcvenlik duvar\u0131 durumunu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>Nginx Full<\/code> ve <code>OpenSSH<\/code> i\u00e7in izin verilen kurallar\u0131 g\u00f6rmelisiniz.<\/p>\n<h3>Let&#8217;s Encrypt ile SSL Sertifikas\u0131 Kurulumu (Certbot)<\/h3>\n<p>Web sitenizin g\u00fcvenli\u011fi ve kullan\u0131c\u0131lar\u0131n\u0131z\u0131n verilerinin korunmas\u0131 i\u00e7in SSL sertifikas\u0131 kullanmak zorunludur. Let&#8217;s Encrypt, \u00fccretsiz ve otomatik SSL sertifikalar\u0131 sa\u011flayan bir hizmettir. Certbot arac\u0131 ile bu sertifikalar\u0131 kolayca kurabilir ve y\u00f6netebilirsiniz.<\/p>\n<p>Certbot ve Nginx eklentisini kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt install certbot python3-certbot-nginx -y<\/code><\/pre>\n<p>\u015eimdi Certbot&#8217;u \u00e7al\u0131\u015ft\u0131rarak alan ad\u0131n\u0131z i\u00e7in bir SSL sertifikas\u0131 al\u0131n. <code>your_domain.com<\/code> yerine kendi alan ad\u0131n\u0131z\u0131 yaz\u0131n.<\/p>\n<pre><code class=\"language-bash\">sudo certbot --nginx -d your_domain.com<\/code><\/pre>\n<p>Certbot, e-posta adresinizi isteyecek ve hizmet \u015fartlar\u0131n\u0131 kabul etmenizi isteyecektir. Ard\u0131ndan, Nginx yap\u0131land\u0131rman\u0131z\u0131 otomatik olarak g\u00fcncelleyecektir. HTTP trafi\u011fini HTTPS&#8217;e y\u00f6nlendirmek isteyip istemedi\u011finizi sordu\u011funda (genellikle 2 numaral\u0131 se\u00e7enek olan &#8220;Redirect&#8221; \u00f6nerilir), <code>2<\/code> yaz\u0131p Enter&#8217;a bas\u0131n.<\/p>\n<p>Certbot, sertifikay\u0131 ald\u0131ktan ve Nginx yap\u0131land\u0131rmas\u0131n\u0131 g\u00fcncelledikten sonra Nginx&#8217;i yeniden ba\u015flatacakt\u0131r. Art\u0131k Etherpad&#8217;inize <code>https:\/\/your_domain.com<\/code> adresi \u00fczerinden g\u00fcvenli bir \u015fekilde eri\u015febilirsiniz.<\/p>\n<p>SSL sertifikalar\u0131n\u0131n otomatik olarak yenilendi\u011finden emin olmak i\u00e7in bir test \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo certbot renew --dry-run<\/code><\/pre>\n<p>Bu komut herhangi bir hata vermezse, sertifikalar\u0131n\u0131z\u0131n otomatik olarak yenilenece\u011fi anlam\u0131na gelir.<\/p>\n<h3>Etherpad&#8217;e Eri\u015fim<\/h3>\n<p>Art\u0131k t\u00fcm kurulum ad\u0131mlar\u0131n\u0131 tamamlad\u0131n\u0131z. Web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve <code>https:\/\/your_domain.com<\/code> adresine gidin (kendi alan ad\u0131n\u0131z\u0131 kullanarak). Etherpad&#8217;in ana sayfas\u0131n\u0131 g\u00f6rmelisiniz. Yeni bir pad olu\u015fturabilir, ba\u015fkalar\u0131yla payla\u015fabilir ve ger\u00e7ek zamanl\u0131 olarak i\u015fbirli\u011fi yapmaya ba\u015flayabilirsiniz.<\/p>\n<h3>Ek Yap\u0131land\u0131rmalar ve Eklentiler<\/h3>\n<p>Etherpad Lite, eklenti tabanl\u0131 bir yap\u0131ya sahiptir ve bir\u00e7ok ek \u00f6zelli\u011fe eklentiler arac\u0131l\u0131\u011f\u0131yla ula\u015f\u0131labilir. Eklentileri y\u00fcklemek i\u00e7in <code>npm install<\/code> komutunu kullanabilirsiniz. \u00d6rne\u011fin, bir kimlik do\u011frulama eklentisi y\u00fcklemek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">cd \/opt\/etherpad\nsudo -u etherpad npm install ep_auth_ldap<\/code><\/pre>\n<p>Eklentiyi y\u00fckledikten sonra, genellikle <code>settings.json<\/code> dosyas\u0131nda ilgili eklentinin ayarlar\u0131n\u0131 yapman\u0131z gerekebilir. Eklentileri etkinle\u015ftirmek veya devre d\u0131\u015f\u0131 b\u0131rakmak i\u00e7in de <code>settings.json<\/code> dosyas\u0131ndaki <code>plugins<\/code> b\u00f6l\u00fcm\u00fcn\u00fc kullanabilirsiniz.<\/p>\n<p>Di\u011fer yap\u0131land\u0131rma se\u00e7enekleri aras\u0131nda:<\/p>\n<p>*   <strong>Varsay\u0131lan Pad \u0130\u00e7eri\u011fi:<\/strong> Yeni olu\u015fturulan pad&#8217;lerin varsay\u0131lan metnini <code>settings.json<\/code> dosyas\u0131nda <code>defaultPadText<\/code> ayar\u0131yla de\u011fi\u015ftirebilirsiniz.<br \/>\n*   <strong>Loglama:<\/strong> Log seviyelerini ve \u00e7\u0131kt\u0131 hedeflerini <code>log<\/code> b\u00f6l\u00fcm\u00fcnde yap\u0131land\u0131rabilirsiniz.<br \/>\n*   <strong>G\u00f6rsel Temalar:<\/strong> Farkl\u0131 temalar ve stiller uygulayarak Etherpad&#8217;in g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc \u00f6zelle\u015ftirebilirsiniz.<\/p>\n<p>T\u00fcm bu de\u011fi\u015fiklikler genellikle Etherpad hizmetinin yeniden ba\u015flat\u0131lmas\u0131n\u0131 gerektirir:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart etherpad<\/code><\/pre>\n<h3>Sorun Giderme<\/h3>\n<p>Kurulum s\u0131ras\u0131nda veya sonras\u0131nda herhangi bir sorunla kar\u015f\u0131la\u015f\u0131rsan\u0131z, a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyerek sorunlar\u0131 gidermeye \u00e7al\u0131\u015fabilirsiniz:<\/p>\n<p>*   <strong>Etherpad Loglar\u0131:<\/strong> Etherpad hizmetinin loglar\u0131n\u0131 kontrol edin.<\/p>\n<pre><code class=\"language-bash\">sudo journalctl -u etherpad -f<\/code><\/pre>\n<p>*   <strong>Nginx Loglar\u0131:<\/strong> Nginx hata loglar\u0131n\u0131 kontrol edin.<\/p>\n<pre><code class=\"language-bash\">sudo tail -f \/var\/log\/nginx\/error.log\n    sudo tail -f \/var\/log\/nginx\/access.log<\/code><\/pre>\n<p>*   <strong>G\u00fcvenlik Duvar\u0131:<\/strong> UFW durumunu kontrol ederek do\u011fru portlar\u0131n a\u00e7\u0131k oldu\u011fundan emin olun.<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>*   <strong>Port Kontrol\u00fc:<\/strong> Etherpad&#8217;in ger\u00e7ekten 9001 portunda dinleyip dinlemedi\u011fini kontrol edin.<\/p>\n<pre><code class=\"language-bash\">sudo ss -tulnp | grep 9001<\/code><\/pre>\n<p>*   <strong>Veritaban\u0131 Ba\u011flant\u0131s\u0131:<\/strong> <code>settings.json<\/code> dosyas\u0131ndaki veritaban\u0131 bilgilerinin do\u011fru oldu\u011fundan ve MariaDB hizmetinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status mariadb<\/code><\/pre>\n<p>*   <strong>Alan Ad\u0131 ve DNS:<\/strong> Alan ad\u0131n\u0131z\u0131n DNS kay\u0131tlar\u0131n\u0131n sunucunuzun IP adresine do\u011fru \u015fekilde y\u00f6nlendirildi\u011finden emin olun. <code>dig your_domain.com<\/code> komutuyla kontrol edebilirsiniz.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, Ubuntu 20.04 sunucusu \u00fczerinde Etherpad Lite ortak \u00e7al\u0131\u015fma web d\u00fczenleyicisini s\u0131f\u0131rdan kurmay\u0131, yap\u0131land\u0131rmay\u0131 ve g\u00fcvenli hale getirmeyi detayl\u0131 bir \u015fekilde ele ald\u0131k. Node.js, MariaDB, Nginx ve Let&#8217;s Encrypt gibi modern web teknolojilerini kullanarak, y\u00fcksek performansl\u0131, g\u00fcvenli ve ger\u00e7ek zamanl\u0131 i\u015fbirli\u011fi yeteneklerine sahip bir platform olu\u015fturduk.<\/p>\n<p>Art\u0131k ekibiniz veya ki\u015fisel projeleriniz i\u00e7in g\u00fc\u00e7l\u00fc bir ortak \u00e7al\u0131\u015fma arac\u0131na sahipsiniz. Etherpad&#8217;in esnek yap\u0131s\u0131 ve eklenti deste\u011fi sayesinde ihtiya\u00e7lar\u0131n\u0131za g\u00f6re daha da geni\u015fletebilir ve \u00f6zelle\u015ftirebilirsiniz. Unutmay\u0131n, herhangi bir \u00fcretim ortam\u0131nda oldu\u011fu gibi, d\u00fczenli yedeklemeler almak ve sisteminizi g\u00fcncel tutmak, veri g\u00fcvenli\u011fi ve sistem kararl\u0131l\u0131\u011f\u0131 i\u00e7in kritik \u00f6neme sahiptir. Etherpad ile verimli ve sorunsuz bir i\u015fbirli\u011fi deneyimi dileriz!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla dijitalle\u015fen d\u00fcnyas\u0131nda, ekiplerin co\u011f","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-35595","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla dijitalle\u015fen d\u00fcnyas\u0131nda, ekiplerin co\u011f\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-01T11:40:47+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu\",\"datePublished\":\"2025-12-01T11:40:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/\"},\"wordCount\":2570,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/\",\"name\":\"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-01T11:40:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu","og_description":"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla dijitalle\u015fen d\u00fcnyas\u0131nda, ekiplerin co\u011f","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-01T11:40:47+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"17 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu","datePublished":"2025-12-01T11:40:47+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/"},"wordCount":2570,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/","name":"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-01T11:40:47+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-etherpad-ortak-calisma-web-duzenleyicisinin-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 20.04 \u00dczerine Etherpad Ortak \u00c7al\u0131\u015fma Web D\u00fczenleyicisinin Kurulumu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=35595"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35595\/revisions"}],"predecessor-version":[{"id":35596,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35595\/revisions\/35596"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35595"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}