Hướng dẫn cài đặt Hedgedoc lên Ubuntu Server
Giới thiệu
Hedgedoc là ứng dụng viết và chia sẻ Markdown. Với liên kết được chia sẻ, có thể cùng nhau sửa chữa.
Trước đây mình có giới thiệu Joplin, tuy nhiên ứng dụng này thì chủ yếu dùng cho mục đích cá nhân, tuy có thể chia sẻ nhưng người nhận chỉ có thể đọc được, không thể ghi lại. Tiền thân của Hedgedoc là codimd.
Ưu điểm:
- Chia sẻ.
- Cùng sửa chữa tài liệu.
- Mã nguồn mở.
- Miễn phí, miễn phí và miễn phí.
Nhược điểm:
- Không có ứng dụng cho điện thoại, máy tính. Chỉ có thể làm việc thông qua web.
Với cá nhân mình thì vẫn sử dụng chính là Joplin, còn Hedgedoc để chia sẻ những notes mình muốn mọi người có thể cùng sửa.
Yêu cầu hệ thống
- Ubuntu Server.
- Nginx để làm Reverse Proxy.
- NodeJS phiên bản 14.13.1 trở lên, tốt nhất là ở bản 16.
- Tên miền với chứng chỉ SSL đã được lấy miễn phí từ Let's Encrypt.
- Cơ sở dữ liệu, có thể dùng PostgreSQL, MySQL, MariaDB hoặc SQLite, ở đây mình dùng SQLite cho nhẹ.
sudo apt install sqlite3
- Yarn
sudo npm install --global yarn
- Để build được Hedgedoc thì cần hệ thống với ít nhất 2Gb RAM, tuy nhiên khi chạy chỉ tốn ~100Mb thôi.
Cài đặt
Tải về
Tải về phiên bản mới nhất ở đây, giải nén và di chuyển toàn bộ vào thư mục /opt/hedgedoc, truy cập vào thư mục opt/hedgedoc (Thời điểm mình cài phiên bản mới nhất là 1.9.7).
git clone -b 1.9.7 https://github.com/hedgedoc/hedgedoc.git
sudo mv hedgedoc /opt
Tiến hành cài đặt
sudo ./opt/hedgedoc/bin/setup
Thao tác này sẽ cài đặt các phụ thuộc và tạo các cấu hình ví dụ, chờ một chút để quá trình này thực hiện.
Cấu hình Hedgedoc, tạo file config.json
sudo nano /opt/hedgedoc/config.json
Và nhập vào nội dung như sau
{
"production": {
"domain": "hedgedoc.com",
"loglevel": "info",
"port": "3009",
"protocolUseSSL": true,
"useSSL": false,
"sessionSecret": "ramdom-text-by-you",
"allowAnonymous": true,
"allowAnonymousEdits": false,
"email": true,
"allowEmailRegister": true,
"allowGravatar": true,
"defaultPermission": "private",
"hsts": {
"enable": true,
"maxAgeSeconds": 31536000,
"includeSubdomains": true,
"preload": true
},
"cookiePolicy": "lax",
"db": {
"dialect": "sqlite",
"storage": "./db.hedgedoc.sqlite"
}
}
Trong thư mục opt/hedgedoc thì cũng có sẵn file config.json.example, bạn cũng có thể copy file đó và sửa theo nội dung như trên.
Tạo tài khoản
Tạo một tài khoản mới để sử dụng chạy Hedgedoc và cho tài khoản đó quyền truy cập thư mục /opt/hedgedoc.
sudo adduser hedgedoc
sudo usermod -aG sudo hedgedoc
sudo chown -R hedgedoc:hedgedoc /opt/hedgedoc
sudo chmod -R 775 /opt/hedgedoc
Đăng nhập vào tài khoản mới đó
su - <user>
Cài đặt Hedgedoc khởi động bằng systemd
Tạo file hedgedoc.service ở thư mục /etc/systemd/system/
/etc/systemd/system/hedgedoc.service
và nhập vào nội dung như sau
[Unit]
Description=hedgedoc
After=network.target
[Service]
Environment=NODE_ENV=production
Type=simple
ExecStart=node /opt/hedgedoc/app.js
User=hedgedoc
Group=hedgedoc
WorkingDirectory=/opt/hedgedoc
Restart=on-failure
[Install]
WantedBy=multi-user.target
Làm cho systemd nhận cấu hình mới, tải lại và khởi động Hedgedoc.
sudo systemctl daemon-reload
sudo systemctl enable --now hedgedoc.service
sudo systemctl start hedgedoc.service
Kiểm tra hoạt động chưa
systemctl status hedgedoc.service
Hiện ra như hình là được rồi đó, tốn khoảng 100Mb RAM nhé.
Cấu hình Nginx
Tạo file cấu hình Nginx
sudo nano /etc/nginx/sites-available/hedgedoc.com
Và nhập vào nội dung sau
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
server_name hedgedoc.com;
location / {
proxy_pass http://127.0.0.1:3009;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /socket.io/ {
proxy_pass http://127.0.0.1:3009;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
listen [::]:443 ssl http2;
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/hedgedoc.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hedgedoc.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
Ánh xạ, kiểm tra cấu hình không lỗi thì khởi động lại Nginx
sudo ln -s /etc/nginx/sites-available/hedgedoc.com /etc/nginx/sites-enabled/hedgedoc.com
sudo nginx -t
sudo systemctl restart nginx
Xong, giờ chúng ta truy cập vào Tên miền và tạo tài khoản để sử dụng.
Sau khi đăng ký tài khoản xong, nếu bạn không muốn bị đăng ký tự do, thì sửa file config.json, tìm dòng "allowEmailRegister": true thay true bằng false.
"allowEmailRegister": true,
và thay bằng
"allowEmailRegister": false,
Đây là ví dụ một Share note của mình. Chúc các bạn thành công.