Wiki major update

updated with recent documentation
This commit is contained in:
kelinfoxy
2026-01-21 19:18:39 -05:00
parent 30e0481685
commit ef55974b50
98 changed files with 32244 additions and 10 deletions

View File

@@ -0,0 +1,295 @@
# Nextcloud - Private Cloud Storage
## Table of Contents
- [Overview](#overview)
- [What is Nextcloud?](#what-is-nextcloud)
- [Why Use Nextcloud?](#why-use-nextcloud)
- [Configuration in AI-Homelab](#configuration-in-ai-homelab)
- [Official Resources](#official-resources)
- [Docker Configuration](#docker-configuration)
- [Setup](#setup)
- [Apps](#apps)
- [Troubleshooting](#troubleshooting)
## Overview
**Category:** File Storage & Collaboration
**Docker Image:** [nextcloud](https://hub.docker.com/_/nextcloud)
**Default Stack:** `productivity.yml`
**Web UI:** `https://nextcloud.${DOMAIN}` or `http://SERVER_IP:8081`
**Database:** MariaDB (separate container)
**Ports:** 8081
## What is Nextcloud?
Nextcloud is a self-hosted alternative to Google Drive, Dropbox, and Microsoft 365. It provides file sync/share, calendar, contacts, office documents, video calls, and 200+ apps - all hosted on your own server with complete privacy.
### Key Features
- **File Sync & Share:** Like Dropbox
- **Calendar & Contacts:** Sync across devices
- **Office Suite:** Collaborative document editing
- **Photos:** Google Photos alternative
- **Video Calls:** Built-in Talk
- **Notes:** Markdown notes
- **Tasks:** Todo lists
- **200+ Apps:** Extensible platform
- **Mobile Apps:** iOS and Android
- **Desktop Sync:** Windows, Mac, Linux
- **E2E Encryption:** End-to-end encryption
- **Free & Open Source:** No subscriptions
## Why Use Nextcloud?
1. **Privacy:** Your data, your server
2. **No Limits:** Unlimited storage (your disk)
3. **No Subscriptions:** $0/month forever
4. **All-in-One:** Files, calendar, contacts, office
5. **Sync Everything:** Desktop and mobile apps
6. **Extensible:** Hundreds of apps
7. **Collaboration:** Share with family/team
8. **Standards:** CalDAV, CardDAV, WebDAV
## Configuration in AI-Homelab
### Directory Structure
```
/opt/stacks/productivity/nextcloud/
html/ # Nextcloud installation
data/ # User files
config/ # Configuration
apps/ # Installed apps
/opt/stacks/productivity/nextcloud-db/
data/ # MariaDB database
```
### Environment Variables
```bash
# Nextcloud
MYSQL_HOST=nextcloud-db
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
MYSQL_PASSWORD=secure_password
NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.yourdomain.com
# MariaDB
MYSQL_ROOT_PASSWORD=root_password
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
MYSQL_PASSWORD=secure_password
```
## Official Resources
- **Website:** https://nextcloud.com
- **Documentation:** https://docs.nextcloud.com
- **Apps:** https://apps.nextcloud.com
- **Community:** https://help.nextcloud.com
## Docker Configuration
```yaml
nextcloud-db:
image: mariadb:latest
container_name: nextcloud-db
restart: unless-stopped
networks:
- traefik-network
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
volumes:
- /opt/stacks/productivity/nextcloud-db/data:/var/lib/mysql
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
nextcloud:
image: nextcloud:latest
container_name: nextcloud
restart: unless-stopped
networks:
- traefik-network
ports:
- "8081:80"
environment:
- MYSQL_HOST=nextcloud-db
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.${DOMAIN}
volumes:
- /opt/stacks/productivity/nextcloud/html:/var/www/html
- /opt/stacks/productivity/nextcloud/data:/var/www/html/data
- /opt/stacks/productivity/nextcloud/config:/var/www/html/config
- /opt/stacks/productivity/nextcloud/apps:/var/www/html/custom_apps
depends_on:
- nextcloud-db
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.${DOMAIN}`)"
- "traefik.http.routers.nextcloud.entrypoints=websecure"
- "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt"
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
```
## Setup
1. **Start Containers:**
```bash
docker compose up -d nextcloud-db nextcloud
```
2. **Wait for DB Initialization:**
```bash
docker logs nextcloud-db -f
# Wait for "mysqld: ready for connections"
```
3. **Access UI:** `http://SERVER_IP:8081`
4. **Create Admin Account:**
- Username: admin
- Password: Strong password
- Click "Install"
5. **Initial Configuration:**
- Skip recommended apps (install later)
- Allow data folder location
6. **Fix Trusted Domains (if external access):**
```bash
docker exec -it --user www-data nextcloud php occ config:system:set trusted_domains 1 --value=nextcloud.yourdomain.com
```
## Apps
### Essential Apps
**Files:**
- **Photos:** Google Photos alternative with face recognition
- **Files Automated Tagging:** Auto-tag files
- **External Storage:** Connect other storage
**Productivity:**
- **Calendar:** CalDAV calendar sync
- **Contacts:** CardDAV contact sync
- **Tasks:** Todo list with CalDAV sync
- **Deck:** Kanban boards
- **Notes:** Markdown notes
**Office:**
- **Nextcloud Office:** Collaborative documents (based on Collabora)
- **OnlyOffice:** Alternative office suite
**Communication:**
- **Talk:** Video calls and chat
- **Mail:** Email client
**Media:**
- **Music:** Music player and library
- **News:** RSS reader
### Installing Apps
**Method 1: UI**
1. Apps menu (top right)
2. Browse or search
3. Download and enable
**Method 2: Command Line**
```bash
docker exec -it --user www-data nextcloud php occ app:install photos
docker exec -it --user www-data nextcloud php occ app:enable photos
```
## Troubleshooting
### Can't Access After Setup
```bash
# Add trusted domain
docker exec -it --user www-data nextcloud php occ config:system:set trusted_domains 1 --value=SERVER_IP
# Or edit config
docker exec -it nextcloud nano /var/www/html/config/config.php
# Add to 'trusted_domains' array
```
### Security Warnings
```bash
# Run maintenance mode
docker exec -it --user www-data nextcloud php occ maintenance:mode --on
# Clear cache
docker exec -it --user www-data nextcloud php occ maintenance:repair
# Update htaccess
docker exec -it --user www-data nextcloud php occ maintenance:update:htaccess
# Exit maintenance
docker exec -it --user www-data nextcloud php occ maintenance:mode --off
```
### Slow Performance
```bash
# Enable caching
docker exec -it --user www-data nextcloud php occ config:system:set memcache.local --value='\\OC\\Memcache\\APCu'
# Run background jobs via cron
docker exec -it --user www-data nextcloud php occ background:cron
```
### Missing Indices
```bash
# Add missing database indices
docker exec -it --user www-data nextcloud php occ db:add-missing-indices
# Convert to bigint (for large instances)
docker exec -it --user www-data nextcloud php occ db:convert-filecache-bigint
```
## Summary
Nextcloud is your private cloud offering:
- File sync and sharing
- Calendar and contacts sync
- Collaborative office suite
- Photo management
- Video calls
- 200+ apps
- Mobile and desktop clients
- Complete privacy
- Free and open-source
**Perfect for:**
- Replacing Google Drive/Dropbox
- Family file sharing
- Photo backup
- Calendar/contact sync
- Team collaboration
- Privacy-conscious users
**Key Points:**
- Requires MariaDB database
- 2GB RAM minimum
- Desktop sync clients available
- Mobile apps for iOS/Android
- CalDAV/CardDAV standards
- Enable caching for performance
- Regular backups important
**Remember:**
- Configure trusted domains
- Enable recommended apps
- Setup desktop sync client
- Mobile apps for phone backup
- Regular database maintenance
- Keep updated for security
Nextcloud puts you in control of your data!