Cài Vikunja trên Ubuntu Server

Vikunja là một ứng dụng to-do list mã nguồn mở, tự lưu trữ và hỗ trợ trên rất nhiều nền tảng.

Ưu điểm của Vikunja

  • Mã nguồn mở.
  • Miễn phí, miễn phí và miễn phí.
  • Self Hosted, tự lưu trữ trên Server cá nhân.
  • Đẹp, mình nhìn thích nhất là đẹp 😁😁😁🤣🤣🤣.

Yêu cầu hệ thống

sudo apt install gzip

Cài đặt

Vikunja yêu cầu 2 thành phần APIFrontend, nếu bạn sử dụng Vikunja trên máy tính Linux hoặc Windows thì không cần cài Frontend. Mình sử dụng MAC và thường dùng nhiều trên di động nên mình cài thêm Frontend để truy cập qua trình duyệt.

Cài API

Vikunja có nhiều gói tùy hệ điều hành, chúng ta dùng Ubuntu Server nên tải về gói .deb mới nhất và tiến hành cài đặt.

wget https://dl.vikunja.io/api/0.20.2/vikunja-0.20.2-amd64.deb
sudo dpkg -i vikunja-0.20.2-amd64.deb
sudo systemctl start vikunja

Chờ một lát để quá trình cài đặt thực hiện, xác nhận cổng mà Vikunja đang sử dụng

netstat -tlpn

Như mặc định thì là ở cổng 3456, hãy nhớ số cổng này.

Cài Frontend

Tải về phiên bản Frontend tương ứng với API(khi mình cài thì API là phiên bản 0.20.2Frontend lại là phiên bản 0.20.3, mà mình sử dụng cũng không vấn đề gì phát sinh).

wget https://dl.vikunja.io/frontend/vikunja-frontend-0.20.3.zip

Tạo thư mục để chứa vikunja.com và giải nén vào đó. Di chuyển thư mục đó về /var/www/

sudo mkdir vikunja.com
sudo unzip vikunja-frontend-0.20.3.zip -d vikunja.com
sudo mv vikunja.com /var/www/

Cấu hình Nginx

Tạo file cấu hình Nginx

sudo nano /etc/nginx/sites-available/vikunja.com

Và nhập vào nội dung sau

#gzip on;
gzip_disable "msie6";

gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml;
server {
    listen 80;
    server_name vikunja.com;
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    server_name vikunja.com;
    location / {
        root /var/www/vikunja.com;
        try_files $uri $uri/ /;
        index index.htm index.html;
    }
    location ~* ^/(api|dav|\.well-known)/ {
        proxy_pass http://localhost:3456;
        client_max_body_size 20M;
    }
    ssl_certificate /etc/letsencrypt/live/vikunja.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/vikunja.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/vikunja.com /etc/nginx/sites-enabled/vikunja.com
sudo nginx -t
sudo systemctl restart nginx

Thường thì sau khi cấu hình Nginx như trên xong, chúng ta đã có API chạy ở địa chỉ *vikunja.com/api/v1, truy cập vào hiện ra

{"message":"missing or malformed jwt"}

hoặc địa chỉ vikunja.com/api/v1/info hiện ra

{"version":"v0.20.2","frontend_url":"","motd":"","link_sharing_enabled":true,"max_file_size":"20MB","registration_enabled":true,"available_migrators":["vikunja-file","ticktick"],"task_attachments_enabled":true,"enabled_background_providers":["upload"],"totp_enabled":true,"legal":{"imprint_url":"","privacy_policy_url":""},"caldav_enabled":true,"auth":{"local":{"enabled":true},"openid_connect":{"enabled":false,"redirect_url":"\u003cfrontend url\u003e","providers":null}},"email_reminders_enabled":true,"user_deletion_enabled":true,"task_comments_enabled":true}

API của chúng ta đã hoạt động và chúng ta có thể có quyền truy cập qua Tên miền.

Chỉnh sửa index.html ở Frontend để có quyền truy cập vào API

Giờ thì bạn đã cài đặt thành công, tuy nhiên nếu truy cập vào vikunja.com lúc này sẽ hoạt động không chính xác, vì chúng ta chưa cấu hình địa chỉ của API cho Frontend kết nối đến.
Để kết nối được, chúng ta sửa file index.html

sudo nano /var/www/vikunja.com/index.html

tìm phần

window.API_URL = 'http://localhost:3456/api/v1'

và thay bằng

window.API_URL = 'https://vikunja.com/api/v1'

Lưu file và truy cập. Đăng ký tài khoản và sử dụng thôi.

Tắt chức năng đăng ký

Vì mình sử dụng cho cá nhân mình nên mình tắt chức năng đăng ký đi cũng được.
Mở file cấu hình của Vikunja API

sudo nano /etc/vikunja/config.yml

Tìm phần

enableregistration: true

và thay true bằng false

enableregistration: false

Giờ khi người dùng mới đăng ký, chỉ hiện ra Not Found mà thôi.

Chúc các bạn thành công!. Có gì không hiểu cứ để lại comment nhé