[{"data":1,"prerenderedAt":988},["ShallowReactive",2],{"navigation":3,"/docs/guides/deploy-vps-nginx":156,"/docs/guides/deploy-vps-nginx-surround":983},[4,23,83,103,118,133,141],{"title":5,"path":6,"stem":7,"children":8,"icon":22},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"What is TaskView","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","/docs/getting-started/installation","docs/1.getting-started/2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick Start","/docs/getting-started/usage","docs/1.getting-started/3.usage","i-lucide-rocket",false,{"title":24,"icon":22,"path":25,"stem":26,"children":27,"page":22},"Features","/docs/features","docs/2.features",[28,33,38,43,48,53,58,63,68,73,78],{"title":29,"path":30,"stem":31,"icon":32},"Projects and Lists","/docs/features/projects-and-lists","docs/2.features/1.projects-and-lists","i-lucide-folder",{"title":34,"path":35,"stem":36,"icon":37},"Organizations","/docs/features/organizations","docs/2.features/10.organizations","i-lucide-building-2",{"title":39,"path":40,"stem":41,"icon":42},"SSO (Single Sign-On)","/docs/features/sso","docs/2.features/11.sso","i-lucide-shield-check",{"title":44,"path":45,"stem":46,"icon":47},"Tasks","/docs/features/tasks","docs/2.features/2.tasks","i-lucide-check-square",{"title":49,"path":50,"stem":51,"icon":52},"Kanban Board","/docs/features/kanban","docs/2.features/3.kanban","i-lucide-columns-3",{"title":54,"path":55,"stem":56,"icon":57},"Dependency Graph","/docs/features/graph","docs/2.features/4.graph","i-lucide-git-branch",{"title":59,"path":60,"stem":61,"icon":62},"Dashboard","/docs/features/dashboard","docs/2.features/5.dashboard","i-lucide-layout-dashboard",{"title":64,"path":65,"stem":66,"icon":67},"Notifications","/docs/features/notifications","docs/2.features/6.notifications","i-lucide-bell",{"title":69,"path":70,"stem":71,"icon":72},"Webhooks","/docs/features/webhooks","docs/2.features/7.webhooks","i-lucide-webhook",{"title":74,"path":75,"stem":76,"icon":77},"API Tokens","/docs/features/api-tokens","docs/2.features/8.api-tokens","i-lucide-key-round",{"title":79,"path":80,"stem":81,"icon":82},"Sessions & Devices","/docs/features/sessions","docs/2.features/9.sessions","i-lucide-monitor-smartphone",{"title":84,"icon":22,"path":85,"stem":86,"children":87,"page":22},"Integrations","/docs/integrations","docs/3.integrations",[88,93,98],{"title":89,"path":90,"stem":91,"icon":92},"GitHub & GitLab Setup","/docs/integrations/setup","docs/3.integrations/1.setup","i-lucide-git-pull-request",{"title":94,"path":95,"stem":96,"icon":97},"MCP Server","/docs/integrations/mcp","docs/3.integrations/2.mcp","i-lucide-bot",{"title":99,"path":100,"stem":101,"icon":102},"Telegram & Slack Setup","/docs/integrations/messaging","docs/3.integrations/3.messaging","i-lucide-send",{"title":104,"icon":22,"path":105,"stem":106,"children":107,"page":22},"Configuration","/docs/configuration","docs/4.configuration",[108,113],{"title":109,"path":110,"stem":111,"icon":112},"Environment Variables","/docs/configuration/environment-variables","docs/4.configuration/1.environment-variables","i-lucide-settings",{"title":114,"path":115,"stem":116,"icon":117},"Authentication","/docs/configuration/authentication","docs/4.configuration/2.authentication","i-lucide-lock",{"title":119,"icon":22,"path":120,"stem":121,"children":122,"page":22},"Collaboration","/docs/collaboration","docs/5.collaboration",[123,128],{"title":124,"path":125,"stem":126,"icon":127},"Team Members","/docs/collaboration/members","docs/5.collaboration/1.members","i-lucide-users",{"title":129,"path":130,"stem":131,"icon":132},"Roles and Permissions","/docs/collaboration/roles-and-permissions","docs/5.collaboration/2.roles-and-permissions","i-lucide-shield",{"title":134,"path":135,"stem":136,"children":137,"icon":22},"FAQ","/docs/faq","docs/6.faq/1.index",[138],{"title":139,"path":135,"stem":136,"icon":140},"Frequently Asked Questions","i-lucide-circle-help",{"title":142,"icon":22,"path":143,"stem":144,"children":145,"page":22},"Guides","/docs/guides","docs/7.guides",[146,151],{"title":147,"path":148,"stem":149,"icon":150},"Deploy TaskView on a VPS with Nginx","/docs/guides/deploy-vps-nginx","docs/7.guides/1.deploy-vps-nginx","i-lucide-server",{"title":152,"path":153,"stem":154,"icon":155},"TaskView for Freelancers","/docs/guides/taskview-for-freelancers","docs/7.guides/2.taskview-for-freelancers","i-lucide-briefcase",{"id":157,"title":147,"body":158,"description":977,"extension":978,"meta":979,"navigation":980,"path":148,"seo":981,"stem":149,"__hash__":982},"docs/docs/7.guides/1.deploy-vps-nginx.md",{"type":159,"value":160,"toc":966},"minimark",[161,165,170,192,196,199,317,320,343,347,359,366,377,384,393,396,413,417,436,440,443,464,468,471,486,762,765,786,789,814,817,844,847,864,868,875,879,882,920,923,927,940,946,962],[162,163,164],"p",{},"This guide walks you through deploying TaskView on a VPS with Nginx as a reverse proxy and free SSL certificates from Let's Encrypt.",[166,167,169],"h2",{"id":168},"prerequisites","Prerequisites",[171,172,173,177,189],"ul",{},[174,175,176],"li",{},"A VPS with Ubuntu 22.04+ (Debian, CentOS, or any Linux distro with Docker support works too)",[174,178,179,180,184,185,188],{},"A domain name pointing to your server's IP address (e.g., ",[181,182,183],"code",{},"tasks.yourcompany.com"," and ",[181,186,187],{},"api.tasks.yourcompany.com",")",[174,190,191],{},"SSH access to the server",[166,193,195],{"id":194},"step-1-install-docker","Step 1: Install Docker",[162,197,198],{},"Connect to your server and install Docker:",[200,201,206],"pre",{"className":202,"code":203,"language":204,"meta":205,"style":205},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Update packages\nsudo apt update && sudo apt upgrade -y\n\n# Install Docker\ncurl -fsSL https://get.docker.com | sh\n\n# Add your user to the docker group\nsudo usermod -aG docker $USER\n\n# Log out and back in for the group change to take effect\n","bash","",[181,207,208,217,246,253,259,277,282,288,306,311],{"__ignoreMap":205},[209,210,213],"span",{"class":211,"line":212},"line",1,[209,214,216],{"class":215},"sHwdD","# Update packages\n",[209,218,220,224,228,231,235,238,240,243],{"class":211,"line":219},2,[209,221,223],{"class":222},"sBMFI","sudo",[209,225,227],{"class":226},"sfazB"," apt",[209,229,230],{"class":226}," update",[209,232,234],{"class":233},"sMK4o"," &&",[209,236,237],{"class":222}," sudo",[209,239,227],{"class":226},[209,241,242],{"class":226}," upgrade",[209,244,245],{"class":226}," -y\n",[209,247,249],{"class":211,"line":248},3,[209,250,252],{"emptyLinePlaceholder":251},true,"\n",[209,254,256],{"class":211,"line":255},4,[209,257,258],{"class":215},"# Install Docker\n",[209,260,262,265,268,271,274],{"class":211,"line":261},5,[209,263,264],{"class":222},"curl",[209,266,267],{"class":226}," -fsSL",[209,269,270],{"class":226}," https://get.docker.com",[209,272,273],{"class":233}," |",[209,275,276],{"class":222}," sh\n",[209,278,280],{"class":211,"line":279},6,[209,281,252],{"emptyLinePlaceholder":251},[209,283,285],{"class":211,"line":284},7,[209,286,287],{"class":215},"# Add your user to the docker group\n",[209,289,291,293,296,299,302],{"class":211,"line":290},8,[209,292,223],{"class":222},[209,294,295],{"class":226}," usermod",[209,297,298],{"class":226}," -aG",[209,300,301],{"class":226}," docker",[209,303,305],{"class":304},"sTEyZ"," $USER\n",[209,307,309],{"class":211,"line":308},9,[209,310,252],{"emptyLinePlaceholder":251},[209,312,314],{"class":211,"line":313},10,[209,315,316],{"class":215},"# Log out and back in for the group change to take effect\n",[162,318,319],{},"Verify the installation:",[200,321,323],{"className":202,"code":322,"language":204,"meta":205,"style":205},"docker --version\ndocker compose version\n",[181,324,325,333],{"__ignoreMap":205},[209,326,327,330],{"class":211,"line":212},[209,328,329],{"class":222},"docker",[209,331,332],{"class":226}," --version\n",[209,334,335,337,340],{"class":211,"line":219},[209,336,329],{"class":222},[209,338,339],{"class":226}," compose",[209,341,342],{"class":226}," version\n",[166,344,346],{"id":345},"step-2-set-up-taskview","Step 2: Set up TaskView",[162,348,349,350,354,355,358],{},"Follow the standard ",[351,352,353],"a",{"href":14},"Installation guide"," to create your project directory, environment files, and ",[181,356,357],{},"docker-compose.yml",".",[162,360,361,362,365],{},"Update your ",[181,363,364],{},".env.taskview"," with production values:",[200,367,371],{"className":368,"code":369,"language":370,"meta":205,"style":205},"language-env shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","APP_URL=\"https://tasks.yourcompany.com\"\n","env",[181,372,373],{"__ignoreMap":205},[209,374,375],{"class":211,"line":212},[209,376,369],{},[162,378,379,380,383],{},"Update ",[181,381,382],{},"CORS_ALLOWED_ORIGINS"," to include your production domain:",[200,385,387],{"className":368,"code":386,"language":370,"meta":205,"style":205},"CORS_ALLOWED_ORIGINS=\"https://tasks.yourcompany.com\"\n",[181,388,389],{"__ignoreMap":205},[209,390,391],{"class":211,"line":212},[209,392,386],{},[162,394,395],{},"Start the containers:",[200,397,399],{"className":202,"code":398,"language":204,"meta":205,"style":205},"docker compose up -d\n",[181,400,401],{"__ignoreMap":205},[209,402,403,405,407,410],{"class":211,"line":212},[209,404,329],{"class":222},[209,406,339],{"class":226},[209,408,409],{"class":226}," up",[209,411,412],{"class":226}," -d\n",[166,414,416],{"id":415},"step-3-install-nginx","Step 3: Install Nginx",[200,418,420],{"className":202,"code":419,"language":204,"meta":205,"style":205},"sudo apt install nginx -y\n",[181,421,422],{"__ignoreMap":205},[209,423,424,426,428,431,434],{"class":211,"line":212},[209,425,223],{"class":222},[209,427,227],{"class":226},[209,429,430],{"class":226}," install",[209,432,433],{"class":226}," nginx",[209,435,245],{"class":226},[166,437,439],{"id":438},"step-4-install-certbot-and-get-ssl-certificates","Step 4: Install Certbot and get SSL certificates",[162,441,442],{},"Install Certbot with the Nginx plugin to get free SSL certificates from Let's Encrypt:",[200,444,446],{"className":202,"code":445,"language":204,"meta":205,"style":205},"sudo apt install certbot python3-certbot-nginx -y\n",[181,447,448],{"__ignoreMap":205},[209,449,450,452,454,456,459,462],{"class":211,"line":212},[209,451,223],{"class":222},[209,453,227],{"class":226},[209,455,430],{"class":226},[209,457,458],{"class":226}," certbot",[209,460,461],{"class":226}," python3-certbot-nginx",[209,463,245],{"class":226},[166,465,467],{"id":466},"step-5-configure-nginx-with-https","Step 5: Configure Nginx with HTTPS",[162,469,470],{},"Create a configuration file:",[200,472,474],{"className":202,"code":473,"language":204,"meta":205,"style":205},"sudo nano /etc/nginx/sites-available/taskview\n",[181,475,476],{"__ignoreMap":205},[209,477,478,480,483],{"class":211,"line":212},[209,479,223],{"class":222},[209,481,482],{"class":226}," nano",[209,484,485],{"class":226}," /etc/nginx/sites-available/taskview\n",[200,487,491],{"className":488,"code":489,"language":490,"meta":205,"style":205},"language-nginx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# TaskView Web App - redirect HTTP to HTTPS\nserver {\n    listen 80;\n    server_name tasks.yourcompany.com;\n    return 301 https://$host$request_uri;\n}\n\nserver {\n    listen 443 ssl;\n    server_name tasks.yourcompany.com;\n\n    ssl_certificate /etc/letsencrypt/live/tasks.yourcompany.com/fullchain.pem;\n    ssl_certificate_key /etc/letsencrypt/live/tasks.yourcompany.com/privkey.pem;\n    include /etc/letsencrypt/options-ssl-nginx.conf;\n    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;\n\n    location / {\n        proxy_pass http://127.0.0.1:8888;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n\n# TaskView API - redirect HTTP to HTTPS\nserver {\n    listen 80;\n    server_name api.tasks.yourcompany.com;\n    return 301 https://$host$request_uri;\n}\n\nserver {\n    listen 443 ssl;\n    server_name api.tasks.yourcompany.com;\n\n    ssl_certificate /etc/letsencrypt/live/api.tasks.yourcompany.com/fullchain.pem;\n    ssl_certificate_key /etc/letsencrypt/live/api.tasks.yourcompany.com/privkey.pem;\n    include /etc/letsencrypt/options-ssl-nginx.conf;\n    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;\n\n    client_max_body_size 50M;\n\n    location / {\n        proxy_pass http://127.0.0.1:1725;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n","nginx",[181,492,493,498,503,508,513,518,523,527,531,536,540,545,551,557,563,569,574,580,586,592,598,604,610,616,621,626,632,637,642,648,653,658,663,668,673,678,683,689,695,700,705,710,716,721,726,732,737,742,747,752,757],{"__ignoreMap":205},[209,494,495],{"class":211,"line":212},[209,496,497],{},"# TaskView Web App - redirect HTTP to HTTPS\n",[209,499,500],{"class":211,"line":219},[209,501,502],{},"server {\n",[209,504,505],{"class":211,"line":248},[209,506,507],{},"    listen 80;\n",[209,509,510],{"class":211,"line":255},[209,511,512],{},"    server_name tasks.yourcompany.com;\n",[209,514,515],{"class":211,"line":261},[209,516,517],{},"    return 301 https://$host$request_uri;\n",[209,519,520],{"class":211,"line":279},[209,521,522],{},"}\n",[209,524,525],{"class":211,"line":284},[209,526,252],{"emptyLinePlaceholder":251},[209,528,529],{"class":211,"line":290},[209,530,502],{},[209,532,533],{"class":211,"line":308},[209,534,535],{},"    listen 443 ssl;\n",[209,537,538],{"class":211,"line":313},[209,539,512],{},[209,541,543],{"class":211,"line":542},11,[209,544,252],{"emptyLinePlaceholder":251},[209,546,548],{"class":211,"line":547},12,[209,549,550],{},"    ssl_certificate /etc/letsencrypt/live/tasks.yourcompany.com/fullchain.pem;\n",[209,552,554],{"class":211,"line":553},13,[209,555,556],{},"    ssl_certificate_key /etc/letsencrypt/live/tasks.yourcompany.com/privkey.pem;\n",[209,558,560],{"class":211,"line":559},14,[209,561,562],{},"    include /etc/letsencrypt/options-ssl-nginx.conf;\n",[209,564,566],{"class":211,"line":565},15,[209,567,568],{},"    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;\n",[209,570,572],{"class":211,"line":571},16,[209,573,252],{"emptyLinePlaceholder":251},[209,575,577],{"class":211,"line":576},17,[209,578,579],{},"    location / {\n",[209,581,583],{"class":211,"line":582},18,[209,584,585],{},"        proxy_pass http://127.0.0.1:8888;\n",[209,587,589],{"class":211,"line":588},19,[209,590,591],{},"        proxy_set_header Host $host;\n",[209,593,595],{"class":211,"line":594},20,[209,596,597],{},"        proxy_set_header X-Real-IP $remote_addr;\n",[209,599,601],{"class":211,"line":600},21,[209,602,603],{},"        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n",[209,605,607],{"class":211,"line":606},22,[209,608,609],{},"        proxy_set_header X-Forwarded-Proto $scheme;\n",[209,611,613],{"class":211,"line":612},23,[209,614,615],{},"    }\n",[209,617,619],{"class":211,"line":618},24,[209,620,522],{},[209,622,624],{"class":211,"line":623},25,[209,625,252],{"emptyLinePlaceholder":251},[209,627,629],{"class":211,"line":628},26,[209,630,631],{},"# TaskView API - redirect HTTP to HTTPS\n",[209,633,635],{"class":211,"line":634},27,[209,636,502],{},[209,638,640],{"class":211,"line":639},28,[209,641,507],{},[209,643,645],{"class":211,"line":644},29,[209,646,647],{},"    server_name api.tasks.yourcompany.com;\n",[209,649,651],{"class":211,"line":650},30,[209,652,517],{},[209,654,656],{"class":211,"line":655},31,[209,657,522],{},[209,659,661],{"class":211,"line":660},32,[209,662,252],{"emptyLinePlaceholder":251},[209,664,666],{"class":211,"line":665},33,[209,667,502],{},[209,669,671],{"class":211,"line":670},34,[209,672,535],{},[209,674,676],{"class":211,"line":675},35,[209,677,647],{},[209,679,681],{"class":211,"line":680},36,[209,682,252],{"emptyLinePlaceholder":251},[209,684,686],{"class":211,"line":685},37,[209,687,688],{},"    ssl_certificate /etc/letsencrypt/live/api.tasks.yourcompany.com/fullchain.pem;\n",[209,690,692],{"class":211,"line":691},38,[209,693,694],{},"    ssl_certificate_key /etc/letsencrypt/live/api.tasks.yourcompany.com/privkey.pem;\n",[209,696,698],{"class":211,"line":697},39,[209,699,562],{},[209,701,703],{"class":211,"line":702},40,[209,704,568],{},[209,706,708],{"class":211,"line":707},41,[209,709,252],{"emptyLinePlaceholder":251},[209,711,713],{"class":211,"line":712},42,[209,714,715],{},"    client_max_body_size 50M;\n",[209,717,719],{"class":211,"line":718},43,[209,720,252],{"emptyLinePlaceholder":251},[209,722,724],{"class":211,"line":723},44,[209,725,579],{},[209,727,729],{"class":211,"line":728},45,[209,730,731],{},"        proxy_pass http://127.0.0.1:1725;\n",[209,733,735],{"class":211,"line":734},46,[209,736,591],{},[209,738,740],{"class":211,"line":739},47,[209,741,597],{},[209,743,745],{"class":211,"line":744},48,[209,746,603],{},[209,748,750],{"class":211,"line":749},49,[209,751,609],{},[209,753,755],{"class":211,"line":754},50,[209,756,615],{},[209,758,760],{"class":211,"line":759},51,[209,761,522],{},[162,763,764],{},"Enable the site:",[200,766,768],{"className":202,"code":767,"language":204,"meta":205,"style":205},"sudo ln -s /etc/nginx/sites-available/taskview /etc/nginx/sites-enabled/\n",[181,769,770],{"__ignoreMap":205},[209,771,772,774,777,780,783],{"class":211,"line":212},[209,773,223],{"class":222},[209,775,776],{"class":226}," ln",[209,778,779],{"class":226}," -s",[209,781,782],{"class":226}," /etc/nginx/sites-available/taskview",[209,784,785],{"class":226}," /etc/nginx/sites-enabled/\n",[162,787,788],{},"Get SSL certificates from Let's Encrypt using Certbot. Certbot will verify domain ownership and download the certificates referenced in the Nginx config:",[200,790,792],{"className":202,"code":791,"language":204,"meta":205,"style":205},"sudo certbot --nginx -d tasks.yourcompany.com -d api.tasks.yourcompany.com\n",[181,793,794],{"__ignoreMap":205},[209,795,796,798,800,803,806,809,811],{"class":211,"line":212},[209,797,223],{"class":222},[209,799,458],{"class":226},[209,801,802],{"class":226}," --nginx",[209,804,805],{"class":226}," -d",[209,807,808],{"class":226}," tasks.yourcompany.com",[209,810,805],{"class":226},[209,812,813],{"class":226}," api.tasks.yourcompany.com\n",[162,815,816],{},"Test the configuration and restart Nginx:",[200,818,820],{"className":202,"code":819,"language":204,"meta":205,"style":205},"sudo nginx -t\nsudo systemctl restart nginx\n",[181,821,822,831],{"__ignoreMap":205},[209,823,824,826,828],{"class":211,"line":212},[209,825,223],{"class":222},[209,827,433],{"class":226},[209,829,830],{"class":226}," -t\n",[209,832,833,835,838,841],{"class":211,"line":219},[209,834,223],{"class":222},[209,836,837],{"class":226}," systemctl",[209,839,840],{"class":226}," restart",[209,842,843],{"class":226}," nginx\n",[162,845,846],{},"Certbot sets up automatic certificate renewal. Verify it works:",[200,848,850],{"className":202,"code":849,"language":204,"meta":205,"style":205},"sudo certbot renew --dry-run\n",[181,851,852],{"__ignoreMap":205},[209,853,854,856,858,861],{"class":211,"line":212},[209,855,223],{"class":222},[209,857,458],{"class":226},[209,859,860],{"class":226}," renew",[209,862,863],{"class":226}," --dry-run\n",[166,865,867],{"id":866},"step-6-verify","Step 6: Verify",[162,869,870,871,874],{},"Open ",[181,872,873],{},"https://tasks.yourcompany.com"," in your browser. You should see the TaskView login screen served over HTTPS.",[166,876,878],{"id":877},"automatic-updates","Automatic updates",[162,880,881],{},"Create a simple script to update TaskView:",[200,883,885],{"className":202,"code":884,"language":204,"meta":205,"style":205},"#!/bin/bash\ncd /path/to/taskview\ndocker compose pull\ndocker compose up -d\n",[181,886,887,892,901,910],{"__ignoreMap":205},[209,888,889],{"class":211,"line":212},[209,890,891],{"class":215},"#!/bin/bash\n",[209,893,894,898],{"class":211,"line":219},[209,895,897],{"class":896},"s2Zo4","cd",[209,899,900],{"class":226}," /path/to/taskview\n",[209,902,903,905,907],{"class":211,"line":248},[209,904,329],{"class":222},[209,906,339],{"class":226},[209,908,909],{"class":226}," pull\n",[209,911,912,914,916,918],{"class":211,"line":255},[209,913,329],{"class":222},[209,915,339],{"class":226},[209,917,409],{"class":226},[209,919,412],{"class":226},[162,921,922],{},"You can schedule this with cron if you want automatic updates, or run it manually when a new version is released.",[166,924,926],{"id":925},"troubleshooting","Troubleshooting",[162,928,929,933,934,184,937,358],{},[930,931,932],"strong",{},"502 Bad Gateway","\nThe TaskView containers aren't running. Check with ",[181,935,936],{},"docker compose ps",[181,938,939],{},"docker compose logs",[162,941,942,945],{},[930,943,944],{},"SSL certificate errors","\nMake sure your domain's DNS A record points to your server's IP. Certbot needs to verify domain ownership.",[162,947,948,951,952,954,955,957,958,961],{},[930,949,950],{},"Can't connect to the API","\nCheck that ",[181,953,382],{}," in ",[181,956,364],{}," includes your production frontend URL with the ",[181,959,960],{},"https://"," prefix.",[963,964,965],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":205,"searchDepth":219,"depth":219,"links":967},[968,969,970,971,972,973,974,975,976],{"id":168,"depth":219,"text":169},{"id":194,"depth":219,"text":195},{"id":345,"depth":219,"text":346},{"id":415,"depth":219,"text":416},{"id":438,"depth":219,"text":439},{"id":466,"depth":219,"text":467},{"id":866,"depth":219,"text":867},{"id":877,"depth":219,"text":878},{"id":925,"depth":219,"text":926},"Step-by-step guide to deploy TaskView on a VPS with Nginx reverse proxy, SSL certificates via Let's Encrypt, and Docker Compose. Production-ready self-hosted setup.","md",{},{"icon":150},{"title":147,"description":977},"sNRUYe135YrQ__li6PHShhPs92-ETT8xg1qaFVDl9Jc",[984,986],{"title":139,"path":135,"stem":136,"description":985,"icon":140,"children":-1},"Common questions about TaskView - self-hosted open-source task and project management. Installation, features, security, Docker deployment, team collaboration, and more.",{"title":152,"path":153,"stem":154,"description":987,"icon":155,"children":-1},"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.",1783289464129]