Wiki major update
updated with recent documentation
This commit is contained in:
295
wiki/service-docs/nextcloud.md
Normal file
295
wiki/service-docs/nextcloud.md
Normal 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!
|
||||
Reference in New Issue
Block a user