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/publicclient/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.