Deploy TaskView on a VPS with Nginx
This guide walks you through deploying TaskView on a VPS with Nginx as a reverse proxy and free SSL certificates from Let's Encrypt.
Prerequisites
- A VPS with Ubuntu 22.04+ (Debian, CentOS, or any Linux distro with Docker support works too)
- A domain name pointing to your server's IP address (e.g.,
tasks.yourcompany.comandapi.tasks.yourcompany.com) - SSH access to the server
Step 1: Install Docker
Connect to your server and install Docker:
# Update packages
sudo apt update && sudo apt upgrade -y
# Install Docker
curl -fsSL https://get.docker.com | sh
# Add your user to the docker group
sudo usermod -aG docker $USER
# Log out and back in for the group change to take effect
Verify the installation:
docker --version
docker compose version
Step 2: Set up TaskView
Follow the standard Installation guide to create your project directory, environment files, and docker-compose.yml.
Update your .env.taskview with production values:
APP_URL="https://tasks.yourcompany.com"
Update CORS_ALLOWED_ORIGINS to include your production domain:
CORS_ALLOWED_ORIGINS="https://tasks.yourcompany.com"
Start the containers:
docker compose up -d
Step 3: Install Nginx
sudo apt install nginx -y
Step 4: Install Certbot and get SSL certificates
Install Certbot with the Nginx plugin to get free SSL certificates from Let's Encrypt:
sudo apt install certbot python3-certbot-nginx -y
Step 5: Configure Nginx with HTTPS
Create a configuration file:
sudo nano /etc/nginx/sites-available/taskview
# TaskView Web App - redirect HTTP to HTTPS
server {
listen 80;
server_name tasks.yourcompany.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name tasks.yourcompany.com;
ssl_certificate /etc/letsencrypt/live/tasks.yourcompany.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tasks.yourcompany.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://127.0.0.1:8888;
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;
}
}
# TaskView API - redirect HTTP to HTTPS
server {
listen 80;
server_name api.tasks.yourcompany.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name api.tasks.yourcompany.com;
ssl_certificate /etc/letsencrypt/live/api.tasks.yourcompany.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.tasks.yourcompany.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
client_max_body_size 50M;
location / {
proxy_pass http://127.0.0.1:1725;
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;
}
}
Enable the site:
sudo ln -s /etc/nginx/sites-available/taskview /etc/nginx/sites-enabled/
Get SSL certificates from Let's Encrypt using Certbot. Certbot will verify domain ownership and download the certificates referenced in the Nginx config:
sudo certbot --nginx -d tasks.yourcompany.com -d api.tasks.yourcompany.com
Test the configuration and restart Nginx:
sudo nginx -t
sudo systemctl restart nginx
Certbot sets up automatic certificate renewal. Verify it works:
sudo certbot renew --dry-run
Step 6: Verify
Open https://tasks.yourcompany.com in your browser. You should see the TaskView login screen served over HTTPS.
Automatic updates
Create a simple script to update TaskView:
#!/bin/bash
cd /path/to/taskview
docker compose pull
docker compose up -d
You can schedule this with cron if you want automatic updates, or run it manually when a new version is released.
Troubleshooting
502 Bad Gateway
The TaskView containers aren't running. Check with docker compose ps and docker compose logs.
SSL certificate errors Make sure your domain's DNS A record points to your server's IP. Certbot needs to verify domain ownership.
Can't connect to the API
Check that CORS_ALLOWED_ORIGINS in .env.taskview includes your production frontend URL with the https:// prefix.
Frequently Asked Questions
Common questions about TaskView - self-hosted open-source task and project management. Installation, features, security, Docker deployment, team collaboration, and more.
TaskView for Freelancers
How freelancers can use TaskView for project management, client work tracking, budget and income tracking, and task organization. Free self-hosted alternative to paid tools.
