[{"data":1,"prerenderedAt":147},["ShallowReactive",2],{"seo-verification":3,"blog-hosting-nextcloud-on-your-own-vps-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":24,"featuredImage":26,"bgImage":27,"posterImage":28,"relatedSolution":29,"intro":31,"sections":32,"ctaTitle":87,"ctaBody":88,"ctaButton":89,"ctaUrl":90,"relatedPosts":91},71,"hosting-nextcloud-on-your-own-vps",{"fr":10,"en":8,"ar":11},"heberger-nextcloud","استضافة-nextcloud-على-خادمك-الـvps-الخاص","Self-Host Nextcloud on VPS: Complete Guide, NC 34 and Security","Deploy Nextcloud 34.0.2 on your VPS with Docker and Redis. Complete guide: missing NC 34.0.0 apps, PostgreSQL oc_filecache_extended constraint, and 2FA CVEs.",12,0,false,"2026-04-10T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[25],{"id":19,"name":20,"slug":21,"color":22,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-nextcloud-poster.svg",{"categorySlug":21,"appSlug":30},"nextcloud","Nextcloud is one of the most widely deployed self-hosted applications — and one of the most misconfigured. Between instances running without Redis, without forced TLS, the May 2026 update patching two critical 2FA bypass vulnerabilities, and now the NC 34.0.0-specific regressions — recommended apps missing at first launch, a duplicated PostgreSQL constraint that can spike CPU — every release brings its own pitfalls. This guide takes you from a complete installation to security verification, covering the NC 34.0.2 fixes and the 5 most common mistakes.",[33,37,40,43,46,65,68,71,74,78,81,84],{"type":34,"title":35,"body":36},"h2","Security Alert — May 2026 2FA Bypass CVEs","In May 2026, two critical two-factor authentication bypass vulnerabilities were disclosed in Nextcloud:\n\n**CVE-2026-45690** (CVSS score 5.9, disclosed May 15, 2026): an attacker with a username and password can bypass 2FA verification using **HTTP Basic Auth** (basic authentication via the `Authorization: Basic base64(user:pass)` header). Nextcloud, in affected versions, accepted HTTP Basic Auth even when 2FA was enabled for the targeted account.\n\n**CVE-2026-45691** (CVSS score 5.9, disclosed May 13, 2026): same vulnerability class, exploitable via a **DAV Bearer token** — the WebDAV protocol used by desktop sync clients (Nextcloud Desktop, Nautilus, Finder).\n\nBoth CVEs are fixed in **Nextcloud 32.0.9** (branch 32), **33.0.3** (branch 33), and **34.0.2** (branch 34). **Check if your instance is vulnerable** (see dedicated section below).",{"type":34,"title":38,"body":39},"NC 34.0.0 — Recommended Apps Missing on First Launch","Nextcloud 34.0.0 introduces a regression in the installation wizard: recommended apps (Notes, Calendar, Contacts) are **not offered** during initial setup. The suggested apps list stays empty, regardless of the installation profile selected.\n\n**Practical impact:** a fresh NC 34.0.0 instance lacks the basic productivity apps. Users expecting CalDAV calendar or CardDAV contact sync must install them manually from the admin interface.\n\n**Sources:** GitHub issues \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fserver\u002Fissues\u002F61313\">#61313\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fserver\u002Fissues\u002F61611\">#61611\u003C\u002Fa> — fixed in **34.0.2**.\n\n**Check if your apps are present:**\n\n```bash\ndocker compose exec -u www-data app php occ app:list | grep -E 'calendar|contacts|notes'\n```\n\nIf the command returns nothing, the apps are not installed. To add them manually:\n\n```bash\ndocker compose exec -u www-data app php occ app:install calendar\ndocker compose exec -u www-data app php occ app:install contacts\ndocker compose exec -u www-data app php occ app:install notes\n```\n\n**Recommendation:** start directly on **34.0.2** or higher rather than 34.0.0. If your instance is already on 34.0.0, updating to 34.0.2 restores the wizard — but missing apps on the existing instance still need to be installed manually.",{"type":34,"title":41,"body":42},"NC 34.0.0 — Duplicated PostgreSQL Constraint and CPU Spike","On instances using **PostgreSQL** (instead of MariaDB\u002FMySQL), an interrupted Nextcloud 34.0.0 migration can leave a duplicated constraint on the `oc_filecache_extended` table. This duplicate goes unnoticed at startup but triggers a **CPU and RAM spike** during the next file scan (`files:scan`) or automatic maintenance.\n\n**Symptoms:** abnormally high CPU load on the Nextcloud container, a file scan that never completes, log errors like `duplicate key value violates unique constraint`.\n\n**Source:** GitHub issue \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fserver\u002Fissues\u002F61597\">#61597\u003C\u002Fa>.\n\n**Verification and fix:**\n\n```bash\n# 1. Clean up orphaned file cache entries\ndocker compose exec -u www-data app php occ files:cleanup\n\n# 2. Rebuild missing indices on the affected table\ndocker compose exec -u www-data app php occ db:add-missing-indices\n\n# 3. Verify no missing columns\ndocker compose exec -u www-data app php occ db:add-missing-columns\n```\n\nIf errors persist, upgrade directly to **34.0.2** which contains the migration fix.\n\n**Note:** this issue does **not** affect MariaDB\u002FMySQL instances. PostgreSQL production instances on NC 34.0.0 should apply these commands before the next automatic scan.",{"type":34,"title":44,"body":45},"Prerequisites and Sizing","Recommended configuration: VPS with **2 GB RAM** (4 GB for more than 5 active users), **SSD required** (many file and thumbnail operations), **20 GB minimum** storage plus data space, Ubuntu 22.04 or Debian 12, Docker Engine ≥ 24, a domain name with TLS certificate, ports 80 and 443 open.",{"type":47,"title":48,"steps":49},"steps","Installing Nextcloud with Docker Compose",[50,53,56,59,62],{"title":51,"body":52},"Step 1 — Create the project structure","Create `\u002Fopt\u002Fnextcloud\u002Fdocker-compose.yml` with MariaDB 10.11, Redis 7-alpine, and Nextcloud `nextcloud:34.0.2-apache`. Bind the app to `127.0.0.1:8080:80`. Set `depends_on: db` and `redis`.",{"title":54,"body":55},"Step 2 — Create the environment file","```bash\ncat > \u002Fopt\u002Fnextcloud\u002F.env \u003C\u003C 'EOF'\nMYSQL_ROOT_PASSWORD=strong_root_password\nMYSQL_PASSWORD=strong_nextcloud_password\nREDIS_PASSWORD=strong_redis_password\nNEXTCLOUD_ADMIN_USER=admin\nNEXTCLOUD_ADMIN_PASSWORD=strong_admin_password\nNEXTCLOUD_DOMAIN=cloud.yourdomain.com\nEOF\n```",{"title":57,"body":58},"Step 3 — Start the containers","```bash\ndocker compose up -d\ndocker compose logs -f app\n```\n\nFirst startup takes 2 to 4 minutes. Wait for `Nextcloud was successfully installed`.",{"title":60,"body":61},"Step 4 — Configure Nginx with TLS","Install Nginx and Certbot, create the Nextcloud site with `client_max_body_size 10G;` and proxy headers, then run `certbot --nginx -d cloud.yourdomain.com`.",{"title":63,"body":64},"Step 5 — Configure SMTP for Email Notifications","Nextcloud sends email notifications for file sharing, password reset, and 2FA. Configure SMTP in Administration → Basic Settings:\n\n- **Send mode**: SMTP\n- **Host**: your SMTP server (e.g. `smtp.eu.mailgun.org`)\n- **Port**: 587 (STARTTLS)\n- **Authentication**: required\n- **Username\u002Fpassword**: your SMTP credentials\n\nTest with **Send test email** at the bottom of the page.",{"type":34,"title":66,"body":67},"Check if Your Instance is Vulnerable to the 2FA CVEs","**Check current version:**\n```bash\ndocker compose exec -u www-data app php occ status\n```\n\n**Vulnerable versions:** all Nextcloud 32.x \u003C 32.0.9, 33.x \u003C 33.0.3, and 34.x \u003C 34.0.2.\n\n**Vulnerability test (on your own instance only):**\n```bash\ncurl -u user:password -X PROPFIND \\\n  https:\u002F\u002Fcloud.yourdomain.com\u002Fremote.php\u002Fdav\u002Ffiles\u002Fuser\u002F \\\n  -H \"Depth: 0\" -s -o \u002Fdev\u002Fnull -w \"%{http_code}\"\n```\nIf this returns `207 Multi-Status` without 2FA challenge, your instance is vulnerable to CVE-2026-45690.\n\n**Update to 34.0.2:**\n```bash\nsed -i 's|nextcloud:[0-9.]*-apache|nextcloud:34.0.2-apache|g' docker-compose.yml\ndocker compose pull app && docker compose up -d app\ndocker compose exec -u www-data app php occ upgrade\n```",{"type":34,"title":69,"body":70},"Optimize Performance with Redis and OPcache","Nextcloud without Redis is a slow Nextcloud. Redis plays two critical roles: **session caching** (avoids disk reads\u002Fwrites on every authenticated request) and **distributed locking** (file locking) which prevents conflicts during simultaneous synchronizations.\n\nVerify Redis is connected:\n```bash\ndocker compose exec -u www-data app php occ config:system:get redis\n```\n\nIf nothing appears, add the Redis config to `config.php` manually.",{"type":34,"title":72,"body":73},"The 5 Most Common Mistakes","1. **Redis not configured** — slow interface, sync conflicts. Fix: configure Redis as shown above.\n2. **`overwrite.cli.url` pointing to `http:\u002F\u002F` instead of `https:\u002F\u002F`** — share links and emails generate insecure URLs.\n3. **`trusted_domains` misconfigured** — 'untrusted domain' access denied error.\n4. **Upload size limited to 2 MB** — PHP default is too low. Add `client_max_body_size 10G` in Nginx and configure PHP `upload_max_filesize=10G`.\n5. **Missed security updates** — instances stay vulnerable without regular patching.",{"type":75,"title":76,"body":77},"tip","Verify Redis Effectiveness with occ","```bash\n# Check general instance status\ndocker compose exec -u www-data app php occ status\n\n# List configuration warnings (memcache, Redis, HTTPS…)\ndocker compose exec -u www-data app php occ check\n\n# Show current Redis configuration\ndocker compose exec -u www-data app php occ config:system:get redis\n```\n\nThe `occ check` command lists all detected configuration issues. It is the **first diagnostic** to run on any existing Nextcloud instance.",{"type":34,"title":79,"body":80},"Nextcloud Backups — Data, Database and Config","Nextcloud stores data in three places — all three must be backed up:\n\n1. **MariaDB database**: file metadata, users, shares, installed apps.\n2. **`nextcloud` volume**: PHP code, installed apps, and `config\u002Fconfig.php`.\n3. **User files**: default in the Docker volume or in the path set by `datadirectory` in `config.php`.\n\n```bash\n# Enable maintenance mode for consistency\ndocker compose exec -u www-data app php occ maintenance:mode --on\n# Backup the database\ndocker compose exec -T db mysqldump -u nextcloud -p${MYSQL_PASSWORD} nextcloud | gzip > \u002Fopt\u002Fnextcloud\u002Fbackups\u002Fdb-$(date +%Y%m%d).sql.gz\n# Disable maintenance mode\ndocker compose exec -u www-data app php occ maintenance:mode --off\n```",{"type":34,"title":82,"body":83},"Update Nextcloud in Production","Always run updates with maintenance mode enabled to prevent data corruption during synchronization:\n\n```bash\n# Enable maintenance mode\ndocker compose exec -u www-data app php occ maintenance:mode --on\n# Update image tag in docker-compose.yml\nsed -i 's|nextcloud:[0-9.]*-apache|nextcloud:34.0.2-apache|g' docker-compose.yml\n# Pull new image and restart\ndocker compose pull app && docker compose up -d app\n# Run migrations\ndocker compose exec -u www-data app php occ upgrade\n# Disable maintenance mode\ndocker compose exec -u www-data app php occ maintenance:mode --off\n```",{"type":34,"title":85,"body":86},"Next Steps — Go Further with Your Instance","Once Nextcloud is installed and secured:\n\n**Enable Talk (video conferencing):** install the Nextcloud Talk app from the admin interface. For meetings with more than 4–5 participants, a TURN server is required (Coturn on a dedicated VPS).\n\n**Enable OnlyOffice or Collabora Online:** these apps require their own Docker container and Nextcloud Office configuration. They allow creating and editing `.docx`, `.xlsx`, and `.pptx` files directly in the web interface.\n\n**Monitor your instance:** configure alerts in **Administration → Monitoring** to receive email notifications if Nextcloud detects configuration errors, security updates, or quota issues.","A Reliable VPS for Your Nextcloud Instance","Nextcloud needs an SSD VPS with good bandwidth for smooth file synchronization. Our VPS Cloud plans start at 2 GB RAM with daily snapshots — exactly what a stress-free Nextcloud instance needs.","See our VPS plans","\u002Fvps-cloud",[92,111,126],{"id":93,"slug":94,"slugs":95,"title":98,"excerpt":99,"readTime":100,"views":15,"isPinned":16,"publishedAt":101,"category":102,"categories":107,"featuredImage":26,"bgImage":27,"posterImage":109,"relatedSolution":110},95,"nextcloud-vs-owncloud-which-private-cloud-to-host",{"fr":96,"en":94,"ar":97},"nextcloud-vs-owncloud","nextcloud-مقابل-owncloud-أي-سحابة-خاصة-تستضيف","Nextcloud vs ownCloud: which private cloud to host?","Nextcloud or ownCloud for your private cloud on a VPS? Comparison of features, performance, prerequisites and Docker deployment guide.",4,"2026-03-17T00:00:00+00:00",{"id":103,"name":104,"slug":105,"color":106,"icon":105},5,"Comparison","comparatif","bg-info\u002F10 text-info",[108],{"id":103,"name":104,"slug":105,"color":106,"icon":105},"\u002Fblog\u002Fcovers\u002Fnextcloud-vs-owncloud-poster.svg",{"categorySlug":21,"appSlug":30},{"id":112,"slug":113,"slugs":114,"title":117,"excerpt":118,"readTime":119,"views":120,"isPinned":16,"publishedAt":121,"category":122,"categories":123,"featuredImage":26,"bgImage":27,"posterImage":125,"relatedSolution":26},126,"server-backups-jetbackup-explained",{"fr":115,"en":113,"ar":116},"sauvegardes-serveur-jetbackup","نسخ-الخوادم-الاحتياطية-شرح-jetbackup","JetBackup on cPanel\u002FWHM: installation and restore","How to install JetBackup on WHM, set up S3 or SFTP destinations, schedule backups and restore an account, a database or an email independently.",9,1,"2026-02-18T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[124],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fsauvegardes-serveur-jetbackup-poster.svg",{"id":127,"slug":128,"slugs":129,"title":132,"excerpt":133,"readTime":100,"views":15,"isPinned":16,"publishedAt":134,"category":135,"categories":141,"featuredImage":26,"bgImage":27,"posterImage":143,"relatedSolution":144},108,"securing-your-vps-with-crowdsec",{"fr":130,"en":128,"ar":131},"securiser-vps-crowdsec","تأمين-خادمك-الافتراضي-vps-باستخدام-crowdsec","Securing your VPS with CrowdSec","Deploy CrowdSec on your VPS to block attacks thanks to behavioral detection and a shared community blocklist.","2026-03-04T00:00:00+00:00",{"id":136,"name":137,"slug":138,"color":139,"icon":140},8,"Security & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[142],{"id":136,"name":137,"slug":138,"color":139,"icon":140},"\u002Fblog\u002Fcovers\u002Fsecuriser-vps-crowdsec-poster.svg",{"categorySlug":145,"appSlug":146},"cybersecurity-bastion","crowdsec",1787581002322]