Hackpad是G0V開源社群愛用的線上文件協同編輯平台,在學運期間通過1500人壓測一戰成名。
Hackpad 基本是個簡便易用的網路共筆平台,支援多人共用即時更新,編輯文字、上傳圖檔還算便利,能追蹤編修歷程,比Wiki系統好用,我們開發團隊一直覺得用它整理系統架構文件、共用程式庫規格、茶包處理FAQ…等,會是很棒的選擇。但是對不少企業來說,這類「雲端服務」解決方案最大的致命傷始終在於「資訊儲放在網際網路可能外洩」的疑慮,用腳底板想都知道一提出來就會被網管或資安打槍(雖然放在公司裡也不保證絕對安全)。唯一的途徑是像Hipchat一樣,採自建伺服器自行管理模式才可能過關。
前天跟同事正好就聊到這個,才在感嘆可惜Hackpad沒有私服方案,追到 Github 找到 Hackpad 公司帳號,只發現一個空空如也的Hackpad Repository,唉~ 看來得想其他解決方案。
昨天早上,在FB看到一則好消息:Dropbox finally open-sources its Hackpad collaborative document editor。讀完才知故事始末,去年四月Dropbox併購了Hackpad,在今年四月左右Hackpad開發團隊曾發了通知說幾週後將會讓Hackpad開源,但近四個月過去什麼沒發生,還在Github討論區引發一些質疑。就在前天晚上,Dropbox終於釋出Hackpad原始碼!
說曹操曹操到的巧合真令人開心,馬上來試裝看看。懶得自己重灌VM,用MSDN訂閱附贈的額度在Azure開一台Ubuntu做測試,幾分鐘就有一台灌好OS的新VM可以玩,對於抱著玩膩就甩掉心態的花心IT,Azure真是搞一夜情做Lab的好地方。選Ubuntu的原因是想貼近Hackpad原有的開發執行環境,應能少踩一些雷,另一方面,也為將來的ASP.NET 5 on Linux預做準備,該好好溫一下Linux操作。
關於在Azure上開Ubuntu VM,小歐有一篇圖文並茂的說明:Linux on Azure:如何跨出第一步,不熟Azure操作的同學可以參考。Azure管理畫面已改版過,但步驟跟輸入欄位差不多。要留意一點,記得選A2以上等級,一開始我選A1 單核 1.5G RAM,啟動Hackpad時冒出記憶體不足的訊息,糗!後來調成A2 雙核 3.5G 才成功。
我選的OS是Ubuntu Server 15.04版(Ubuntu Server 14.x LTS是較穩定的版本,反正我是練刀沒差),依小歐的文件,我只裝到可用Putty登入,桌面環境跟遠端桌面就不裝了,純當Server用,靠指令搞定就好。
Github上的Hackpad 安裝文件寫得還算詳細,照著做就能成功安裝,以下是我的筆記:(要搞定還是需要基本Linux知識)
先更新套件資訊
sudo apt-get update安裝JDK 1.7 參考
sudo apt-get install default-jre 預設裝的就是1.7版
sudo apt-get install default-jdk 預設裝的就是1.7版安裝MySQL 參考:Ubuntu 安裝和設定 MySQL
sudo apt-get install mysql-server安裝MySQL Connect/J
(Java連MySQL的程式庫,這個安裝文件沒提到,有可能被當成常識吧!)
sudo apt-get install libmysql-java安裝Scala
直接 sudo apt-get install scala 只會裝2.9版,而安裝文件要求2.11
所以要用以下步驟 參考
sudo apt-get remove scala-library scala
wget http://www.scala-lang.org/files/archive/scala-2.11.7.deb
sudo dpkg -i scala-2.11.7.deb
sudo apt-get update
sudo apt-get install scala由Github取回Hackpad程式碼
wget https://github.com/dropbox/hackpad/archive/master.zip
sudo apt-get install unzip
unzip master.zip
將檔案解到hackpad-master目錄下修改 hackpad-master/bin/exports.sh
nano exports.sh (建議用nano文字編輯器)
修改以下項目(依Ubuntu版本、環境或操作步驟不同,路徑可能有異,請自行校正)
export SCALA_HOME="/usr/share/scala"
export SCALA_LIBRARY_JAR="$SCALAHOME/lib/scala-library.jar"
export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64"
export MYSQL_CONNECTOR_JAR="/usr/share/java/mysql.jar"緊張的開獎時間
執行hackpad-master/bin/build.sh 編譯程式
編譯過程冒出一些警告(Warning)搞得氣氛有點緊張,所幸人品通過檢測,編譯成功!設定資料庫
執行hackpad-master/contrib/scripts/setup-mysql-db.sh
Creating database hackpad...
Enter password: 輸入MySQL root密碼
Granting priviliges...
Enter password:
Success建立設定檔
將hackpad-master/etherpad/etc下的etherpad.localdev-default.properties複製成 etherpad.local.properties
nano etherpad.local.properties 使用nano修改設定 參考
我只按安裝說明改了以下兩項
etherpad.superUserEmailAddresses = 管理者email
topdomains = localhost,xxxx.cloudapp.net安裝gemoji表情字型
wget https://github.com/github/gemoji/archive/master.zip
unzip master.zip
將gemoji-master/images/emoji/unicode下的png檔複製到
hackpad-master/etherpad/src/static/img/emoji/unicode
懶得打通Facebook、Google帳號整合認證(反正未來在公司內部跑也用不到),也不想花時間搞定SMTP送信,使用者註冊只能選輸入電子郵件:
畫面提示需收信點連結才能完成認證程序,但你知道我知道獨眼龍也知道,等一輩子也不會等到信滴。
解決方法是直接下SQL,到MySQL資料庫由hackpad.email_signup查出token:
自行組出身分認證連結URL,httq://localhost:9000/ep/account/validate-email?email=YOUR_EMAIL&token=TOKEN,用瀏覽器直接開啟連結就可完成認證開始使用。
就這樣,一台Hackpad私服就安裝完成囉!
經過簡單測試,新増文件、編輯都OK,但部分功能有點小問題,例如圖檔上傳不Work、表格無法打字,而前後端不時連線Dropbox及Facebook(可能是某些整合沒關閉),看來還有不少怪要打,但這已是極好的第一步。
感謝Hackpad開發團隊,Open Source萬歲!