Cài đặt Planka lên Ubuntu Server
Giới thiệu
Hôm trước mình có giới thiệu ứng dụng Vikunja hay leantime, hôm nay mình xin giới thiệu một ứng dụng nữa để làm to-do list hay quản lý dự án đều được. Đó là Planka
Ưu điểm
- Miễn phí, miễn phí và miễn phí.
- Mã nguồn mở.
- Cực kỳ nhanh.
- Thao tác rất đơn giản, dễ dàng.
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 PostgreSQL.
Cài đặt
Tạo cơ sở dữ liệu
Đăng nhập vào tài khoản root
sudo -u postgres psql
Tạo cơ sở dữ liệu planka và tài khoản plankadb, tên cơ sở dữ liệu và tài khoản cũng như mật khẩu tùy bạn
create database plankadb;
create user planka with encrypted password 'password';
grant all privileges on database plankadb to planka;
exit;
Tạo tài khoản
Tạo một tài khoản mới để sử dụng chạy planka.
sudo adduser planka
sudo usermod -aG sudo planka
Đăng nhập vào tài khoản mới đó
su - <user>
Tải về và cài đặt
Tải phiên bản mới nhất về, copy về thư mục var/www/planka.com
git clone https://github.com/plankanban/planka.git
sudo mv planka /var/www/planka.com
Cấp quyền user planka cho thư mục đó
sudo chown -R planka:planka /var/www/planka
sudo chmod -R 755 /var/www/planka
Truy cập vào thư mục cài đặt, cài các gói cần thiết
cd /var/www/planka.com
npm install
Tiến hành build, (chú ý: chúng ta tiến hành build trong thư mục client)
cd client
npm run build
Thông thường, chúng ta phải sao chép mọi thứ từ client/build sang server/public và client/build/index.html sang server/views/index.ejs, tuy nhiên, chúng ta có thể sử dụng các liên kết tượng trưng, điều này làm cho việc cập nhật trở nên dễ dàng và nhanh chóng hơn. Tạo các liên kết tượng trưng như sau.
ln -s /var/www/planka/client/build/asset-manifest.json /var/www/planka/server/public/asset-manifest.json
ln -s /var/www/planka/client/build/favicon.ico /var/www/planka/server/public/favicon.ico
ln -s /var/www/planka/client/build/logo192.png /var/www/planka/server/public/logo192.png
ln -s /var/www/planka/client/build/logo512.png /var/www/planka/server/public/logo512.png
ln -s /var/www/planka/client/build/manifest.json /var/www/planka/server/public/manifest.json
ln -s /var/www/planka/client/build/robots.txt /var/www/planka/server/public/robots.txt
ln -s /var/www/planka/client/build/static /var/www/planka/server/public/static
ln -s /var/www/planka/client/build/index.html /var/www/planka/server/views/index.ejs
Tạo screct_key
openssl rand -hex 64
Cấu hình biến môi trường
cd /var/www/planka.com/server
sudo cp .env.sample .env
Mở file .env và điền các thông tin cần thiết.
## Required
BASE_URL=YOUR_DOMAINNAME
DATABASE_URL=postgresql://planka:YOUR_DATABASE_PASSWORD@localhost/plankadb
SECRET_KEY=YOUR_GENERATED_KEY
## Optional
# TRUST_PROXY=0
# TOKEN_EXPIRES_IN=365 # In days
## Do not edit this
TZ=UTC
Trong đó YOUR_DOMAINNAME là tên miền của bạn, planka là tài khoản, YOUR_DATABASE_PASSWORD là mật khẩu, plankadb là cơ sở dữ liệu đã tạo ở trên.
Tiến hành chạy thử
npm run db:init && npm start --prod
Kiểm tra thử
curl localhost:1337
Có kết quả trả về như dưới là được rồi đó
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="https://planka.com/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Planka is an open source project management software"/><link rel="apple-touch-icon" href="logo192.png"/><link rel="manifest" href="https://planka.com/manifest.json"/><title>Planka</title><script defer="defer" src="https://planka.com/static/js/main.0c7e57ec.js"></script><link href="https://planka.com/static/css/main.b309260b.css" rel="stylesheet"></head><script>window.BASE_URL="https://planka.com"</script><body id="app"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
Ctrl + C để ngắt và tiếp tục bước tiếp theo.
Cài đặt planka khởi động bằng systemd
Tạo file planka.service ở thư mục /etc/systemd/system/
sudo nano /etc/systemd/system/planka.service
và nhập vào nội dung như sau
[Unit]
Description=planka
[Service]
Environment=NODE_ENV=production
Type=simple
ExecStart=npm start --prod
User=luffy
Group=luffy
WorkingDirectory=/var/www/planka.com/server
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 planka.
sudo systemctl daemon-reload
sudo systemctl enable --now planka.service
sudo systemctl start planka.service
Kiểm tra hoạt động chưa
systemctl status planka.service
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
server {
listen 80;
server_name planka.com;
return 301 https://$server_name$request_uri;
}
server {
server_name planka.com;
listen 443 ssl http2;
access_log /var/log/nginx/planka.access.log;
error_log /var/log/nginx/planka.error.log;
ssl_certificate /etc/letsencrypt/live/planka.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/planka.com/privkey.pem;
#include /etc/nginx/include/diffie-hellman;
client_max_body_size 2G;
location ~* \.(?:ico|css|js|gif|jpe?g|png|ttf|woff|)$ {
access_log off;
expires 30d;
add_header Pragma public;
add_header Cache-Control "public, mustrevalidate, proxy-revalidate";
proxy_set_header Upgrade $http_upgrade;
proxy_http_version 1.1;
proxy_set_header Connection "upgrade";
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_pass http://192.168.0.16:1337;
proxy_redirect off;
proxy_buffering off;
}
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_http_version 1.1;
proxy_set_header Connection "upgrade";
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_pass http://192.168.0.16:1337;
proxy_redirect off;
proxy_buffering off;
}
}
Xong, giờ chúng ta truy cập vào Tên miền và đăng nhập với tài khoản mặc định
user: demo@demo.demo
password: demo
Tiến hành đổi mật khẩu và sử dụng. Chúc các bạn thành công.