mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-06-04 04:22:57 +00:00
small fix, don't worry about it
This commit is contained in:
@@ -0,0 +1,505 @@
|
||||
# Nextcloud Cloud Storage Template
|
||||
|
||||
## Overview
|
||||
Nextcloud is a suite of client-server software for creating and using file hosting services.
|
||||
|
||||
## Quick Start
|
||||
```bash
|
||||
# Create docker-compose.yml with the content below
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## Docker Compose
|
||||
```yaml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
nextcloud-db:
|
||||
image: postgres:15-alpine
|
||||
container_name: nextcloud-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_DB=nextcloud
|
||||
- POSTGRES_USER=nextcloud
|
||||
- POSTGRES_PASSWORD=nextcloud
|
||||
volumes:
|
||||
- nextcloud-db:/var/lib/postgresql/data
|
||||
networks:
|
||||
- nextcloud-network
|
||||
|
||||
nextcloud-redis:
|
||||
image: redis:7-alpine
|
||||
container_name: nextcloud-redis
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- nextcloud-redis:/data
|
||||
networks:
|
||||
- nextcloud-network
|
||||
|
||||
nextcloud-app:
|
||||
image: nextcloud:latest
|
||||
container_name: nextcloud
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:80"
|
||||
environment:
|
||||
- POSTGRES_HOST=nextcloud-db
|
||||
- POSTGRES_DB=nextcloud
|
||||
- POSTGRES_USER=nextcloud
|
||||
- POSTGRES_PASSWORD=nextcloud
|
||||
- REDIS_HOST=nextcloud-redis
|
||||
- NEXTCLOUD_ADMIN_USER=admin
|
||||
- NEXTCLOUD_ADMIN_PASSWORD=your-secure-password
|
||||
- NEXTCLOUD_TRUSTED_DOMAINS=localhost
|
||||
- OVERWRITEPROTOCOL=http
|
||||
- OVERWRITEHOST=localhost:8080
|
||||
volumes:
|
||||
- nextcloud-data:/var/www/html
|
||||
- nextcloud-config:/var/www/html/config
|
||||
- nextcloud-apps:/var/www/html/apps
|
||||
- /path/to/nextcloud-data:/var/www/html/data
|
||||
depends_on:
|
||||
- nextcloud-db
|
||||
- nextcloud-redis
|
||||
networks:
|
||||
- nextcloud-network
|
||||
|
||||
nextcloud-cron:
|
||||
image: nextcloud:latest
|
||||
container_name: nextcloud-cron
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_HOST=nextcloud-db
|
||||
- POSTGRES_DB=nextcloud
|
||||
- POSTGRES_USER=nextcloud
|
||||
- POSTGRES_PASSWORD=nextcloud
|
||||
- REDIS_HOST=nextcloud-redis
|
||||
volumes:
|
||||
- nextcloud-data:/var/www/html
|
||||
- nextcloud-config:/var/www/html/config
|
||||
- nextcloud-apps:/var/www/html/apps
|
||||
depends_on:
|
||||
- nextcloud-db
|
||||
- nextcloud-redis
|
||||
entrypoint: /cron.sh
|
||||
networks:
|
||||
- nextcloud-network
|
||||
|
||||
volumes:
|
||||
nextcloud-data:
|
||||
nextcloud-config:
|
||||
nextcloud-apps:
|
||||
nextcloud-db:
|
||||
nextcloud-redis:
|
||||
|
||||
networks:
|
||||
nextcloud-network:
|
||||
driver: bridge
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
- `POSTGRES_*`: Database configuration
|
||||
- `REDIS_HOST`: Redis server host
|
||||
- `NEXTCLOUD_ADMIN_*`: Admin user credentials
|
||||
- `NEXTCLOUD_TRUSTED_DOMAINS`: Trusted domains
|
||||
- `OVERWRITEPROTOCOL`: Protocol override
|
||||
- `OVERWRITEHOST`: Host override
|
||||
|
||||
## Setup Guide
|
||||
1. **Generate Secure Password**:
|
||||
```bash
|
||||
openssl rand -base64 16
|
||||
```
|
||||
|
||||
2. **Create Directories**:
|
||||
```bash
|
||||
mkdir -p nextcloud-data
|
||||
```
|
||||
|
||||
3. **Deploy**:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
4. **Access**: Open http://localhost:8080
|
||||
|
||||
5. **Initial Setup**:
|
||||
- Admin account should be auto-created
|
||||
- Configure apps and settings
|
||||
- Set up user accounts
|
||||
|
||||
## Configuration Files
|
||||
|
||||
### config.php (`nextcloud-config/config.php`)
|
||||
```php
|
||||
<?php
|
||||
$CONFIG = array (
|
||||
'instanceid' => 'your-instance-id',
|
||||
'passwordsalt' => 'your-password-salt',
|
||||
'secret' => 'your-secret',
|
||||
'trusted_domains' =>
|
||||
array (
|
||||
0 => 'localhost',
|
||||
1 => 'nextcloud.yourdomain.com',
|
||||
),
|
||||
'datadirectory' => '/var/www/html/data',
|
||||
'dbtype' => 'pgsql',
|
||||
'version' => '27.0.0',
|
||||
'dbname' => 'nextcloud',
|
||||
'dbhost' => 'nextcloud-db',
|
||||
'dbport' => '',
|
||||
'dbtableprefix' => 'oc_',
|
||||
'dbuser' => 'nextcloud',
|
||||
'dbpassword' => 'nextcloud',
|
||||
'installed' => true,
|
||||
'filelocking.enabled' => true,
|
||||
'memcache.locking' => '\\OC\\Memcache\\Redis',
|
||||
'memcache.local' => '\\OC\\Memcache\\Redis',
|
||||
'redis' =>
|
||||
array (
|
||||
'host' => 'nextcloud-redis',
|
||||
'port' => 6379,
|
||||
),
|
||||
'mail_smtpmode' => 'smtp',
|
||||
'mail_sendmailmode' => 'smtp',
|
||||
'mail_from_address' => 'nextcloud',
|
||||
'mail_domain' => 'yourdomain.com',
|
||||
'mail_smtpserver' => 'smtp.gmail.com',
|
||||
'mail_smtpport' => '587',
|
||||
'mail_smtpsecure' => 'tls',
|
||||
'mail_smtpauth' => 1,
|
||||
'mail_smtpauthtype' => 'LOGIN',
|
||||
'mail_smtpname' => 'your-email@gmail.com',
|
||||
'mail_smtppassword' => 'your-app-password',
|
||||
'overwrite.cli.url' => 'http://localhost:8080',
|
||||
'default_phone_region' => 'US',
|
||||
'enabledPreviewProviders' =>
|
||||
array (
|
||||
0 => 'OC\\Preview\\Image',
|
||||
1 => 'OC\\Preview\\Movie',
|
||||
2 => 'OC\\Preview\\TXT',
|
||||
3 => 'OC\\Preview\\MarkDown',
|
||||
4 => 'OC\\Preview\\PDF',
|
||||
5 => 'OC\\Preview\\Office',
|
||||
6 => 'OC\\Preview\\SVG',
|
||||
7 => 'OC\\Preview\\EPUB',
|
||||
8 => 'OC\\Preview\\Font',
|
||||
9 => 'OC\\Preview\\MP3',
|
||||
10 => 'OC\\Preview\\HEIC',
|
||||
),
|
||||
'enable_previews' => true,
|
||||
'preview_max_x' => 2048,
|
||||
'preview_max_y' => 2048,
|
||||
'preview_max_scale_factor' => 1,
|
||||
'enabledPreviewProviders' =>
|
||||
array (
|
||||
0 => 'OC\\Preview\\Image',
|
||||
1 => 'OC\\Preview\\Movie',
|
||||
2 => 'OC\\Preview\\TXT',
|
||||
3 => 'OC\\Preview\\MarkDown',
|
||||
4 => 'OC\\Preview\\PDF',
|
||||
5 => 'OC\\Preview\\Office',
|
||||
6 => 'OC\\Preview\\SVG',
|
||||
7 => 'OC\\Preview\\EPUB',
|
||||
8 => 'OC\\Preview\\Font',
|
||||
9 => 'OC\\Preview\\MP3',
|
||||
10 => 'OC\\Preview\\HEIC',
|
||||
),
|
||||
);
|
||||
```
|
||||
|
||||
## Apps Installation
|
||||
|
||||
### Popular Apps
|
||||
```bash
|
||||
# Install apps via web interface or CLI
|
||||
docker exec nextcloud-app occ app:install files_external
|
||||
docker exec nextcloud-app occ app:install calendar
|
||||
docker exec nextcloud-app occ app:install contacts
|
||||
docker exec nextcloud-app occ app:install mail
|
||||
docker exec nextcloud-app occ app:install deck
|
||||
docker exec nextcloud-app occ app:install notes
|
||||
docker exec nextcloud-app occ app:install tasks
|
||||
docker exec nextcloud-app occ app:install talk
|
||||
```
|
||||
|
||||
### External Storage
|
||||
```bash
|
||||
# Add external storage
|
||||
docker exec nextcloud-app occ files_external:create admin local /path/to/external/storage
|
||||
```
|
||||
|
||||
## Reverse Proxy (Traefik)
|
||||
```yaml
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.yourdomain.com`)"
|
||||
- "traefik.http.routers.nextcloud.tls=true"
|
||||
- "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
|
||||
```
|
||||
|
||||
## Backup Strategy
|
||||
```bash
|
||||
# Backup Nextcloud data
|
||||
docker run --rm -v nextcloud-data:/var/www/html -v $(pwd):/backup alpine tar czf /backup/nextcloud-data-backup.tar.gz -C /var/www/html .
|
||||
|
||||
# Backup database
|
||||
docker exec nextcloud-db pg_dump -U nextcloud nextcloud > nextcloud-db-backup.sql
|
||||
|
||||
# Backup Redis
|
||||
docker exec nextcloud-redis redis-cli BGSAVE
|
||||
docker cp nextcloud-redis:/data/dump.rdb ./redis-backup.rdb
|
||||
|
||||
# Restore database
|
||||
docker exec -i nextcloud-db psql -U nextcloud nextcloud < nextcloud-db-backup.sql
|
||||
|
||||
# Restore Nextcloud data
|
||||
docker run --rm -v nextcloud-data:/var/www/html -v $(pwd):/backup alpine tar xzf /backup/nextcloud-data-backup.tar.gz -C /var/www/html
|
||||
|
||||
# Restart after restore
|
||||
docker-compose restart nextcloud-app
|
||||
```
|
||||
|
||||
## Performance Optimization
|
||||
```yaml
|
||||
# For better performance
|
||||
environment:
|
||||
- PHP_MEMORY_LIMIT=512M
|
||||
- PHP_UPLOAD_LIMIT=512M
|
||||
- PHP_MAX_EXECUTION_TIME=300
|
||||
|
||||
# Resource limits
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 2G
|
||||
cpus: '2.0'
|
||||
reservations:
|
||||
memory: 1G
|
||||
cpus: '1.0'
|
||||
```
|
||||
|
||||
## Security
|
||||
- Change default admin password
|
||||
- Use HTTPS in production
|
||||
- Network access control
|
||||
- Regular backups
|
||||
- Monitor access logs
|
||||
|
||||
## User Management
|
||||
|
||||
### Create User
|
||||
```bash
|
||||
# Create user via CLI
|
||||
docker exec nextcloud-app occ user:add --display-name="John Doe" --group="users" john
|
||||
```
|
||||
|
||||
### Groups
|
||||
```bash
|
||||
# Create group
|
||||
docker exec nextcloud-app occ group:add team
|
||||
|
||||
# Add user to group
|
||||
docker exec nextcloud-app occ group:adduser john team
|
||||
```
|
||||
|
||||
### Quotas
|
||||
```bash
|
||||
# Set user quota
|
||||
docker exec nextcloud-app occ user:setting john quota 5GB
|
||||
```
|
||||
|
||||
## File Sharing
|
||||
|
||||
### Share Files
|
||||
```bash
|
||||
# Create share link
|
||||
docker exec nextcloud-app occ share:create /path/to/file --type=link --permissions=1
|
||||
```
|
||||
|
||||
### External Storage
|
||||
```bash
|
||||
# Add SMB share
|
||||
docker exec nextcloud-app occ files_external:create admin smb://server/share --mount=external
|
||||
```
|
||||
|
||||
## Calendar & Contacts
|
||||
|
||||
### Calendar Setup
|
||||
```bash
|
||||
# Install calendar app
|
||||
docker exec nextcloud-app occ app:install calendar
|
||||
|
||||
# Create calendar
|
||||
docker exec nextcloud-app occ calendar:create --name="Work" --color="#ff0000"
|
||||
```
|
||||
|
||||
### Contacts Setup
|
||||
```bash
|
||||
# Install contacts app
|
||||
docker exec nextcloud-app occ app:install contacts
|
||||
|
||||
# Import contacts
|
||||
docker exec nextcloud-app occ contacts:import /path/to/contacts.vcf
|
||||
```
|
||||
|
||||
## Talk (Chat & Video)
|
||||
|
||||
### Enable Talk
|
||||
```bash
|
||||
# Install talk app
|
||||
docker exec nextcloud-app occ app:install talk
|
||||
|
||||
# Enable signaling server
|
||||
docker exec nextcloud-app occ talk:signaling:install
|
||||
```
|
||||
|
||||
### Talk Configuration
|
||||
```php
|
||||
// In config.php
|
||||
'allow_local_remote_servers' => true,
|
||||
'signaling' => [
|
||||
'servers' => [
|
||||
[
|
||||
'server' => 'https://nextcloud.yourdomain.com',
|
||||
'verify' => true
|
||||
]
|
||||
]
|
||||
],
|
||||
```
|
||||
|
||||
## Monitoring
|
||||
|
||||
### Health Checks
|
||||
```bash
|
||||
# Check if Nextcloud is running
|
||||
curl http://localhost:8080/status.php
|
||||
|
||||
# Get system info
|
||||
docker exec nextcloud-app occ status
|
||||
```
|
||||
|
||||
### Logs
|
||||
```bash
|
||||
# View logs
|
||||
docker-compose logs -f nextcloud-app
|
||||
|
||||
# Check Nextcloud logs
|
||||
docker exec nextcloud-app occ log:tail
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
- **Database connection**: Check PostgreSQL configuration
|
||||
- **File permissions**: Verify volume permissions
|
||||
- **Performance issues**: Monitor resource usage
|
||||
- **App installation**: Check app compatibility
|
||||
- **Sharing problems**: Verify external storage configuration
|
||||
|
||||
## Maintenance
|
||||
```bash
|
||||
# Update Nextcloud
|
||||
docker-compose pull && docker-compose up -d
|
||||
docker exec nextcloud-app occ upgrade
|
||||
|
||||
# Run maintenance tasks
|
||||
docker exec nextcloud-app occ maintenance:repair
|
||||
docker exec nextcloud-app occ files:scan --all
|
||||
|
||||
# Clean up old files
|
||||
docker exec nextcloud-app occ trashbin:cleanup
|
||||
docker exec nextcloud-app occ versions:cleanup
|
||||
```
|
||||
|
||||
## Advanced Features
|
||||
|
||||
### Collabora Online
|
||||
```yaml
|
||||
collabora:
|
||||
image: collabora/code:latest
|
||||
container_name: collabora
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- aliasgroup1=https://nextcloud.yourdomain.com
|
||||
- dictionaries=en_US
|
||||
- extra_params=--o:ssl.enable=false --o:ssl.termination=true
|
||||
ports:
|
||||
- "9980:9980"
|
||||
networks:
|
||||
- nextcloud-network
|
||||
```
|
||||
|
||||
### OnlyOffice
|
||||
```yaml
|
||||
onlyoffice:
|
||||
image: onlyoffice/documentserver:latest
|
||||
container_name: onlyoffice
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- JWT_ENABLED=true
|
||||
- JWT_SECRET=your-jwt-secret
|
||||
ports:
|
||||
- "8081:80"
|
||||
networks:
|
||||
- nextcloud-network
|
||||
```
|
||||
|
||||
### Full Text Search
|
||||
```yaml
|
||||
elasticsearch:
|
||||
image: elasticsearch:8.11.1
|
||||
container_name: nextcloud-elasticsearch
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- discovery.type=single-node
|
||||
- xpack.security.enabled=false
|
||||
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
|
||||
volumes:
|
||||
- elasticsearch-data:/usr/share/elasticsearch/data
|
||||
networks:
|
||||
- nextcloud-network
|
||||
```
|
||||
|
||||
## Client Apps
|
||||
|
||||
### Desktop Apps
|
||||
- **Windows**: Nextcloud Desktop Client
|
||||
- **macOS**: Nextcloud Desktop Client
|
||||
- **Linux**: Nextcloud Desktop Client
|
||||
|
||||
### Mobile Apps
|
||||
- **iOS**: Nextcloud iOS App
|
||||
- **Android**: Nextcloud Android App
|
||||
|
||||
### WebDAV
|
||||
```bash
|
||||
# Mount via WebDAV
|
||||
davfs2 https://nextcloud.yourdomain.com/remote.php/dav/files/username/ /mnt/nextcloud
|
||||
```
|
||||
|
||||
## Integration Examples
|
||||
|
||||
### Home Assistant
|
||||
```yaml
|
||||
# In Home Assistant configuration.yaml
|
||||
nextcloud:
|
||||
url: https://nextcloud.yourdomain.com
|
||||
username: your-username
|
||||
password: your-password
|
||||
```
|
||||
|
||||
### LDAP Integration
|
||||
```php
|
||||
// In config.php
|
||||
'ldapProviderFactory' => 'OCA\\User_LDAP\\LDAPProviderFactory',
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
1. **Regular backups**: Backup data and database regularly
|
||||
2. **Monitor resources**: Keep an eye on disk space and memory
|
||||
3. **Update regularly**: Keep Nextcloud and apps updated
|
||||
4. **Use HTTPS**: Always use HTTPS in production
|
||||
5. **Configure quotas**: Set appropriate user quotas
|
||||
6. **Enable caching**: Use Redis for better performance
|
||||
7. **Monitor logs**: Keep an eye on error logs
|
||||
8. **Test backups**: Regularly test backup restoration
|
||||
Reference in New Issue
Block a user